Changeset 24213


Ignore:
Timestamp:
10/11/19 00:25:20 (5 years ago)
Author:
bdef
Message:

CHG: syntax cahnge to meet most of Pep8 requirement

Location:
issm/trunk-jpl/src/m
Files:
280 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/archive/arch.py

    r23716 r24213  
    44from collections import OrderedDict
    55
    6 def archwrite(filename,*args): # {{{
    7         """
    8         ARCHWRITE - Write data to a field, given the file name, field name, and data.
    9 
    10                 Usage:
    11                         archwrite('archive101.arch','variable_name',data);
    12         """
    13         nargs=len(args);
    14         if nargs % 2 != 0 :
    15                 raise ValueError('Incorrect number of arguments.')
    16         # open file
    17         try:
    18                 if not path.isfile(filename):
    19                         fid=open(filename,'wb')
    20                 else:
    21                         fid=open(filename,'ab')
    22         except IOError as e:
    23                 raise IOError("archwrite error: could not open '%s' to write to." % filename)
    24 
    25         nfields=len(args)/2
    26         # generate data to write
    27         for i in range(nfields):
    28                 # write field name
    29                 name=args[2*i]
    30                 write_field_name(fid,name)
    31 
    32                 # write data associated with field name
    33                 data=args[2*i+1]
    34                 code=format_archive_code(data)
    35                 if code==1:
    36                         raise ValueError("archwrite : error writing data, string should not be written as field data")
    37                 elif code==2:
    38                         write_scalar(fid,data)
    39                 elif code==3:
    40                         write_vector(fid,data)
    41                 else:
    42                         raise ValueError("archwrite : error writing data, invalid code entered '%d'" % code)
    43 
    44         fid.close()
    45 
    46 # }}}
    47 def archread(filename,fieldname): # {{{
    48         """
    49         ARCHREAD - Given an arch file name, and a field name, find and return the data
    50                                         associated with that field name.
    51                 Usage:
    52                         archread('archive101.arch','field_var_1')
    53         """
    54         try:
    55                 if path.isfile(filename):
    56                         fid=open(filename,'rb')
    57                 else:
    58                         raise IOError("archread error : file '%s' does not exist" % filename)
    59         except IOError as e:
    60                 raise IOError("archread error : could not open file '%s' to read from" % filename)
    61 
    62         archive_results=[]
    63 
    64         # read first result
    65         result=read_field(fid)
    66 
    67         while result:
    68                 if fieldname == result['field_name']:
    69                         # found the data we wanted
    70                         archive_results=result['data']; # we only want the data
    71                         break
    72 
    73                 # read next result
    74                 result=read_field(fid)
    75 
    76         # close file
    77         fid.close()
    78 
    79         return archive_results
    80 # }}}
    81 def archdisp(filename): # {{{
    82         """
    83         ARCHDISP - Given an arch filename, display the contents of that file
    84 
    85                 Usage:
    86                         archdisp('archive101.arch')
    87         """
    88         try:
    89                 if path.isfile(filename):
    90                         fid=open(filename,'rb')
    91                 else:
    92                         raise IOError("archread error : file '%s' does not exist" % filename)
    93         except IOError as e:
    94                 raise IOError("archread error : could not open file '%s' to read from" % filename)
    95 
    96         print('Source file: ')
    97         print(('\t{0}'.format(filename)))
    98         print('Variables: ')
    99 
    100         result=read_field(fid)
    101         while result:
    102                 print(('\t{0}'.format(result['field_name'])))
    103                 print(('\t\tSize:\t\t{0}'.format(result['size'])))
    104                 print(('\t\tDatatype:\t{0}'.format(result['data_type'])))
    105                 # go to next result
    106                 result=read_field(fid)
    107 
    108         # close file
    109         fid.close()
    110 
    111 # }}}
    112 
    113 # Helper functions
    114 def write_field_name(fid,data): # {{{
    115         """
    116         Routine to write field name (variable name) to an archive file.
    117         """
    118         # write the length of the record
    119         # length to write + string size (len) + format code
    120         reclen=len(data)+4+4
    121         fid.write(struct.pack('>i',reclen))
    122 
    123         # write format code
    124         code=format_archive_code(data);
    125         if code != 1:
    126                 raise TypeError("archwrite : error writing field name, expected string, but got %s" % type(data))
    127         fid.write(struct.pack('>i',1))
    128 
    129         # write string length, and then the string
    130         fid.write(struct.pack('>i',len(data)))
    131         fid.write(struct.pack('>{}s'.format(len(data)),data.encode('utf8')))
    132 # }}}
    133 def write_scalar(fid,data): # {{{
    134         """
    135         Procedure to write a double to an arch file pointed to by fid
    136         """
    137         # write length of record
    138         # double (8 bytes) + format code (4 bytes)
    139         reclen=8+4
    140         fid.write(struct.pack('>i',reclen))
    141 
    142         # write the format code (2 for scalar)
    143         fid.write(struct.pack('>i',2))
    144 
    145         # write the double
    146         fid.write(struct.pack('>d',data))
    147 
    148 # }}}
    149 def write_vector(fid,data): # {{{
    150         """
    151         Procedure to write a np.array to an arch file
    152         """
    153         # Make sure our vector is the correct shape.
    154         # Reshape it into a row vector if it is not correct.
    155         if isinstance(data,(bool,int,float)):
    156                 data=np.array([data])
    157         elif isinstance(data,(list,tuple)):
    158                 data=np.array(data).reshape(-1,)
    159 
    160         if np.ndim(data) == 1:
    161                 if np.size(data):
    162                         data=data.reshape(np.size(data),)
    163                 else:
    164                         data=data.reshape(0,0)
    165 
    166         # get size of data
    167         sz=data.shape
    168 
    169         # write length of record
    170         # format code + row size + col size + (double size * row amt * col amt)
    171         reclen=4+4+4+8*sz[0]*sz[1]
    172         # make sure we can fit data into file
    173         if reclen>2**31:
    174                 raise ValueError("archwrite error : can not write vector to binary file because it is too large")
    175         fid.write(struct.pack('>i',reclen))
    176 
    177         # write format code
    178         fid.write(struct.pack('>i',3))
    179 
    180         # write vector
    181         fid.write(struct.pack('>i',sz[0]))
    182         fid.write(struct.pack('>i',sz[1]))
    183         for i in range(sz[0]):
    184                 for j in range(sz[1]):
    185                         fid.write(struct.pack('>d',float(data[i][j])))
    186 
    187 # }}}
    188 
    189 def read_field(fid): # {{{
    190         """
    191         Procedure to read a field and return a results list with the following attributes:
    192         result['field_name']    -> the name of the variable that was just read
    193         result['size']                  -> size (dimensions) of the variable just read
    194         result['data_type']     -> the type of data that was just read
    195         result['data']                  -> the actual data
    196         """
    197 
    198         try:
    199                 # first, read the string
    200                 reclen=struct.unpack('>i',fid.read(struct.calcsize('>i')))[0]
    201                 check_name=struct.unpack('>i',fid.read(struct.calcsize('>i')))[0]
    202                 if check_name != 1:
    203                         raise ValueError('archread error : a string was not present at the start of the arch file')
    204                 namelen=struct.unpack('>i',fid.read(struct.calcsize('>i')))[0]
    205                 fieldname=struct.unpack('>{}s'.format(namelen),fid.read(namelen))[0]
    206 
    207                 # then, read the data
    208                 datalen=struct.unpack('>i',fid.read(struct.calcsize('>i')))[0]
    209                 data_type=struct.unpack('>i',fid.read(struct.calcsize('>i')))[0]
    210 
    211                 if data_type==2:
    212                         # struct.upack scalar
    213                         data=struct.unpack('>d',fid.read(struct.calcsize('>d')))[0]
    214                 elif data_type==3:
    215                         rows=struct.unpack('>i',fid.read(struct.calcsize('>i')))[0]
    216                         cols=struct.unpack('>i',fid.read(struct.calcsize('>i')))[0]
    217                         raw_data=np.zeros(shape=(rows,cols),dtype=float)
    218                         for i in range(rows):
    219                                 raw_data[i,:]=struct.unpack('>{}d'.format(cols),fid.read(cols*struct.calcsize('>d')))
    220                         # The matrix will be struct.upacked in order and will be filled left -> right by column
    221                         # We need to reshape and transpose the matrix so it can be read correctly
    222                         data=raw_data.reshape(raw_data.shape[::-1]).T
    223                 else:
    224                         raise TypeError("Cannot read data type %d" % data_type)
    225 
    226                 # give additional data to user
    227                 if data_type==2:
    228                         data_size='1x1'
    229                         data_type_str='double'
    230                 elif data_type==3:
    231                         data_size='{0}x{1}'.format(rows,cols)
    232                         data_type_str='vector/matrix'
    233 
    234                 result=OrderedDict()
    235                 result['field_name']=fieldname.decode('utf8')
    236                 result['size']=data_size
    237                 result['data_type']=data_type_str
    238                 result['data']=data
    239 
    240         except struct.error as e:
    241                 result=None
    242 
    243         return result
    244 # }}}
    245 
    246 def format_archive_code(format): # {{{
    247         """
    248         Given a variable, determine it's type and return
    249         an integer value:
    250 
    251         1 : string
    252         2 : double (scalar)
    253         3 : vector or matrix (of type double)
    254 
    255         """
    256         if isinstance(format,str):
    257                 code=1
    258         elif format.shape[0] == 1 and format.shape[1] == 1:
    259                 code=2
    260         elif isinstance(format,(list,tuple,np.ndarray)):
    261                 code=3
    262         else:
    263                 raise TypeError("archwrite error: data type '%s' is not valid." % type(format))
    264         return code
    265 # }}}
     6
     7def archwrite(filename, *args):  # {{{
     8    """
     9    ARCHWRITE - Write data to a field, given the file name, field name, and data.
     10
     11        Usage:
     12            archwrite('archive101.arch', 'variable_name', data)
     13    """
     14    nargs = len(args)
     15    if nargs % 2 != 0:
     16        raise ValueError('Incorrect number of arguments.')
     17    # open file
     18    try:
     19        if not path.isfile(filename):
     20            fid = open(filename, 'wb')
     21        else:
     22            fid = open(filename, 'ab')
     23    except IOError as e:
     24        raise IOError("archwrite error: could not open '{}' to write to due to:".format(filename), e)
     25
     26    nfields = len(args) / 2
     27    # generate data to write
     28    for i in range(nfields):
     29        # write field name
     30        name = args[2 * i]
     31        write_field_name(fid, name)
     32
     33        # write data associated with field name
     34        data = args[2 * i + 1]
     35        code = format_archive_code(data)
     36        if code == 1:
     37            raise ValueError("archwrite : error writing data, string should not be written as field data")
     38        elif code == 2:
     39            write_scalar(fid, data)
     40        elif code == 3:
     41            write_vector(fid, data)
     42        else:
     43            raise ValueError("archwrite : error writing data, invalid code entered '{}'".format(code))
     44
     45    fid.close()
     46
     47    # }}}
     48
     49
     50def archread(filename, fieldname):  # {{{
     51    """
     52    ARCHREAD - Given an arch file name, and a field name, find and return the data
     53                    associated with that field name.
     54        Usage:
     55            archread('archive101.arch', 'field_var_1')
     56    """
     57    try:
     58        if path.isfile(filename):
     59            fid = open(filename, 'rb')
     60        else:
     61            raise IOError("archread error : file '{}' does not exist".format(filename))
     62    except IOError as e:
     63        raise IOError("archread error : could not open file '{}' to read from due to :".format(filename), e)
     64
     65    archive_results = []
     66
     67    # read first result
     68    result = read_field(fid)
     69
     70    while result:
     71        if fieldname == result['field_name']:
     72            # found the data we wanted
     73            archive_results = result['data']  # we only want the data
     74            break
     75
     76    # read next result
     77        result = read_field(fid)
     78
     79    # close file
     80    fid.close()
     81
     82    return archive_results
     83    # }}}
     84
     85
     86def archdisp(filename):  # {{{
     87    """
     88    ARCHDISP - Given an arch filename, display the contents of that file
     89
     90        Usage:
     91            archdisp('archive101.arch')
     92    """
     93    try:
     94        if path.isfile(filename):
     95            fid = open(filename, 'rb')
     96        else:
     97            raise IOError("archread error : file '{}' does not exist".format(filename))
     98    except IOError as e:
     99        raise IOError("archread error : could not open file '{}' to read from due to ".format(filename), e)
     100
     101    print('Source file: ')
     102    print(('\t{0}'.format(filename)))
     103    print('Variables: ')
     104
     105    result = read_field(fid)
     106    while result:
     107        print(('\t{0}'.format(result['field_name'])))
     108        print(('\t\tSize:\t\t{0}'.format(result['size'])))
     109        print(('\t\tDatatype:\t{0}'.format(result['data_type'])))
     110    # go to next result
     111        result = read_field(fid)
     112
     113    # close file
     114    fid.close()
     115
     116    # }}}
     117
     118    # Helper functions
     119
     120
     121def write_field_name(fid, data):  # {{{
     122    """
     123    Routine to write field name (variable name) to an archive file.
     124    """
     125    # write the length of the record
     126    # length to write + string size (len) + format code
     127    reclen = len(data) + 4 + 4
     128    fid.write(struct.pack('>i', reclen))
     129
     130    # write format code
     131    code = format_archive_code(data)
     132    if code != 1:
     133        raise TypeError("archwrite : error writing field name, expected string, but got %s" % type(data))
     134    fid.write(struct.pack('>i', 1))
     135
     136    # write string length, and then the string
     137    fid.write(struct.pack('>i', len(data)))
     138    fid.write(struct.pack('>{}s'.format(len(data)), data.encode('utf8')))
     139    # }}}
     140
     141
     142def write_scalar(fid, data):  # {{{
     143    """
     144    Procedure to write a double to an arch file pointed to by fid
     145    """
     146    # write length of record
     147    # double (8 bytes) + format code (4 bytes)
     148    reclen = 8 + 4
     149    fid.write(struct.pack('>i', reclen))
     150
     151    # write the format code (2 for scalar)
     152    fid.write(struct.pack('>i', 2))
     153
     154    # write the double
     155    fid.write(struct.pack('>d', data))
     156
     157    # }}}
     158
     159
     160def write_vector(fid, data):  # {{{
     161    """
     162    Procedure to write a np.array to an arch file
     163    """
     164    # Make sure our vector is the correct shape.
     165    # Reshape it into a row vector if it is not correct.
     166    if isinstance(data, (bool, int, float)):
     167        data = np.array([data])
     168    elif isinstance(data, (list, tuple)):
     169        data = np.array(data).reshape(- 1, )
     170
     171    if np.ndim(data) == 1:
     172        if np.size(data):
     173            data = data.reshape(np.size(data), )
     174        else:
     175            data = data.reshape(0, 0)
     176
     177    # get size of data
     178    sz = data.shape
     179
     180    # write length of record
     181    # format code + row size + col size + (double size * row amt * col amt)
     182    reclen = 4 + 4 + 4 + 8 * sz[0] * sz[1]
     183    # make sure we can fit data into file
     184    if reclen > 2**31:
     185        raise ValueError("archwrite error : can not write vector to binary file because it is too large")
     186    fid.write(struct.pack('>i', reclen))
     187
     188    # write format code
     189    fid.write(struct.pack('>i', 3))
     190
     191    # write vector
     192    fid.write(struct.pack('>i', sz[0]))
     193    fid.write(struct.pack('>i', sz[1]))
     194    for i in range(sz[0]):
     195        for j in range(sz[1]):
     196            fid.write(struct.pack('>d', float(data[i][j])))
     197
     198    # }}}
     199
     200
     201def read_field(fid):  # {{{
     202    """
     203    Procedure to read a field and return a results list with the following attributes:
     204    result['field_name']     - > the name of the variable that was just read
     205    result['size']             - > size (dimensions) of the variable just read
     206    result['data_type']     - > the type of data that was just read
     207    result['data']             - > the actual data
     208    """
     209
     210    try:
     211        # first, read the string
     212        #first read the size and continue reading
     213        struct.unpack('>i', fid.read(struct.calcsize('>i')))[0]  #name length
     214        check_name = struct.unpack('>i', fid.read(struct.calcsize('>i')))[0]
     215        if check_name != 1:
     216            raise ValueError('archread error : a string was not present at the start of the arch file')
     217        namelen = struct.unpack('>i', fid.read(struct.calcsize('>i')))[0]
     218        fieldname = struct.unpack('>{}s'.format(namelen), fid.read(namelen))[0]
     219        # then, read the data
     220        #first read the size and continue reading
     221        struct.unpack('>i', fid.read(struct.calcsize('>i')))[0]  #data length
     222        data_type = struct.unpack('>i', fid.read(struct.calcsize('>i')))[0]
     223
     224        if data_type == 2:
     225            # struct.upack scalar
     226            data = struct.unpack('>d', fid.read(struct.calcsize('>d')))[0]
     227        elif data_type == 3:
     228            rows = struct.unpack('>i', fid.read(struct.calcsize('>i')))[0]
     229            cols = struct.unpack('>i', fid.read(struct.calcsize('>i')))[0]
     230            raw_data = np.zeros(shape=(rows, cols), dtype=float)
     231            for i in range(rows):
     232                raw_data[i, :] = struct.unpack('>{}d'.format(cols), fid.read(cols * struct.calcsize('>d')))
     233                # The matrix will be struct.upacked in order and will be filled left - > right by column
     234                # We need to reshape and transpose the matrix so it can be read correctly
     235            data = raw_data.reshape(raw_data.shape[::-1]).T
     236        else:
     237            raise TypeError("Cannot read data type {}".format(data_type))
     238
     239        # give additional data to user
     240        if data_type == 2:
     241            data_size = '1x1'
     242            data_type_str = 'double'
     243        elif data_type == 3:
     244            data_size = '{0}x{1}'.format(rows, cols)
     245            data_type_str = 'vector/matrix'
     246
     247        result = OrderedDict()
     248        result['field_name'] = fieldname.decode('utf8')
     249        result['size'] = data_size
     250        result['data_type'] = data_type_str
     251        result['data'] = data
     252
     253    except struct.error as e:
     254        result = None
     255        print("result is empty due to", e)
     256
     257    return result
     258    # }}}
     259
     260
     261def format_archive_code(format):  # {{{
     262    """
     263    Given a variable, determine it's type and return
     264    an integer value:
     265
     266    1 : string
     267    2 : double (scalar)
     268    3 : vector or matrix (of type double)
     269
     270    """
     271    if isinstance(format, str):
     272        code = 1
     273    elif format.shape[0] == 1 and format.shape[1] == 1:
     274        code = 2
     275    elif isinstance(format, (list, tuple, np.ndarray)):
     276        code = 3
     277    else:
     278        raise TypeError("archwrite error: data type '%s' is not valid." % type(format))
     279    return code
     280    # }}}
  • issm/trunk-jpl/src/m/array/MatlabArray.py

    r23716 r24213  
    22import numpy as np
    33from MatlabFuncs import *
    4 
    54#move this later
    65from helpers import *
    76from functools import reduce
    87
     8
    99def allempty(cin):
    10         '''
    11         function to return an empty cell array if all array elements are empty
    12         cout=allempty(cin)
    13 '''
    14         for i in cin:
    15                 if not isempty(i):
    16                         cout = cin
    17                         return cout
    18         return []
    19 
    20 def allequal(ain,aval):
    21         '''
    22         function to return an empty array if all array elements are
    23         equal to the given value, which may also be empty but not nan.
    24 
    25         (note that by definition, nan is not equal to nan; this could
    26         be changed by using isequalwithequalnans.)
    27 
    28         aout=allequal(ain,aval)
    29 '''
    30         if type(ain) != type(aval):
    31                 print((allequal.__doc__))
    32                 raise RuntimeError("ain and aval must be of the same type")
    33        
    34         if type(ain) == list:
    35                 ain = np.array(ain)
    36         if type(ain) == np.ndarray:
    37                 ain = ain.flatten()
    38 
    39         for i in ain:
    40                 if i != aval:
    41                         if type(ain) == str:
    42                                 return ''
    43                         else:
    44                                 return []
    45         return ain
     10    '''
     11    function to return an empty cell array if all array elements are empty
     12    cout = allempty(cin)
     13    '''
     14    for i in cin:
     15        if not isempty(i):
     16            cout = cin
     17            return cout
     18    return []
     19
     20
     21def allequal(ain, aval):
     22    '''
     23    function to return an empty array if all array elements are
     24    equal to the given value, which may also be empty but not nan.
     25
     26    (note that by definition, nan is not equal to nan; this could
     27    be changed by using isequalwithequalnans.)
     28
     29    aout = allequal(ain, aval)
     30    '''
     31    if type(ain) != type(aval):
     32        print((allequal.__doc__))
     33        raise RuntimeError("ain and aval must be of the same type")
     34
     35    if type(ain) == list:
     36        ain = np.array(ain)
     37    if type(ain) == np.ndarray:
     38        ain = ain.flatten()
     39
     40    for i in ain:
     41        if i != aval:
     42            if type(ain) == str:
     43                return ''
     44            else:
     45                return []
     46    return ain
     47
    4648
    4749def array_numel(*args):
    48         '''
    49         function to find a number of elements from a list of arrays.
    50  
    51         asize=array_numel(varargin)
    52 
    53         see array_size to check the number and shape of elements, if
    54         multiple indices will be used.
    55 '''
    56         anum = 0
    57         inum = 0
    58         for arg in args:
    59                 if type(arg) == str:
    60                         inum = len(arg)
    61                 else:
    62                         inum = np.size(arg)
    63 
    64                 if inum != 0:
    65                         if anum == 0:
    66                                 anum = inum
    67                         else:
    68                                 if inum != anum:
    69                                         raise RuntimeError('Inputs had inconsistent number of elements')
    70         return anum
     50    '''
     51    function to find a number of elements from a list of arrays.
     52
     53    asize = array_numel(varargin)
     54
     55    see array_size to check the number and shape of elements, if
     56    multiple indices will be used.
     57    '''
     58    anum = 0
     59    inum = 0
     60    for arg in args:
     61        if type(arg) == str:
     62            inum = len(arg)
     63        else:
     64            inum = np.size(arg)
     65
     66        if inum != 0:
     67            if anum == 0:
     68                anum = inum
     69            else:
     70                if inum != anum:
     71                    raise RuntimeError('Inputs had inconsistent number of elements')
     72    return anum
     73
    7174
    7275def array_size(*args):
    73         '''
    74         function to find an array size from a list of arrays.
    75  
    76         asize=array_size(varargin)
    77 
    78         see array_numel to check only the number of elements, if
    79         single indices will be used.
    80         all arguments are assumed to be 1 or 2 dimensional
    81 
    82         Note: to call on all elements of an array use: array_size(*x)
    83                 in Matlab this would be array_size(x{1:end})
    84 
    85         Note: to get all elements in a linear array use: array_size(np.array(x).flatten()[0:])
    86                 in Matlab this would be array_size(x{1:end})
    87                 because Matlab allows direct 1D access of nD arrays
    88 '''
    89         asize = (0,0)
    90         isize = (0,0)
    91         for arg in args:
    92                 if type(arg) == str:
    93                         isize = (1,1)           #cellstr in matlab makes this happen
    94                 else:
    95                         isize = np.shape(arg)
    96                         if isize == ():         #arg is a single value, ex. 0.3, 5, False, etc
    97                                 isize = (1,1)
    98 
    99                 if isize != (0,0):
    100                         if asize == (0,0):
    101                                 asize = isize
    102                         else:
    103                                 if isize != asize:
    104                                         raise RuntimeError('Inputs had inconsistent shapes')
    105 
    106         #numpy gives (y,) if x = 1, must be reversed to match matlab syntax in this case
    107         if len(asize) == 1:
    108                 asize = (1,asize[0])
    109 
    110         return asize
    111 
    112 def str2int(astr,cfl='first',asint=True):
    113         '''
    114         function to find and read the first or last positive integer
    115         in a character string. cfl={'first','f','last','l'}; default: 'first'
    116         returns 0 if astr has no positive integers
    117 
    118         Setting asint=False returns a list of strings
    119                 eg. ['1','2','3'] from '123'
    120 
    121         aint=str2int(astr,cfl)
    122 '''
    123         aint = []
    124 
    125         num = '1234567890'
    126 
    127         if type(cfl) != str or type(astr) != str or len(cfl) == 0 or len(astr) == 0:
    128                 raise TypeError('str2int(astr,cfl): both arguments must be strings with length > 0')
    129 
    130         # find last positive int
    131         if cfl[0] in ['l','L']:
    132                 for i in reversed(astr):
    133                         if i in num:
    134                                 aint.append(i)
    135                         else:
    136                                 if len(aint) > 0:
    137                                         # aint is backwards since we were iterating backwards
    138                                         aint = list(reversed(aint))
    139                                         if asint:
    140                                                 # convert list(str) to int
    141                                                 aint = int(reduce(lambda x,y: x+y,aint))
    142                                         break
    143 
    144         elif cfl[0] in ['f','F']:
    145                 for i in astr:
    146                         if i in num:
    147                                 aint.append(i)
    148                         else:
    149                                 if len(aint) > 0:
    150                                         if asint:
    151                                                 # convert list(str) to int
    152                                                 aint = int(reduce(lambda x,y: x+y,aint))
    153                                         break
    154 
    155         # return 0 if aint is still [] (no integers found)
    156         return aint or 0
    157 
    158 def string_dim(a,idim,*args):
    159         '''
    160         function to return the string dimension of an array element
    161 
    162         function sdim=string_dim(a,idim,varargin)
    163 
    164         such that: given the array/matrix a,
    165                 idim is the linear index of an element in a,
    166                 return the x/y/z/w/... coordinates of idim in n dimensions
    167 
    168         ex. a = [1 2 3
    169                  4 5 6]
    170 
    171         idim = 4
    172         (a[4] == 5; counted as [1,4,2,5,3,6] linearly in matlab)
    173 
    174         x = string_dim(a,4) -> '[1,1]'
    175 
    176         a[x] == a[4] == a[1,1] == 5
    177 
    178         example use: exec('print a'+string_dim(a,4)) -> print a[1,1]
    179 '''
    180         sdmin = ''
    181         if type(a) == list:
    182                 a = np.array(a)
    183         if type(a) != np.ndarray:
    184                 raise TypeError('string_dim(a,idim,*args): a must be a numpy array <numpy.ndarray>. Try passing np.array(a) instead')
    185 
    186         if np.size(a) == 0 and idim == 0:
    187                 return sdim
    188        
    189         if idim >= np.size(a):
    190                 raise RuntimeError('string_dim(a,idim,*args): index idim exceeds number of elements in a')
    191 
    192         #check for column or row vector
    193         for iarg in args:
    194                 if strcmpi(iarg,'vector'):
    195                         if a.ndim == 2 and (np.shape(a,1) == 1 or np.shape(a,2) == 1):
    196                                 return '('+str(idim)+')'
    197 
    198         #transpose to compensate for differences in linear indexing in
    199         # matlab vs in python (y/x + linear vs x/y)
    200         a = a.T
    201 
    202         #general case
    203         asize = np.shape(a)
    204         i = np.zeros((np.shape(asize)))
    205         aprod = np.prod(asize)
    206         idim = idim - 1
    207         index = np.zeros((len(asize)))
    208        
    209         #calculate indices base 0
    210         for i in range(len(asize)):
    211                 aprod=aprod/asize[i]
    212                 index[i]=np.floor(idim/aprod)
    213                 idim=idim-index[i]*aprod
    214 
    215         #assemble string for output
    216         sdim ='['
    217         for i in range(len(asize)-1):
    218             sdim += str(int(index[i])) + ','
    219 
    220         sdim += str(int(index[-1])) + ']'
    221 
    222         # happens due to how python does indexing, this response in matlab is just ''
    223         if sdim == '[-1]':
    224                 return ''
    225 
    226         return sdim
     76    '''
     77    function to find an array size from a list of arrays.
     78
     79    asize = array_size(varargin)
     80
     81    see array_numel to check only the number of elements, if
     82    single indices will be used.
     83    all arguments are assumed to be 1 or 2 dimensional
     84
     85    Note: to call on all elements of an array use: array_size(* x)
     86        in Matlab this would be array_size(x{1:end})
     87
     88    Note: to get all elements in a linear array use: array_size(np.array(x).flatten()[0:])
     89        in Matlab this would be array_size(x{1:end})
     90        because Matlab allows direct 1D access of nD arrays
     91    '''
     92    asize = (0, 0)
     93    isize = (0, 0)
     94    for arg in args:
     95        if type(arg) == str:
     96            isize = (1, 1)  #cellstr in matlab makes this happen
     97        else:
     98            isize = np.shape(arg)
     99            if isize == ():  #arg is a single value, ex. 0.3, 5, False, etc
     100                isize = (1, 1)
     101
     102        if isize != (0, 0):
     103            if asize == (0, 0):
     104                asize = isize
     105            else:
     106                if isize != asize:
     107                    raise RuntimeError('Inputs had inconsistent shapes')
     108
     109    #numpy gives (y, ) if x = 1, must be reversed to match matlab syntax in this case
     110    if len(asize) == 1:
     111        asize = (1, asize[0])
     112
     113    return asize
     114
     115
     116def str2int(astr, cfl='first', asint=True):
     117    '''
     118    function to find and read the first or last positive integer
     119    in a character string. cfl={'first', 'f', 'last', 'l'}; default: 'first'
     120    returns 0 if astr has no positive integers
     121
     122    Setting asint = False returns a list of strings
     123        eg. ['1', '2', '3'] from '123'
     124
     125    aint = str2int(astr, cfl)
     126    '''
     127    aint = []
     128
     129    num = '1234567890'
     130
     131    if type(cfl) != str or type(astr) != str or len(cfl) == 0 or len(astr) == 0:
     132        raise TypeError('str2int(astr, cfl): both arguments must be strings with length > 0')
     133
     134    # find last positive int
     135    if cfl[0] in ['l', 'L']:
     136        for i in reversed(astr):
     137            if i in num:
     138                aint.append(i)
     139            else:
     140                if len(aint) > 0:
     141                    # aint is backwards since we were iterating backwards
     142                    aint = list(reversed(aint))
     143                    if asint:
     144                        # convert list(str) to int
     145                        aint = int(reduce(lambda x, y: x + y, aint))
     146                    break
     147
     148    elif cfl[0] in ['f', 'F']:
     149        for i in astr:
     150            if i in num:
     151                aint.append(i)
     152            else:
     153                if len(aint) > 0:
     154                    if asint:
     155                        # convert list(str) to int
     156                        aint = int(reduce(lambda x, y: x + y, aint))
     157                    break
     158
     159    # return 0 if aint is still [] (no integers found)
     160    return aint or 0
     161
     162
     163def string_dim(a, idim, *args):
     164    '''
     165    function to return the string dimension of an array element
     166
     167    function sdim = string_dim(a, idim, varargin)
     168
     169    such that: given the array / matrix a,
     170        idim is the linear index of an element in a,
     171        return the x / y / z / w / ... coordinates of idim in n dimensions
     172
     173    ex. a = [1 2 3
     174         4 5 6]
     175
     176    idim = 4
     177    (a[4] == 5; counted as [1, 4, 2, 5, 3, 6] linearly in matlab)
     178
     179    x = string_dim(a, 4) - > '[1, 1]'
     180
     181    a[x] == a[4] == a[1, 1] == 5
     182
     183    example use: exec('print a' + string_dim(a, 4)) - > print a[1, 1]
     184    '''
     185
     186    if type(a) == list:
     187        a = np.array(a)
     188    if type(a) != np.ndarray:
     189        raise TypeError('string_dim(a, idim, *args): a must be a numpy array < numpy.ndarray > . Try passing np.array(a) instead')
     190
     191    if np.size(a) == 0 and idim == 0:
     192        return sdim
     193
     194    if idim >= np.size(a):
     195        raise RuntimeError('string_dim(a, idim, *args): index idim exceeds number of elements in a')
     196
     197    #check for column or row vector
     198    for iarg in args:
     199        if strcmpi(iarg, 'vector'):
     200            if a.ndim == 2 and (np.shape(a, 1) == 1 or np.shape(a, 2) == 1):
     201                return '(' + str(idim) + ')'
     202
     203    #transpose to compensate for differences in linear indexing in
     204    # matlab vs in python (y / x + linear vs x / y)
     205    a = a.T
     206
     207    #general case
     208    asize = np.shape(a)
     209    i = np.zeros((np.shape(asize)))
     210    aprod = np.prod(asize)
     211    idim = idim - 1
     212    index = np.zeros((len(asize)))
     213
     214    #calculate indices base 0
     215    for i in range(len(asize)):
     216        aprod = aprod / asize[i]
     217        index[i] = np.floor(idim / aprod)
     218        idim = idim - index[i] * aprod
     219
     220    #assemble string for output
     221    sdim = '['
     222    for i in range(len(asize) - 1):
     223        sdim += str(int(index[i])) + ', '
     224
     225    sdim += str(int(index[-1])) + ']'
     226
     227    # happens due to how python does indexing, this response in matlab is just ''
     228    if sdim == '[-1]':
     229        return ''
     230
     231    return sdim
     232
    227233
    228234def string_vec(a):
    229         '''
    230         function to return the string of a vector
    231 
    232         function svec=string_vec(a)
    233 '''
    234         return str(a)
    235 
    236 def struc_class(sclass,cstr,name):
    237         '''
    238         function to find the structural fields of a specified class
    239 
    240         sclasso=struc_class(sclass,cstr,variable_name)
    241 
    242         such that:
    243         sclasso.variable_name == sclass (hard copy)
    244 
    245         if variable_name == ''
    246                 sclasso.cstr == sclass (hard copy)
    247 '''
    248         try:
    249                 # I tried other methods, but this is, unfortunately, the best behaving by far
    250                 exec('from '+cstr+' import *')
    251         except:
    252                 raise RuntimeError('MatlabArray.struc_class Class Error: class "'+cstr+'" does not exist')
    253 
    254         sclasso = struct()
    255 
    256         if isinstance(sclass,eval(cstr)):
    257                 # if we were given no name, call it by its class name
    258                 if name != '':
    259                         setattr(sclasso, name, deepcopy(sclass))
    260                 else:
    261                         setattr(sclasso, cstr, deepcopy(sclass))
    262         else:
    263                 raise RuntimeError('MatlabArray.struc_class Match Error: provided object of type "'+str(type(sclass))+'" does not match provided string; object should be of type '+cstr)
    264 
    265         #may need this later depending on how src/m/classes/qmu works out
    266 
    267         #if len(vars(sclass)) == 0:
    268                 #return Lstruct()
    269 
    270         #else:
    271                 #fnames = fieldnames(sclass)
    272                 #for f in fnames:
    273                         #if isinstance(vars(sclass)[f],eval(cstr)):
    274                                 #exec('sclasso.%s = vars(sclass)[f]')%(f)
    275                                 #vars(sclasso)[f] = vars(sclass)[f]
    276 
    277         return sclasso
     235    '''
     236    function to return the string of a vector
     237
     238    function svec = string_vec(a)
     239    '''
     240    return str(a)
     241
     242
     243def struc_class(sclass, cstr, name):
     244    '''
     245    function to find the structural fields of a specified class
     246
     247    sclasso = struc_class(sclass, cstr, variable_name)
     248
     249    such that:
     250    sclasso.variable_name == sclass (hard copy)
     251
     252    if variable_name == ''
     253        sclasso.cstr == sclass (hard copy)
     254    '''
     255    try:
     256        # I tried other methods, but this is, unfortunately, the best behaving by far
     257        exec('from ' + cstr + ' import * ')
     258    except:
     259        raise RuntimeError('MatlabArray.struc_class Class Error: class "' + cstr + '" does not exist')
     260
     261    sclasso = struct()
     262
     263    if isinstance(sclass, eval(cstr)):
     264        # if we were given no name, call it by its class name
     265        if name != '':
     266            setattr(sclasso, name, deepcopy(sclass))
     267        else:
     268            setattr(sclasso, cstr, deepcopy(sclass))
     269    else:
     270        raise RuntimeError('MatlabArray.struc_class Match Error: provided object of type "' + str(type(sclass)) + '" does not match provided string; object should be of type ' + cstr)
     271
     272    #may need this later depending on how src / m / classes / qmu works out
     273
     274    #if len(vars(sclass)) == 0:
     275    #return Lstruct()
     276
     277    #else:
     278    #fnames = fieldnames(sclass)
     279    #for f in fnames:
     280    #if isinstance(vars(sclass)[f], eval(cstr)):
     281    #exec('sclasso.%s = vars(sclass)[f]')%(f)
     282    #vars(sclasso)[f] = vars(sclass)[f]
     283
     284    return sclasso
  • issm/trunk-jpl/src/m/boundaryconditions/PattynSMB.py

    r21303 r24213  
    1 import os
    2 import numpy as  np
    3 def PattynSMB(md,Tf):
    4         """
    5     PATTYNSMB- Compute SMB over Antarctica (from Pattyn 2006, pg. 18, "GRANTISM: An ExcelTM model for Greenland
    6         and Antarctic ice-sheet response to climate changes")
     1import numpy as np
     2
     3
     4def PattynSMB(md, Tf):
     5    """
     6    PATTYNSMB - Compute SMB over Antarctica (from Pattyn 2006, pg. 18, "GRANTISM: An ExcelTM model for Greenland
     7    and Antarctic ice-sheet response to climate changes")
    78
    89    Usage:
    9       md=PattynSMB(md,Tf)
     10      md = PattynSMB(md, Tf)
    1011
    1112      where Tf is a background forcing temperature ("an anomalous temperature relative to the present conditions)
     
    1314
    1415    See also: SETICESHELFBC, SETMARINEICESHEETBC
    15         """
    16  
    17         # Tma    : Mean annual surface temperature in [deg C]
    18         # Tms    : Mean summer temperature in [deg C]
    19         # h      : Surface/bedrock elevation (I assume in meters but paper does not specify)
    20         # phi    : Latitude in degrees SOUTH
    21         # lambda : Longitude in degrees WEST
    22         # Tf     : Background forcing temperature ("an anomalous temperature relative to the present conditions)
    23         # ACCdot : Accumulation rate in units of [m/a] ice equivalent
    24         # ABLdot : Surface ablation rate in [m/a] ice equivalent
     16    """
    2517
    26         #Double check lat and long exist:
    27         if np.any(np.isnan(md.mesh.lat)):
    28                 raise IOError('PattynSMB error message: md.mesh.lat field required')
     18    # Tma    : Mean annual surface temperature in [deg C]
     19    # Tms    : Mean summer temperature in [deg C]
     20    # h      : Surface / bedrock elevation (I assume in meters but paper does not specify)
     21    # phi    : Latitude in degrees SOUTH
     22    # lambda : Longitude in degrees WEST
     23    # Tf     : Background forcing temperature ("an anomalous temperature relative to the present conditions)
     24    # ACCdot : Accumulation rate in units of [m / a] ice equivalent
     25    # ABLdot : Surface ablation rate in [m / a] ice equivalent
    2926
    30         # Calculate mean annual surface temperature, Eqn (11)
    31         # Here, -0.012 is the atmospheric Lapse rate from sea level in deg/m.
    32         # It is multiplied by surface elevation from sea level
    33         Tma = -15.15 - 0.012*md.geometry.surface
    34        
     27    #Double check lat and long exist:
     28    if np.any(np.isnan(md.mesh.lat)):
     29        raise IOError('PattynSMB error message: md.mesh.lat field required')
    3530
    36         # Calculate summer temperature, Eqn (12)
    37         # No melting at PIG in mean conditions - need about 6 degress Tf to start having a negative yearly SMB
    38         Tms = 16.81 - 0.00692*md.geometry.surface - 0.27937*np.abs(md.mesh.lat) + Tf
    39         Tms= Tms[0]
     31    # Calculate mean annual surface temperature, Eqn (11)
     32    # Here, - 0.012 is the atmospheric Lapse rate from sea level in deg / m.
     33    # It is multiplied by surface elevation from sea level
     34    Tma = - 15.15 - 0.012 * md.geometry.surface
    4035
    41         # Calculate Accumulation perturbation with Tf forcing, Eqn (9)
    42         ACCdot = 2.5*2**((Tma+Tf)/10.) - 2.5*2**(Tma/10.)
     36    # Calculate summer temperature, Eqn (12)
     37    # No melting at PIG in mean conditions - need about 6 degress Tf to start having a negative yearly SMB
     38    Tms = 16.81 - 0.00692 * md.geometry.surface - 0.27937 * np.abs(md.mesh.lat) + Tf
     39    Tms = Tms[0]
    4340
    44         # Calculate Ablation, Eqn (10) (use for both Antarctica & Greenland), max melt is 10m/a
    45         ABLdot=0.*np.ones(md.mesh.numberofvertices)
    46         pos=np.nonzero(Tms>=0)
    47         ABLdot[pos]=np.minimum(1.4*Tms[pos],10)
     41    # Calculate Accumulation perturbation with Tf forcing, Eqn (9)
     42    ACCdot = 2.5 * 2**((Tma + Tf) / 10.) - 2.5 * 2**(Tma / 10.)
    4843
    49         smb=ACCdot-ABLdot
    50         return smb[0]
     44    # Calculate Ablation, Eqn (10) (use for both Antarctica & Greenland), max melt is 10m / a
     45    ABLdot = 0. * np.ones(md.mesh.numberofvertices)
     46    pos = np.nonzero(Tms >= 0)
     47    ABLdot[pos] = np.minimum(1.4 * Tms[pos], 10)
     48
     49    smb = ACCdot - ABLdot
     50    return smb[0]
  • issm/trunk-jpl/src/m/boundaryconditions/SetIceSheetBC.py

    r23716 r24213  
    1 import os
    21import numpy as np
    3 from ContourToMesh import ContourToMesh
     2
    43
    54def SetIceSheetBC(md):
    6         """
    7         SETICESHEETBC - Create the boundary conditions for stressbalance and thermal models for an IceSheet with no Ice Front
     5    """
     6    SETICESHEETBC - Create the boundary conditions for stressbalance and thermal models for an IceSheet with no Ice Front
    87
    9            Usage:
    10               md=SetIceSheetBC(md)
     8       Usage:
     9          md = SetIceSheetBC(md)
    1110
    12            See also: SETICESHELFBC, SETMARINEICESHEETBC
    13         """
     11       See also: SETICESHELFBC, SETMARINEICESHEETBC
     12    """
    1413
    15         #node on Dirichlet
    16         pos=np.nonzero(md.mesh.vertexonboundary)
    17         md.stressbalance.spcvx=float('nan')*np.ones((md.mesh.numberofvertices))
    18         md.stressbalance.spcvy=float('nan')*np.ones((md.mesh.numberofvertices))
    19         md.stressbalance.spcvz=float('nan')*np.ones((md.mesh.numberofvertices))
    20         md.stressbalance.spcvx[pos]=0
    21         md.stressbalance.spcvy[pos]=0
    22         md.stressbalance.spcvz[pos]=0
    23         md.stressbalance.referential=float('nan')*np.ones((md.mesh.numberofvertices,6))
    24         md.stressbalance.loadingforce=0*np.ones((md.mesh.numberofvertices,3))
     14    #node on Dirichlet
     15    pos = np.nonzero(md.mesh.vertexonboundary)
     16    md.stressbalance.spcvx = float('nan') * np.ones((md.mesh.numberofvertices))
     17    md.stressbalance.spcvy = float('nan') * np.ones((md.mesh.numberofvertices))
     18    md.stressbalance.spcvz = float('nan') * np.ones((md.mesh.numberofvertices))
     19    md.stressbalance.spcvx[pos] = 0
     20    md.stressbalance.spcvy[pos] = 0
     21    md.stressbalance.spcvz[pos] = 0
     22    md.stressbalance.referential = float('nan') * np.ones((md.mesh.numberofvertices, 6))
     23    md.stressbalance.loadingforce = 0 * np.ones((md.mesh.numberofvertices, 3))
    2524
    26         #Dirichlet Values
    27         if isinstance(md.inversion.vx_obs,np.ndarray) and np.size(md.inversion.vx_obs,axis=0)==md.mesh.numberofvertices and isinstance(md.inversion.vy_obs,np.ndarray) and np.size(md.inversion.vy_obs,axis=0)==md.mesh.numberofvertices:
    28                 print("      boundary conditions for stressbalance model: spc set as observed velocities")
    29                 md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos]
    30                 md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos]
    31         else:
    32                 print("      boundary conditions for stressbalance model: spc set as zero")
     25    #Dirichlet Values
     26    if isinstance(md.inversion.vx_obs, np.ndarray) and np.size(md.inversion.vx_obs, axis=0) == md.mesh.numberofvertices and isinstance(md.inversion.vy_obs, np.ndarray) and np.size(md.inversion.vy_obs, axis=0) == md.mesh.numberofvertices:
     27        print("      boundary conditions for stressbalance model: spc set as observed velocities")
     28        md.stressbalance.spcvx[pos] = md.inversion.vx_obs[pos]
     29        md.stressbalance.spcvy[pos] = md.inversion.vy_obs[pos]
     30    else:
     31        print("      boundary conditions for stressbalance model: spc set as zero")
    3332
    34         #No ice front -> do nothing
     33    #No ice front - > do nothing
    3534
    36         #Create zeros basalforcings and smb
    37         md.smb.initialize(md)
    38         md.basalforcings.initialize(md)
     35    #Create zeros basalforcings and smb
     36    md.smb.initialize(md)
     37    md.basalforcings.initialize(md)
    3938
    40         #Deal with other boundary conditions
    41         if np.all(np.isnan(md.balancethickness.thickening_rate)):
    42                 md.balancethickness.thickening_rate=np.zeros((md.mesh.numberofvertices))
    43                 print("      no balancethickness.thickening_rate specified: values set as zero")
    44         md.masstransport.spcthickness=float('nan')*np.ones((md.mesh.numberofvertices))
    45         md.balancethickness.spcthickness=float('nan')*np.ones((md.mesh.numberofvertices))
    46         md.damage.spcdamage=float('nan')*np.ones((md.mesh.numberofvertices))
     39    #Deal with other boundary conditions
     40    if np.all(np.isnan(md.balancethickness.thickening_rate)):
     41        md.balancethickness.thickening_rate = np.zeros((md.mesh.numberofvertices))
     42        print("      no balancethickness.thickening_rate specified: values set as zero")
     43    md.masstransport.spcthickness = float('nan') * np.ones((md.mesh.numberofvertices))
     44    md.balancethickness.spcthickness = float('nan') * np.ones((md.mesh.numberofvertices))
     45    md.damage.spcdamage = float('nan') * np.ones((md.mesh.numberofvertices))
    4746
    48         if isinstance(md.initialization.temperature,np.ndarray) and np.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
    49                 md.thermal.spctemperature=float('nan')*np.ones((md.mesh.numberofvertices))
    50                 if hasattr(md.mesh,'vertexonsurface'):
    51                         pos=np.nonzero(md.mesh.vertexonsurface)[0]
    52                         md.thermal.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
    53                 if not isinstance(md.basalforcings.geothermalflux,np.ndarray) or not np.size(md.basalforcings.geothermalflux)==md.mesh.numberofvertices:
    54                         md.basalforcings.geothermalflux=50.*10**-3*np.ones((md.mesh.numberofvertices))    #50 mW/m^2
    55         else:
    56                 print("      no thermal boundary conditions created: no observed temperature found")
     47    if isinstance(md.initialization.temperature, np.ndarray) and np.size(md.initialization.temperature, axis=0) == md.mesh.numberofvertices:
     48        md.thermal.spctemperature = float('nan') * np.ones((md.mesh.numberofvertices))
     49        if hasattr(md.mesh, 'vertexonsurface'):
     50            pos = np.nonzero(md.mesh.vertexonsurface)[0]
     51            md.thermal.spctemperature[pos] = md.initialization.temperature[pos]  #impose observed temperature on surface
     52        if not isinstance(md.basalforcings.geothermalflux, np.ndarray) or not np.size(md.basalforcings.geothermalflux) == md.mesh.numberofvertices:
     53            md.basalforcings.geothermalflux = 50. * 10**- 3 * np.ones((md.mesh.numberofvertices))  #50 mW / m^2
     54    else:
     55        print("      no thermal boundary conditions created: no observed temperature found")
    5756
    58         return md
    59 
     57    return md
  • issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py

    r23716 r24213  
    44import MatlabFuncs as m
    55
    6 def SetIceShelfBC(md,icefrontfile=''):
    7         """
    8         SETICESHELFBC - Create the boundary conditions for stressbalance and thermal models for a  Ice Shelf with Ice Front
    96
    10            Neumann BC are used on the ice front (an ARGUS contour around the ice front
    11            must be given in input)
    12            Dirichlet BC are used elsewhere for stressbalance
     7def SetIceShelfBC(md, icefrontfile=''):
     8    """
     9    SETICESHELFBC - Create the boundary conditions for stressbalance and thermal models for a  Ice Shelf with Ice Front
    1310
    14            Usage:
    15               md=SetIceShelfBC(md,varargin)
     11       Neumann BC are used on the ice front (an ARGUS contour around the ice front
     12       must be given in input)
     13       Dirichlet BC are used elsewhere for stressbalance
    1614
    17            Example:
    18               md=SetIceShelfBC(md);
    19               md=SetIceShelfBC(md,'Front.exp');
     15       Usage:
     16          md = SetIceShelfBC(md, varargin)
    2017
    21            See also: SETICESHEETBC, SETMARINEICESHEETBC
    22         """
     18       Example:
     19          md = SetIceShelfBC(md)
     20          md = SetIceShelfBC(md, 'Front.exp')
    2321
    24         #node on Dirichlet (boundary and ~icefront)
    25         if icefrontfile:
    26                 if not os.path.exists(icefrontfile):
    27                         raise IOError("SetIceShelfBC error message: ice front file '%s' not found." % icefrontfile)
    28                 nodeinsideicefront=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefrontfile,'node',2)
    29                 nodeonicefront=np.logical_and(md.mesh.vertexonboundary,nodeinsideicefront.reshape(-1))
    30         else:
    31                 nodeonicefront=np.zeros((md.mesh.numberofvertices),bool)
     22       See also: SETICESHEETBC, SETMARINEICESHEETBC
     23    """
    3224
    33 #       pos=find(md.mesh.vertexonboundary & ~nodeonicefront);
    34         pos=np.nonzero(np.logical_and(md.mesh.vertexonboundary,np.logical_not(nodeonicefront)))[0]
    35         md.stressbalance.spcvx=float('nan')*np.ones(md.mesh.numberofvertices)
    36         md.stressbalance.spcvy=float('nan')*np.ones(md.mesh.numberofvertices)
    37         md.stressbalance.spcvz=float('nan')*np.ones(md.mesh.numberofvertices)
    38         md.stressbalance.referential=float('nan')*np.ones((md.mesh.numberofvertices,6))
    39         md.stressbalance.loadingforce=0*np.ones((md.mesh.numberofvertices,3))
     25    #node on Dirichlet (boundary and ~icefront)
     26    if icefrontfile:
     27        if not os.path.exists(icefrontfile):
     28            raise IOError("SetIceShelfBC error message: ice front file '%s' not found." % icefrontfile)
     29        nodeinsideicefront = ContourToMesh(md.mesh.elements, md.mesh.x, md.mesh.y, icefrontfile, 'node', 2)
     30        nodeonicefront = np.logical_and(md.mesh.vertexonboundary, nodeinsideicefront.reshape(- 1))
     31    else:
     32        nodeonicefront = np.zeros((md.mesh.numberofvertices), bool)
    4033
    41         #Icefront position
    42         pos=np.nonzero(nodeonicefront)[0]
    43         md.mask.ice_levelset[pos]=0
     34    #    pos = find(md.mesh.vertexonboundary & ~nodeonicefront)
     35    pos = np.nonzero(np.logical_and(md.mesh.vertexonboundary, np.logical_not(nodeonicefront)))[0]
     36    md.stressbalance.spcvx = float('nan') * np.ones(md.mesh.numberofvertices)
     37    md.stressbalance.spcvy = float('nan') * np.ones(md.mesh.numberofvertices)
     38    md.stressbalance.spcvz = float('nan') * np.ones(md.mesh.numberofvertices)
     39    md.stressbalance.referential = float('nan') * np.ones((md.mesh.numberofvertices, 6))
     40    md.stressbalance.loadingforce = 0 * np.ones((md.mesh.numberofvertices, 3))
    4441
    45         #First find segments that are not completely on the front
    46         if m.strcmp(md.mesh.elementtype(),'Penta'):
    47                 numbernodesfront=4;
    48         elif m.strcmp(md.mesh.elementtype(),'Tria'):
    49                 numbernodesfront=2;
    50         else:
    51                 raise   error('mesh type not supported yet')
    52         if any(md.mask.ice_levelset<=0):
    53                 values=md.mask.ice_levelset[md.mesh.segments[:,0:-1]-1]
    54                 segmentsfront=1-values
    55                 np.sum(segmentsfront,axis=1)!=numbernodesfront
    56                 segments=np.nonzero(np.sum(segmentsfront,axis=1)!=numbernodesfront)[0]
    57                 #Find all nodes for these segments and spc them
    58                 pos=md.mesh.segments[segments,0:-1]-1
    59         else:
    60                 pos=np.nonzero(md.mesh.vertexonboundary)[0]
    61         md.stressbalance.spcvx[pos]=0
    62         md.stressbalance.spcvy[pos]=0
    63         md.stressbalance.spcvz[pos]=0
    64                                                                                                                                                                                                                                            
    65         #Dirichlet Values
    66         if isinstance(md.inversion.vx_obs,np.ndarray) and np.size(md.inversion.vx_obs,axis=0)==md.mesh.numberofvertices and isinstance(md.inversion.vy_obs,np.ndarray) and np.size(md.inversion.vy_obs,axis=0)==md.mesh.numberofvertices:
    67                 #reshape to rank-2 if necessary to match spc arrays
    68                 if np.ndim(md.inversion.vx_obs)==1:
    69                         md.inversion.vx_obs=md.inversion.vx_obs.reshape(-1,)
    70                 if np.ndim(md.inversion.vy_obs)==1:
    71                         md.inversion.vy_obs=md.inversion.vy_obs.reshape(-1,)
    72                 print("      boundary conditions for stressbalance model: spc set as observed velocities")
    73                 md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos]
    74                 md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos]
    75         else:
    76                 print("      boundary conditions for stressbalance model: spc set as zero")
     42    #Icefront position
     43    pos = np.nonzero(nodeonicefront)[0]
     44    md.mask.ice_levelset[pos] = 0
    7745
    78         #Create zeros basalforcings and smb
    79         md.smb.initialize(md)
    80         md.basalforcings.initialize(md)
     46    #First find segments that are not completely on the front
     47    if m.strcmp(md.mesh.elementtype(), 'Penta'):
     48        numbernodesfront = 4
     49    elif m.strcmp(md.mesh.elementtype(), 'Tria'):
     50        numbernodesfront = 2
     51    else:
     52        raise NameError('mesh type not supported yet')
     53    if any(md.mask.ice_levelset <= 0):
     54        values = md.mask.ice_levelset[md.mesh.segments[:, 0: - 1] - 1]
     55        segmentsfront = 1 - values
     56        np.sum(segmentsfront, axis=1) != numbernodesfront
     57        segments = np.nonzero(np.sum(segmentsfront, axis=1) != numbernodesfront)[0]
     58    #Find all nodes for these segments and spc them
     59        pos = md.mesh.segments[segments, 0: - 1] - 1
     60    else:
     61        pos = np.nonzero(md.mesh.vertexonboundary)[0]
     62    md.stressbalance.spcvx[pos] = 0
     63    md.stressbalance.spcvy[pos] = 0
     64    md.stressbalance.spcvz[pos] = 0
    8165
    82         #Deal with other boundary conditions
    83         if np.all(np.isnan(md.balancethickness.thickening_rate)):
    84                 md.balancethickness.thickening_rate=np.zeros((md.mesh.numberofvertices))
    85                 print("      no balancethickness.thickening_rate specified: values set as zero")
    86         md.masstransport.spcthickness=float('nan')*np.ones((md.mesh.numberofvertices))
    87         md.balancethickness.spcthickness=float('nan')*np.ones((md.mesh.numberofvertices))
    88         md.damage.spcdamage=float('nan')*np.ones((md.mesh.numberofvertices))
     66    #Dirichlet Values
     67    if isinstance(md.inversion.vx_obs, np.ndarray) and np.size(md.inversion.vx_obs, axis=0) == md.mesh.numberofvertices and isinstance(md.inversion.vy_obs, np.ndarray) and np.size(md.inversion.vy_obs, axis=0) == md.mesh.numberofvertices:
     68        #reshape to rank - 2 if necessary to match spc arrays
     69        if np.ndim(md.inversion.vx_obs) == 1:
     70            md.inversion.vx_obs = md.inversion.vx_obs.reshape(- 1, )
     71        if np.ndim(md.inversion.vy_obs) == 1:
     72            md.inversion.vy_obs = md.inversion.vy_obs.reshape(- 1, )
     73        print("      boundary conditions for stressbalance model: spc set as observed velocities")
     74        md.stressbalance.spcvx[pos] = md.inversion.vx_obs[pos]
     75        md.stressbalance.spcvy[pos] = md.inversion.vy_obs[pos]
     76    else:
     77        print("      boundary conditions for stressbalance model: spc set as zero")
    8978
    90         if isinstance(md.initialization.temperature,np.ndarray) and np.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
    91                 md.thermal.spctemperature=float('nan')*np.ones((md.mesh.numberofvertices))
    92                 if hasattr(md.mesh,'vertexonsurface'):
    93                         pos=np.nonzero(md.mesh.vertexonsurface)[0]
    94                         md.thermal.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
    95                 if not isinstance(md.basalforcings.geothermalflux,np.ndarray) or not np.size(md.basalforcings.geothermalflux,axis=0)==md.mesh.numberofvertices:
    96                         md.basalforcings.geothermalflux=np.zeros((md.mesh.numberofvertices))
    97         else:
    98                 print("      no thermal boundary conditions created: no observed temperature found")
     79    #Create zeros basalforcings and smb
     80    md.smb.initialize(md)
     81    md.basalforcings.initialize(md)
    9982
    100         return md
     83    #Deal with other boundary conditions
     84    if np.all(np.isnan(md.balancethickness.thickening_rate)):
     85        md.balancethickness.thickening_rate = np.zeros((md.mesh.numberofvertices))
     86        print("      no balancethickness.thickening_rate specified: values set as zero")
     87    md.masstransport.spcthickness = float('nan') * np.ones((md.mesh.numberofvertices))
     88    md.balancethickness.spcthickness = float('nan') * np.ones((md.mesh.numberofvertices))
     89    md.damage.spcdamage = float('nan') * np.ones((md.mesh.numberofvertices))
    10190
     91    if isinstance(md.initialization.temperature, np.ndarray) and np.size(md.initialization.temperature, axis=0) == md.mesh.numberofvertices:
     92        md.thermal.spctemperature = float('nan') * np.ones((md.mesh.numberofvertices))
     93        if hasattr(md.mesh, 'vertexonsurface'):
     94            pos = np.nonzero(md.mesh.vertexonsurface)[0]
     95            md.thermal.spctemperature[pos] = md.initialization.temperature[pos]  #impose observed temperature on surface
     96        if not isinstance(md.basalforcings.geothermalflux, np.ndarray) or not np.size(md.basalforcings.geothermalflux, axis=0) == md.mesh.numberofvertices:
     97            md.basalforcings.geothermalflux = np.zeros((md.mesh.numberofvertices))
     98    else:
     99        print("      no thermal boundary conditions created: no observed temperature found")
     100
     101    return md
  • issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py

    r23716 r24213  
    22import numpy as np
    33from ContourToMesh import ContourToMesh
    4 import MatlabFuncs as m
    54
    6 def SetMarineIceSheetBC(md,icefrontfile=''):
    7         """
    8         SETICEMARINESHEETBC - Create the boundary conditions for stressbalance and thermal models for a  Marine Ice Sheet with Ice Front
    95
    10            Neumann BC are used on the ice front (an ARGUS contour around the ice front
    11            can be given in input, or it will be deduced as onfloatingice & onboundary)
    12            Dirichlet BC are used elsewhere for stressbalance
     6def SetMarineIceSheetBC(md, icefrontfile=''):
     7    """
     8    SETICEMARINESHEETBC - Create the boundary conditions for stressbalance and thermal models for a  Marine Ice Sheet with Ice Front
    139
    14            Usage:
    15               md=SetMarineIceSheetBC(md,icefrontfile)
    16               md=SetMarineIceSheetBC(md)
     10       Neumann BC are used on the ice front (an ARGUS contour around the ice front
     11       can be given in input, or it will be deduced as onfloatingice & onboundary)
     12       Dirichlet BC are used elsewhere for stressbalance
    1713
    18            Example:
    19               md=SetMarineIceSheetBC(md,'Front.exp')
    20               md=SetMarineIceSheetBC(md)
     14       Usage:
     15          md = SetMarineIceSheetBC(md, icefrontfile)
     16          md = SetMarineIceSheetBC(md)
    2117
    22            See also: SETICESHELFBC, SETMARINEICESHEETBC
    23         """
     18       Example:
     19          md = SetMarineIceSheetBC(md, 'Front.exp')
     20          md = SetMarineIceSheetBC(md)
    2421
    25         #node on Dirichlet (boundary and ~icefront)
    26         if icefrontfile:
    27                 #User provided Front.exp, use it
    28                 if not os.path.exists(icefrontfile):
    29                         raise IOError("SetMarineIceSheetBC error message: ice front file '%s' not found." % icefrontfile)
    30                 incontour=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefrontfile,'node',2)
    31                 vertexonicefront=np.logical_and(md.mesh.vertexonboundary,incontour.reshape(-1))
    32         else:
    33                 #Guess where the ice front is
    34                 vertexonfloatingice=np.zeros((md.mesh.numberofvertices))
    35                 pos=np.nonzero(np.sum(md.mask.groundedice_levelset[md.mesh.elements-1]<0.,axis=1) >0.)[0]
    36                 vertexonfloatingice[md.mesh.elements[pos].astype(int)-1]=1.
    37                 vertexonicefront=np.logical_and(np.reshape(md.mesh.vertexonboundary,(-1,)),vertexonfloatingice>0.)
     22       See also: SETICESHELFBC, SETMARINEICESHEETBC
     23    """
     24    #node on Dirichlet (boundary and ~icefront)
     25    if icefrontfile:
     26        #User provided Front.exp, use it
     27        if not os.path.exists(icefrontfile):
     28            raise IOError("SetMarineIceSheetBC error message: ice front file '%s' not found." % icefrontfile)
     29        incontour = ContourToMesh(md.mesh.elements, md.mesh.x, md.mesh.y, icefrontfile, 'node', 2)
     30        vertexonicefront = np.logical_and(md.mesh.vertexonboundary, incontour.reshape(- 1))
     31    else:
     32        #Guess where the ice front is
     33        vertexonfloatingice = np.zeros((md.mesh.numberofvertices))
     34        pos = np.nonzero(np.sum(md.mask.groundedice_levelset[md.mesh.elements - 1] < 0., axis=1) > 0.)[0]
     35        vertexonfloatingice[md.mesh.elements[pos].astype(int) - 1] = 1.
     36        vertexonicefront = np.logical_and(np.reshape(md.mesh.vertexonboundary, (- 1, )), vertexonfloatingice > 0.)
    3837
    39 #       pos=find(md.mesh.vertexonboundary & ~vertexonicefront);
    40         pos=np.nonzero(np.logical_and(md.mesh.vertexonboundary,np.logical_not(vertexonicefront)))[0]
    41         if not np.size(pos):
    42                 print("SetMarineIceSheetBC warning: ice front all around the glacier, no dirichlet found. Dirichlet must be added manually.")
     38    #pos = find(md.mesh.vertexonboundary & ~vertexonicefront)
     39    pos = np.nonzero(np.logical_and(md.mesh.vertexonboundary, np.logical_not(vertexonicefront)))[0]
     40    if not np.size(pos):
     41        print("SetMarineIceSheetBC warning: ice front all around the glacier, no dirichlet found. Dirichlet must be added manually.")
    4342
    44         md.stressbalance.spcvx=float('nan')*np.ones(md.mesh.numberofvertices)
    45         md.stressbalance.spcvy=float('nan')*np.ones(md.mesh.numberofvertices)
    46         md.stressbalance.spcvz=float('nan')*np.ones(md.mesh.numberofvertices)
    47         md.stressbalance.referential=float('nan')*np.ones((md.mesh.numberofvertices,6))
    48         md.stressbalance.loadingforce=0*np.ones((md.mesh.numberofvertices,3))
     43    md.stressbalance.spcvx = float('nan') * np.ones(md.mesh.numberofvertices)
     44    md.stressbalance.spcvy = float('nan') * np.ones(md.mesh.numberofvertices)
     45    md.stressbalance.spcvz = float('nan') * np.ones(md.mesh.numberofvertices)
     46    md.stressbalance.referential = float('nan') * np.ones((md.mesh.numberofvertices, 6))
     47    md.stressbalance.loadingforce = 0 * np.ones((md.mesh.numberofvertices, 3))
    4948
    50         #Position of ice front
    51         pos=np.nonzero(vertexonicefront)[0]
    52         md.mask.ice_levelset[pos]=0
     49    #Position of ice front
     50    pos = np.nonzero(vertexonicefront)[0]
     51    md.mask.ice_levelset[pos] = 0
    5352
    54         #First find segments that are not completely on the front
    55         if m.strcmp(md.mesh.elementtype(),'Penta'):
    56                 numbernodesfront=4
    57         elif m.strcmp(md.mesh.elementtype(),'Tria'):
    58                 numbernodesfront=2
    59         else:
    60                         raise Exception("Mesh type not supported")
    61         if any(md.mask.ice_levelset<=0):
    62                 values=md.mask.ice_levelset[md.mesh.segments[:,0:-1]-1]
    63                 segmentsfront=1-values
    64                 np.sum(segmentsfront,axis=1)!=numbernodesfront
    65                 segments=np.nonzero(np.sum(segmentsfront,axis=1)!=numbernodesfront)[0]
    66                 #Find all nodes for these segments and spc them
    67                 pos=md.mesh.segments[segments,0:-1]-1
    68         else:
    69                 pos=np.nonzero(md.mesh.vertexonboundary)[0]
    70         md.stressbalance.spcvx[pos]=0
    71         md.stressbalance.spcvy[pos]=0
    72         md.stressbalance.spcvz[pos]=0
     53    #First find segments that are not completely on the front
     54    if md.mesh.elementtype() == 'Penta':
     55        numbernodesfront = 4
     56    elif md.mesh.elementtype() == 'Tria':
     57        numbernodesfront = 2
     58    else:
     59        raise Exception("Mesh type not supported")
     60    if any(md.mask.ice_levelset <= 0):
     61        values = md.mask.ice_levelset[md.mesh.segments[:, 0:-1] - 1]
     62        segmentsfront = 1 - values
     63        np.sum(segmentsfront, axis=1) != numbernodesfront
     64        segments = np.nonzero(np.sum(segmentsfront, axis=1) != numbernodesfront)[0]
     65    #Find all nodes for these segments and spc them
     66        pos = md.mesh.segments[segments, 0: - 1] - 1
     67    else:
     68        pos = np.nonzero(md.mesh.vertexonboundary)[0]
     69    md.stressbalance.spcvx[pos] = 0
     70    md.stressbalance.spcvy[pos] = 0
     71    md.stressbalance.spcvz[pos] = 0
    7372
    74         #Dirichlet Values
    75         if isinstance(md.inversion.vx_obs,np.ndarray) and np.size(md.inversion.vx_obs,axis=0)==md.mesh.numberofvertices and isinstance(md.inversion.vy_obs,np.ndarray) and np.size(md.inversion.vy_obs,axis=0)==md.mesh.numberofvertices:
    76                 print("      boundary conditions for stressbalance model: spc set as observed velocities")
    77                 md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos]
    78                 md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos]
    79         else:
    80                 print("      boundary conditions for stressbalance model: spc set as zero")
     73    #Dirichlet Values
     74    if isinstance(md.inversion.vx_obs, np.ndarray) and np.size(md.inversion.vx_obs, axis=0) == md.mesh.numberofvertices and isinstance(md.inversion.vy_obs, np.ndarray) and np.size(md.inversion.vy_obs, axis=0) == md.mesh.numberofvertices:
     75        print("      boundary conditions for stressbalance model: spc set as observed velocities")
     76        md.stressbalance.spcvx[pos] = md.inversion.vx_obs[pos]
     77        md.stressbalance.spcvy[pos] = md.inversion.vy_obs[pos]
     78    else:
     79        print("      boundary conditions for stressbalance model: spc set as zero")
    8180
    82         md.hydrology.spcwatercolumn=np.zeros((md.mesh.numberofvertices,2))
    83         pos=np.nonzero(md.mesh.vertexonboundary)[0]
    84         md.hydrology.spcwatercolumn[pos,0]=1
     81    md.hydrology.spcwatercolumn = np.zeros((md.mesh.numberofvertices, 2))
     82    pos = np.nonzero(md.mesh.vertexonboundary)[0]
     83    md.hydrology.spcwatercolumn[pos, 0] = 1
    8584
    86         #Create zeros basalforcings and smb
    87         md.smb.initialize(md)
    88         md.basalforcings.initialize(md)
     85    #Create zeros basalforcings and smb
     86    md.smb.initialize(md)
     87    md.basalforcings.initialize(md)
    8988
    90         #Deal with other boundary conditions
    91         if np.all(np.isnan(md.balancethickness.thickening_rate)):
    92                 md.balancethickness.thickening_rate=np.zeros((md.mesh.numberofvertices))
    93                 print("      no balancethickness.thickening_rate specified: values set as zero")
     89    #Deal with other boundary conditions
     90    if np.all(np.isnan(md.balancethickness.thickening_rate)):
     91        md.balancethickness.thickening_rate = np.zeros((md.mesh.numberofvertices))
     92        print("      no balancethickness.thickening_rate specified: values set as zero")
    9493
    95         md.masstransport.spcthickness=float('nan')*np.ones((md.mesh.numberofvertices))
    96         md.balancethickness.spcthickness=float('nan')*np.ones((md.mesh.numberofvertices))
    97         md.damage.spcdamage=float('nan')*np.ones((md.mesh.numberofvertices))
     94    md.masstransport.spcthickness = float('nan') * np.ones((md.mesh.numberofvertices))
     95    md.balancethickness.spcthickness = float('nan') * np.ones((md.mesh.numberofvertices))
     96    md.damage.spcdamage = float('nan') * np.ones((md.mesh.numberofvertices))
    9897
    99         if isinstance(md.initialization.temperature,np.ndarray) and np.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
    100                 md.thermal.spctemperature=float('nan')*np.ones((md.mesh.numberofvertices))
    101                 if hasattr(md.mesh,'vertexonsurface'):
    102                         pos=np.nonzero(md.mesh.vertexonsurface)[0]
    103                         md.thermal.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
    104                 if not isinstance(md.basalforcings.geothermalflux,np.ndarray) or not np.size(md.basalforcings.geothermalflux,axis=0)==md.mesh.numberofvertices:
    105                         md.basalforcings.geothermalflux=np.zeros((md.mesh.numberofvertices))
    106                         md.basalforcings.geothermalflux[np.nonzero(md.mask.groundedice_levelset>0.)]=50.*10.**-3    #50mW/m2
    107         else:
    108                 print("      no thermal boundary conditions created: no observed temperature found")
     98    if isinstance(md.initialization.temperature, np.ndarray) and np.size(md.initialization.temperature, axis=0) == md.mesh.numberofvertices:
     99        md.thermal.spctemperature = float('nan') * np.ones((md.mesh.numberofvertices))
     100        if hasattr(md.mesh, 'vertexonsurface'):
     101            pos = np.nonzero(md.mesh.vertexonsurface)[0]
     102            md.thermal.spctemperature[pos] = md.initialization.temperature[pos]  #impose observed temperature on surface
     103        if not isinstance(md.basalforcings.geothermalflux, np.ndarray) or not np.size(md.basalforcings.geothermalflux, axis=0) == md.mesh.numberofvertices:
     104            md.basalforcings.geothermalflux = np.zeros((md.mesh.numberofvertices))
     105            md.basalforcings.geothermalflux[np.nonzero(md.mask.groundedice_levelset > 0.)] = 50. * 10.**- 3  #50mW / m2
     106    else:
     107        print("      no thermal boundary conditions created: no observed temperature found")
    109108
    110         return md
    111 
     109    return md
  • issm/trunk-jpl/src/m/boundaryconditions/love_numbers.py

    r23737 r24213  
    1 from MatlabFuncs import *
    2 from model import *
    31import numpy as np
    42
    5 def love_numbers(value,*varargin):
    6 #LOVE_NUMBERS: provide love numbers (value 'h','k','l','gamma' and 'lambda'
    7 #                          retrieved from: http://www.srosat.com/iag-jsg/loveNb.php
    8 #    Usage:   series=love_numbers(value)
    9 #             series=love_numbers(value,reference_frame)
    10 #
    11 #             where value is one of 'h','k','l','gamma' and 'lambda'.
    12 #             reference_frame = one of 'CM' (default) and 'CF'.
    13 #
    14 #    Example: 
    15 #          love_k=love_numbers('k');
    16 #          love_k=love_numbers('k','CF');
    17 #
     3
     4def love_numbers(value, * varargin):
     5    '''LOVE_NUMBERS: provide love numbers (value 'h', 'k', 'l', 'gamma' and 'lambda'
     6             retrieved from: http: / / www.srosat.com / iag - jsg / loveNb.php
     7    Usage:   series = love_numbers(value)
     8           series = love_numbers(value, reference_frame)
     9
     10           where value is one of 'h', 'k', 'l', 'gamma' and 'lambda'.
     11        reference_frame = one of 'CM' (default) and 'CF'.
     12
     13    Example:
     14        love_k = love_numbers('k')
     15        love_k = love_numbers('k', 'CF')
     16
     17    '''
    1818
    1919    # some checks:
    20     if len(varargin)==0:
    21         frame='CM';
     20    if len(varargin) == 0:
     21        frame = 'CM'
    2222        print('Info: computation is done in Center of Mass (CM) reference frame by default')
    23     elif len(varargin)==1:
     23    elif len(varargin) == 1:
    2424        reference_frame = varargin[0]
    25         if (reference_frame in ['CF','CM']):
    26             frame=reference_frame;
     25        if (reference_frame in ['CF', 'CM']):
     26            frame = reference_frame
    2727        else:
    2828            raise RuntimeError('reference_frame should be one of ''CM'' or ''CF''')
    2929    else:
    30         raise RuntimeError('love_numbers error message: bad usage') 
    31        
    32     if value not in ['h','k','l','gamma','lambda']:
    33         raise RuntimeError('value should be one of ''h'',''k'',''l'',''gamma'' and ''lambda''')
    34        
    35     if len(varargin)>1:
    36         raise RuntimeError('love_numbers error message: wrong usage') 
    37        
    38     love_numbers=np.array([[    0         , 0          ,0          ,0          ,0          ,0          ,0          ],
    39                                                                                                  [      -1.28740059,-1.00000000,-0.89858519,1.28740059, 0.42519882  ,0.89858519 ,0.00000000 ],
    40                                                                                                  [      -1.00025365, -0.30922675, 0.02060926, 1.69102690, 0.46358648, 0.67016399, 0.61829668],
    41                                                                                                  [      -1.06243501, -0.19927948, 0.06801636, 1.86315553, 0.55741597, 0.73270416, 0.56270589],
    42                                                                                                  [      -1.06779588, -0.13649834, 0.05667027, 1.93129754, 0.63672498, 0.80683140, 0.51132745],
    43                                                                                                  [      -1.10365923, -0.10736896, 0.04401221, 1.99629027, 0.68737906, 0.84861883, 0.48642259],
    44                                                                                                  [      -1.16440348, -0.09295485, 0.03638747, 2.07144863, 0.72031283, 0.87065768, 0.47898268],
    45                                                                                                  [      -1.23634156, -0.08469861, 0.03202759, 2.15164295, 0.74355796, 0.88327380, 0.47955214],
    46                                                                                                  [      -1.31140380, -0.07921412, 0.02937593, 2.23218968, 0.76126493, 0.89140995, 0.48323250],
    47                                                                                                  [      -1.38582399, -0.07513541, 0.02762338, 2.31068858, 0.77552290, 0.89724121, 0.48795424],
    48                                                                                                  [      -1.45807465, -0.07187005, 0.02638627, 2.38620460, 0.78744212, 0.90174369, 0.49291061],
    49                                                                                                  [      -1.52763314, -0.06913154, 0.02547640, 2.45850160, 0.79766475, 0.90539206, 0.49779422],
    50                                                                                                  [      -1.59437866, -0.06676258, 0.02479080, 2.52761607, 0.80659635, 0.90844662, 0.50248477],
    51                                                                                                  [      -1.65833071, -0.06466619, 0.02426511, 2.59366452, 0.81451271, 0.91106870, 0.50693175],
    52                                                                                                  [      -1.71954820, -0.06277732, 0.02385464, 2.65677088, 0.82161167, 0.91336804, 0.51111243],
    53                                                                                                  [      -1.77809640, -0.06105001, 0.02352654, 2.71704639, 0.82804049, 0.91542346, 0.51501712],
    54                                                                                                  [      -1.83403970, -0.05945081, 0.02325609, 2.77458889, 0.83391153, 0.91729309, 0.51864363],
    55                                                                                                  [      -1.88744242, -0.05795502, 0.02302469, 2.82948740, 0.83931209, 0.91902029, 0.52199490],
    56                                                                                                  [      -1.93837115, -0.05654418, 0.02281843, 2.88182697, 0.84431095, 0.92063739, 0.52507761],
    57                                                                                                  [      -1.98689666, -0.05520447, 0.02262706, 2.93169219, 0.84896295, 0.92216847, 0.52790108],
    58                                                                                                  [      -2.03309477, -0.05392545, 0.02244322, 2.97916932, 0.85331225, 0.92363132, 0.53047654],
    59                                                                                                  [      -2.07704643, -0.05269926, 0.02226173, 3.02434717, 0.85739480, 0.92503902, 0.53281639],
    60                                                                                                  [      -2.11883714, -0.05151988, 0.02207909, 3.06731726, 0.86124014, 0.92640103, 0.53493369],
    61                                                                                                  [      -2.15855611, -0.05038274, 0.02189307, 3.10817337, 0.86487276, 0.92772419, 0.53684176],
    62                                                                                                  [      -2.19629514, -0.04928430, 0.02170238, 3.14701084, 0.86831322, 0.92901331, 0.53855386],
    63                                                                                                  [      -2.23214747, -0.04822179, 0.02150643, 3.18392568, 0.87157886, 0.93027178, 0.54008294],
    64                                                                                                  [      -2.26620674, -0.04719301, 0.02130509, 3.21901373, 0.87468453, 0.93150190, 0.54144148],
    65                                                                                                  [      -2.29856595, -0.04619619, 0.02109858, 3.25236976, 0.87764301, 0.93270523, 0.54264140],
    66                                                                                                  [      -2.32931659, -0.04522983, 0.02088735, 3.28408675, 0.88046543, 0.93388282, 0.54369397],
    67                                                                                                  [      -2.35854794, -0.04429270, 0.02067197, 3.31425524, 0.88316156, 0.93503533, 0.54460979],
    68                                                                                                  [      -2.38634650, -0.04338368, 0.02045310, 3.34296281, 0.88574004, 0.93616321, 0.54539877],
    69                                                                                                  [      -2.41279547, -0.04250179, 0.02023142, 3.37029367, 0.88820859, 0.93726678, 0.54607015],
    70                                                                                                  [      -2.43797451, -0.04164613, 0.02000761, 3.39632839, 0.89057416, 0.93834626, 0.54663248],
    71                                                                                                  [      -2.46195951, -0.04081583, 0.01978231, 3.42114367, 0.89284301, 0.93940185, 0.54709369],
    72                                                                                                  [      -2.48482241, -0.04001011, 0.01955614, 3.44481230, 0.89502085, 0.94043375, 0.54746112],
    73                                                                                                  [      -2.50663126, -0.03922817, 0.01932966, 3.46740309, 0.89711291, 0.94144217, 0.54774153],
    74                                                                                                  [      -2.52745016, -0.03846928, 0.01910337, 3.48898088, 0.89912397, 0.94242735, 0.54794114],
    75                                                                                                  [      -2.54733938, -0.03773269, 0.01887774, 3.50960670, 0.90105847, 0.94338957, 0.54806571],
    76                                                                                                  [      -2.56635547, -0.03701769, 0.01865317, 3.52933779, 0.90292050, 0.94432915, 0.54812051],
    77                                                                                                  [      -2.58455138, -0.03632358, 0.01843000, 3.54822780, 0.90471386, 0.94524642, 0.54811044],
    78                                                                                                  [      -2.60197665, -0.03564968, 0.01820854, 3.56632697, 0.90644209, 0.94614178, 0.54803997],
    79                                                                                                  [      -2.61867756, -0.03499532, 0.01798905, 3.58368224, 0.90810850, 0.94701563, 0.54791326],
    80                                                                                                  [      -2.63469733, -0.03435985, 0.01777176, 3.60033748, 0.90971616, 0.94786840, 0.54773413],
    81                                                                                                  [      -2.65007629, -0.03374263, 0.01755683, 3.61633367, 0.91126798, 0.94870054, 0.54750610],
    82                                                                                                  [      -2.66485208, -0.03314303, 0.01734443, 3.63170905, 0.91276665, 0.94951253, 0.54723245],
    83                                                                                                  [      -2.67905981, -0.03256047, 0.01713468, 3.64649934, 0.91421471, 0.95030485, 0.54691620],
    84                                                                                                  [      -2.69273222, -0.03199435, 0.01692767, 3.66073787, 0.91561457, 0.95107798, 0.54656015],
    85                                                                                                  [      -2.70589990, -0.03144411, 0.01672347, 3.67445580, 0.91696845, 0.95183242, 0.54616691],
    86                                                                                                  [      -2.71859139, -0.03090919, 0.01652215, 3.68768220, 0.91827849, 0.95256866, 0.54573889],
    87                                                                                                  [      -2.73083334, -0.03038907, 0.01632374, 3.70044427, 0.91954667, 0.95328719, 0.54527835],
    88                                                                                                  [      -2.74265068, -0.02988323, 0.01612826, 3.71276745, 0.92077487, 0.95398851, 0.54478739],
    89                                                                                                  [      -2.75406669, -0.02939118, 0.01593573, 3.72467551, 0.92196486, 0.95467309, 0.54426797],
    90                                                                                                  [      -2.76510320, -0.02891245, 0.01574615, 3.73619076, 0.92311833, 0.95534141, 0.54372191],
    91                                                                                                  [      -2.77578063, -0.02844656, 0.01555950, 3.74733406, 0.92423685, 0.95599393, 0.54315095],
    92                                                                                                  [      -2.78611812, -0.02799309, 0.01537578, 3.75812503, 0.92532192, 0.95663113, 0.54255669],
    93                                                                                                  [      -2.79613364, -0.02755161, 0.01519496, 3.76858203, 0.92637496, 0.95725343, 0.54194065],
    94                                                                                                  [      -2.80584405, -0.02712170, 0.01501701, 3.77872235, 0.92739730, 0.95786128, 0.54130424],
    95                                                                                                  [      -2.81526521, -0.02670298, 0.01484191, 3.78856223, 0.92839022, 0.95845511, 0.54064880],
    96                                                                                                  [      -2.82441204, -0.02629506, 0.01466961, 3.79811697, 0.92935491, 0.95903532, 0.53997561],
    97                                                                                                  [      -2.83329857, -0.02589759, 0.01450009, 3.80740098, 0.93029251, 0.95960232, 0.53928586],
    98                                                                                                  [      -2.84193804, -0.02551021, 0.01433329, 3.81642782, 0.93120412, 0.96015649, 0.53858067],
    99                                                                                                  [      -2.85034293, -0.02513260, 0.01416919, 3.82521033, 0.93209074, 0.96069821, 0.53786112],
    100                                                                                                  [      -2.85852503, -0.02476443, 0.01400773, 3.83376061, 0.93295337, 0.96122784, 0.53712821],
    101                                                                                                  [      -2.86649548, -0.02440538, 0.01384888, 3.84209010, 0.93379291, 0.96174574, 0.53638291],
    102                                                                                                  [      -2.87426481, -0.02405518, 0.01369258, 3.85020963, 0.93461026, 0.96225224, 0.53562612],
    103                                                                                                  [      -2.88184299, -0.02371352, 0.01353880, 3.85812947, 0.93540625, 0.96274768, 0.53485873],
    104                                                                                                  [      -2.88923945, -0.02338014, 0.01338749, 3.86585931, 0.93618168, 0.96323236, 0.53408154],
    105                                                                                                  [      -2.89646316, -0.02305478, 0.01323861, 3.87340838, 0.93693730, 0.96370661, 0.53329534],
    106                                                                                                  [      -2.90352261, -0.02273718, 0.01309211, 3.88078542, 0.93767383, 0.96417071, 0.53250089],
    107                                                                                                  [      -2.91042585, -0.02242710, 0.01294795, 3.88799874, 0.93839197, 0.96462494, 0.53169888],
    108                                                                                                  [      -2.91718054, -0.02212431, 0.01280609, 3.89505623, 0.93909236, 0.96506960, 0.53089002],
    109                                                                                                  [      -2.92379397, -0.02182859, 0.01266648, 3.90196538, 0.93977564, 0.96550493, 0.53007493],
    110                                                                                                  [      -2.93027306, -0.02153971, 0.01252908, 3.90873334, 0.94044240, 0.96593120, 0.52925424],
    111                                                                                                  [      -2.93662439, -0.02125748, 0.01239386, 3.91536691, 0.94109322, 0.96634866, 0.52842854],
    112                                                                                                  [      -2.94285425, -0.02098169, 0.01226077, 3.92187256, 0.94172863, 0.96675754, 0.52759839],
    113                                                                                                  [      -2.94896860, -0.02071215, 0.01212977, 3.92825645, 0.94234915, 0.96715808, 0.52676434],
    114                                                                                                  [      -2.95497314, -0.02044868, 0.01200082, 3.93452446, 0.94295529, 0.96755050, 0.52592690],
    115                                                                                                  [      -2.96087331, -0.02019110, 0.01187388, 3.94068220, 0.94354752, 0.96793501, 0.52508656],
    116                                                                                                  [      -2.96667427, -0.01993924, 0.01174893, 3.94673503, 0.94412630, 0.96831183, 0.52424380],
    117                                                                                                  [      -2.97238097, -0.01969293, 0.01162591, 3.95268804, 0.94469206, 0.96868116, 0.52339906],
    118                                                                                                  [      -2.97799813, -0.01945201, 0.01150481, 3.95854612, 0.94524521, 0.96904318, 0.52255277],
    119                                                                                                  [      -2.98353025, -0.01921634, 0.01138557, 3.96431391, 0.94578617, 0.96939809, 0.52170535],
    120                                                                                                  [      -2.98898162, -0.01898576, 0.01126817, 3.96999586, 0.94631531, 0.96974607, 0.52085719],
    121                                                                                                  [      -2.99435636, -0.01876014, 0.01115257, 3.97559622, 0.94683300, 0.97008729, 0.52000868],
    122                                                                                                  [      -2.99965838, -0.01853932, 0.01103875, 3.98111905, 0.94733959, 0.97042193, 0.51916016],
    123                                                                                                  [      -3.00489143, -0.01832319, 0.01092666, 3.98656824, 0.94783543, 0.97075015, 0.51831198],
    124                                                                                                  [      -3.01005909, -0.01811161, 0.01081628, 3.99194748, 0.94832084, 0.97107211, 0.51746448],
    125                                                                                                  [      -3.01516479, -0.01790446, 0.01070757, 3.99726033, 0.94879613, 0.97138796, 0.51661796],
    126                                                                                                  [      -3.02021180, -0.01770162, 0.01060052, 4.00251017, 0.94926160, 0.97169786, 0.51577273],
    127                                                                                                  [      -3.02520323, -0.01750298, 0.01049508, 4.00770025, 0.94971755, 0.97200194, 0.51492908],
    128                                                                                                  [      -3.03014209, -0.01730842, 0.01039123, 4.01283367, 0.95016424, 0.97230035, 0.51408727],
    129                                                                                                  [      -3.03503122, -0.01711783, 0.01028894, 4.01791339, 0.95060195, 0.97259323, 0.51324758],
    130                                                                                                  [      -3.03987336, -0.01693111, 0.01018819, 4.02294225, 0.95103094, 0.97288070, 0.51241024],
    131                                                                                                  [      -3.04467112, -0.01674816, 0.01008894, 4.02792295, 0.95145145, 0.97316290, 0.51157550],
    132                                                                                                  [      -3.04942699, -0.01656889, 0.00999117, 4.03285810, 0.95186373, 0.97343995, 0.51074358],
    133                                                                                                  [      -3.05414335, -0.01639319, 0.00989485, 4.03775017, 0.95226799, 0.97371196, 0.50991471],
    134                                                                                                  [      -3.05882250, -0.01622097, 0.00979997, 4.04260153, 0.95266447, 0.97397906, 0.50908908],
    135                                                                                                  [      -3.06346660, -0.01605215, 0.00970649, 4.04741445, 0.95305338, 0.97424136, 0.50826689],
    136                                                                                                  [      -3.06807773, -0.01588664, 0.00961439, 4.05219109, 0.95343492, 0.97449897, 0.50744832],
    137                                                                                                  [      -3.07265789, -0.01572436, 0.00952364, 4.05693353, 0.95380929, 0.97475200, 0.50663356],
    138                                                                                                  [      -3.07720897, -0.01556522, 0.00943423, 4.06164375, 0.95417670, 0.97500055, 0.50582277],
    139                                                                                                  [      -3.08173279, -0.01540916, 0.00934613, 4.06632364, 0.95453731, 0.97524472, 0.50501611],
    140                                                                                                  [      -3.08623109, -0.01525608, 0.00925931, 4.07097501, 0.95489131, 0.97548461, 0.50421372],
    141                                                                                                  [      -3.09070551, -0.01510592, 0.00917376, 4.07559959, 0.95523888, 0.97572032, 0.50341576],
    142                                                                                                  [      -3.09515765, -0.01495861, 0.00908946, 4.08019904, 0.95558018, 0.97595193, 0.50262236],
    143                                                                                                  [      -3.09958899, -0.01481408, 0.00900637, 4.08477492, 0.95591537, 0.97617955, 0.50183364],
    144                                                                                                  [      -3.10400100, -0.01467225, 0.00892449, 4.08932875, 0.95624461, 0.97640325, 0.50104973],
    145                                                                                                  [      -3.10839504, -0.01453308, 0.00884379, 4.09386196, 0.95656806, 0.97662313, 0.50027073],
    146                                                                                                  [      -3.11277241, -0.01439648, 0.00876425, 4.09837593, 0.95688585, 0.97683927, 0.49949676],
    147                                                                                                  [      -3.11713438, -0.01426240, 0.00868586, 4.10287198, 0.95719812, 0.97705174, 0.49872791],
    148                                                                                                  [      -3.12148213, -0.01413079, 0.00860858, 4.10735134, 0.95750503, 0.97726063, 0.49796429],
    149                                                                                                  [      -3.12581680, -0.01400157, 0.00853241, 4.11181522, 0.95780669, 0.97746601, 0.49720597],
    150                                                                                                  [      -3.13013947, -0.01387471, 0.00845733, 4.11626476, 0.95810324, 0.97766796, 0.49645304],
    151                                                                                                  [      -3.13445117, -0.01375013, 0.00838331, 4.12070104, 0.95839480, 0.97786656, 0.49570558],
    152                                                                                                  [      -3.13875289, -0.01362779, 0.00831034, 4.12512510, 0.95868150, 0.97806186, 0.49496366],
    153                                                                                                  [      -3.14304556, -0.01350764, 0.00823841, 4.12953792, 0.95896344, 0.97825395, 0.49422734],
    154                                                                                                  [      -3.14733008, -0.01338963, 0.00816748, 4.13394045, 0.95924075, 0.97844289, 0.49349669],
    155                                                                                                  [      -3.15160728, -0.01327370, 0.00809756, 4.13833358, 0.95951352, 0.97862874, 0.49277177],
    156                                                                                                  [      -3.15587797, -0.01315981, 0.00802862, 4.14271816, 0.95978188, 0.97881157, 0.49205262],
    157                                                                                                  [      -3.16014293, -0.01304792, 0.00796064, 4.14709501, 0.96004592, 0.97899144, 0.49133930],
    158                                                                                                  [      -3.16440288, -0.01293797, 0.00789361, 4.15146491, 0.96030574, 0.97916842, 0.49063185],
    159                                                                                                  [      -3.16865852, -0.01282993, 0.00782751, 4.15582858, 0.96056144, 0.97934256, 0.48993030],
    160                                                                                                  [      -3.17291049, -0.01272375, 0.00776233, 4.16018673, 0.96081312, 0.97951392, 0.48923471],
    161                                                                                                  [      -3.17715942, -0.01261940, 0.00769805, 4.16454003, 0.96106086, 0.97968255, 0.48854509],
    162                                                                                                  [      -3.18140591, -0.01251682, 0.00763466, 4.16888910, 0.96130476, 0.97984852, 0.48786148],
    163                                                                                                  [      -3.18565052, -0.01241598, 0.00757215, 4.17323454, 0.96154490, 0.98001187, 0.48718390],
    164                                                                                                  [      -3.18989378, -0.01231685, 0.00751049, 4.17757693, 0.96178137, 0.98017266, 0.48651237],
    165                                                                                                  [      -3.19413619, -0.01221938, 0.00744968, 4.18191681, 0.96201424, 0.98033094, 0.48584692],
    166                                                                                                  [      -3.19837823, -0.01212354, 0.00738970, 4.18625469, 0.96224360, 0.98048676, 0.48518756],
    167                                                                                                  [      -3.20262035, -0.01202930, 0.00733053, 4.19059105, 0.96246952, 0.98064017, 0.48453431],
    168                                                                                                  [      -3.20686298, -0.01193661, 0.00727217, 4.19492637, 0.96269208, 0.98079121, 0.48388717],
    169                                                                                                  [      -3.21110653, -0.01184546, 0.00721461, 4.19926107, 0.96291135, 0.98093994, 0.48324615],
    170                                                                                                  [      -3.21535137, -0.01175579, 0.00715782, 4.20359557, 0.96312741, 0.98108639, 0.48261126],
    171                                                                                                  [      -3.21959786, -0.01166759, 0.00710179, 4.20793027, 0.96334031, 0.98123062, 0.48198250],
    172                                                                                                  [      -3.22384634, -0.01158082, 0.00704652, 4.21226552, 0.96355014, 0.98137266, 0.48135988],
    173                                                                                                  [      -3.22809714, -0.01149545, 0.00699199, 4.21660169, 0.96375694, 0.98151256, 0.48074338],
    174                                                                                                  [      -3.23235055, -0.01141146, 0.00693819, 4.22093909, 0.96396080, 0.98165035, 0.48013301],
    175                                                                                                  [      -3.23660685, -0.01132880, 0.00688511, 4.22527805, 0.96416176, 0.98178609, 0.47952876],
    176                                                                                                  [      -3.24086631, -0.01124746, 0.00683273, 4.22961885, 0.96435989, 0.98191980, 0.47893063],
    177                                                                                                  [      -3.24512918, -0.01116741, 0.00678105, 4.23396177, 0.96455525, 0.98205153, 0.47833860],
    178                                                                                                  [      -3.24939569, -0.01108862, 0.00673005, 4.23830707, 0.96474789, 0.98218132, 0.47775267],
    179                                                                                                  [      -3.25366606, -0.01101107, 0.00667973, 4.24265499, 0.96493787, 0.98230920, 0.47717282],
    180                                                                                                  [      -3.25794050, -0.01093473, 0.00663007, 4.24700577, 0.96512525, 0.98243520, 0.47659903],
    181                                                                                                  [      -3.26221918, -0.01085957, 0.00658106, 4.25135961, 0.96531007, 0.98255937, 0.47603130],
    182                                                                                                  [      -3.26650230, -0.01078557, 0.00653269, 4.25571672, 0.96549239, 0.98268174, 0.47546960],
    183                                                                                                  [      -3.27079000, -0.01071272, 0.00648495, 4.26007729, 0.96567225, 0.98280233, 0.47491391],
    184                                                                                                  [      -3.27508246, -0.01064097, 0.00643784, 4.26444149, 0.96584971, 0.98292119, 0.47436422],
    185                                                                                                  [      -3.27937980, -0.01057032, 0.00639134, 4.26880948, 0.96602482, 0.98303834, 0.47382051],
    186                                                                                                  [      -3.28368216, -0.01050074, 0.00634544, 4.27318141, 0.96619761, 0.98315382, 0.47328275],
    187                                                                                                  [      -3.28798965, -0.01043222, 0.00630013, 4.27755743, 0.96636814, 0.98326765, 0.47275091],
    188                                                                                                  [      -3.29230239, -0.01036472, 0.00625541, 4.28193767, 0.96653645, 0.98337988, 0.47222499],
    189                                                                                                  [      -3.29662047, -0.01029823, 0.00621126, 4.28632224, 0.96670258, 0.98349051, 0.47170494],
    190                                                                                                  [      -3.30094399, -0.01023273, 0.00616768, 4.29071126, 0.96686657, 0.98359960, 0.47119074],
    191                                                                                                  [      -3.30527303, -0.01016819, 0.00612465, 4.29510483, 0.96702847, 0.98370715, 0.47068237],
    192                                                                                                  [      -3.30960766, -0.01010461, 0.00608218, 4.29950304, 0.96718831, 0.98381321, 0.47017979],
    193                                                                                                  [      -3.31394795, -0.01004197, 0.00604024, 4.30390598, 0.96734614, 0.98391779, 0.46968299],
    194                                                                                                  [      -3.31829395, -0.00998024, 0.00599883, 4.30831372, 0.96750198, 0.98402093, 0.46919192],
    195                                                                                                  [      -3.32264573, -0.00991940, 0.00595795, 4.31272633, 0.96765588, 0.98412265, 0.46870656],
    196                                                                                                  [      -3.32700331, -0.00985945, 0.00591759, 4.31714387, 0.96780788, 0.98422297, 0.46822687],
    197                                                                                                  [      -3.33136675, -0.00980035, 0.00587773, 4.32156640, 0.96795801, 0.98432191, 0.46775284],
    198                                                                                                  [      -3.33573607, -0.00974211, 0.00583838, 4.32599396, 0.96810630, 0.98441951, 0.46728441],
    199                                                                                                  [      -3.34011130, -0.00968470, 0.00579951, 4.33042660, 0.96825278, 0.98451579, 0.46682157],
    200                                                                                                  [      -3.34449246, -0.00962810, 0.00576113, 4.33486436, 0.96839750, 0.98461077, 0.46636427],
    201                                                                                                  [      -3.34887956, -0.00957230, 0.00572323, 4.33930726, 0.96854048, 0.98470447, 0.46591248],
    202                                                                                                  [      -3.35327261, -0.00951729, 0.00568581, 4.34375533, 0.96868175, 0.98479691, 0.46546617],
    203                                                                                                  [      -3.35767163, -0.00946304, 0.00564884, 4.34820858, 0.96882135, 0.98488812, 0.46502531],
    204                                                                                                  [      -3.36207660, -0.00940956, 0.00561233, 4.35266704, 0.96895930, 0.98497811, 0.46458986],
    205                                                                                                  [      -3.36648753, -0.00935681, 0.00557627, 4.35713071, 0.96909563, 0.98506691, 0.46415977],
    206                                                                                                  [      -3.37090440, -0.00930480, 0.00554066, 4.36159960, 0.96923037, 0.98515454, 0.46373503],
    207                                                                                                  [      -3.37532721, -0.00925350, 0.00550548, 4.36607371, 0.96936355, 0.98524102, 0.46331559],
    208                                                                                                  [      -3.37975593, -0.00920290, 0.00547073, 4.37055303, 0.96949520, 0.98532636, 0.46290141],
    209                                                                                                  [      -3.38419056, -0.00915300, 0.00543641, 4.37503756, 0.96962535, 0.98541059, 0.46249246],
    210                                                                                                  [      -3.38863105, -0.00910377, 0.00540251, 4.37952729, 0.96975401, 0.98549373, 0.46208870],
    211                                                                                                  [      -3.39307740, -0.00905520, 0.00536901, 4.38402220, 0.96988122, 0.98557578, 0.46169009],
    212                                                                                                  [      -3.39752956, -0.00900729, 0.00533593, 4.38852227, 0.97000699, 0.98565678, 0.46129660],
    213                                                                                                  [      -3.40198751, -0.00896002, 0.00530324, 4.39302749, 0.97013137, 0.98573674, 0.46090819],
    214                                                                                                  [      -3.40645121, -0.00891338, 0.00527095, 4.39753783, 0.97025435, 0.98581567, 0.46052482],
    215                                                                                                  [      -3.41092063, -0.00886736, 0.00523904, 4.40205326, 0.97037598, 0.98589360, 0.46014645],
    216                                                                                                  [      -3.41539571, -0.00882195, 0.00520752, 4.40657376, 0.97049628, 0.98597053, 0.45977305],
    217                                                                                                  [      -3.41987643, -0.00877713, 0.00517637, 4.41109929, 0.97061526, 0.98604649, 0.45940458],
    218                                                                                                  [      -3.42436272, -0.00873290, 0.00514560, 4.41562982, 0.97073295, 0.98612149, 0.45904100],
    219                                                                                                  [      -3.42885456, -0.00868925, 0.00511520, 4.42016531, 0.97084936, 0.98619555, 0.45868227],
    220                                                                                                  [      -3.43335188, -0.00864617, 0.00508515, 4.42470571, 0.97096453, 0.98626868, 0.45832835],
    221                                                                                                  [      -3.43785464, -0.00860364, 0.00505546, 4.42925100, 0.97107847, 0.98634090, 0.45797921],
    222                                                                                                  [      -3.44236278, -0.00856166, 0.00502613, 4.43380112, 0.97119120, 0.98641222, 0.45763480],
    223                                                                                                  [      -3.44687625, -0.00852021, 0.00499714, 4.43835604, 0.97130274, 0.98648265, 0.45729509],
    224                                                                                                  [      -3.45139500, -0.00847930, 0.00496849, 4.44291570, 0.97141311, 0.98655221, 0.45696005],
    225                                                                                                  [      -3.45591895, -0.00843890, 0.00494017, 4.44748005, 0.97152233, 0.98662092, 0.45662962],
    226                                                                                                  [      -3.46044807, -0.00839902, 0.00491219, 4.45204905, 0.97163042, 0.98668879, 0.45630378],
    227                                                                                                  [      -3.46498227, -0.00835964, 0.00488454, 4.45662264, 0.97173739, 0.98675583, 0.45598249],
    228                                                                                                  [      -3.46952151, -0.00832075, 0.00485721, 4.46120077, 0.97184326, 0.98682205, 0.45566570],
    229                                                                                                  [      -3.47406572, -0.00828234, 0.00483019, 4.46578338, 0.97194805, 0.98688746, 0.45535338],
    230                                                                                                  [      -3.47861484, -0.00824442, 0.00480349, 4.47037042, 0.97205179, 0.98695209, 0.45504550],
    231                                                                                                  [      -3.48316880, -0.00820696, 0.00477710, 4.47496184, 0.97215447, 0.98701594, 0.45474201],
    232                                                                                                  [      -3.48772753, -0.00816996, 0.00475102, 4.47955756, 0.97225612, 0.98707902, 0.45444287],
    233                                                                                                  [      -3.49229097, -0.00813342, 0.00472523, 4.48415755, 0.97235676, 0.98714134, 0.45414806],
    234                                                                                                  [      -3.49685904, -0.00809733, 0.00469975, 4.48876172, 0.97245640, 0.98720293, 0.45385753],
    235                                                                                                  [      -3.50143169, -0.00806167, 0.00467455, 4.49337002, 0.97255506, 0.98726378, 0.45357123],
    236                                                                                                  [      -3.50600884, -0.00802644, 0.00464964, 4.49798240, 0.97265275, 0.98732391, 0.45328915],
    237                                                                                                  [      -3.51059042, -0.00799164, 0.00462502, 4.50259878, 0.97274949, 0.98738333, 0.45301123],
    238                                                                                                  [      -3.51517637, -0.00795726, 0.00460068, 4.50721911, 0.97284528, 0.98744206, 0.45273745],
    239                                                                                                  [      -3.51976660, -0.00792329, 0.00457662, 4.51184331, 0.97294015, 0.98750009, 0.45246776],
    240                                                                                                  [      -3.52436105, -0.00788972, 0.00455283, 4.51647133, 0.97303411, 0.98755745, 0.45220214],
    241                                                                                                  [      -3.52895964, -0.00785655, 0.00452930, 4.52110309, 0.97312718, 0.98761414, 0.45194053],
    242                                                                                                  [      -3.53356231, -0.00782377, 0.00450605, 4.52573854, 0.97321936, 0.98767018, 0.45168291],
    243                                                                                                  [      -3.53816898, -0.00779138, 0.00448306, 4.53037760, 0.97331067, 0.98772556, 0.45142923],
    244                                                                                                  [      -3.54277957, -0.00775937, 0.00446032, 4.53502021, 0.97340111, 0.98778031, 0.45117947],
    245                                                                                                  [      -3.54739402, -0.00772773, 0.00443784, 4.53966629, 0.97349072, 0.98783443, 0.45093359],
    246                                                                                                  [      -3.55201224, -0.00769645, 0.00441562, 4.54431579, 0.97357949, 0.98788793, 0.45069155],
    247                                                                                                  [      -3.55663417, -0.00766554, 0.00439364, 4.54896864, 0.97366744, 0.98794082, 0.45045331],
    248                                                                                                  [      -3.56125973, -0.00763498, 0.00437190, 4.55362475, 0.97375458, 0.98799311, 0.45021885],
    249                                                                                                  [      -3.56588885, -0.00760478, 0.00435041, 4.55828407, 0.97384092, 0.98804481, 0.44998812],
    250                                                                                                  [      -3.57052145, -0.00757491, 0.00432916, 4.56294653, 0.97392648, 0.98809593, 0.44976109],
    251                                                                                                  [      -3.57515745, -0.00754539, 0.00430814, 4.56761206, 0.97401126, 0.98814646, 0.44953772],
    252                                                                                                  [      -3.57979678, -0.00751620, 0.00428736, 4.57228058, 0.97409528, 0.98819644, 0.44931799],
    253                                                                                                  [      -3.58443937, -0.00748734, 0.00426681, 4.57695203, 0.97417854, 0.98824585, 0.44910185],
    254                                                                                                  [      -3.58908514, -0.00745880, 0.00424648, 4.58162633, 0.97426107, 0.98829472, 0.44888928],
    255                                                                                                  [      -3.59373401, -0.00743059, 0.00422637, 4.58630343, 0.97434286, 0.98834304, 0.44868023],
    256                                                                                                  [      -3.59838592, -0.00740268, 0.00420649, 4.59098323, 0.97442393, 0.98839083, 0.44847468],
    257                                                                                                  [      -3.60304078, -0.00737509, 0.00418682, 4.59566569, 0.97450428, 0.98843809, 0.44827259],
    258                                                                                                  [      -3.60769852, -0.00734780, 0.00416737, 4.60035072, 0.97458394, 0.98848483, 0.44807392],
    259                                                                                                  [      -3.61235907, -0.00732081, 0.00414813, 4.60503826, 0.97466290, 0.98853106, 0.44787865],
    260                                                                                                  [      -3.61702235, -0.00729411, 0.00412910, 4.60972823, 0.97474118, 0.98857678, 0.44768674],
    261                                                                                                  [      -3.62168828, -0.00726771, 0.00411028, 4.61442057, 0.97481879, 0.98862201, 0.44749816],
    262                                                                                                  [      -3.62635680, -0.00724159, 0.00409166, 4.61911521, 0.97489573, 0.98866675, 0.44731288],
    263                                                                                                  [      -3.63102782, -0.00721575, 0.00407325, 4.62381207, 0.97497202, 0.98871100, 0.44713086],
    264                                                                                                  [      -3.63570128, -0.00719020, 0.00405503, 4.62851108, 0.97504766, 0.98875478, 0.44695207],
    265                                                                                                  [      -3.64037709, -0.00716491, 0.00403700, 4.63321218, 0.97512267, 0.98879808, 0.44677649],
    266                                                                                                  [      -3.64505519, -0.00713990, 0.00401918, 4.63791530, 0.97519704, 0.98884093, 0.44660407],
    267                                                                                                  [      -3.64973550, -0.00711515, 0.00400154, 4.64262036, 0.97527080, 0.98888331, 0.44643478],
    268                                                                                                  [      -3.65441795, -0.00709066, 0.00398409, 4.64732729, 0.97534394, 0.98892525, 0.44626861],
    269                                                                                                  [      -3.65910247, -0.00706643, 0.00396683, 4.65203604, 0.97541648, 0.98896674, 0.44610551],
    270                                                                                                  [      -3.66378898, -0.00704246, 0.00394975, 4.65674652, 0.97548842, 0.98900779, 0.44594545],
    271                                                                                                  [      -3.66847740, -0.00701873, 0.00393286, 4.66145867, 0.97555978, 0.98904841, 0.44578841],
    272                                                                                                  [      -3.67316767, -0.00699526, 0.00391614, 4.66617242, 0.97563055, 0.98908860, 0.44563435],
    273                                                                                                  [      -3.67785972, -0.00697202, 0.00389960, 4.67088770, 0.97570076, 0.98912838, 0.44548324],
    274                                                                                                  [      -3.68255347, -0.00694903, 0.00388324, 4.67560444, 0.97577039, 0.98916773, 0.44533506],
    275                                                                                                  [      -3.68724885, -0.00692627, 0.00386705, 4.68032258, 0.97583947, 0.98920668, 0.44518977],
    276                                                                                                  [      -3.69194579, -0.00690374, 0.00385103, 4.68504204, 0.97590800, 0.98924523, 0.44504735],
    277                                                                                                  [      -3.69664421, -0.00688145, 0.00383518, 4.68976277, 0.97597598, 0.98928338, 0.44490776],
    278                                                                                                  [      -3.70134406, -0.00685938, 0.00381949, 4.69448468, 0.97604342, 0.98932113, 0.44477099],
    279                                                                                                  [      -3.70604525, -0.00683753, 0.00380397, 4.69920772, 0.97611034, 0.98935850, 0.44463698],
    280                                                                                                  [      -3.71074772, -0.00681590, 0.00378861, 4.70393182, 0.97617673, 0.98939548, 0.44450573],
    281                                                                                                  [      -3.71545140, -0.00679449, 0.00377342, 4.70865691, 0.97624261, 0.98943209, 0.44437720],
    282                                                                                                  [      -3.72015622, -0.00677330, 0.00375838, 4.71338292, 0.97630797, 0.98946833, 0.44425137],
    283                                                                                                  [      -3.72486211, -0.00675231, 0.00374349, 4.71810980, 0.97637283, 0.98950420, 0.44412820],
    284                                                                                                  [      -3.72956899, -0.00673153, 0.00372877, 4.72283746, 0.97643720, 0.98953970, 0.44400767],
    285                                                                                                  [      -3.73427682, -0.00671096, 0.00371419, 4.72756585, 0.97650107, 0.98957485, 0.44388975],
    286                                                                                                  [      -3.73898550, -0.00669059, 0.00369976, 4.73229491, 0.97656446, 0.98960965, 0.44377441],
    287                                                                                                  [      -3.74369498, -0.00667042, 0.00368549, 4.73702457, 0.97662737, 0.98964409, 0.44366163],
    288                                                                                                  [      -3.74840519, -0.00665044, 0.00367136, 4.74175475, 0.97668980, 0.98967820, 0.44355139],
    289                                                                                                  [      -3.75311607, -0.00663066, 0.00365738, 4.74648541, 0.97675177, 0.98971196, 0.44344364],
    290                                                                                                  [      -3.75782754, -0.00661107, 0.00364354, 4.75121648, 0.97681327, 0.98974540, 0.44333838],
    291                                                                                                  [      -3.76253955, -0.00659167, 0.00362984, 4.75594788, 0.97687432, 0.98977850, 0.44323557],
    292                                                                                                  [      -3.76725202, -0.00657245, 0.00361628, 4.76067957, 0.97693492, 0.98981127, 0.44313518],
    293                                                                                                  [      -3.77196489, -0.00655341, 0.00360286, 4.76541147, 0.97699508, 0.98984372, 0.44303720],
    294                                                                                                  [      -3.77667809, -0.00653456, 0.00358958, 4.77014353, 0.97705479, 0.98987586, 0.44294159],
    295                                                                                                  [      -3.78139156, -0.00651589, 0.00357643, 4.77487568, 0.97711407, 0.98990768, 0.44284833],
    296                                                                                                  [      -3.78610525, -0.00649739, 0.00356342, 4.77960786, 0.97717292, 0.98993920, 0.44275740],
    297                                                                                                  [      -3.79081907, -0.00647906, 0.00355053, 4.78434001, 0.97723134, 0.98997040, 0.44266877],
    298                                                                                                  [      -3.79553298, -0.00646091, 0.00353778, 4.78907207, 0.97728935, 0.99000131, 0.44258241],
    299                                                                                                  [      -3.80024690, -0.00644292, 0.00352516, 4.79380398, 0.97734694, 0.99003192, 0.44249831],
    300                                                                                                  [      -3.80496078, -0.00642510, 0.00351266, 4.79853567, 0.97740413, 0.99006223, 0.44241644],
    301                                                                                                  [      -3.80967455, -0.00640745, 0.00350029, 4.80326710, 0.97746090, 0.99009226, 0.44233677],
    302                                                                                                  [      -3.81438815, -0.00638996, 0.00348804, 4.80799819, 0.97751728, 0.99012200, 0.44225928],
    303                                                                                                  [      -3.81910152, -0.00637262, 0.00347592, 4.81272889, 0.97757326, 0.99015145, 0.44218395],
    304                                                                                                  [      -3.82381460, -0.00635545, 0.00346392, 4.81745915, 0.97762886, 0.99018063, 0.44211076],
    305                                                                                                  [      -3.82852732, -0.00633843, 0.00345204, 4.82218889, 0.97768406, 0.99020953, 0.44203968],
    306                                                                                                  [      -3.83323964, -0.00632157, 0.00344027, 4.82691808, 0.97773889, 0.99023816, 0.44197068],
    307                                                                                                  [      -3.83795149, -0.00630485, 0.00342863, 4.83164664, 0.97779333, 0.99026652, 0.44190376],
    308                                                                                                  [      -3.84266280, -0.00628829, 0.00341709, 4.83637452, 0.97784741, 0.99029462, 0.44183887],
    309                                                                                                  [      -3.84737353, -0.00627187, 0.00340568, 4.84110166, 0.97790111, 0.99032245, 0.44177601],
    310                                                                                                  [      -3.85208361, -0.00625560, 0.00339437, 4.84582801, 0.97795446, 0.99035003, 0.44171515],
    311                                                                                                  [      -3.85679299, -0.00623948, 0.00338318, 4.85055351, 0.97800744, 0.99037735, 0.44165627],
    312                                                                                                  [      -3.86150160, -0.00622349, 0.00337210, 4.85527811, 0.97806006, 0.99040441, 0.44159934],
    313                                                                                                  [      -3.86620939, -0.00620765, 0.00336112, 4.86000175, 0.97811233, 0.99043123, 0.44154435],
    314                                                                                                  [      -3.87091631, -0.00619194, 0.00335026, 4.86472437, 0.97816426, 0.99045780, 0.44149127],
    315                                                                                                  [      -3.87562229, -0.00617637, 0.00333950, 4.86944592, 0.97821584, 0.99048413, 0.44144009],
    316                                                                                                  [      -3.88032729, -0.00616094, 0.00332885, 4.87416635, 0.97826708, 0.99051022, 0.44139078],
    317                                                                                                  [      -3.88503124, -0.00614564, 0.00331830, 4.87888561, 0.97831798, 0.99053607, 0.44134332],
    318                                                                                                  [      -3.88973410, -0.00613047, 0.00330785, 4.88360363, 0.97836855, 0.99056168, 0.44129769],
    319                                                                                                  [      -3.89443580, -0.00611543, 0.00329750, 4.88832037, 0.97841879, 0.99058707, 0.44125387],
    320                                                                                                  [      -3.89913629, -0.00610051, 0.00328726, 4.89303577, 0.97846870, 0.99061223, 0.44121185],
    321                                                                                                  [      -3.90383552, -0.00608573, 0.00327711, 4.89774979, 0.97851829, 0.99063716, 0.44117159],
    322                                                                                                  [      -3.90853343, -0.00607107, 0.00326707, 4.90246236, 0.97856756, 0.99066187, 0.44113309],
    323                                                                                                  [      -3.91322998, -0.00605653, 0.00325712, 4.90717345, 0.97861652, 0.99068635, 0.44109632],
    324                                                                                                  [      -3.91792511, -0.00604212, 0.00324726, 4.91188299, 0.97866516, 0.99071062, 0.44106126],
    325                                                                                                  [      -3.92261876, -0.00602782, 0.00323750, 4.91659094, 0.97871350, 0.99073468, 0.44102790],
    326                                                                                                  [      -3.92731089, -0.00601364, 0.00322784, 4.92129724, 0.97876153, 0.99075852, 0.44099621],
    327                                                                                                  [      -3.93200144, -0.00599958, 0.00321826, 4.92600186, 0.97880926, 0.99078215, 0.44096618],
    328                                                                                                  [      -3.93669036, -0.00598564, 0.00320878, 4.93070472, 0.97885669, 0.99080558, 0.44093779],
    329                                                                                                  [      -3.94137761, -0.00597181, 0.00319939, 4.93540580, 0.97890383, 0.99082880, 0.44091101],
    330                                                                                                  [      -3.94606313, -0.00595809, 0.00319009, 4.94010504, 0.97895067, 0.99085182, 0.44088584],
    331                                                                                                  [      -3.95074687, -0.00594449, 0.00318088, 4.94480238, 0.97899722, 0.99087463, 0.44086225],
    332                                                                                                  [      -3.95542878, -0.00593099, 0.00317175, 4.94949779, 0.97904349, 0.99089725, 0.44084022],
    333                                                                                                  [      -3.96010882, -0.00591761, 0.00316271, 4.95419121, 0.97908947, 0.99091968, 0.44081975],
    334                                                                                                  [      -3.96478693, -0.00590433, 0.00315376, 4.95888260, 0.97913517, 0.99094191, 0.44080080],
    335                                                                                                  [      -3.96946306, -0.00589116, 0.00314489, 4.96357191, 0.97918060, 0.99096395, 0.44078336],
    336                                                                                                  [      -3.97413718, -0.00587809, 0.00313611, 4.96825909, 0.97922575, 0.99098581, 0.44076742],
    337                                                                                                  [      -3.97880922, -0.00586512, 0.00312740, 4.97294410, 0.97927063, 0.99100747, 0.44075296],
    338                                                                                                  [      -3.98347915, -0.00585226, 0.00311878, 4.97762689, 0.97931524, 0.99102895, 0.44073996],
    339                                                                                                  [      -3.98814692, -0.00583950, 0.00311024, 4.98230742, 0.97935959, 0.99105026, 0.44072841],
    340                                                                                                  [      -3.99281247, -0.00582684, 0.00310178, 4.98698564, 0.97940367, 0.99107138, 0.44071828],
    341                                                                                                  [      -3.99747577, -0.00581428, 0.00309340, 4.99166150, 0.97944749, 0.99109232, 0.44070956],
    342                                                                                                  [      -4.00213677, -0.00580181, 0.00308510, 4.99633496, 0.97949105, 0.99111309, 0.44070224],
    343                                                                                                  [      -4.00679542, -0.00578944, 0.00307688, 5.00100598, 0.97953436, 0.99113368, 0.44069630],
    344                                                                                                  [      -4.01145168, -0.00577717, 0.00306873, 5.00567451, 0.97957741, 0.99115410, 0.44069173],
    345                                                                                                  [      -4.01610551, -0.00576499, 0.00306065, 5.01034052, 0.97962021, 0.99117436, 0.44068850],
    346                                                                                                  [      -4.02075685, -0.00575290, 0.00305266, 5.01500395, 0.97966277, 0.99119444, 0.44068660],
    347                                                                                                  [      -4.02540567, -0.00574091, 0.00304473, 5.01966476, 0.97970508, 0.99121436, 0.44068602],
    348                                                                                                  [      -4.03005191, -0.00572900, 0.00303688, 5.02432291, 0.97974715, 0.99123412, 0.44068674],
    349                                                                                                  [      -4.03469555, -0.00571719, 0.00302910, 5.02897837, 0.97978897, 0.99125371, 0.44068875],
    350                                                                                                  [      -4.03933654, -0.00570546, 0.00302139, 5.03363108, 0.97983056, 0.99127315, 0.44069203],
    351                                                                                                  [      -4.04397482, -0.00569382, 0.00301375, 5.03828100, 0.97987192, 0.99129242, 0.44069657],
    352                                                                                                  [      -4.04861037, -0.00568227, 0.00300619, 5.04292810, 0.97991304, 0.99131154, 0.44070234],
    353                                                                                                  [      -4.05324314, -0.00567080, 0.00299869, 5.04757234, 0.97995393, 0.99133051, 0.44070935],
    354                                                                                                  [      -4.05787308, -0.00565942, 0.00299126, 5.05221367, 0.97999459, 0.99134932, 0.44071756],
    355                                                                                                  [      -4.06250017, -0.00564812, 0.00298390, 5.05685205, 0.98003502, 0.99136799, 0.44072698],
    356                                                                                                  [      -4.06712435, -0.00563690, 0.00297660, 5.06148744, 0.98007523, 0.99138650, 0.44073757],
    357                                                                                                  [      -4.07174558, -0.00562577, 0.00296937, 5.06611981, 0.98011522, 0.99140486, 0.44074934],
    358                                                                                                  [      -4.07636383, -0.00561471, 0.00296221, 5.07074912, 0.98015498, 0.99142308, 0.44076227],
    359                                                                                                  [      -4.08097906, -0.00560374, 0.00295511, 5.07537532, 0.98019453, 0.99144116, 0.44077633],
    360                                                                                                  [      -4.08559122, -0.00559284, 0.00294807, 5.07999838, 0.98023386, 0.99145909, 0.44079153],
    361                                                                                                  [      -4.09020028, -0.00558202, 0.00294110, 5.08461826, 0.98027298, 0.99147688, 0.44080784],
    362                                                                                                  [      -4.09480620, -0.00557128, 0.00293419, 5.08923492, 0.98031189, 0.99149453, 0.44082525],
    363                                                                                                  [      -4.09940894, -0.00556061, 0.00292734, 5.09384833, 0.98035059, 0.99151204, 0.44084375],
    364                                                                                                  [      -4.10400846, -0.00555002, 0.00292056, 5.09845844, 0.98038908, 0.99152942, 0.44086333],
    365                                                                                                  [      -4.10860473, -0.00553950, 0.00291383, 5.10306522, 0.98042736, 0.99154666, 0.44088396],
    366                                                                                                  [      -4.11319770, -0.00552906, 0.00290717, 5.10766864, 0.98046544, 0.99156377, 0.44090565],
    367                                                                                                  [      -4.11778734, -0.00551869, 0.00290056, 5.11226865, 0.98050332, 0.99158075, 0.44092838],
    368                                                                                                  [      -4.12237362, -0.00550839, 0.00289401, 5.11686523, 0.98054100, 0.99159760, 0.44095213],
    369                                                                                                  [      -4.12695649, -0.00549816, 0.00288752, 5.12145833, 0.98057848, 0.99161431, 0.44097689],
    370                                                                                                  [      -4.13153592, -0.00548801, 0.00288109, 5.12604792, 0.98061577, 0.99163090, 0.44100265],
    371                                                                                                  [      -4.13611188, -0.00547792, 0.00287471, 5.13063396, 0.98065286, 0.99164737, 0.44102940],
    372                                                                                                  [      -4.14068433, -0.00546790, 0.00286839, 5.13521643, 0.98068975, 0.99166371, 0.44105712],
    373                                                                                                  [      -4.14525323, -0.00545795, 0.00286213, 5.13979528, 0.98072646, 0.99167992, 0.44108581],
    374                                                                                                  [      -4.14981854, -0.00544806, 0.00285592, 5.14437048, 0.98076298, 0.99169602, 0.44111544],
    375                                                                                                  [      -4.15438025, -0.00543824, 0.00284976, 5.14894200, 0.98079931, 0.99171199, 0.44114602],
    376                                                                                                  [      -4.15893830, -0.00542849, 0.00284366, 5.15350981, 0.98083545, 0.99172785, 0.44117753],
    377                                                                                                  [      -4.16349267, -0.00541880, 0.00283761, 5.15807386, 0.98087141, 0.99174358, 0.44120995],
    378                                                                                                  [      -4.16804332, -0.00540918, 0.00283162, 5.16263414, 0.98090719, 0.99175920, 0.44124328],
    379                                                                                                  [      -4.17259021, -0.00539962, 0.00282567, 5.16719060, 0.98094278, 0.99177471, 0.44127750],
    380                                                                                                  [      -4.17713333, -0.00539012, 0.00281978, 5.17174321, 0.98097820, 0.99179010, 0.44131260],
    381                                                                                                  [      -4.18167262, -0.00538069, 0.00281394, 5.17629194, 0.98101344, 0.99180537, 0.44134857],
    382                                                                                                  [      -4.18620807, -0.00537131, 0.00280815, 5.18083676, 0.98104851, 0.99182054, 0.44138541],
    383                                                                                                  [      -4.19073963, -0.00536200, 0.00280241, 5.18537763, 0.98108340, 0.99183560, 0.44142309],
    384                                                                                                  [      -4.19526728, -0.00535274, 0.00279671, 5.18991453, 0.98111811, 0.99185054, 0.44146162],
    385                                                                                                  [      -4.19979098, -0.00534355, 0.00279107, 5.19444743, 0.98115266, 0.99186538, 0.44150097],
    386                                                                                                  [      -4.20431070, -0.00533441, 0.00278548, 5.19897629, 0.98118704, 0.99188011, 0.44154114],
    387                                                                                                  [      -4.20882641, -0.00532534, 0.00277993, 5.20350108, 0.98122125, 0.99189474, 0.44158211],
    388                                                                                                  [      -4.21333809, -0.00531632, 0.00277443, 5.20802177, 0.98125529, 0.99190926, 0.44162389],
    389                                                                                                  [      -4.21784569, -0.00530735, 0.00276897, 5.21253834, 0.98128916, 0.99192367, 0.44166645],
    390                                                                                                  [      -4.22234919, -0.00529845, 0.00276357, 5.21705075, 0.98132288, 0.99193799, 0.44170979],
    391                                                                                                  [      -4.22684856, -0.00528959, 0.00275820, 5.22155897, 0.98135643, 0.99195220, 0.44175389],
    392                                                                                                  [      -4.23134377, -0.00528080, 0.00275289, 5.22606297, 0.98138982, 0.99196631, 0.44179875],
    393                                                                                                  [      -4.23583479, -0.00527206, 0.00274762, 5.23056273, 0.98142305, 0.99198033, 0.44184436],
    394                                                                                                  [      -4.24032159, -0.00526337, 0.00274239, 5.23505822, 0.98145612, 0.99199424, 0.44189070],
    395                                                                                                  [      -4.24480413, -0.00525473, 0.00273720, 5.23954940, 0.98148904, 0.99200806, 0.44193777],
    396                                                                                                  [      -4.24928241, -0.00524615, 0.00273206, 5.24403626, 0.98152180, 0.99202179, 0.44198557],
    397                                                                                                  [      -4.25375637, -0.00523762, 0.00272697, 5.24851875, 0.98155440, 0.99203541, 0.44203406],
    398                                                                                                  [      -4.25822600, -0.00522914, 0.00272191, 5.25299686, 0.98158685, 0.99204895, 0.44208326],
    399                                                                                                  [      -4.26269127, -0.00522071, 0.00271690, 5.25747055, 0.98161916, 0.99206239, 0.44213315],
    400                                                                                                  [      -4.26715214, -0.00521233, 0.00271193, 5.26193981, 0.98165131, 0.99207574, 0.44218372],
    401                                                                                                  [      -4.27160860, -0.00520401, 0.00270700, 5.26640459, 0.98168331, 0.99208900, 0.44223496],
    402                                                                                                  [      -4.27606061, -0.00519573, 0.00270211, 5.27086489, 0.98171516, 0.99210217, 0.44228686],
    403                                                                                                  [      -4.28050816, -0.00518750, 0.00269726, 5.27532066, 0.98174687, 0.99211524, 0.44233942],
    404                                                                                                  [      -4.28495120, -0.00517932, 0.00269245, 5.27977188, 0.98177844, 0.99212824, 0.44239262],
    405                                                                                                  [      -4.28938971, -0.00517119, 0.00268767, 5.28421853, 0.98180986, 0.99214114, 0.44244646],
    406                                                                                                  [      -4.29382368, -0.00516310, 0.00268294, 5.28866058, 0.98184113, 0.99215396, 0.44250093],
    407                                                                                                  [      -4.29825306, -0.00515506, 0.00267825, 5.29309800, 0.98187227, 0.99216669, 0.44255601],
    408                                                                                                  [      -4.30267785, -0.00514707, 0.00267359, 5.29753078, 0.98190326, 0.99217934, 0.44261171],
    409                                                                                                  [      -4.30709800, -0.00513912, 0.00266898, 5.30195888, 0.98193412, 0.99219190, 0.44266801],
    410                                                                                                  [      -4.31151350, -0.00513122, 0.00266440, 5.30638227, 0.98196483, 0.99220438, 0.44272490],
    411                                                                                                  [      -4.31592431, -0.00512337, 0.00265985, 5.31080095, 0.98199542, 0.99221678, 0.44278238],
    412                                                                                                  [      -4.32033043, -0.00511555, 0.00265535, 5.31521487, 0.98202586, 0.99222910, 0.44284044],
    413                                                                                                  [      -4.32473181, -0.00510779, 0.00265088, 5.31962403, 0.98205617, 0.99224134, 0.44289907],
    414                                                                                                  [      -4.32912844, -0.00510006, 0.00264644, 5.32402838, 0.98208635, 0.99225350, 0.44295825],
    415                                                                                                  [      -4.33352030, -0.00509238, 0.00264204, 5.32842792, 0.98211639, 0.99226558, 0.44301800],
    416                                                                                                  [      -4.33790735, -0.00508474, 0.00263768, 5.33282261, 0.98214630, 0.99227758, 0.44307829],
    417                                                                                                  [      -4.34228957, -0.00507715, 0.00263335, 5.33721243, 0.98217609, 0.99228950, 0.44313911],
    418                                                                                                  [      -4.34666695, -0.00506959, 0.00262906, 5.34159736, 0.98220574, 0.99230135, 0.44320047],
    419                                                                                                  [      -4.35103946, -0.00506208, 0.00262479, 5.34597738, 0.98223526, 0.99231313, 0.44326235],
    420                                                                                                  [      -4.35540706, -0.00505461, 0.00262057, 5.35035246, 0.98226466, 0.99232483, 0.44332475],
    421                                                                                                  [      -4.35976976, -0.00504718, 0.00261637, 5.35472258, 0.98229393, 0.99233645, 0.44338766],
    422                                                                                                  [      -4.36412751, -0.00503978, 0.00261221, 5.35908772, 0.98232308, 0.99234800, 0.44345107],
    423                                                                                                  [      -4.36848029, -0.00503243, 0.00260808, 5.36344786, 0.98235210, 0.99235949, 0.44351497],
    424                                                                                                  [      -4.37282810, -0.00502512, 0.00260399, 5.36780298, 0.98238100, 0.99237089, 0.44357936],
    425                                                                                                  [      -4.37717089, -0.00501785, 0.00259992, 5.37215304, 0.98240977, 0.99238223, 0.44364422],
    426                                                                                                  [      -4.38150866, -0.00501061, 0.00259589, 5.37649804, 0.98243843, 0.99239350, 0.44370956],
    427                                                                                                  [      -4.38584137, -0.00500341, 0.00259189, 5.38083796, 0.98246696, 0.99240470, 0.44377537],
    428                                                                                                  [      -4.39016901, -0.00499626, 0.00258792, 5.38517276, 0.98249538, 0.99241583, 0.44384163],
    429                                                                                                  [      -4.39449156, -0.00498913, 0.00258397, 5.38950243, 0.98252368, 0.99242689, 0.44390835],
    430                                                                                                  [      -4.39880900, -0.00498205, 0.00258006, 5.39382695, 0.98255186, 0.99243789, 0.44397551],
    431                                                                                                  [      -4.40312130, -0.00497500, 0.00257618, 5.39814630, 0.98257992, 0.99244881, 0.44404311],
    432                                                                                                  [      -4.40742845, -0.00496799, 0.00257233, 5.40246046, 0.98260787, 0.99245968, 0.44411114],
    433                                                                                                  [      -4.41173042, -0.00496101, 0.00256851, 5.40676940, 0.98263570, 0.99247047, 0.44417960],
    434                                                                                                  [      -4.41602719, -0.00495407, 0.00256472, 5.41107312, 0.98266342, 0.99248121, 0.44424847],
    435                                                                                                  [      -4.42031875, -0.00494717, 0.00256096, 5.41537158, 0.98269102, 0.99249187, 0.44431776],
    436                                                                                                  [      -4.42460508, -0.00494030, 0.00255722, 5.41966478, 0.98271852, 0.99250248, 0.44438745],
    437                                                                                                  [      -4.42888615, -0.00493346, 0.00255351, 5.42395268, 0.98274590, 0.99251302, 0.44445755],
    438                                                                                                  [      -4.43316194, -0.00492666, 0.00254984, 5.42823528, 0.98277317, 0.99252350, 0.44452803],
    439                                                                                                  [      -4.43743244, -0.00491989, 0.00254618, 5.43251255, 0.98280033, 0.99253392, 0.44459891],
    440                                                                                                  [      -4.44169763, -0.00491316, 0.00254256, 5.43678447, 0.98282738, 0.99254428, 0.44467016],
    441                                                                                                  [      -4.44595749, -0.00490646, 0.00253896, 5.44105103, 0.98285433, 0.99255458, 0.44474179],
    442                                                                                                  [      -4.45021200, -0.00489979, 0.00253539, 5.44531221, 0.98288117, 0.99256482, 0.44481379],
    443                                                                                                  [      -4.45446115, -0.00489316, 0.00253185, 5.44956799, 0.98290790, 0.99257500, 0.44488616],
    444                                                                                                  [      -4.45870490, -0.00488655, 0.00252833, 5.45381835, 0.98293452, 0.99258512, 0.44495888],
    445                                                                                                  [      -4.46294326, -0.00487998, 0.00252484, 5.45806327, 0.98296105, 0.99259518, 0.44503195],
    446                                                                                                  [      -4.46717619, -0.00487344, 0.00252137, 5.46230275, 0.98298746, 0.99260519, 0.44510537],
    447                                                                                                  [      -4.47140368, -0.00486693, 0.00251793, 5.46653675, 0.98301378, 0.99261514, 0.44517912],
    448                                                                                                  [      -4.47562571, -0.00486046, 0.00251451, 5.47076526, 0.98303999, 0.99262503, 0.44525322],
    449                                                                                                  [      -4.47984227, -0.00485401, 0.00251112, 5.47498827, 0.98306610, 0.99263487, 0.44532764],
    450                                                                                                  [      -4.48405334, -0.00484759, 0.00250775, 5.47920575, 0.98309211, 0.99264465, 0.44540238],
    451                                                                                                  [      -4.48825891, -0.00484121, 0.00250441, 5.48341770, 0.98311802, 0.99265438, 0.44547744],
    452                                                                                                  [      -4.49245894, -0.00483485, 0.00250109, 5.48762409, 0.98314383, 0.99266406, 0.44555282],
    453                                                                                                  [      -4.49665344, -0.00482852, 0.00249780, 5.49182492, 0.98316954, 0.99267368, 0.44562850],
    454                                                                                                  [      -4.50084238, -0.00482223, 0.00249453, 5.49602015, 0.98319515, 0.99268325, 0.44570449],
    455                                                                                                  [      -4.50502575, -0.00481596, 0.00249128, 5.50020979, 0.98322067, 0.99269277, 0.44578077],
    456                                                                                                  [      -4.50920352, -0.00480972, 0.00248805, 5.50439380, 0.98324609, 0.99270223, 0.44585734],
    457                                                                                                  [      -4.51337569, -0.00480350, 0.00248485, 5.50857219, 0.98327141, 0.99271164, 0.44593420],
    458                                                                                                  [      -4.51754224, -0.00479732, 0.00248167, 5.51274492, 0.98329664, 0.99272101, 0.44601134],
    459                                                                                                  [      -4.52170315, -0.00479117, 0.00247851, 5.51691199, 0.98332177, 0.99273032, 0.44608876],
    460                                                                                                  [      -4.52585842, -0.00478504, 0.00247538, 5.52107338, 0.98334681, 0.99273958, 0.44616645],
    461                                                                                                  [      -4.53000801, -0.00477894, 0.00247227, 5.52522907, 0.98337176, 0.99274880, 0.44624440],
    462                                                                                                  [      -4.53415192, -0.00477286, 0.00246917, 5.52937906, 0.98339661, 0.99275796, 0.44632262],
    463                                                                                                  [      -4.53829014, -0.00476682, 0.00246610, 5.53352332, 0.98342137, 0.99276708, 0.44640109],
    464                                                                                                  [      -4.54242264, -0.00476080, 0.00246306, 5.53766184, 0.98344605, 0.99277615, 0.44647982],
    465                                                                                                  [      -4.54654942, -0.00475480, 0.00246003, 5.54179461, 0.98347063, 0.99278517, 0.44655879],
    466                                                                                                  [      -4.55067046, -0.00474884, 0.00245702, 5.54592162, 0.98349512, 0.99279414, 0.44663801],
    467                                                                                                  [      -4.55478574, -0.00474290, 0.00245404, 5.55004285, 0.98351952, 0.99280307, 0.44671746],
    468                                                                                                  [      -4.55889526, -0.00473698, 0.00245107, 5.55415828, 0.98354383, 0.99281195, 0.44679715],
    469                                                                                                  [      -4.56299899, -0.00473109, 0.00244812, 5.55826790, 0.98356806, 0.99282079, 0.44687706],
    470                                                                                                  [      -4.56709693, -0.00472522, 0.00244520, 5.56237170, 0.98359219, 0.99282958, 0.44695720],
    471                                                                                                  [      -4.57118906, -0.00471938, 0.00244229, 5.56646967, 0.98361625, 0.99283832, 0.44703756],
    472                                                                                                  [      -4.57527536, -0.00471357, 0.00243940, 5.57056179, 0.98364021, 0.99284703, 0.44711814],
    473                                                                                                  [      -4.57935583, -0.00470778, 0.00243654, 5.57464806, 0.98366409, 0.99285569, 0.44719893],
    474                                                                                                  [      -4.58343045, -0.00470201, 0.00243369, 5.57872844, 0.98368788, 0.99286430, 0.44727992],
    475                                                                                                  [      -4.58749921, -0.00469627, 0.00243086, 5.58280295, 0.98371159, 0.99287287, 0.44736112],
    476                                                                                                  [      -4.59156210, -0.00469055, 0.00242805, 5.58687155, 0.98373522, 0.99288140, 0.44744252],
    477                                                                                                  [      -4.59561910, -0.00468485, 0.00242526, 5.59093424, 0.98375876, 0.99288989, 0.44752411],
    478                                                                                                  [      -4.59967020, -0.00467918, 0.00242248, 5.59499102, 0.98378222, 0.99289833, 0.44760589],
    479                                                                                                  [      -4.60371538, -0.00467353, 0.00241973, 5.59904185, 0.98380560, 0.99290674, 0.44768785],
    480                                                                                                  [      -4.60775465, -0.00466791, 0.00241699, 5.60308674, 0.98382890, 0.99291510, 0.44777000],
    481                                                                                                  [      -4.61178797, -0.00466230, 0.00241427, 5.60712567, 0.98385211, 0.99292343, 0.44785233],
    482                                                                                                  [      -4.61581536, -0.00465672, 0.00241157, 5.61115863, 0.98387525, 0.99293171, 0.44793483],
    483                                                                                                  [      -4.61983678, -0.00465116, 0.00240889, 5.61518561, 0.98389830, 0.99293995, 0.44801750],
    484                                                                                                  [      -4.62385223, -0.00464563, 0.00240622, 5.61920660, 0.98392128, 0.99294815, 0.44810034],
    485                                                                                                  [      -4.62786170, -0.00464011, 0.00240357, 5.62322158, 0.98394418, 0.99295632, 0.44818334],
    486                                                                                                  [      -4.63186517, -0.00463462, 0.00240093, 5.62723055, 0.98396700, 0.99296444, 0.44826650],
    487                                                                                                  [      -4.63586264, -0.00462915, 0.00239832, 5.63123349, 0.98398974, 0.99297253, 0.44834982],
    488                                                                                                  [      -4.63985410, -0.00462370, 0.00239572, 5.63523040, 0.98401240, 0.99298058, 0.44843328],
    489                                                                                                  [      -4.64383953, -0.00461827, 0.00239313, 5.63922126, 0.98403499, 0.99298859, 0.44851690],
    490                                                                                                  [      -4.64781892, -0.00461286, 0.00239057, 5.64320606, 0.98405750, 0.99299657, 0.44860066],
    491                                                                                                  [      -4.65179227, -0.00460748, 0.00238802, 5.64718479, 0.98407993, 0.99300451, 0.44868455],
    492                                                                                                  [      -4.65575956, -0.00460211, 0.00238548, 5.65115744, 0.98410229, 0.99301241, 0.44876859],
    493                                                                                                  [      -4.65972078, -0.00459677, 0.00238296, 5.65512401, 0.98412458, 0.99302027, 0.44885276],
    494                                                                                                  [      -4.66367592, -0.00459144, 0.00238046, 5.65908448, 0.98414679, 0.99302810, 0.44893706],
    495                                                                                                  [      -4.66762497, -0.00458614, 0.00237797, 5.66303884, 0.98416893, 0.99303590, 0.44902148],
    496                                                                                                  [      -4.67156793, -0.00458085, 0.00237549, 5.66698708, 0.98419099, 0.99304366, 0.44910603],
    497                                                                                                  [      -4.67550478, -0.00457558, 0.00237303, 5.67092920, 0.98421298, 0.99305138, 0.44919070],
    498                                                                                                  [      -4.67943552, -0.00457034, 0.00237059, 5.67486518, 0.98423490, 0.99305907, 0.44927549],
    499                                                                                                  [      -4.68336012, -0.00456511, 0.00236816, 5.67879501, 0.98425675, 0.99306673, 0.44936038],
    500                                                                                                  [      -4.68727860, -0.00455990, 0.00236575, 5.68271869, 0.98427852, 0.99307435, 0.44944539],
    501                                                                                                  [      -4.69119092, -0.00455472, 0.00236335, 5.68663621, 0.98430023, 0.99308194, 0.44953051],
    502                                                                                                  [      -4.69509710, -0.00454955, 0.00236096, 5.69054755, 0.98432186, 0.99308949, 0.44961572],
    503                                                                                                  [      -4.69899711, -0.00454440, 0.00235859, 5.69445271, 0.98434343, 0.99309701, 0.44970104],
    504                                                                                                  [      -4.70289095, -0.00453926, 0.00235623, 5.69835168, 0.98436492, 0.99310450, 0.44978646],
    505                                                                                                  [      -4.70677861, -0.00453415, 0.00235389, 5.70224446, 0.98438635, 0.99311196, 0.44987197],
    506                                                                                                  [      -4.71066008, -0.00452905, 0.00235156, 5.70613103, 0.98440771, 0.99311939, 0.44995757],
    507                                                                                                  [      -4.71453535, -0.00452398, 0.00234924, 5.71001138, 0.98442899, 0.99312678, 0.45004326],
    508                                                                                                  [      -4.71840442, -0.00451892, 0.00234694, 5.71388551, 0.98445021, 0.99313414, 0.45012903],
    509                                                                                                  [      -4.72226728, -0.00451387, 0.00234465, 5.71775341, 0.98447137, 0.99314147, 0.45021488],
    510                                                                                                  [      -4.72612392, -0.00450885, 0.00234237, 5.72161507, 0.98449245, 0.99314877, 0.45030082],
    511                                                                                                  [      -4.72997433, -0.00450384, 0.00234011, 5.72547048, 0.98451347, 0.99315604, 0.45038683],
    512                                                                                                  [      -4.73381850, -0.00449885, 0.00233786, 5.72931964, 0.98453443, 0.99316328, 0.45047291],
    513                                                                                                  [      -4.73765643, -0.00449388, 0.00233562, 5.73316254, 0.98455532, 0.99317049, 0.45055907],
    514                                                                                                  [      -4.74148810, -0.00448893, 0.00233340, 5.73699917, 0.98457614, 0.99317767, 0.45064529],
    515                                                                                                  [      -4.74531352, -0.00448399, 0.00233119, 5.74082953, 0.98459690, 0.99318483, 0.45073158],
    516                                                                                                  [      -4.74913267, -0.00447907, 0.00232899, 5.74465360, 0.98461759, 0.99319195, 0.45081792],
    517                                                                                                  [      -4.75294555, -0.00447416, 0.00232680, 5.74847138, 0.98463822, 0.99319904, 0.45090433],
    518                                                                                                  [      -4.75675214, -0.00446927, 0.00232462, 5.75228287, 0.98465878, 0.99320610, 0.45099080],
    519                                                                                                  [      -4.76055246, -0.00446440, 0.00232246, 5.75608805, 0.98467929, 0.99321314, 0.45107732],
    520                                                                                                  [      -4.76434647, -0.00445955, 0.00232031, 5.75988693, 0.98469973, 0.99322015, 0.45116389],
    521                                                                                                  [      -4.76813419, -0.00445471, 0.00231816, 5.76367948, 0.98472010, 0.99322713, 0.45125051],
    522                                                                                                  [      -4.77191560, -0.00444988, 0.00231604, 5.76746572, 0.98474042, 0.99323408, 0.45133717],
    523                                                                                                  [      -4.77569070, -0.00444507, 0.00231392, 5.77124562, 0.98476067, 0.99324101, 0.45142388],
    524                                                                                                  [      -4.77945947, -0.00444028, 0.00231181, 5.77501919, 0.98478086, 0.99324791, 0.45151063],
    525                                                                                                  [      -4.78322192, -0.00443550, 0.00230972, 5.77878642, 0.98480099, 0.99325478, 0.45159742],
    526                                                                                                  [      -4.78697804, -0.00443074, 0.00230763, 5.78254730, 0.98482106, 0.99326162, 0.45168425],
    527                                                                                                  [      -4.79072783, -0.00442600, 0.00230556, 5.78630183, 0.98484107, 0.99326844, 0.45177111],
    528                                                                                                  [      -4.79447127, -0.00442127, 0.00230350, 5.79005000, 0.98486102, 0.99327523, 0.45185800],
    529                                                                                                  [      -4.79820836, -0.00441655, 0.00230145, 5.79379181, 0.98488091, 0.99328200, 0.45194492],
    530                                                                                                  [      -4.80193909, -0.00441185, 0.00229941, 5.79752724, 0.98490074, 0.99328874, 0.45203187],
    531                                                                                                  [      -4.80566347, -0.00440716, 0.00229738, 5.80125630, 0.98492051, 0.99329546, 0.45211884],
    532                                                                                                  [      -4.80938148, -0.00440249, 0.00229536, 5.80497899, 0.98494022, 0.99330215, 0.45220583],
    533                                                                                                  [      -4.81309312, -0.00439783, 0.00229335, 5.80869528, 0.98495988, 0.99330881, 0.45229285],
    534                                                                                                  [      -4.81679838, -0.00439319, 0.00229135, 5.81240519, 0.98497947, 0.99331546, 0.45237988],
    535                                                                                                  [      -4.82049726, -0.00438856, 0.00228937, 5.81610870, 0.98499901, 0.99332207, 0.45246692],
    536                                                                                                  [      -4.82418976, -0.00438395, 0.00228739, 5.81980581, 0.98501850, 0.99332866, 0.45255398],
    537                                                                                                  [      -4.82787587, -0.00437935, 0.00228542, 5.82349652, 0.98503792, 0.99333523, 0.45264105],
    538                                                                                                  [      -4.83155558, -0.00437476, 0.00228346, 5.82718082, 0.98505729, 0.99334178, 0.45272813],
    539                                                                                                  [      -4.83522889, -0.00437019, 0.00228151, 5.83085870, 0.98507660, 0.99334830, 0.45281521],
    540                                                                                                  [      -4.83889580, -0.00436563, 0.00227957, 5.83453017, 0.98509586, 0.99335480, 0.45290231],
    541                                                                                                  [      -4.84255630, -0.00436109, 0.00227764, 5.83819521, 0.98511506, 0.99336127, 0.45298940],
    542                                                                                                  [      -4.84621038, -0.00435656, 0.00227572, 5.84185383, 0.98513421, 0.99336772, 0.45307649],
    543                                                                                                  [      -4.84985805, -0.00435204, 0.00227381, 5.84550601, 0.98515330, 0.99337415, 0.45316358],
    544                                                                                                  [      -4.85349930, -0.00434753, 0.00227191, 5.84915177, 0.98517233, 0.99338056, 0.45325067],
    545                                                                                                  [      -4.85713412, -0.00434304, 0.00227002, 5.85279108, 0.98519132, 0.99338694, 0.45333775],
    546                                                                                                  [      -4.86076252, -0.00433856, 0.00226813, 5.85642396, 0.98521024, 0.99339330, 0.45342482],
    547                                                                                                  [      -4.86438448, -0.00433410, 0.00226626, 5.86005038, 0.98522912, 0.99339964, 0.45351189],
    548                                                                                                  [      -4.86800001, -0.00432965, 0.00226439, 5.86367036, 0.98524794, 0.99340596, 0.45359894],
    549                                                                                                  [      -4.87160909, -0.00432521, 0.00226253, 5.86728389, 0.98526671, 0.99341226, 0.45368598],
    550                                                                                                  [      -4.87521174, -0.00432078, 0.00226069, 5.87089096, 0.98528542, 0.99341853, 0.45377301],
    551                                                                                                  [      -4.87880793, -0.00431637, 0.00225885, 5.87449157, 0.98530409, 0.99342479, 0.45386001],
    552                                                                                                  [      -4.88239768, -0.00431196, 0.00225701, 5.87808572, 0.98532270, 0.99343102, 0.45394700],
    553                                                                                                  [      -4.88598098, -0.00430758, 0.00225519, 5.88167340, 0.98534126, 0.99343723, 0.45403397],
    554                                                                                                  [      -4.88955781, -0.00430320, 0.00225338, 5.88525462, 0.98535976, 0.99344342, 0.45412092],
    555                                                                                                  [      -4.89312819, -0.00429883, 0.00225157, 5.88882936, 0.98537822, 0.99344960, 0.45420784],
    556                                                                                                  [      -4.89669211, -0.00429448, 0.00224977, 5.89239763, 0.98539662, 0.99345575, 0.45429473],
    557                                                                                                  [      -4.90024957, -0.00429014, 0.00224798, 5.89595942, 0.98541498, 0.99346188, 0.45438160],
    558                                                                                                  [      -4.90380055, -0.00428581, 0.00224620, 5.89951474, 0.98543328, 0.99346799, 0.45446844],
    559                                                                                                  [      -4.90734507, -0.00428150, 0.00224442, 5.90306357, 0.98545154, 0.99347408, 0.45455524],
    560                                                                                                  [      -4.91088312, -0.00427719, 0.00224266, 5.90660592, 0.98546974, 0.99348015, 0.45464201],
    561                                                                                                  [      -4.91441469, -0.00427290, 0.00224090, 5.91014179, 0.98548790, 0.99348620, 0.45472875],
    562                                                                                                  [      -4.91793978, -0.00426862, 0.00223915, 5.91367116, 0.98550600, 0.99349224, 0.45481546],
    563                                                                                                  [      -4.92145840, -0.00426435, 0.00223740, 5.91719405, 0.98552406, 0.99349825, 0.45490212],
    564                                                                                                  [      -4.92497053, -0.00426009, 0.00223566, 5.92071044, 0.98554206, 0.99350425, 0.45498875],
    565                                                                                                  [      -4.92847618, -0.00425584, 0.00223394, 5.92422034, 0.98556002, 0.99351022, 0.45507533],
    566                                                                                                  [      -4.93197535, -0.00425160, 0.00223221, 5.92772375, 0.98557793, 0.99351618, 0.45516187],
    567                                                                                                  [      -4.93546803, -0.00424738, 0.00223050, 5.93122065, 0.98559579, 0.99352212, 0.45524837],
    568                                                                                                  [      -4.93895423, -0.00424317, 0.00222879, 5.93471106, 0.98561361, 0.99352804, 0.45533482],
    569                                                                                                  [      -4.94243393, -0.00423896, 0.00222709, 5.93819497, 0.98563138, 0.99353395, 0.45542123],
    570                                                                                                  [      -4.94590714, -0.00423477, 0.00222540, 5.94167237, 0.98564910, 0.99353983, 0.45550758],
    571                                                                                                  [      -4.94937386, -0.00423059, 0.00222371, 5.94514327, 0.98566677, 0.99354570, 0.45559389],
    572                                                                                                  [      -4.95283409, -0.00422642, 0.00222203, 5.94860767, 0.98568439, 0.99355155, 0.45568014],
    573                                                                                                  [      -4.95628782, -0.00422226, 0.00222036, 5.95206556, 0.98570197, 0.99355738, 0.45576634],
    574                                                                                                  [      -4.95973505, -0.00421811, 0.00221869, 5.95551694, 0.98571951, 0.99356320, 0.45585249],
    575                                                                                                  [      -4.96317579, -0.00421397, 0.00221703, 5.95896181, 0.98573699, 0.99356900, 0.45593858],
    576                                                                                                  [      -4.96661002, -0.00420984, 0.00221538, 5.96240018, 0.98575444, 0.99357478, 0.45602462],
    577                                                                                                  [      -4.97003776, -0.00420573, 0.00221373, 5.96583204, 0.98577183, 0.99358054, 0.45611059],
    578                                                                                                  [      -4.97345900, -0.00420162, 0.00221209, 5.96925738, 0.98578918, 0.99358629, 0.45619651],
    579                                                                                                  [      -4.97687374, -0.00419752, 0.00221046, 5.97267622, 0.98580649, 0.99359202, 0.45628236],
    580                                                                                                  [      -4.98028197, -0.00419344, 0.00220883, 5.97608854, 0.98582375, 0.99359774, 0.45636816],
    581                                                                                                  [      -4.98368371, -0.00418936, 0.00220721, 5.97949435, 0.98584096, 0.99360343, 0.45645388],
    582                                                                                                  [      -4.98707894, -0.00418529, 0.00220559, 5.98289365, 0.98585814, 0.99360912, 0.45653955],
    583                                                                                                  [      -4.99046767, -0.00418123, 0.00220398, 5.98628643, 0.98587526, 0.99361478, 0.45662514],
    584                                                                                                  [      -4.99384989, -0.00417719, 0.00220238, 5.98967270, 0.98589235, 0.99362043, 0.45671067],
    585                                                                                                  [      -4.99722561, -0.00417315, 0.00220078, 5.99305246, 0.98590939, 0.99362607, 0.45679613],
    586                                                                                                  [      -5.00059483, -0.00416912, 0.00219919, 5.99642571, 0.98592638, 0.99363169, 0.45688152],
    587                                                                                                  [      -5.00395754, -0.00416511, 0.00219761, 5.99979244, 0.98594334, 0.99363729, 0.45696684],
    588                                                                                                  [      -5.00731375, -0.00416110, 0.00219603, 6.00315266, 0.98596025, 0.99364288, 0.45705209],
    589                                                                                                  [      -5.01066346, -0.00415710, 0.00219445, 6.00650636, 0.98597712, 0.99364845, 0.45713726],
    590                                                                                                  [      -5.01400667, -0.00415311, 0.00219288, 6.00985356, 0.98599394, 0.99365401, 0.45722236],
    591                                                                                                  [      -5.01734337, -0.00414913, 0.00219132, 6.01319424, 0.98601072, 0.99365955, 0.45730738],
    592                                                                                                  [      -5.02067356, -0.00414516, 0.00218976, 6.01652841, 0.98602746, 0.99366508, 0.45739233],
    593                                                                                                  [      -5.02399726, -0.00414120, 0.00218821, 6.01985606, 0.98604416, 0.99367059, 0.45747719],
    594                                                                                                  [      -5.02731445, -0.00413724, 0.00218666, 6.02317721, 0.98606082, 0.99367609, 0.45756198],
    595                                                                                                  [      -5.03062515, -0.00413330, 0.00218512, 6.02649184, 0.98607744, 0.99368157, 0.45764669],
    596                                                                                                  [      -5.03392934, -0.00412937, 0.00218359, 6.02979997, 0.98609401, 0.99368704, 0.45773131],
    597                                                                                                  [      -5.03722703, -0.00412544, 0.00218206, 6.03310159, 0.98611054, 0.99369250, 0.45781585],
    598                                                                                                  [      -5.04051822, -0.00412153, 0.00218053, 6.03639670, 0.98612704, 0.99369794, 0.45790031],
    599                                                                                                  [      -5.04380292, -0.00411762, 0.00217901, 6.03968530, 0.98614349, 0.99370337, 0.45798469],
    600                                                                                                  [      -5.04708112, -0.00411372, 0.00217750, 6.04296739, 0.98615990, 0.99370878, 0.45806897],
    601                                                                                                  [      -5.05035282, -0.00410983, 0.00217599, 6.04624299, 0.98617627, 0.99371418, 0.45815318],
    602                                                                                                  [      -5.05361802, -0.00410595, 0.00217448, 6.04951207, 0.98619260, 0.99371957, 0.45823729],
    603                                                                                                  [      -5.05687674, -0.00410208, 0.00217298, 6.05277466, 0.98620889, 0.99372494, 0.45832131],
    604                                                                                                  [      -5.06012896, -0.00409821, 0.00217148, 6.05603074, 0.98622514, 0.99373030, 0.45840525],
    605                                                                                                  [      -5.06337469, -0.00409436, 0.00216999, 6.05928033, 0.98624135, 0.99373565, 0.45848909],
    606                                                                                                  [      -5.06661393, -0.00409051, 0.00216851, 6.06252341, 0.98625753, 0.99374098, 0.45857285],
    607                                                                                                  [      -5.06984668, -0.00408668, 0.00216703, 6.06576000, 0.98627366, 0.99374630, 0.45865651],
    608                                                                                                  [      -5.07307294, -0.00408285, 0.00216555, 6.06899010, 0.98628975, 0.99375161, 0.45874007],
    609                                                                                                  [      -5.07629272, -0.00407902, 0.00216408, 6.07221370, 0.98630581, 0.99375690, 0.45882355],
    610                                                                                                  [      -5.07950602, -0.00407521, 0.00216261, 6.07543081, 0.98632182, 0.99376218, 0.45890693],
    611                                                                                                  [      -5.08271283, -0.00407141, 0.00216115, 6.07864143, 0.98633780, 0.99376745, 0.45899021],
    612                                                                                                  [      -5.08591317, -0.00406761, 0.00215969, 6.08184556, 0.98635374, 0.99377270, 0.45907339],
    613                                                                                                  [      -5.08910703, -0.00406382, 0.00215823, 6.08504321, 0.98636965, 0.99377795, 0.45915648],
    614                                                                                                  [      -5.09229441, -0.00406004, 0.00215678, 6.08823437, 0.98638551, 0.99378318, 0.45923947],
    615                                                                                                  [      -5.09547532, -0.00405627, 0.00215534, 6.09141905, 0.98640134, 0.99378840, 0.45932235],
    616                                                                                                  [      -5.09864975, -0.00405250, 0.00215390, 6.09459725, 0.98641713, 0.99379360, 0.45940514],
    617                                                                                                  [      -5.10181772, -0.00404874, 0.00215246, 6.09776897, 0.98643288, 0.99379880, 0.45948783],
    618                                                                                                  [      -5.10497922, -0.00404500, 0.00215102, 6.10093422, 0.98644859, 0.99380398, 0.45957041],
    619                                                                                                  [      -5.10813425, -0.00404125, 0.00214960, 6.10409300, 0.98646427, 0.99380915, 0.45965289],
    620                                                                                                  [      -5.11128282, -0.00403752, 0.00214817, 6.10724530, 0.98647991, 0.99381431, 0.45973527],
    621                                                                                                  [      -5.11442494, -0.00403379, 0.00214675, 6.11039114, 0.98649552, 0.99381946, 0.45981755],
    622                                                                                                  [      -5.11756059, -0.00403008, 0.00214533, 6.11353051, 0.98651108, 0.99382459, 0.45989972],
    623                                                                                                  [      -5.12068979, -0.00402637, 0.00214392, 6.11666343, 0.98652662, 0.99382971, 0.45998178],
    624                                                                                                  [      -5.12381254, -0.00402266, 0.00214251, 6.11978988, 0.98654211, 0.99383483, 0.46006373],
    625                                                                                                  [      -5.12692884, -0.00401897, 0.00214110, 6.12290987, 0.98655757, 0.99383993, 0.46014558],
    626                                                                                                  [      -5.13003869, -0.00401528, 0.00213970, 6.12602341, 0.98657300, 0.99384502, 0.46022732],
    627                                                                                                  [      -5.13314210, -0.00401160, 0.00213831, 6.12913050, 0.98658838, 0.99385010, 0.46030896],
    628                                                                                                  [      -5.13623906, -0.00400792, 0.00213691, 6.13223114, 0.98660374, 0.99385516, 0.46039048],
    629                                                                                                  [      -5.13932959, -0.00400426, 0.00213552, 6.13532533, 0.98661906, 0.99386022, 0.46047189],
    630                                                                                                  [      -5.14241368, -0.00400060, 0.00213413, 6.13841308, 0.98663434, 0.99386527, 0.46055319],
    631                                                                                                  [      -5.14549135, -0.00399695, 0.00213275, 6.14149440, 0.98664959, 0.99387030, 0.46063438],
    632                                                                                                  [      -5.14856258, -0.00399330, 0.00213137, 6.14456928, 0.98666480, 0.99387532, 0.46071546],
    633                                                                                                  [      -5.15162739, -0.00398967, 0.00213000, 6.14763772, 0.98667998, 0.99388034, 0.46079643],
    634                                                                                                  [      -5.15468577, -0.00398604, 0.00212862, 6.15069974, 0.98669512, 0.99388534, 0.46087728],
    635                                                                                                  [      -5.15773774, -0.00398241, 0.00212725, 6.15375533, 0.98671023, 0.99389033, 0.46095802],
    636                                                                                                  [      -5.16078329, -0.00397880, 0.00212589, 6.15680449, 0.98672531, 0.99389532, 0.46103864],
    637                                                                                                  [      -5.16382243, -0.00397519, 0.00212453, 6.15984724, 0.98674035, 0.99390029, 0.46111915],
    638                                                                                                  [      -5.16685516, -0.00397159, 0.00212317, 6.16288358, 0.98675535, 0.99390525, 0.46119954],
    639                                                                                                  [      -5.16988149, -0.00396799, 0.00212181, 6.16591350, 0.98677033, 0.99391020, 0.46127982],
    640                                                                                                  [      -5.17290141, -0.00396440, 0.00212046, 6.16893701, 0.98678527, 0.99391514, 0.46135997],
    641                                                                                                  [      -5.17591494, -0.00396082, 0.00211911, 6.17195412, 0.98680017, 0.99392007, 0.46144001],
    642                                                                                                  [      -5.17892208, -0.00395724, 0.00211776, 6.17496483, 0.98681505, 0.99392499, 0.46151994],
    643                                                                                                  [      -5.18192282, -0.00395368, 0.00211642, 6.17796914, 0.98682989, 0.99392990, 0.46159974],
    644                                                                                                  [      -5.18491718, -0.00395011, 0.00211508, 6.18096706, 0.98684470, 0.99393481, 0.46167943],
    645                                                                                                  [      -5.18790516, -0.00394656, 0.00211374, 6.18395860, 0.98685947, 0.99393970, 0.46175899],
    646                                                                                                  [      -5.19088675, -0.00394301, 0.00211241, 6.18694374, 0.98687421, 0.99394458, 0.46183843],
    647                                                                                                  [      -5.19386198, -0.00393947, 0.00211108, 6.18992251, 0.98688892, 0.99394945, 0.46191776],
    648                                                                                                  [      -5.19683083, -0.00393593, 0.00210975, 6.19289490, 0.98690360, 0.99395432, 0.46199696],
    649                                                                                                  [      -5.19979332, -0.00393241, 0.00210843, 6.19586092, 0.98691824, 0.99395917, 0.46207604],
    650                                                                                                  [      -5.20274945, -0.00392888, 0.00210710, 6.19882057, 0.98693285, 0.99396401, 0.46215500],
    651                                                                                                  [      -5.20569922, -0.00392537, 0.00210578, 6.20177385, 0.98694743, 0.99396885, 0.46223383],
    652                                                                                                  [      -5.20864264, -0.00392186, 0.00210447, 6.20472078, 0.98696198, 0.99397367, 0.46231254],
    653                                                                                                  [      -5.21157971, -0.00391835, 0.00210315, 6.20766135, 0.98697650, 0.99397849, 0.46239113],
    654                                                                                                  [      -5.21451043, -0.00391486, 0.00210184, 6.21059558, 0.98699098, 0.99398330, 0.46246959],
    655                                                                                                  [      -5.21743482, -0.00391137, 0.00210054, 6.21352345, 0.98700544, 0.99398810, 0.46254793],
    656                                                                                                  [      -5.22035287, -0.00390788, 0.00209923, 6.21644499, 0.98701986, 0.99399289, 0.46262614],
    657                                                                                                  [      -5.22326459, -0.00390440, 0.00209793, 6.21936019, 0.98703425, 0.99399767, 0.46270423],
    658                                                                                                  [      -5.22616999, -0.00390093, 0.00209663, 6.22226905, 0.98704861, 0.99400244, 0.46278219],
    659                                                                                                  [      -5.22906906, -0.00389747, 0.00209533, 6.22517159, 0.98706294, 0.99400720, 0.46286003],
    660                                                                                                  [      -5.23196182, -0.00389401, 0.00209404, 6.22806781, 0.98707724, 0.99401196, 0.46293774],
    661                                                                                                  [      -5.23484826, -0.00389055, 0.00209274, 6.23095771, 0.98709151, 0.99401670, 0.46301532],
    662                                                                                                  [      -5.23772840, -0.00388711, 0.00209145, 6.23384129, 0.98710574, 0.99402144, 0.46309277],
    663                                                                                                  [      -5.24060224, -0.00388366, 0.00209017, 6.23671857, 0.98711995, 0.99402617, 0.46317009],
    664                                                                                                  [      -5.24346978, -0.00388023, 0.00208888, 6.23958955, 0.98713413, 0.99403089, 0.46324729],
    665                                                                                                  [      -5.24633103, -0.00387680, 0.00208760, 6.24245423, 0.98714827, 0.99403560, 0.46332436],
    666                                                                                                  [      -5.24918599, -0.00387338, 0.00208632, 6.24531261, 0.98716239, 0.99404030, 0.46340129],
    667                                                                                                  [      -5.25203467, -0.00386996, 0.00208504, 6.24816471, 0.98717648, 0.99404500, 0.46347810],
    668                                                                                                  [      -5.25487707, -0.00386655, 0.00208377, 6.25101053, 0.98719053, 0.99404969, 0.46355478],
    669                                                                                                  [      -5.25771320, -0.00386314, 0.00208250, 6.25385007, 0.98720456, 0.99405436, 0.46363133],
    670                                                                                                  [      -5.26054307, -0.00385974, 0.00208123, 6.25668333, 0.98721856, 0.99405904, 0.46370775],
    671                                                                                                  [      -5.26336668, -0.00385634, 0.00207996, 6.25951033, 0.98723253, 0.99406370, 0.46378403],
    672                                                                                                  [      -5.26618402, -0.00385295, 0.00207869, 6.26233107, 0.98724646, 0.99406835, 0.46386019],
    673                                                                                                  [      -5.26899512, -0.00384957, 0.00207743, 6.26514555, 0.98726037, 0.99407300, 0.46393621],
    674                                                                                                  [      -5.27179998, -0.00384619, 0.00207617, 6.26795379, 0.98727425, 0.99407764, 0.46401210],
    675                                                                                                  [      -5.27459860, -0.00384282, 0.00207491, 6.27075577, 0.98728810, 0.99408227, 0.46408786],
    676                                                                                                  [      -5.27739098, -0.00383945, 0.00207365, 6.27355152, 0.98730193, 0.99408689, 0.46416348],
    677                                                                                                  [      -5.28017713, -0.00383609, 0.00207240, 6.27634104, 0.98731572, 0.99409151, 0.46423898],
    678                                                                                                  [      -5.28295706, -0.00383274, 0.00207115, 6.27912432, 0.98732949, 0.99409612, 0.46431433],
    679                                                                                                  [      -5.28573078, -0.00382939, 0.00206989, 6.28190139, 0.98734322, 0.99410072, 0.46438956],
    680                                                                                                  [      -5.28849828, -0.00382604, 0.00206865, 6.28467224, 0.98735693, 0.99410531, 0.46446465],
    681                                                                                                  [      -5.29125958, -0.00382271, 0.00206740, 6.28743687, 0.98737061, 0.99410989, 0.46453961],
    682                                                                                                  [      -5.29401468, -0.00381937, 0.00206616, 6.29019530, 0.98738426, 0.99411447, 0.46461443],
    683                                                                                                  [      -5.29676358, -0.00381604, 0.00206491, 6.29294754, 0.98739789, 0.99411904, 0.46468912],
    684                                                                                                  [      -5.29950630, -0.00381272, 0.00206367, 6.29569358, 0.98741148, 0.99412361, 0.46476368],
    685                                                                                                  [      -5.30224283, -0.00380940, 0.00206243, 6.29843343, 0.98742505, 0.99412816, 0.46483809],
    686                                                                                                  [      -5.30497319, -0.00380609, 0.00206120, 6.30116710, 0.98743859, 0.99413271, 0.46491238],
    687                                                                                                  [      -5.30769738, -0.00380279, 0.00205996, 6.30389459, 0.98745210, 0.99413725, 0.46498652],
    688                                                                                                  [      -5.31041540, -0.00379948, 0.00205873, 6.30661592, 0.98746559, 0.99414179, 0.46506054],
    689                                                                                                  [      -5.31312727, -0.00379619, 0.00205750, 6.30933108, 0.98747905, 0.99414631, 0.46513441],
    690                                                                                                  [      -5.31583299, -0.00379290, 0.00205627, 6.31204009, 0.98749248, 0.99415083, 0.46520815],
    691                                                                                                  [      -5.31853255, -0.00378961, 0.00205504, 6.31474294, 0.98750588, 0.99415535, 0.46528175],
    692                                                                                                  [      -5.32122598, -0.00378633, 0.00205382, 6.31743965, 0.98751926, 0.99415985, 0.46535522],
    693                                                                                                  [      -5.32391328, -0.00378306, 0.00205259, 6.32013023, 0.98753261, 0.99416435, 0.46542855],
    694                                                                                                  [      -5.32659445, -0.00377979, 0.00205137, 6.32281466, 0.98754593, 0.99416884, 0.46550174],
    695                                                                                                  [      -5.32926950, -0.00377652, 0.00205015, 6.32549298, 0.98755923, 0.99417333, 0.46557479],
    696                                                                                                  [      -5.33193843, -0.00377326, 0.00204893, 6.32816517, 0.98757249, 0.99417781, 0.46564771],
    697                                                                                                  [      -5.33460126, -0.00377000, 0.00204772, 6.33083125, 0.98758574, 0.99418228, 0.46572049],
    698                                                                                                  [      -5.33725798, -0.00376675, 0.00204650, 6.33349123, 0.98759895, 0.99418674, 0.46579313],
    699                                                                                                  [      -5.33990861, -0.00376351, 0.00204529, 6.33614511, 0.98761214, 0.99419120, 0.46586563],
    700                                                                                                  [      -5.34255316, -0.00376027, 0.00204408, 6.33879289, 0.98762531, 0.99419565, 0.46593799],
    701                                                                                                  [      -5.34519162, -0.00375703, 0.00204287, 6.34143458, 0.98763844, 0.99420010, 0.46601022],
    702                                                                                                  [      -5.34782400, -0.00375380, 0.00204166, 6.34407020, 0.98765155, 0.99420454, 0.46608230],
    703                                                                                                  [      -5.35045032, -0.00375058, 0.00204045, 6.34669974, 0.98766464, 0.99420897, 0.46615425],
    704                                                                                                  [      -5.35307057, -0.00374736, 0.00203925, 6.34932321, 0.98767770, 0.99421340, 0.46622606],
    705                                                                                                  [      -5.35568477, -0.00374414, 0.00203804, 6.35194063, 0.98769073, 0.99421781, 0.46629773],
    706                                                                                                  [      -5.35829292, -0.00374093, 0.00203684, 6.35455199, 0.98770374, 0.99422223, 0.46636926],
    707                                                                                                  [      -5.36089503, -0.00373773, 0.00203564, 6.35715730, 0.98771672, 0.99422663, 0.46644065],
    708                                                                                                  [      -5.36349110, -0.00373453, 0.00203444, 6.35975657, 0.98772968, 0.99423103, 0.46651190],
    709                                                                                                  [      -5.36608114, -0.00373133, 0.00203324, 6.36234981, 0.98774261, 0.99423543, 0.46658301],
    710                                                                                                  [      -5.36866517, -0.00372814, 0.00203205, 6.36493703, 0.98775552, 0.99423982, 0.46665398],
    711                                                                                                  [      -5.37124318, -0.00372495, 0.00203085, 6.36751823, 0.98776840, 0.99424420, 0.46672482],
    712                                                                                                  [      -5.37381518, -0.00372177, 0.00202966, 6.37009341, 0.98778125, 0.99424857, 0.46679551],
    713                                                                                                  [      -5.37638118, -0.00371859, 0.00202847, 6.37266259, 0.98779408, 0.99425294, 0.46686606],
    714                                                                                                  [      -5.37894119, -0.00371542, 0.00202728, 6.37522577, 0.98780689, 0.99425730, 0.46693647],
    715                                                                                                  [      -5.38149521, -0.00371225, 0.00202609, 6.37778296, 0.98781967, 0.99426166, 0.46700674],
    716                                                                                                  [      -5.38404325, -0.00370909, 0.00202490, 6.38033416, 0.98783243, 0.99426601, 0.46707687],
    717                                                                                                  [      -5.38658532, -0.00370593, 0.00202371, 6.38287939, 0.98784516, 0.99427036, 0.46714686],
    718                                                                                                  [      -5.38912142, -0.00370278, 0.00202253, 6.38541865, 0.98785786, 0.99427470, 0.46721671],
    719                                                                                                  [      -5.39165157, -0.00369963, 0.00202134, 6.38795194, 0.98787055, 0.99427903, 0.46728642],
    720                                                                                                  [      -5.39417576, -0.00369648, 0.00202016, 6.39047928, 0.98788320, 0.99428336, 0.46735598],
    721                                                                                                  [      -5.39669401, -0.00369334, 0.00201898, 6.39300067, 0.98789584, 0.99428768, 0.46742541],
    722                                                                                                  [      -5.39920633, -0.00369021, 0.00201780, 6.39551612, 0.98790845, 0.99429200, 0.46749470],
    723                                                                                                  [      -5.40171272, -0.00368707, 0.00201662, 6.39802564, 0.98792103, 0.99429631, 0.46756384],
    724                                                                                                  [      -5.40421318, -0.00368395, 0.00201544, 6.40052923, 0.98793359, 0.99430061, 0.46763284],
    725                                                                                                  [      -5.40670773, -0.00368082, 0.00201427, 6.40302690, 0.98794613, 0.99430491, 0.46770170],
    726                                                                                                  [      -5.40919637, -0.00367771, 0.00201309, 6.40551867, 0.98795864, 0.99430920, 0.46777042],
    727                                                                                                  [      -5.41167912, -0.00367459, 0.00201192, 6.40800452, 0.98797113, 0.99431349, 0.46783900],
    728                                                                                                  [      -5.41415597, -0.00367148, 0.00201075, 6.41048448, 0.98798360, 0.99431777, 0.46790744],
    729                                                                                                  [      -5.41662693, -0.00366838, 0.00200957, 6.41295855, 0.98799604, 0.99432205, 0.46797574],
    730                                                                                                  [      -5.41909202, -0.00366528, 0.00200840, 6.41542674, 0.98800846, 0.99432632, 0.46804389],
    731                                                                                                  [      -5.42155124, -0.00366218, 0.00200724, 6.41788906, 0.98802085, 0.99433058, 0.46811190],
    732                                                                                                  [      -5.42400460, -0.00365909, 0.00200607, 6.42034551, 0.98803323, 0.99433484, 0.46817978],
    733                                                                                                  [      -5.42645210, -0.00365600, 0.00200490, 6.42279610, 0.98804557, 0.99433910, 0.46824751],
    734                                                                                                  [      -5.42889376, -0.00365292, 0.00200374, 6.42524084, 0.98805790, 0.99434334, 0.46831509],
    735                                                                                                  [      -5.43132958, -0.00364984, 0.00200257, 6.42767973, 0.98807020, 0.99434759, 0.46838254],
    736                                                                                                  [      -5.43375956, -0.00364677, 0.00200141, 6.43011279, 0.98808248, 0.99435183, 0.46844985],
    737                                                                                                  [      -5.43618372, -0.00364370, 0.00200024, 6.43254002, 0.98809474, 0.99435606, 0.46851701],
    738                                                                                                  [      -5.43860207, -0.00364063, 0.00199908, 6.43496143, 0.98810697, 0.99436029, 0.46858403],
    739                                                                                                  [      -5.44101460, -0.00363757, 0.00199792, 6.43737703, 0.98811918, 0.99436451, 0.46865091],
    740                                                                                                  [      -5.44342134, -0.00363451, 0.00199676, 6.43978683, 0.98813137, 0.99436872, 0.46871765],
    741                                                                                                  [      -5.44582228, -0.00363146, 0.00199561, 6.44219082, 0.98814353, 0.99437294, 0.46878424],
    742                                                                                                  [      -5.44821744, -0.00362841, 0.00199445, 6.44458903, 0.98815567, 0.99437714, 0.46885070],
    743                                                                                                  [      -5.45060682, -0.00362536, 0.00199329, 6.44698145, 0.98816779, 0.99438134, 0.46891701],
    744                                                                                                  [      -5.45299043, -0.00362232, 0.00199214, 6.44936811, 0.98817989, 0.99438554, 0.46898318],
    745                                                                                                  [      -5.45536828, -0.00361929, 0.00199098, 6.45174899, 0.98819196, 0.99438973, 0.46904921],
    746                                                                                                  [      -5.45774037, -0.00361625, 0.00198983, 6.45412412, 0.98820402, 0.99439392, 0.46911510],
    747                                                                                                  [      -5.46010672, -0.00361323, 0.00198868, 6.45649350, 0.98821605, 0.99439810, 0.46918084],
    748                                                                                                  [      -5.46246734, -0.00361020, 0.00198753, 6.45885714, 0.98822805, 0.99440227, 0.46924645],
    749                                                                                                  [      -5.46482222, -0.00360718, 0.00198638, 6.46121504, 0.98824004, 0.99440644, 0.46931191],
    750                                                                                                  [      -5.46717138, -0.00360417, 0.00198523, 6.46356722, 0.98825200, 0.99441061, 0.46937723],
    751                                                                                                  [      -5.46951483, -0.00360115, 0.00198408, 6.46591367, 0.98826395, 0.99441477, 0.46944241],
    752                                                                                                  [      -5.47185257, -0.00359814, 0.00198293, 6.46825442, 0.98827587, 0.99441892, 0.46950744],
    753                                                                                                  [      -5.47418461, -0.00359514, 0.00198178, 6.47058947, 0.98828776, 0.99442308, 0.46957234],
    754                                                                                                  [      -5.47651097, -0.00359214, 0.00198064, 6.47291883, 0.98829964, 0.99442722, 0.46963709],
    755                                                                                                  [      -5.47883164, -0.00358914, 0.00197949, 6.47524250, 0.98831150, 0.99443136, 0.46970170],
    756                                                                                                  [      -5.48114664, -0.00358615, 0.00197835, 6.47756049, 0.98832333, 0.99443550, 0.46976617],
    757                                                                                                  [      -5.48345598, -0.00358316, 0.00197721, 6.47987281, 0.98833514, 0.99443963, 0.46983050],
    758                                                                                                  [      -5.48575966, -0.00358018, 0.00197606, 6.48217948, 0.98834693, 0.99444376, 0.46989469],
    759                                                                                                  [      -5.48805769, -0.00357720, 0.00197492, 6.48448049, 0.98835870, 0.99444788, 0.46995873],
    760                                                                                                  [      -5.49035007, -0.00357422, 0.00197378, 6.48677585, 0.98837045, 0.99445200, 0.47002264],
    761                                                                                                  [      -5.49263683, -0.00357125, 0.00197264, 6.48906558, 0.98838217, 0.99445611, 0.47008640],
    762                                                                                                  [      -5.49491797, -0.00356828, 0.00197150, 6.49134968, 0.98839388, 0.99446022, 0.47015002],
    763                                                                                                  [      -5.49719348, -0.00356532, 0.00197036, 6.49362817, 0.98840556, 0.99446432, 0.47021350],
    764                                                                                                  [      -5.49946339, -0.00356236, 0.00196923, 6.49590104, 0.98841723, 0.99446842, 0.47027684],
    765                                                                                                  [      -5.50172771, -0.00355940, 0.00196809, 6.49816831, 0.98842887, 0.99447251, 0.47034004],
    766                                                                                                  [      -5.50398643, -0.00355645, 0.00196695, 6.50042998, 0.98844049, 0.99447660, 0.47040310],
    767                                                                                                  [      -5.50623957, -0.00355350, 0.00196582, 6.50268607, 0.98845209, 0.99448068, 0.47046602],
    768                                                                                                  [      -5.50848713, -0.00355055, 0.00196468, 6.50493658, 0.98846367, 0.99448476, 0.47052879],
    769                                                                                                  [      -5.51072913, -0.00354761, 0.00196355, 6.50718152, 0.98847523, 0.99448884, 0.47059143],
    770                                                                                                  [      -5.51296557, -0.00354467, 0.00196242, 6.50942090, 0.98848677, 0.99449291, 0.47065392],
    771                                                                                                  [      -5.51519647, -0.00354174, 0.00196129, 6.51165473, 0.98849828, 0.99449698, 0.47071627],
    772                                                                                                  [      -5.51742182, -0.00353881, 0.00196016, 6.51388301, 0.98850978, 0.99450104, 0.47077849],
    773                                                                                                  [      -5.51964164, -0.00353588, 0.00195902, 6.51610576, 0.98852126, 0.99450510, 0.47084056],
    774                                                                                                  [      -5.52185594, -0.00353296, 0.00195789, 6.51832298, 0.98853271, 0.99450915, 0.47090249],
    775                                                                                                  [      -5.52406473, -0.00353004, 0.00195677, 6.52053469, 0.98854415, 0.99451320, 0.47096428],
    776                                                                                                  [      -5.52626800, -0.00352712, 0.00195564, 6.52274088, 0.98855556, 0.99451724, 0.47102593],
    777                                                                                                  [      -5.52846578, -0.00352421, 0.00195451, 6.52494157, 0.98856696, 0.99452128, 0.47108744],
    778                                                                                                  [      -5.53065808, -0.00352130, 0.00195338, 6.52713677, 0.98857834, 0.99452532, 0.47114881],
    779                                                                                                  [      -5.53284489, -0.00351840, 0.00195226, 6.52932649, 0.98858969, 0.99452935, 0.47121004],
    780                                                                                                  [      -5.53502623, -0.00351550, 0.00195113, 6.53151073, 0.98860103, 0.99453337, 0.47127113],
    781                                                                                                  [      -5.53720210, -0.00351260, 0.00195001, 6.53368950, 0.98861234, 0.99453740, 0.47133208],
    782                                                                                                  [      -5.53937252, -0.00350971, 0.00194888, 6.53586282, 0.98862364, 0.99454141, 0.47139289],
    783                                                                                                  [      -5.54153750, -0.00350682, 0.00194776, 6.53803068, 0.98863491, 0.99454543, 0.47145356],
    784                                                                                                  [      -5.54369704, -0.00350393, 0.00194663, 6.54019311, 0.98864617, 0.99454944, 0.47151409],
    785                                                                                                  [      -5.54585115, -0.00350105, 0.00194551, 6.54235010, 0.98865740, 0.99455344, 0.47157449],
    786                                                                                                  [      -5.54799984, -0.00349817, 0.00194439, 6.54450167, 0.98866862, 0.99455744, 0.47163474],
    787                                                                                                  [      -5.55014311, -0.00349529, 0.00194327, 6.54664782, 0.98867982, 0.99456144, 0.47169485],
    788                                                                                                  [      -5.55228099, -0.00349242, 0.00194215, 6.54878857, 0.98869099, 0.99456543, 0.47175483],
    789                                                                                                  [      -5.55441347, -0.00348955, 0.00194103, 6.55092392, 0.98870215, 0.99456942, 0.47181466],
    790                                                                                                  [      -5.55654057, -0.00348669, 0.00193991, 6.55305388, 0.98871329, 0.99457340, 0.47187436],
    791                                                                                                  [      -5.55866229, -0.00348383, 0.00193879, 6.55517846, 0.98872441, 0.99457738, 0.47193391],
    792                                                                                                  [      -5.56077864, -0.00348097, 0.00193767, 6.55729767, 0.98873551, 0.99458136, 0.47199333],
    793                                                                                                  [      -5.56288964, -0.00347811, 0.00193655, 6.55941152, 0.98874659, 0.99458533, 0.47205261],
    794                                                                                                  [      -5.56499528, -0.00347526, 0.00193544, 6.56152002, 0.98875765, 0.99458930, 0.47211176],
    795                                                                                                  [      -5.56709558, -0.00347242, 0.00193432, 6.56362317, 0.98876869, 0.99459326, 0.47217076],
    796                                                                                                  [      -5.56919055, -0.00346957, 0.00193321, 6.56572098, 0.98877972, 0.99459722, 0.47222962],
    797                                                                                                  [      -5.57128020, -0.00346673, 0.00193209, 6.56781347, 0.98879072, 0.99460118, 0.47228835],
    798                                                                                                  [      -5.57336453, -0.00346390, 0.00193098, 6.56990064, 0.98880171, 0.99460513, 0.47234694],
    799                                                                                                  [      -5.57544356, -0.00346106, 0.00192986, 6.57198250, 0.98881267, 0.99460907, 0.47240539],
    800                                                                                                  [      -5.57751729, -0.00345823, 0.00192875, 6.57405906, 0.98882362, 0.99461302, 0.47246371],
    801                                                                                                  [      -5.57958573, -0.00345541, 0.00192764, 6.57613032, 0.98883455, 0.99461696, 0.47252188],
    802                                                                                                  [      -5.58164889, -0.00345259, 0.00192652, 6.57819631, 0.98884546, 0.99462089, 0.47257992],
    803                                                                                                  [      -5.58370679, -0.00344977, 0.00192541, 6.58025702, 0.98885635, 0.99462482, 0.47263782],
    804                                                                                                  [      -5.58575942, -0.00344695, 0.00192430, 6.58231247, 0.98886722, 0.99462875, 0.47269559],
    805                                                                                                  [      -5.58780679, -0.00344414, 0.00192319, 6.58436266, 0.98887808, 0.99463267, 0.47275321],
    806                                                                                                  [      -5.58984893, -0.00344133, 0.00192208, 6.58640760, 0.98888891, 0.99463659, 0.47281070],
    807                                                                                                  [      -5.59188583, -0.00343852, 0.00192097, 6.58844731, 0.98889973, 0.99464051, 0.47286806],
    808                                                                                                  [      -5.59391750, -0.00343572, 0.00191986, 6.59048178, 0.98891053, 0.99464442, 0.47292528],
    809                                                                                                  [      -5.59594396, -0.00343292, 0.00191875, 6.59251104, 0.98892131, 0.99464833, 0.47298236],
    810                                                                                                  [      -5.59796521, -0.00343013, 0.00191764, 6.59453508, 0.98893207, 0.99465223, 0.47303930],
    811                                                                                                  [      -5.59998126, -0.00342733, 0.00191653, 6.59655393, 0.98894281, 0.99465613, 0.47309611],
    812                                                                                                  [      -5.60199212, -0.00342455, 0.00191543, 6.59856758, 0.98895354, 0.99466003, 0.47315278],
    813                                                                                                  [      -5.60399781, -0.00342176, 0.00191432, 6.60057605, 0.98896425, 0.99466392, 0.47320932],
    814                                                                                                  [      -5.60599831, -0.00341898, 0.00191321, 6.60257934, 0.98897493, 0.99466781, 0.47326572],
    815                                                                                                  [      -5.60799366, -0.00341620, 0.00191211, 6.60457746, 0.98898561, 0.99467169, 0.47332198],
    816                                                                                                  [      -5.60998385, -0.00341342, 0.00191100, 6.60657043, 0.98899626, 0.99467557, 0.47337811],
    817                                                                                                  [      -5.61196890, -0.00341065, 0.00190990, 6.60855825, 0.98900689, 0.99467945, 0.47343411],
    818                                                                                                  [      -5.61394881, -0.00340788, 0.00190879, 6.61054093, 0.98901751, 0.99468332, 0.47348997],
    819                                                                                                  [      -5.61592360, -0.00340512, 0.00190769, 6.61251848, 0.98902811, 0.99468719, 0.47354569],
    820                                                                                                  [      -5.61789327, -0.00340235, 0.00190659, 6.61449091, 0.98903869, 0.99469106, 0.47360128],
    821                                                                                                  [      -5.61985783, -0.00339960, 0.00190548, 6.61645823, 0.98904926, 0.99469492, 0.47365674],
    822                                                                                                  [      -5.62181729, -0.00339684, 0.00190438, 6.61842045, 0.98905980, 0.99469878, 0.47371206],
    823                                                                                                  [      -5.62377166, -0.00339409, 0.00190328, 6.62037757, 0.98907033, 0.99470263, 0.47376724],
    824                                                                                                  [      -5.62572095, -0.00339134, 0.00190218, 6.62232961, 0.98908084, 0.99470648, 0.47382230],
    825                                                                                                  [      -5.62766517, -0.00338859, 0.00190108, 6.62427658, 0.98909133, 0.99471033, 0.47387721],
    826                                                                                                  [      -5.62960432, -0.00338585, 0.00189998, 6.62621847, 0.98910181, 0.99471417, 0.47393200],
    827                                                                                                  [      -5.63153842, -0.00338311, 0.00189888, 6.62815531, 0.98911227, 0.99471801, 0.47398665],
    828                                                                                                  [      -5.63346748, -0.00338037, 0.00189778, 6.63008711, 0.98912271, 0.99472185, 0.47404117],
    829                                                                                                  [      -5.63539150, -0.00337764, 0.00189668, 6.63201386, 0.98913313, 0.99472568, 0.47409555],
    830                                                                                                  [      -5.63731050, -0.00337491, 0.00189558, 6.63393558, 0.98914354, 0.99472951, 0.47414980],
    831                                                                                                  [      -5.63922447, -0.00337218, 0.00189448, 6.63585229, 0.98915393, 0.99473333, 0.47420392],
    832                                                                                                  [      -5.64113344, -0.00336946, 0.00189338, 6.63776398, 0.98916430, 0.99473716, 0.47425791],
    833                                                                                                  [      -5.64303741, -0.00336674, 0.00189229, 6.63967067, 0.98917466, 0.99474097, 0.47431176],
    834                                                                                                  [      -5.64493639, -0.00336402, 0.00189119, 6.64157237, 0.98918499, 0.99474479, 0.47436548],
    835                                                                                                  [      -5.64683039, -0.00336131, 0.00189009, 6.64346908, 0.98919531, 0.99474860, 0.47441907],
    836                                                                                                  [      -5.64871942, -0.00335860, 0.00188899, 6.64536082, 0.98920562, 0.99475241, 0.47447252],
    837                                                                                                  [      -5.65060348, -0.00335589, 0.00188790, 6.64724759, 0.98921590, 0.99475621, 0.47452585],
    838                                                                                                  [      -5.65248259, -0.00335319, 0.00188680, 6.64912941, 0.98922617, 0.99476001, 0.47457904],
    839                                                                                                  [      -5.65435676, -0.00335049, 0.00188571, 6.65100628, 0.98923642, 0.99476381, 0.47463210],
    840                                                                                                  [      -5.65622600, -0.00334779, 0.00188461, 6.65287821, 0.98924666, 0.99476760, 0.47468503],
    841                                                                                                  [      -5.65809030, -0.00334509, 0.00188352, 6.65474521, 0.98925688, 0.99477139, 0.47473783],
    842                                                                                                  [      -5.65994970, -0.00334240, 0.00188243, 6.65660729, 0.98926708, 0.99477517, 0.47479050],
    843                                                                                                  [      -5.66180418, -0.00333971, 0.00188133, 6.65846447, 0.98927727, 0.99477896, 0.47484303],
    844                                                                                                  [      -5.66365377, -0.00333703, 0.00188024, 6.66031674, 0.98928744, 0.99478273, 0.47489544],
    845                                                                                                  [      -5.66549846, -0.00333434, 0.00187915, 6.66216412, 0.98929759, 0.99478651, 0.47494772],
    846                                                                                                  [      -5.66733828, -0.00333166, 0.00187805, 6.66400662, 0.98930772, 0.99479028, 0.47499986],
    847                                                                                                  [      -5.66917323, -0.00332899, 0.00187696, 6.66584424, 0.98931784, 0.99479405, 0.47505187],
    848                                                                                                  [      -5.67100331, -0.00332631, 0.00187587, 6.66767700, 0.98932794, 0.99479781, 0.47510376],
    849                                                                                                  [      -5.67282855, -0.00332364, 0.00187478, 6.66950490, 0.98933803, 0.99480158, 0.47515552],
    850                                                                                                  [      -5.67464894, -0.00332098, 0.00187369, 6.67132796, 0.98934810, 0.99480533, 0.47520714],
    851                                                                                                  [      -5.67646450, -0.00331831, 0.00187260, 6.67314618, 0.98935815, 0.99480909, 0.47525864],
    852                                                                                                  [      -5.67827523, -0.00331565, 0.00187151, 6.67495958, 0.98936819, 0.99481284, 0.47531001],
    853                                                                                                  [      -5.68008115, -0.00331299, 0.00187042, 6.67676816, 0.98937821, 0.99481659, 0.47536125],
    854                                                                                                  [      -5.68188226, -0.00331034, 0.00186933, 6.67857192, 0.98938821, 0.99482033, 0.47541236],
    855                                                                                                  [      -5.68367858, -0.00330769, 0.00186824, 6.68037089, 0.98939820, 0.99482407, 0.47546334],
    856                                                                                                  [      -5.68547011, -0.00330504, 0.00186715, 6.68216507, 0.98940817, 0.99482781, 0.47551419],
    857                                                                                                  [      -5.68725686, -0.00330239, 0.00186606, 6.68395447, 0.98941813, 0.99483154, 0.47556492],
    858                                                                                                  [      -5.68903884, -0.00329975, 0.00186498, 6.68573909, 0.98942807, 0.99483527, 0.47561551],
    859                                                                                                  [      -5.69081606, -0.00329711, 0.00186389, 6.68751895, 0.98943799, 0.99483900, 0.47566598],
    860                                                                                                  [      -5.69258853, -0.00329447, 0.00186280, 6.68929406, 0.98944790, 0.99484272, 0.47571632],
    861                                                                                                  [      -5.69435627, -0.00329184, 0.00186172, 6.69106443, 0.98945779, 0.99484644, 0.47576654],
    862                                                                                                  [      -5.69611926, -0.00328921, 0.00186063, 6.69283005, 0.98946767, 0.99485016, 0.47581663],
    863                                                                                                  [      -5.69787754, -0.00328658, 0.00185954, 6.69459096, 0.98947753, 0.99485388, 0.47586659],
    864                                                                                                  [      -5.69963110, -0.00328396, 0.00185846, 6.69634715, 0.98948737, 0.99485759, 0.47591642],
    865                                                                                                  [      -5.70137996, -0.00328133, 0.00185737, 6.69809863, 0.98949720, 0.99486129, 0.47596613],
    866                                                                                                  [      -5.70312413, -0.00327872, 0.00185629, 6.69984541, 0.98950701, 0.99486500, 0.47601571],
    867                                                                                                  [      -5.70486360, -0.00327610, 0.00185520, 6.70158750, 0.98951681, 0.99486870, 0.47606516],
    868                                                                                                  [      -5.70659840, -0.00327349, 0.00185412, 6.70332492, 0.98952659, 0.99487239, 0.47611449],
    869                                                                                                  [      -5.70832854, -0.00327088, 0.00185304, 6.70505766, 0.98953636, 0.99487609, 0.47616370],
    870                                                                                                  [      -5.71005402, -0.00326827, 0.00185195, 6.70678575, 0.98954611, 0.99487978, 0.47621277],
    871                                                                                                  [      -5.71177484, -0.00326567, 0.00185087, 6.70850918, 0.98955584, 0.99488347, 0.47626172],
    872                                                                                                  [      -5.71349103, -0.00326306, 0.00184979, 6.71022797, 0.98956556, 0.99488715, 0.47631055],
    873                                                                                                  [      -5.71520259, -0.00326047, 0.00184870, 6.71194212, 0.98957526, 0.99489083, 0.47635925],
    874                                                                                                  [      -5.71690953, -0.00325787, 0.00184762, 6.71365166, 0.98958495, 0.99489451, 0.47640783],
    875                                                                                                  [      -5.71861185, -0.00325528, 0.00184654, 6.71535658, 0.98959462, 0.99489818, 0.47645628],
    876                                                                                                  [      -5.72030958, -0.00325269, 0.00184546, 6.71705689, 0.98960428, 0.99490185, 0.47650461],
    877                                                                                                  [      -5.72200271, -0.00325010, 0.00184438, 6.71875261, 0.98961392, 0.99490552, 0.47655282],
    878                                                                                                  [      -5.72369126, -0.00324752, 0.00184330, 6.72044374, 0.98962355, 0.99490918, 0.47660090],
    879                                                                                                  [      -5.72537523, -0.00324494, 0.00184222, 6.72213029, 0.98963316, 0.99491284, 0.47664886],
    880                                                                                                  [      -5.72705463, -0.00324236, 0.00184114, 6.72381227, 0.98964276, 0.99491650, 0.47669669],
    881                                                                                                  [      -5.72872948, -0.00323979, 0.00184006, 6.72548970, 0.98965234, 0.99492016, 0.47674440],
    882                                                                                                  [      -5.73039979, -0.00323721, 0.00183898, 6.72716257, 0.98966190, 0.99492381, 0.47679198],
    883                                                                                                  [      -5.73206555, -0.00323464, 0.00183790, 6.72883091, 0.98967145, 0.99492746, 0.47683945],
    884                                                                                                  [      -5.73372679, -0.00323208, 0.00183682, 6.73049471, 0.98968099, 0.99493110, 0.47688679],
    885                                                                                                  [      -5.73538351, -0.00322952, 0.00183574, 6.73215399, 0.98969051, 0.99493474, 0.47693401],
    886                                                                                                  [      -5.73703572, -0.00322695, 0.00183466, 6.73380876, 0.98970002, 0.99493838, 0.47698111],
    887                                                                                                  [      -5.73868343, -0.00322440, 0.00183359, 6.73545903, 0.98970951, 0.99494202, 0.47702808],
    888                                                                                                  [      -5.74032664, -0.00322184, 0.00183251, 6.73710480, 0.98971898, 0.99494565, 0.47707494],
    889                                                                                                  [      -5.74196538, -0.00321929, 0.00183143, 6.73874609, 0.98972844, 0.99494928, 0.47712167],
    890                                                                                                  [      -5.74359964, -0.00321674, 0.00183036, 6.74038290, 0.98973789, 0.99495290, 0.47716828],
    891                                                                                                  [      -5.74522943, -0.00321419, 0.00182928, 6.74201524, 0.98974732, 0.99495653, 0.47721477],
    892                                                                                                  [      -5.74685478, -0.00321165, 0.00182820, 6.74364312, 0.98975674, 0.99496014, 0.47726113],
    893                                                                                                  [      -5.74847567, -0.00320911, 0.00182713, 6.74526656, 0.98976614, 0.99496376, 0.47730738],
    894                                                                                                  [      -5.75009213, -0.00320657, 0.00182605, 6.74688556, 0.98977552, 0.99496737, 0.47735351],
    895                                                                                                  [      -5.75170417, -0.00320404, 0.00182498, 6.74850013, 0.98978490, 0.99497098, 0.47739952],
    896                                                                                                  [      -5.75331179, -0.00320151, 0.00182390, 6.75011028, 0.98979425, 0.99497459, 0.47744540],
    897                                                                                                  [      -5.75491499, -0.00319898, 0.00182283, 6.75171602, 0.98980360, 0.99497819, 0.47749117],
    898                                                                                                  [      -5.75651380, -0.00319645, 0.00182176, 6.75331735, 0.98981293, 0.99498179, 0.47753682],
    899                                                                                                  [      -5.75810822, -0.00319393, 0.00182068, 6.75491429, 0.98982224, 0.99498539, 0.47758234],
    900                                                                                                  [      -5.75969826, -0.00319141, 0.00181961, 6.75650685, 0.98983154, 0.99498899, 0.47762775],
    901                                                                                                  [      -5.76128392, -0.00318889, 0.00181854, 6.75809504, 0.98984082, 0.99499258, 0.47767304],
    902                                                                                                  [      -5.76286523, -0.00318637, 0.00181746, 6.75967886, 0.98985009, 0.99499616, 0.47771821],
    903                                                                                                  [      -5.76444218, -0.00318386, 0.00181639, 6.76125832, 0.98985935, 0.99499975, 0.47776327],
    904                                                                                                  [      -5.76601479, -0.00318135, 0.00181532, 6.76283343, 0.98986859, 0.99500333, 0.47780820],
    905                                                                                                  [      -5.76758306, -0.00317884, 0.00181425, 6.76440421, 0.98987782, 0.99500691, 0.47785302],
    906                                                                                                  [      -5.76914700, -0.00317634, 0.00181318, 6.76597066, 0.98988703, 0.99501049, 0.47789772],
    907                                                                                                  [      -5.77070663, -0.00317384, 0.00181210, 6.76753279, 0.98989623, 0.99501406, 0.47794230],
    908                                                                                                  [      -5.77226195, -0.00317134, 0.00181103, 6.76909061, 0.98990542, 0.99501763, 0.47798676],
    909                                                                                                  [      -5.77381298, -0.00316884, 0.00180996, 6.77064413, 0.98991459, 0.99502119, 0.47803110],
    910                                                                                                  [      -5.77535971, -0.00316635, 0.00180889, 6.77219336, 0.98992374, 0.99502476, 0.47807533],
    911                                                                                                  [      -5.77690216, -0.00316386, 0.00180782, 6.77373830, 0.98993289, 0.99502832, 0.47811945],
    912                                                                                                  [      -5.77844035, -0.00316137, 0.00180675, 6.77527898, 0.98994201, 0.99503187, 0.47816344],
    913                                                                                                  [      -5.77997427, -0.00315889, 0.00180569, 6.77681538, 0.98995113, 0.99503543, 0.47820732],
    914                                                                                                  [      -5.78150394, -0.00315640, 0.00180462, 6.77834753, 0.98996023, 0.99503898, 0.47825108],
    915                                                                                                  [      -5.78302936, -0.00315393, 0.00180355, 6.77987544, 0.98996931, 0.99504253, 0.47829473],
    916                                                                                                  [      -5.78455056, -0.00315145, 0.00180248, 6.78139911, 0.98997839, 0.99504607, 0.47833826],
    917                                                                                                  [      -5.78606752, -0.00314897, 0.00180141, 6.78291855, 0.98998744, 0.99504961, 0.47838168],
    918                                                                                                  [      -5.78758027, -0.00314650, 0.00180035, 6.78443377, 0.98999649, 0.99505315, 0.47842498],
    919                                                                                                  [      -5.78908882, -0.00314403, 0.00179928, 6.78594478, 0.99000552, 0.99505669, 0.47846816],
    920                                                                                                  [      -5.79059316, -0.00314157, 0.00179821, 6.78745159, 0.99001453, 0.99506022, 0.47851123],
    921                                                                                                  [      -5.79209332, -0.00313911, 0.00179715, 6.78895421, 0.99002354, 0.99506375, 0.47855419],
    922                                                                                                  [      -5.79358930, -0.00313665, 0.00179608, 6.79045265, 0.99003253, 0.99506727, 0.47859703],
    923                                                                                                  [      -5.79508110, -0.00313419, 0.00179501, 6.79194692, 0.99004150, 0.99507080, 0.47863976],
    924                                                                                                  [      -5.79656875, -0.00313173, 0.00179395, 6.79343702, 0.99005046, 0.99507432, 0.47868238],
    925                                                                                                  [      -5.79805224, -0.00312928, 0.00179288, 6.79492296, 0.99005941, 0.99507784, 0.47872487],
    926                                                                                                  [      -5.79953159, -0.00312683, 0.00179182, 6.79640476, 0.99006834, 0.99508135, 0.47876726],
    927                                                                                                  [      -5.80100681, -0.00312438, 0.00179075, 6.79788243, 0.99007726, 0.99508486, 0.47880954],
    928                                                                                                  [      -5.80247790, -0.00312194, 0.00178969, 6.79935596, 0.99008617, 0.99508837, 0.47885170],
    929                                                                                                  [      -5.80394487, -0.00311950, 0.00178863, 6.80082538, 0.99009506, 0.99509187, 0.47889374],
    930                                                                                                  [      -5.80540774, -0.00311706, 0.00178756, 6.80229068, 0.99010394, 0.99509538, 0.47893568],
    931                                                                                                  [      -5.80686651, -0.00311462, 0.00178650, 6.80375189, 0.99011281, 0.99509888, 0.47897750],
    932                                                                                                  [      -5.80832119, -0.00311219, 0.00178544, 6.80520900, 0.99012166, 0.99510237, 0.47901921],
    933                                                                                                  [      -5.80977179, -0.00310976, 0.00178438, 6.80666204, 0.99013050, 0.99510587, 0.47906081],
    934                                                                                                  [      -5.81121832, -0.00310733, 0.00178331, 6.80811099, 0.99013933, 0.99510936, 0.47910230],
    935                                                                                                  [      -5.81266079, -0.00310490, 0.00178225, 6.80955589, 0.99014814, 0.99511284, 0.47914367],
    936                                                                                                  [      -5.81409921, -0.00310248, 0.00178119, 6.81099673, 0.99015694, 0.99511633, 0.47918494],
    937                                                                                                  [      -5.81553358, -0.00310006, 0.00178013, 6.81243352, 0.99016573, 0.99511981, 0.47922609],
    938                                                                                                  [      -5.81696392, -0.00309764, 0.00177907, 6.81386627, 0.99017450, 0.99512329, 0.47926714],
    939                                                                                                  [      -5.81839023, -0.00309523, 0.00177801, 6.81529500, 0.99018326, 0.99512676, 0.47930807],
    940                                                                                                  [      -5.81981252, -0.00309282, 0.00177695, 6.81671970, 0.99019200, 0.99513024, 0.47934889],
    941                                                                                                  [      -5.82123081, -0.00309041, 0.00177589, 6.81814040, 0.99020074, 0.99513370, 0.47938960],
    942                                                                                                  [      -5.82264509, -0.00308800, 0.00177483, 6.81955709, 0.99020946, 0.99513717, 0.47943020],
    943                                                                                                  [      -5.82405539, -0.00308560, 0.00177377, 6.82096980, 0.99021816, 0.99514063, 0.47947070],
    944                                                                                                  [      -5.82546171, -0.00308319, 0.00177271, 6.82237851, 0.99022686, 0.99514410, 0.47951108],
    945                                                                                                  [      -5.82686405, -0.00308079, 0.00177165, 6.82378326, 0.99023554, 0.99514755, 0.47955135],
    946                                                                                                  [      -5.82826243, -0.00307840, 0.00177059, 6.82518403, 0.99024421, 0.99515101, 0.47959152],
    947                                                                                                  [      -5.82965686, -0.00307600, 0.00176954, 6.82658086, 0.99025286, 0.99515446, 0.47963157],
    948                                                                                                  [      -5.83104734, -0.00307361, 0.00176848, 6.82797373, 0.99026150, 0.99515791, 0.47967152],
    949                                                                                                  [      -5.83243389, -0.00307122, 0.00176742, 6.82936266, 0.99027013, 0.99516135, 0.47971136],
    950                                                                                                  [      -5.83381650, -0.00306884, 0.00176637, 6.83074767, 0.99027875, 0.99516480, 0.47975109],
    951                                                                                                  [      -5.83519520, -0.00306645, 0.00176531, 6.83212875, 0.99028735, 0.99516824, 0.47979072],
    952                                                                                                  [      -5.83656999, -0.00306407, 0.00176425, 6.83350592, 0.99029594, 0.99517167, 0.47983023],
    953                                                                                                  [      -5.83794088, -0.00306169, 0.00176320, 6.83487918, 0.99030451, 0.99517511, 0.47986964],
    954                                                                                                  [      -5.83930788, -0.00305932, 0.00176214, 6.83624856, 0.99031308, 0.99517854, 0.47990894],
    955                                                                                                  [      -5.84067099, -0.00305695, 0.00176109, 6.83761404, 0.99032163, 0.99518197, 0.47994814],
    956                                                                                                  [      -5.84203023, -0.00305458, 0.00176003, 6.83897565, 0.99033017, 0.99518539, 0.47998722],
    957                                                                                                  [      -5.84338560, -0.00305221, 0.00175898, 6.84033340, 0.99033869, 0.99518881, 0.48002620],
    958                                                                                                  [      -5.84473712, -0.00304984, 0.00175793, 6.84168728, 0.99034721, 0.99519223, 0.48006508],
    959                                                                                                  [      -5.84608479, -0.00304748, 0.00175687, 6.84303731, 0.99035571, 0.99519565, 0.48010385],
    960                                                                                                  [      -5.84742862, -0.00304512, 0.00175582, 6.84438350, 0.99036419, 0.99519906, 0.48014251],
    961                                                                                                  [      -5.84876862, -0.00304276, 0.00175477, 6.84572586, 0.99037267, 0.99520247, 0.48018107],
    962                                                                                                  [      -5.85010480, -0.00304041, 0.00175371, 6.84706439, 0.99038113, 0.99520588, 0.48021952],
    963                                                                                                  [      -5.85143717, -0.00303805, 0.00175266, 6.84839911, 0.99038958, 0.99520929, 0.48025787],
    964                                                                                                  [      -5.85276573, -0.00303570, 0.00175161, 6.84973003, 0.99039802, 0.99521269, 0.48029611],
    965                                                                                                  [      -5.85409050, -0.00303336, 0.00175056, 6.85105714, 0.99040644, 0.99521609, 0.48033425],
    966                                                                                                  [      -5.85541148, -0.00303101, 0.00174951, 6.85238047, 0.99041485, 0.99521948, 0.48037228],
    967                                                                                                  [      -5.85672868, -0.00302867, 0.00174846, 6.85370002, 0.99042325, 0.99522288, 0.48041021],
    968                                                                                                  [      -5.85804212, -0.00302633, 0.00174741, 6.85501579, 0.99043164, 0.99522627, 0.48044803],
    969                                                                                                  [      -5.85935180, -0.00302399, 0.00174636, 6.85632781, 0.99044002, 0.99522965, 0.48048575],
    970                                                                                                  [      -5.86065772, -0.00302166, 0.00174531, 6.85763607, 0.99044838, 0.99523304, 0.48052337],
    971                                                                                                  [      -5.86195991, -0.00301932, 0.00174426, 6.85894058, 0.99045673, 0.99523642, 0.48056088],
    972                                                                                                  [      -5.86325835, -0.00301699, 0.00174321, 6.86024136, 0.99046507, 0.99523980, 0.48059829],
    973                                                                                                  [      -5.86455308, -0.00301467, 0.00174216, 6.86153841, 0.99047339, 0.99524317, 0.48063560],
    974                                                                                                  [      -5.86584409, -0.00301234, 0.00174111, 6.86283174, 0.99048171, 0.99524655, 0.48067281],
    975                                                                                                  [      -5.86713139, -0.00301002, 0.00174006, 6.86412137, 0.99049001, 0.99524992, 0.48070991],
    976                                                                                                  [      -5.86841499, -0.00300770, 0.00173902, 6.86540729, 0.99049829, 0.99525328, 0.48074691],
    977                                                                                                  [      -5.86969490, -0.00300538, 0.00173797, 6.86668952, 0.99050657, 0.99525665, 0.48078381],
    978                                                                                                  [      -5.87097113, -0.00300307, 0.00173692, 6.86796806, 0.99051483, 0.99526001, 0.48082060],
    979                                                                                                  [      -5.87224368, -0.00300076, 0.00173588, 6.86924293, 0.99052309, 0.99526337, 0.48085730],
    980                                                                                                  [      -5.87351257, -0.00299845, 0.00173483, 6.87051413, 0.99053133, 0.99526672, 0.48089389],
    981                                                                                                  [      -5.87477781, -0.00299614, 0.00173378, 6.87178167, 0.99053955, 0.99527008, 0.48093038],
    982                                                                                                  [      -5.87603940, -0.00299383, 0.00173274, 6.87304557, 0.99054777, 0.99527343, 0.48096678],
    983                                                                                                  [      -5.87729735, -0.00299153, 0.00173169, 6.87430582, 0.99055597, 0.99527677, 0.48100307],
    984                                                                                                  [      -5.87855167, -0.00298923, 0.00173065, 6.87556244, 0.99056416, 0.99528012, 0.48103926],
    985                                                                                                  [      -5.87980237, -0.00298694, 0.00172961, 6.87681543, 0.99057234, 0.99528346, 0.48107535],
    986                                                                                                  [      -5.88104946, -0.00298464, 0.00172856, 6.87806482, 0.99058051, 0.99528680, 0.48111134],
    987                                                                                                  [      -5.88229294, -0.00298235, 0.00172752, 6.87931059, 0.99058867, 0.99529013, 0.48114723],
    988                                                                                                  [      -5.88353283, -0.00298006, 0.00172648, 6.88055277, 0.99059681, 0.99529347, 0.48118302],
    989                                                                                                  [      -5.88476913, -0.00297777, 0.00172543, 6.88179135, 0.99060494, 0.99529680, 0.48121871],
    990                                                                                                  [      -5.88600185, -0.00297549, 0.00172439, 6.88302636, 0.99061306, 0.99530012, 0.48125430],
    991                                                                                                  [      -5.88723100, -0.00297320, 0.00172335, 6.88425779, 0.99062117, 0.99530345, 0.48128980],
    992                                                                                                  [      -5.88845659, -0.00297093, 0.00172231, 6.88548566, 0.99062927, 0.99530677, 0.48132519],
    993                                                                                                  [      -5.88967862, -0.00296865, 0.00172127, 6.88670998, 0.99063735, 0.99531009, 0.48136049],
    994                                                                                                  [      -5.89089712, -0.00296637, 0.00172022, 6.88793074, 0.99064542, 0.99531340, 0.48139569],
    995                                                                                                  [      -5.89211207, -0.00296410, 0.00171918, 6.88914797, 0.99065348, 0.99531671, 0.48143079],
    996                                                                                                  [      -5.89332350, -0.00296183, 0.00171814, 6.89036167, 0.99066153, 0.99532002, 0.48146579],
    997                                                                                                  [      -5.89453141, -0.00295956, 0.00171710, 6.89157185, 0.99066957, 0.99532333, 0.48150069],
    998                                                                                                  [      -5.89573581, -0.00295730, 0.00171607, 6.89277851, 0.99067760, 0.99532664, 0.48153550],
    999                                                                                                  [      -5.89693670, -0.00295504, 0.00171503, 6.89398167, 0.99068561, 0.99532994, 0.48157021],
    1000                                                                                                  [      -5.89813411, -0.00295278, 0.00171399, 6.89518133, 0.99069361, 0.99533324, 0.48160482],
    1001                                                                                                  [      -5.89932802, -0.00295052, 0.00171295, 6.89637751, 0.99070160, 0.99533653, 0.48163934],
    1002                                                                                                  [      -5.90051846, -0.00294826, 0.00171191, 6.89757020, 0.99070958, 0.99533983, 0.48167376],
    1003                                                                                                  [      -5.90170544, -0.00294601, 0.00171088, 6.89875943, 0.99071755, 0.99534312, 0.48170809],
    1004                                                                                                  [      -5.90288895, -0.00294376, 0.00170984, 6.89994519, 0.99072550, 0.99534640, 0.48174231],
    1005                                                                                                  [      -5.90406901, -0.00294151, 0.00170880, 6.90112750, 0.99073345, 0.99534969, 0.48177645],
    1006                                                                                                  [      -5.90524562, -0.00293927, 0.00170777, 6.90230636, 0.99074138, 0.99535297, 0.48181048],
    1007                                                                                                  [      -5.90641881, -0.00293702, 0.00170673, 6.90348178, 0.99074930, 0.99535625, 0.48184443],
    1008                                                                                                  [      -5.90758856, -0.00293478, 0.00170569, 6.90465378, 0.99075721, 0.99535952, 0.48187827],
    1009                                                                                                  [      -5.90875490, -0.00293254, 0.00170466, 6.90582235, 0.99076511, 0.99536280, 0.48191202],
    1010                                                                                                  [      -5.90991782, -0.00293031, 0.00170363, 6.90698751, 0.99077300, 0.99536607, 0.48194568],
    1011                                                                                                  [      -5.91107735, -0.00292807, 0.00170259, 6.90814927, 0.99078087, 0.99536933, 0.48197924],
    1012                                                                                                  [      -5.91223348, -0.00292584, 0.00170156, 6.90930763, 0.99078874, 0.99537260, 0.48201271],
    1013                                                                                                  [      -5.91338622, -0.00292362, 0.00170052, 6.91046261, 0.99079659, 0.99537586, 0.48204608],
    1014                                                                                                  [      -5.91453559, -0.00292139, 0.00169949, 6.91161420, 0.99080443, 0.99537912, 0.48207936],
    1015                                                                                                  [      -5.91568159, -0.00291917, 0.00169846, 6.91276243, 0.99081226, 0.99538238, 0.48211255],
    1016                                                                                                  [      -5.91682423, -0.00291694, 0.00169743, 6.91390729, 0.99082008, 0.99538563, 0.48214564],
    1017                                                                                                  [      -5.91796352, -0.00291472, 0.00169639, 6.91504879, 0.99082789, 0.99538888, 0.48217864],
    1018                                                                                                  [      -5.91909946, -0.00291251, 0.00169536, 6.91618695, 0.99083569, 0.99539213, 0.48221155],
    1019                                                                                                  [      -5.92023207, -0.00291029, 0.00169433, 6.91732177, 0.99084347, 0.99539537, 0.48224436],
    1020                                                                                                  [      -5.92136135, -0.00290808, 0.00169330, 6.91845327, 0.99085124, 0.99539862, 0.48227709],
    1021                                                                                                  [      -5.92248731, -0.00290587, 0.00169227, 6.91958144, 0.99085901, 0.99540186, 0.48230971],
    1022                                                                                                  [      -5.92360996, -0.00290367, 0.00169124, 6.92070629, 0.99086676, 0.99540509, 0.48234225],
    1023                                                                                                  [      -5.92472930, -0.00290146, 0.00169021, 6.92182784, 0.99087450, 0.99540833, 0.48237470],
    1024                                                                                                  [      -5.92584536, -0.00289926, 0.00168918, 6.92294610, 0.99088223, 0.99541156, 0.48240705],
    1025                                                                                                  [      -5.92695812, -0.00289706, 0.00168816, 6.92406106, 0.99088995, 0.99541479, 0.48243931],
    1026                                                                                                  [      -5.92806761, -0.00289486, 0.00168713, 6.92517274, 0.99089766, 0.99541801, 0.48247148],
    1027                                                                                                  [      -5.92917382, -0.00289267, 0.00168610, 6.92628115, 0.99090535, 0.99542123, 0.48250356],
    1028                                                                                                  [      -5.93027677, -0.00289047, 0.00168507, 6.92738630, 0.99091304, 0.99542445, 0.48253555],
    1029                                                                                                  [      -5.93137647, -0.00288828, 0.00168405, 6.92848819, 0.99092071, 0.99542767, 0.48256745],
    1030                                                                                                  [      -5.93247293, -0.00288610, 0.00168302, 6.92958683, 0.99092837, 0.99543089, 0.48259926],
    1031                                                                                                  [      -5.93356614, -0.00288391, 0.00168199, 6.93068223, 0.99093603, 0.99543410, 0.48263098],
    1032                                                                                                  [      -5.93465613, -0.00288173, 0.00168097, 6.93177440, 0.99094367, 0.99543731, 0.48266260],
    1033                                                                                                  [      -5.93574289, -0.00287955, 0.00167994, 6.93286334, 0.99095130, 0.99544051, 0.48269414],
    1034                                                                                                  [      -5.93682644, -0.00287737, 0.00167892, 6.93394907, 0.99095892, 0.99544371, 0.48272559],
    1035                                                                                                  [      -5.93790678, -0.00287519, 0.00167789, 6.93503159, 0.99096653, 0.99544692, 0.48275695],
    1036                                                                                                  [      -5.93898392, -0.00287302, 0.00167687, 6.93611091, 0.99097412, 0.99545011, 0.48278822],
    1037                                                                                                  [      -5.94005788, -0.00287085, 0.00167585, 6.93718703, 0.99098171, 0.99545331, 0.48281940],
    1038                                                                                                  [      -5.94112865, -0.00286868, 0.00167482, 6.93825997, 0.99098929, 0.99545650, 0.48285049],
    1039                                                                                                  [      -5.94219625, -0.00286651, 0.00167380, 6.93932974, 0.99099685, 0.99545969, 0.48288150],
    1040                                                                                                  [      -5.94326068, -0.00286435, 0.00167278, 6.94039634, 0.99100441, 0.99546288, 0.48291241],
    1041                                                                                                  [      -5.94432196, -0.00286218, 0.00167176, 6.94145977, 0.99101195, 0.99546606, 0.48294324],
    1042                                                                                                  [      -5.94538008, -0.00286002, 0.00167074, 6.94252006, 0.99101949, 0.99546924, 0.48297398],
    1043                                                                                                  [      -5.94643506, -0.00285787, 0.00166971, 6.94357720, 0.99102701, 0.99547242, 0.48300463],
    1044                                                                                                  [      -5.94748691, -0.00285571, 0.00166869, 6.94463120, 0.99103452, 0.99547559, 0.48303520],
    1045                                                                                                  [      -5.94853563, -0.00285356, 0.00166767, 6.94568207, 0.99104202, 0.99547877, 0.48306568],
    1046                                                                                                  [      -5.94958124, -0.00285141, 0.00166666, 6.94672983, 0.99104951, 0.99548194, 0.48309607],
    1047                                                                                                  [      -5.95062373, -0.00284926, 0.00166564, 6.94777447, 0.99105699, 0.99548510, 0.48312637],
    1048                                                                                                  [      -5.95166312, -0.00284711, 0.00166462, 6.94881600, 0.99106446, 0.99548827, 0.48315659],
    1049                                                                                                  [      -5.95269941, -0.00284497, 0.00166360, 6.94985444, 0.99107192, 0.99549143, 0.48318672],
    1050                                                                                                  [      -5.95373262, -0.00284283, 0.00166258, 6.95088979, 0.99107937, 0.99549459, 0.48321676],
    1051                                                                                                  [      -5.95476275, -0.00284069, 0.00166156, 6.95192206, 0.99108681, 0.99549775, 0.48324672],
    1052                                                                                                  [      -5.95578980, -0.00283855, 0.00166055, 6.95295125, 0.99109423, 0.99550090, 0.48327660],
    1053                                                                                                  [      -5.95681380, -0.00283642, 0.00165953, 6.95397738, 0.99110165, 0.99550405, 0.48330638],
    1054                                                                                                  [      -5.95783474, -0.00283429, 0.00165852, 6.95500045, 0.99110906, 0.99550720, 0.48333609],
    1055                                                                                                  [      -5.95885262, -0.00283216, 0.00165750, 6.95602047, 0.99111645, 0.99551034, 0.48336571],
    1056                                                                                                  [      -5.95986747, -0.00283003, 0.00165648, 6.95703744, 0.99112384, 0.99551348, 0.48339524],
    1057                                                                                                  [      -5.96087929, -0.00282791, 0.00165547, 6.95805138, 0.99113121, 0.99551662, 0.48342469],
    1058                                                                                                  [      -5.96188808, -0.00282578, 0.00165446, 6.95906230, 0.99113858, 0.99551976, 0.48345405],
    1059                                                                                                  [      -5.96289385, -0.00282366, 0.00165344, 6.96007019, 0.99114593, 0.99552290, 0.48348333],
    1060                                                                                                  [      -5.96389662, -0.00282154, 0.00165243, 6.96107507, 0.99115327, 0.99552603, 0.48351252],
    1061                                                                                                  [      -5.96489638, -0.00281943, 0.00165142, 6.96207695, 0.99116061, 0.99552916, 0.48354163],
    1062                                                                                                  [      -5.96589315, -0.00281732, 0.00165040, 6.96307584, 0.99116793, 0.99553228, 0.48357066],
    1063                                                                                                  [      -5.96688693, -0.00281520, 0.00164939, 6.96407173, 0.99117524, 0.99553540, 0.48359961],
    1064                                                                                                  [      -5.96787774, -0.00281310, 0.00164838, 6.96506464, 0.99118255, 0.99553852, 0.48362846],
    1065                                                                                                  [      -5.96886557, -0.00281099, 0.00164737, 6.96605458, 0.99118984, 0.99554164, 0.48365724],
    1066                                                                                                  [      -5.96985044, -0.00280888, 0.00164636, 6.96704156, 0.99119712, 0.99554476, 0.48368594],
    1067                                                                                                  [      -5.97083235, -0.00280678, 0.00164535, 6.96802557, 0.99120439, 0.99554787, 0.48371455],
    1068                                                                                                  [      -5.97181132, -0.00280468, 0.00164434, 6.96900664, 0.99121165, 0.99555098, 0.48374308],
    1069                                                                                                  [      -5.97278734, -0.00280258, 0.00164333, 6.96998476, 0.99121891, 0.99555409, 0.48377153],
    1070                                                                                                  [      -5.97376044, -0.00280049, 0.00164232, 6.97095995, 0.99122615, 0.99555719, 0.48379989],
    1071                                                                                                  [      -5.97473060, -0.00279840, 0.00164131, 6.97193221, 0.99123338, 0.99556029, 0.48382818],
    1072                                                                                                  [      -5.97569785, -0.00279631, 0.00164031, 6.97290155, 0.99124060, 0.99556339, 0.48385638],
    1073                                                                                                  [      -5.97666219, -0.00279422, 0.00163930, 6.97386797, 0.99124781, 0.99556648, 0.48388450],
    1074                                                                                                  [      -5.97762362, -0.00279213, 0.00163829, 6.97483149, 0.99125501, 0.99556958, 0.48391254],
    1075                                                                                                  [      -5.97858216, -0.00279005, 0.00163729, 6.97579212, 0.99126220, 0.99557267, 0.48394050],
    1076                                                                                                  [      -5.97953782, -0.00278796, 0.00163628, 6.97674985, 0.99126938, 0.99557576, 0.48396837],
    1077                                                                                                  [      -5.98049059, -0.00278589, 0.00163527, 6.97770470, 0.99127655, 0.99557884, 0.48399617],
    1078                                                                                                  [      -5.98144049, -0.00278381, 0.00163427, 6.97865668, 0.99128371, 0.99558192, 0.48402389],
    1079                                                                                                  [      -5.98238752, -0.00278173, 0.00163326, 6.97960579, 0.99129087, 0.99558500, 0.48405152],
    1080                                                                                                  [      -5.98333170, -0.00277966, 0.00163226, 6.98055204, 0.99129801, 0.99558808, 0.48407908],
    1081                                                                                                  [      -5.98427302, -0.00277759, 0.00163126, 6.98149543, 0.99130514, 0.99559115, 0.48410655],
    1082                                                                                                  [      -5.98521150, -0.00277552, 0.00163025, 6.98243598, 0.99131226, 0.99559422, 0.48413395],
    1083                                                                                                  [      -5.98614715, -0.00277346, 0.00162925, 6.98337369, 0.99131937, 0.99559729, 0.48416127],
    1084                                                                                                  [      -5.98707997, -0.00277139, 0.00162825, 6.98430858, 0.99132647, 0.99560036, 0.48418851],
    1085                                                                                                  [      -5.98800996, -0.00276933, 0.00162725, 6.98524063, 0.99133356, 0.99560342, 0.48421567],
    1086                                                                                                  [      -5.98893715, -0.00276727, 0.00162625, 6.98616988, 0.99134064, 0.99560648, 0.48424275],
    1087                                                                                                  [      -5.98986153, -0.00276521, 0.00162525, 6.98709631, 0.99134771, 0.99560954, 0.48426975],
    1088                                                                                                  [      -5.99078310, -0.00276316, 0.00162425, 6.98801995, 0.99135477, 0.99561259, 0.48429667],
    1089                                                                                                  [      -5.99170189, -0.00276111, 0.00162325, 6.98894079, 0.99136183, 0.99561565, 0.48432352],
    1090                                                                                                  [      -5.99261789, -0.00275906, 0.00162225, 6.98985884, 0.99136887, 0.99561870, 0.48435028],
    1091                                                                                                  [      -5.99353112, -0.00275701, 0.00162125, 6.99077411, 0.99137590, 0.99562174, 0.48437697],
    1092                                                                                                  [      -5.99444158, -0.00275496, 0.00162025, 6.99168662, 0.99138292, 0.99562479, 0.48440358],
    1093                                                                                                  [      -5.99534927, -0.00275292, 0.00161925, 6.99259635, 0.99138994, 0.99562783, 0.48443012],
    1094                                                                                                  [      -5.99625421, -0.00275088, 0.00161826, 6.99350334, 0.99139694, 0.99563087, 0.48445657],
    1095                                                                                                  [      -5.99715640, -0.00274884, 0.00161726, 6.99440757, 0.99140393, 0.99563390, 0.48448295],
    1096                                                                                                  [      -5.99805585, -0.00274680, 0.00161626, 6.99530906, 0.99141092, 0.99563694, 0.48450926],
    1097                                                                                                  [      -5.99895257, -0.00274476, 0.00161527, 6.99620781, 0.99141789, 0.99563997, 0.48453548],
    1098                                                                                                  [      -5.99984656, -0.00274273, 0.00161427, 6.99710383, 0.99142485, 0.99564299, 0.48456163],
    1099                                                                                                  [      -6.00073784, -0.00274070, 0.00161328, 6.99799714, 0.99143181, 0.99564602, 0.48458771],
    1100                                                                                                  [      -6.00162640, -0.00273867, 0.00161228, 6.99888773, 0.99143875, 0.99564904, 0.48461370],
    1101                                                                                                  [      -6.00251225, -0.00273665, 0.00161129, 6.99977561, 0.99144569, 0.99565206, 0.48463962],
    1102                                                                                                  [      -6.00339541, -0.00273462, 0.00161030, 7.00066079, 0.99145261, 0.99565508, 0.48466547],
    1103                                                                                                  [      -6.00427588, -0.00273260, 0.00160931, 7.00154328, 0.99145953, 0.99565809, 0.48469124],
    1104                                                                                                  [      -6.00515367, -0.00273058, 0.00160831, 7.00242309, 0.99146644, 0.99566111, 0.48471693],
    1105                                                                                                  [      -6.00602878, -0.00272856, 0.00160732, 7.00330021, 0.99147334, 0.99566411, 0.48474255],
    1106                                                                                                  [      -6.00690122, -0.00272655, 0.00160633, 7.00417467, 0.99148022, 0.99566712, 0.48476810],
    1107                                                                                                  [      -6.00777100, -0.00272454, 0.00160534, 7.00504646, 0.99148710, 0.99567012, 0.48479357],
    1108                                                                                                  [      -6.00863812, -0.00272252, 0.00160435, 7.00591560, 0.99149397, 0.99567313, 0.48481896],
    1109                                                                                                  [      -6.00950260, -0.00272052, 0.00160336, 7.00678208, 0.99150083, 0.99567612, 0.48484429],
    1110                                                                                                  [      -6.01036444, -0.00271851, 0.00160237, 7.00764593, 0.99150768, 0.99567912, 0.48486953],
    1111                                                                                                  [      -6.01122364, -0.00271651, 0.00160138, 7.00850713, 0.99151452, 0.99568211, 0.48489471],
    1112                                                                                                  [      -6.01208022, -0.00271450, 0.00160039, 7.00936571, 0.99152135, 0.99568510, 0.48491980],
    1113                                                                                                  [      -6.01293417, -0.00271250, 0.00159941, 7.01022167, 0.99152817, 0.99568809, 0.48494483],
    1114                                                                                                  [      -6.01378552, -0.00271051, 0.00159842, 7.01107501, 0.99153498, 0.99569107, 0.48496978],
    1115                                                                                                  [      -6.01463426, -0.00270851, 0.00159743, 7.01192575, 0.99154179, 0.99569406, 0.48499466],
    1116                                                                                                  [      -6.01548040, -0.00270652, 0.00159645, 7.01277388, 0.99154858, 0.99569704, 0.48501947],
    1117                                                                                                  [      -6.01632394, -0.00270453, 0.00159546, 7.01361942, 0.99155537, 0.99570001, 0.48504420],
    1118                                                                                                  [      -6.01716491, -0.00270254, 0.00159448, 7.01446237, 0.99156214, 0.99570299, 0.48506886],
    1119                                                                                                  [      -6.01800329, -0.00270055, 0.00159349, 7.01530274, 0.99156891, 0.99570596, 0.48509345],
    1120                                                                                                  [      -6.01883911, -0.00269856, 0.00159251, 7.01614055, 0.99157566, 0.99570893, 0.48511797],
    1121                                                                                                  [      -6.01967236, -0.00269658, 0.00159153, 7.01697578, 0.99158241, 0.99571189, 0.48514241],
    1122                                                                                                  [      -6.02050306, -0.00269460, 0.00159054, 7.01780845, 0.99158915, 0.99571486, 0.48516678],
    1123                                                                                                  [      -6.02133120, -0.00269262, 0.00158956, 7.01863858, 0.99159588, 0.99571782, 0.48519108],
    1124                                                                                                  [      -6.02215680, -0.00269065, 0.00158858, 7.01946615, 0.99160260, 0.99572077, 0.48521531],
    1125                                                                                                  [      -6.02297987, -0.00268867, 0.00158760, 7.02029119, 0.99160931, 0.99572373, 0.48523947],
    1126                                                                                                  [      -6.02380040, -0.00268670, 0.00158662, 7.02111370, 0.99161601, 0.99572668, 0.48526355],
    1127                                                                                                  [      -6.02461841, -0.00268473, 0.00158564, 7.02193368, 0.99162270, 0.99572963, 0.48528757],
    1128                                                                                                  [      -6.02543391, -0.00268276, 0.00158466, 7.02275115, 0.99162938, 0.99573258, 0.48531151],
    1129                                                                                                  [      -6.02624690, -0.00268080, 0.00158368, 7.02356610, 0.99163606, 0.99573552, 0.48533539],
    1130                                                                                                  [      -6.02705738, -0.00267883, 0.00158270, 7.02437855, 0.99164272, 0.99573847, 0.48535919],
    1131                                                                                                  [      -6.02786537, -0.00267687, 0.00158172, 7.02518850, 0.99164938, 0.99574141, 0.48538292],
    1132                                                                                                  [      -6.02867087, -0.00267491, 0.00158074, 7.02599596, 0.99165602, 0.99574434, 0.48540659],
    1133                                                                                                  [      -6.02947389, -0.00267296, 0.00157977, 7.02680093, 0.99166266, 0.99574728, 0.48543018],
    1134                                                                                                  [      -6.03027443, -0.00267100, 0.00157879, 7.02760343, 0.99166929, 0.99575021, 0.48545370],
    1135                                                                                                  [      -6.03107251, -0.00266905, 0.00157781, 7.02840346, 0.99167591, 0.99575314, 0.48547716],
    1136                                                                                                  [      -6.03186812, -0.00266710, 0.00157684, 7.02920102, 0.99168252, 0.99575606, 0.48550054],
    1137                                                                                                  [      -6.03266127, -0.00266515, 0.00157586, 7.02999612, 0.99168912, 0.99575899, 0.48552386],
    1138                                                                                                  [      -6.03345198, -0.00266320, 0.00157489, 7.03078878, 0.99169571, 0.99576191, 0.48554710],
    1139                                                                                                  [      -6.03424025, -0.00266126, 0.00157391, 7.03157899, 0.99170230, 0.99576483, 0.48557028],
    1140                                                                                                  [      -6.03502608, -0.00265932, 0.00157294, 7.03236676, 0.99170887, 0.99576774, 0.48559339],
    1141                                                                                                  [      -6.03580948, -0.00265738, 0.00157197, 7.03315210, 0.99171544, 0.99577065, 0.48561643],
    1142                                                                                                  [      -6.03659046, -0.00265544, 0.00157100, 7.03393502, 0.99172199, 0.99577356, 0.48563940],
    1143                                                                                                  [      -6.03736903, -0.00265350, 0.00157002, 7.03471552, 0.99172854, 0.99577647, 0.48566231],
    1144                                                                                                  [      -6.03814518, -0.00265157, 0.00156905, 7.03549361, 0.99173508, 0.99577938, 0.48568514],
    1145                                                                                                  [      -6.03891894, -0.00264964, 0.00156808, 7.03626930, 0.99174161, 0.99578228, 0.48570791],
    1146                                                                                                  [      -6.03969029, -0.00264771, 0.00156711, 7.03704258, 0.99174813, 0.99578518, 0.48573061],
    1147                                                                                                  [      -6.04045926, -0.00264578, 0.00156614, 7.03781348, 0.99175464, 0.99578807, 0.48575324],
    1148                                                                                                  [      -6.04122585, -0.00264386, 0.00156517, 7.03858199, 0.99176115, 0.99579097, 0.48577581],
    1149                                                                                                  [      -6.04199006, -0.00264193, 0.00156421, 7.03934813, 0.99176764, 0.99579386, 0.48579831],
    1150                                                                                                  [      -6.04275190, -0.00264001, 0.00156324, 7.04011189, 0.99177413, 0.99579675, 0.48582075],
    1151                                                                                                  [      -6.04351138, -0.00263809, 0.00156227, 7.04087328, 0.99178061, 0.99579964, 0.48584311],
    1152                                                                                                  [      -6.04426850, -0.00263618, 0.00156130, 7.04163232, 0.99178707, 0.99580252, 0.48586541],
    1153                                                                                                  [      -6.04502327, -0.00263426, 0.00156034, 7.04238901, 0.99179353, 0.99580540, 0.48588765],
    1154                                                                                                  [      -6.04577570, -0.00263235, 0.00155937, 7.04314335, 0.99179998, 0.99580828, 0.48590981],
    1155                                                                                                  [      -6.04652579, -0.00263044, 0.00155841, 7.04389535, 0.99180643, 0.99581115, 0.48593191],
    1156                                                                                                  [      -6.04727354, -0.00262853, 0.00155744, 7.04464502, 0.99181286, 0.99581403, 0.48595395],
    1157                                                                                                  [      -6.04801898, -0.00262662, 0.00155648, 7.04539236, 0.99181929, 0.99581690, 0.48597592],
    1158                                                                                                  [      -6.04876210, -0.00262472, 0.00155552, 7.04613738, 0.99182570, 0.99581977, 0.48599782],
    1159                                                                                                  [      -6.04950290, -0.00262282, 0.00155455, 7.04688009, 0.99183211, 0.99582263, 0.48601966],
    1160                                                                                                  [      -6.05024140, -0.00262092, 0.00155359, 7.04762049, 0.99183851, 0.99582549, 0.48604144],
    1161                                                                                                  [      -6.05097760, -0.00261902, 0.00155263, 7.04835858, 0.99184490, 0.99582835, 0.48606315],
    1162                                                                                                  [      -6.05171151, -0.00261712, 0.00155167, 7.04909439, 0.99185128, 0.99583121, 0.48608479],
    1163                                                                                                  [      -6.05244313, -0.00261523, 0.00155071, 7.04982791, 0.99185765, 0.99583407, 0.48610637],
    1164                                                                                                  [      -6.05317248, -0.00261334, 0.00154975, 7.05055914, 0.99186402, 0.99583692, 0.48612789],
    1165                                                                                                  [      -6.05389955, -0.00261145, 0.00154879, 7.05128810, 0.99187037, 0.99583977, 0.48614934],
    1166                                                                                                  [      -6.05462435, -0.00260956, 0.00154783, 7.05201479, 0.99187672, 0.99584261, 0.48617073],
    1167                                                                                                  [      -6.05534689, -0.00260767, 0.00154687, 7.05273922, 0.99188306, 0.99584546, 0.48619205],
    1168                                                                                                  [      -6.05606718, -0.00260579, 0.00154591, 7.05346139, 0.99188939, 0.99584830, 0.48621331],
    1169                                                                                                  [      -6.05678521, -0.00260391, 0.00154495, 7.05418131, 0.99189571, 0.99585114, 0.48623450],
    1170                                                                                                  [      -6.05750101, -0.00260203, 0.00154400, 7.05489898, 0.99190203, 0.99585398, 0.48625564],
    1171                                                                                                  [      -6.05821457, -0.00260015, 0.00154304, 7.05561442, 0.99190833, 0.99585681, 0.48627671],
    1172                                                                                                  [      -6.05892590, -0.00259827, 0.00154209, 7.05632763, 0.99191463, 0.99585964, 0.48629772],
    1173                                                                                                  [      -6.05963501, -0.00259640, 0.00154113, 7.05703861, 0.99192092, 0.99586247, 0.48631866],
    1174                                                                                                  [      -6.06034190, -0.00259453, 0.00154018, 7.05774737, 0.99192720, 0.99586529, 0.48633954],
    1175                                                                                                  [      -6.06104657, -0.00259266, 0.00153922, 7.05845392, 0.99193347, 0.99586812, 0.48636036],
    1176                                                                                                  [      -6.06174905, -0.00259079, 0.00153827, 7.05915826, 0.99193973, 0.99587094, 0.48638112],
    1177                                                                                                  [      -6.06244932, -0.00258893, 0.00153732, 7.05986040, 0.99194598, 0.99587376, 0.48640181],
    1178                                                                                                  [      -6.06314740, -0.00258706, 0.00153637, 7.06056034, 0.99195223, 0.99587657, 0.48642244],
    1179                                                                                                  [      -6.06384330, -0.00258520, 0.00153541, 7.06125810, 0.99195847, 0.99587938, 0.48644301],
    1180                                                                                                  [      -6.06453701, -0.00258334, 0.00153446, 7.06195367, 0.99196470, 0.99588220, 0.48646352],
    1181                                                                                                  [      -6.06522855, -0.00258148, 0.00153351, 7.06264707, 0.99197092, 0.99588500, 0.48648397],
    1182                                                                                                  [      -6.06591793, -0.00257963, 0.00153256, 7.06333830, 0.99197713, 0.99588781, 0.48650436],
    1183                                                                                                  [      -6.06660514, -0.00257778, 0.00153161, 7.06402736, 0.99198334, 0.99589061, 0.48652468],
    1184                                                                                                  [      -6.06729019, -0.00257592, 0.00153067, 7.06471427, 0.99198953, 0.99589341, 0.48654494],
    1185                                                                                                  [      -6.06797309, -0.00257408, 0.00152972, 7.06539902, 0.99199572, 0.99589621, 0.48656515],
    1186                                                                                                  [      -6.06865385, -0.00257223, 0.00152877, 7.06608163, 0.99200190, 0.99589900, 0.48658529],
    1187                                                                                                  [      -6.06933248, -0.00257038, 0.00152782, 7.06676209, 0.99200807, 0.99590179, 0.48660537],
    1188                                                                                                  [      -6.07000896, -0.00256854, 0.00152688, 7.06744043, 0.99201424, 0.99590458, 0.48662539],
    1189                                                                                                  [      -6.07068333, -0.00256670, 0.00152593, 7.06811663, 0.99202039, 0.99590737, 0.48664535],
    1190                                                                                                  [      -6.07135557, -0.00256486, 0.00152499, 7.06879071, 0.99202654, 0.99591015, 0.48666525],
    1191                                                                                                  [      -6.07202570, -0.00256302, 0.00152404, 7.06946268, 0.99203268, 0.99591294, 0.48668509],
    1192                                                                                                  [      -6.07269372, -0.00256119, 0.00152310, 7.07013254, 0.99203881, 0.99591572, 0.48670487],
    1193                                                                                                  [      -6.07335964, -0.00255935, 0.00152215, 7.07080029, 0.99204493, 0.99591849, 0.48672460],
    1194                                                                                                  [      -6.07402346, -0.00255752, 0.00152121, 7.07146594, 0.99205104, 0.99592127, 0.48674426],
    1195                                                                                                  [      -6.07468520, -0.00255569, 0.00152027, 7.07212950, 0.99205715, 0.99592404, 0.48676386],
    1196                                                                                                  [      -6.07534484, -0.00255387, 0.00151933, 7.07279098, 0.99206325, 0.99592681, 0.48678341],
    1197                                                                                                  [      -6.07600241, -0.00255204, 0.00151839, 7.07345037, 0.99206934, 0.99592957, 0.48680289],
    1198                                                                                                  [      -6.07665791, -0.00255022, 0.00151745, 7.07410769, 0.99207542, 0.99593234, 0.48682232],
    1199                                                                                                  [      -6.07731134, -0.00254840, 0.00151651, 7.07476294, 0.99208149, 0.99593510, 0.48684169],
    1200                                                                                                  [      -6.07796271, -0.00254658, 0.00151557, 7.07541613, 0.99208756, 0.99593786, 0.48686100],
    1201                                                                                                  [      -6.07861202, -0.00254476, 0.00151463, 7.07606726, 0.99209362, 0.99594061, 0.48688025],
    1202                                                                                                  [      -6.07925928, -0.00254294, 0.00151369, 7.07671634, 0.99209967, 0.99594336, 0.48689944],
    1203                                                                                                  [      -6.07990450, -0.00254113, 0.00151275, 7.07736337, 0.99210571, 0.99594612, 0.48691858],
    1204                                                                                                  [      -6.08054769, -0.00253932, 0.00151182, 7.07800837, 0.99211174, 0.99594886, 0.48693766],
    1205                                                                                                  [      -6.08118884, -0.00253751, 0.00151088, 7.07865133, 0.99211777, 0.99595161, 0.48695668],
    1206                                                                                                  [      -6.08182796, -0.00253570, 0.00150994, 7.07929226, 0.99212379, 0.99595435, 0.48697564],
    1207                                                                                                  [      -6.08246507, -0.00253390, 0.00150901, 7.07993117, 0.99212980, 0.99595709, 0.48699454],
    1208                                                                                                  [      -6.08310016, -0.00253210, 0.00150807, 7.08056806, 0.99213580, 0.99595983, 0.48701339],
    1209                                                                                                  [      -6.08373324, -0.00253029, 0.00150714, 7.08120294, 0.99214179, 0.99596257, 0.48703218],
    1210                                                                                                  [      -6.08436431, -0.00252849, 0.00150621, 7.08183582, 0.99214778, 0.99596530, 0.48705092],
    1211                                                                                                  [      -6.08499339, -0.00252670, 0.00150527, 7.08246669, 0.99215376, 0.99596803, 0.48706960],
    1212                                                                                                  [      -6.08562048, -0.00252490, 0.00150434, 7.08309558, 0.99215973, 0.99597076, 0.48708821],
    1213                                                                                                  [      -6.08624558, -0.00252311, 0.00150341, 7.08372247, 0.99216569, 0.99597348, 0.48710678],
    1214                                                                                                  [      -6.08686870, -0.00252132, 0.00150248, 7.08434738, 0.99217164, 0.99597620, 0.48712529],
    1215                                                                                                  [      -6.08748985, -0.00251953, 0.00150155, 7.08497032, 0.99217759, 0.99597892, 0.48714374],
    1216                                                                                                  [      -6.08810902, -0.00251774, 0.00150062, 7.08559128, 0.99218353, 0.99598164, 0.48716214],
    1217                                                                                                  [      -6.08872624, -0.00251595, 0.00149969, 7.08621028, 0.99218946, 0.99598436, 0.48718048],
    1218                                                                                                  [      -6.08934149, -0.00251417, 0.00149876, 7.08682732, 0.99219538, 0.99598707, 0.48719876],
    1219                                                                                                  [      -6.08995479, -0.00251239, 0.00149784, 7.08744241, 0.99220130, 0.99598978, 0.48721699],
    1220                                                                                                  [      -6.09056615, -0.00251061, 0.00149691, 7.08805554, 0.99220721, 0.99599248, 0.48723517],
    1221                                                                                                  [      -6.09117556, -0.00250883, 0.00149598, 7.08866673, 0.99221310, 0.99599519, 0.48725329],
    1222                                                                                                  [      -6.09178304, -0.00250705, 0.00149506, 7.08927599, 0.99221900, 0.99599789, 0.48727135],
    1223                                                                                                  [      -6.09238859, -0.00250528, 0.00149413, 7.08988331, 0.99222488, 0.99600059, 0.48728936],
    1224                                                                                                  [      -6.09299221, -0.00250351, 0.00149320, 7.09048871, 0.99223076, 0.99600329, 0.48730732],
    1225                                                                                                  [      -6.09359392, -0.00250174, 0.00149228, 7.09109218, 0.99223663, 0.99600598, 0.48732522],
    1226                                                                                                  [      -6.09419371, -0.00249997, 0.00149136, 7.09169374, 0.99224249, 0.99600867, 0.48734306],
    1227                                                                                                  [      -6.09479159, -0.00249820, 0.00149043, 7.09229339, 0.99224834, 0.99601136, 0.48736085],
    1228                                                                                                  [      -6.09538757, -0.00249644, 0.00148951, 7.09289113, 0.99225419, 0.99601405, 0.48737859],
    1229                                                                                                  [      -6.09598165, -0.00249468, 0.00148859, 7.09348698, 0.99226003, 0.99601673, 0.48739628],
    1230                                                                                                  [      -6.09657385, -0.00249292, 0.00148767, 7.09408093, 0.99226586, 0.99601942, 0.48741390],
    1231                                                                                                  [      -6.09716415, -0.00249116, 0.00148675, 7.09467299, 0.99227168, 0.99602210, 0.48743148],
    1232                                                                                                  [      -6.09775257, -0.00248940, 0.00148583, 7.09526317, 0.99227749, 0.99602477, 0.48744900],
    1233                                                                                                  [      -6.09833912, -0.00248765, 0.00148491, 7.09585148, 0.99228330, 0.99602745, 0.48746647],
    1234                                                                                                  [      -6.09892380, -0.00248589, 0.00148399, 7.09643791, 0.99228910, 0.99603012, 0.48748389],
    1235                                                                                                  [      -6.09950662, -0.00248414, 0.00148307, 7.09702248, 0.99229489, 0.99603279, 0.48750125],
    1236                                                                                                  [      -6.10008757, -0.00248239, 0.00148215, 7.09760518, 0.99230068, 0.99603545, 0.48751856],
    1237                                                                                                  [      -6.10066667, -0.00248065, 0.00148124, 7.09818603, 0.99230646, 0.99603812, 0.48753582],
    1238                                                                                                  [      -6.10124393, -0.00247890, 0.00148032, 7.09876503, 0.99231223, 0.99604078, 0.48755302],
    1239                                                                                                  [      -6.10181934, -0.00247716, 0.00147941, 7.09934218, 0.99231799, 0.99604344, 0.48757018],
    1240                                                                                                  [      -6.10239291, -0.00247542, 0.00147849, 7.09991749, 0.99232374, 0.99604609, 0.48758728],
    1241                                                                                                  [      -6.10296465, -0.00247368, 0.00147758, 7.10049097, 0.99232949, 0.99604875, 0.48760432],
    1242                                                                                                  [      -6.10353456, -0.00247194, 0.00147666, 7.10106262, 0.99233523, 0.99605140, 0.48762132],
    1243                                                                                                  [      -6.10410265, -0.00247020, 0.00147575, 7.10163245, 0.99234096, 0.99605405, 0.48763826],
    1244                                                                                                  [      -6.10466892, -0.00246847, 0.00147484, 7.10220045, 0.99234669, 0.99605669, 0.48765516],
    1245                                                                                                  [      -6.10523338, -0.00246674, 0.00147393, 7.10276665, 0.99235240, 0.99605934, 0.48767200],
    1246                                                                                                  [      -6.10579604, -0.00246501, 0.00147301, 7.10333103, 0.99235811, 0.99606198, 0.48768879],
    1247                                                                                                  [      -6.10635689, -0.00246328, 0.00147210, 7.10389362, 0.99236382, 0.99606462, 0.48770552],
    1248                                                                                                  [      -6.10691595, -0.00246155, 0.00147119, 7.10445440, 0.99236951, 0.99606725, 0.48772221],
    1249                                                                                                  [      -6.10747322, -0.00245983, 0.00147028, 7.10501339, 0.99237520, 0.99606989, 0.48773885],
    1250                                                                                                  [      -6.10802871, -0.00245811, 0.00146937, 7.10557060, 0.99238088, 0.99607252, 0.48775543],
    1251                                                                                                  [      -6.10858241, -0.00245639, 0.00146847, 7.10612603, 0.99238655, 0.99607515, 0.48777197],
    1252                                                                                                  [      -6.10913434, -0.00245467, 0.00146756, 7.10667967, 0.99239222, 0.99607777, 0.48778845],
    1253                                                                                                  [      -6.10968450, -0.00245295, 0.00146665, 7.10723155, 0.99239787, 0.99608040, 0.48780488],
    1254                                                                                                  [      -6.11023289, -0.00245123, 0.00146575, 7.10778166, 0.99240353, 0.99608302, 0.48782127],
    1255                                                                                                  [      -6.11077953, -0.00244952, 0.00146484, 7.10833001, 0.99240917, 0.99608564, 0.48783760],
    1256                                                                                                  [      -6.11132441, -0.00244781, 0.00146393, 7.10887660, 0.99241480, 0.99608825, 0.48785388],
    1257                                                                                                  [      -6.11186754, -0.00244610, 0.00146303, 7.10942144, 0.99242043, 0.99609087, 0.48787012],
    1258                                                                                                  [      -6.11240893, -0.00244439, 0.00146213, 7.10996454, 0.99242605, 0.99609348, 0.48788630],
    1259                                                                                                  [      -6.11294858, -0.00244269, 0.00146122, 7.11050589, 0.99243167, 0.99609609, 0.48790243],
    1260                                                                                                  [      -6.11348649, -0.00244098, 0.00146032, 7.11104551, 0.99243728, 0.99609869, 0.48791852],
    1261                                                                                                  [      -6.11402268, -0.00243928, 0.00145942, 7.11158340, 0.99244288, 0.99610130, 0.48793455],
    1262                                                                                                  [      -6.11455714, -0.00243758, 0.00145852, 7.11211956, 0.99244847, 0.99610390, 0.48795053],
    1263                                                                                                  [      -6.11508989, -0.00243588, 0.00145762, 7.11265400, 0.99245405, 0.99610650, 0.48796647],
    1264                                                                                                  [      -6.11562092, -0.00243419, 0.00145672, 7.11318673, 0.99245963, 0.99610909, 0.48798236],
    1265                                                                                                  [      -6.11615024, -0.00243249, 0.00145582, 7.11371775, 0.99246520, 0.99611169, 0.48799820],
    1266                                                                                                  [      -6.11667786, -0.00243080, 0.00145492, 7.11424706, 0.99247077, 0.99611428, 0.48801399],
    1267                                                                                                  [      -6.11720378, -0.00242911, 0.00145402, 7.11477467, 0.99247632, 0.99611687, 0.48802973],
    1268                                                                                                  [      -6.11772800, -0.00242742, 0.00145312, 7.11530058, 0.99248187, 0.99611945, 0.48804543],
    1269                                                                                                  [      -6.11825054, -0.00242574, 0.00145223, 7.11582481, 0.99248741, 0.99612204, 0.48806107],
    1270                                                                                                  [      -6.11877140, -0.00242405, 0.00145133, 7.11634735, 0.99249295, 0.99612462, 0.48807667],
    1271                                                                                                  [      -6.11929057, -0.00242237, 0.00145043, 7.11686820, 0.99249847, 0.99612720, 0.48809222],
    1272                                                                                                  [      -6.11980807, -0.00242069, 0.00144954, 7.11738739, 0.99250400, 0.99612978, 0.48810772],
    1273                                                                                                  [      -6.12032390, -0.00241901, 0.00144864, 7.11790490, 0.99250951, 0.99613235, 0.48812317],
    1274                                                                                                  [      -6.12083807, -0.00241733, 0.00144775, 7.11842074, 0.99251501, 0.99613492, 0.48813858],
    1275                                                                                                  [      -6.12135058, -0.00241565, 0.00144686, 7.11893493, 0.99252051, 0.99613749, 0.48815394],
    1276                                                                                                  [      -6.12186144, -0.00241398, 0.00144597, 7.11944746, 0.99252601, 0.99614006, 0.48816925],
    1277                                                                                                  [      -6.12237064, -0.00241231, 0.00144507, 7.11995834, 0.99253149, 0.99614262, 0.48818451],
    1278                                                                                                  [      -6.12287820, -0.00241064, 0.00144418, 7.12046757, 0.99253697, 0.99614518, 0.48819973],
    1279                                                                                                  [      -6.12338412, -0.00240897, 0.00144329, 7.12097516, 0.99254244, 0.99614774, 0.48821490],
    1280                                                                                                  [      -6.12388841, -0.00240730, 0.00144240, 7.12148111, 0.99254790, 0.99615030, 0.48823002],
    1281                                                                                                  [      -6.12439107, -0.00240563, 0.00144151, 7.12198543, 0.99255336, 0.99615285, 0.48824510],
    1282                                                                                                  [      -6.12489210, -0.00240397, 0.00144062, 7.12248813, 0.99255881, 0.99615540, 0.48826013],
    1283                                                                                                  [      -6.12539151, -0.00240231, 0.00143974, 7.12298920, 0.99256425, 0.99615795, 0.48827512],
    1284                                                                                                  [      -6.12588931, -0.00240065, 0.00143885, 7.12348866, 0.99256969, 0.99616050, 0.48829005],
    1285                                                                                                  [      -6.12638549, -0.00239899, 0.00143796, 7.12398650, 0.99257512, 0.99616304, 0.48830495],
    1286                                                                                                  [      -6.12688007, -0.00239734, 0.00143708, 7.12448273, 0.99258054, 0.99616559, 0.48831979],
    1287                                                                                                  [      -6.12737305, -0.00239568, 0.00143619, 7.12497736, 0.99258596, 0.99616813, 0.48833460],
    1288                                                                                                  [      -6.12786443, -0.00239403, 0.00143531, 7.12547040, 0.99259136, 0.99617066, 0.48834935],
    1289                                                                                                  [      -6.12835422, -0.00239238, 0.00143442, 7.12596184, 0.99259676, 0.99617320, 0.48836406],
    1290                                                                                                  [      -6.12884242, -0.00239073, 0.00143354, 7.12645169, 0.99260216, 0.99617573, 0.48837872],
    1291                                                                                                  [      -6.12932904, -0.00238908, 0.00143266, 7.12693996, 0.99260755, 0.99617826, 0.48839334],
    1292                                                                                                  [      -6.12981408, -0.00238744, 0.00143177, 7.12742664, 0.99261293, 0.99618079, 0.48840792],
    1293                                                                                                  [      -6.13029755, -0.00238580, 0.00143089, 7.12791176, 0.99261830, 0.99618331, 0.48842244],
    1294                                                                                                  [      -6.13077945, -0.00238416, 0.00143001, 7.12839530, 0.99262367, 0.99618583, 0.48843693],
    1295                                                                                                  [      -6.13125979, -0.00238252, 0.00142913, 7.12887728, 0.99262903, 0.99618835, 0.48845136],
    1296                                                                                                  [      -6.13173857, -0.00238088, 0.00142825, 7.12935769, 0.99263438, 0.99619087, 0.48846576],
    1297                                                                                                  [      -6.13221579, -0.00237924, 0.00142737, 7.12983655, 0.99263972, 0.99619339, 0.48848011],
    1298                                                                                                  [      -6.13269147, -0.00237761, 0.00142649, 7.13031386, 0.99264506, 0.99619590, 0.48849441],
    1299                                                                                                  [      -6.13316560, -0.00237598, 0.00142562, 7.13078962, 0.99265040, 0.99619841, 0.48850867],
    1300                                                                                                  [      -6.13363819, -0.00237434, 0.00142474, 7.13126384, 0.99265572, 0.99620092, 0.48852289],
    1301                                                                                                  [      -6.13410924, -0.00237272, 0.00142386, 7.13173652, 0.99266104, 0.99620342, 0.48853706],
    1302                                                                                                  [      -6.13457876, -0.00237109, 0.00142299, 7.13220767, 0.99266635, 0.99620593, 0.48855119],
    1303                                                                                                  [      -6.13504676, -0.00236946, 0.00142211, 7.13267729, 0.99267166, 0.99620843, 0.48856528],
    1304                                                                                                  [      -6.13551323, -0.00236784, 0.00142124, 7.13314539, 0.99267696, 0.99621092, 0.48857932],
    1305                                                                                                  [      -6.13597818, -0.00236622, 0.00142036, 7.13361197, 0.99268225, 0.99621342, 0.48859332],
    1306                                                                                                  [      -6.13644163, -0.00236460, 0.00141949, 7.13407703, 0.99268753, 0.99621591, 0.48860727],
    1307                                                                                                  [      -6.13690356, -0.00236298, 0.00141862, 7.13454058, 0.99269281, 0.99621840, 0.48862118],
    1308                                                                                                  [      -6.13736399, -0.00236136, 0.00141774, 7.13500263, 0.99269808, 0.99622089, 0.48863505],
    1309                                                                                                  [      -6.13782292, -0.00235975, 0.00141687, 7.13546317, 0.99270335, 0.99622338, 0.48864888],
    1310                                                                                                  [      -6.13828035, -0.00235814, 0.00141600, 7.13592222, 0.99270861, 0.99622586, 0.48866266],
    1311                                                                                                  [      -6.13873630, -0.00235652, 0.00141513, 7.13637977, 0.99271386, 0.99622834, 0.48867640],
    1312                                                                                                  [      -6.13919076, -0.00235492, 0.00141426, 7.13683584, 0.99271910, 0.99623082, 0.48869010],
    1313                                                                                                  [      -6.13964373, -0.00235331, 0.00141339, 7.13729042, 0.99272434, 0.99623330, 0.48870375],
    1314                                                                                                  [      -6.14009523, -0.00235170, 0.00141253, 7.13774353, 0.99272957, 0.99623577, 0.48871736],
    1315                                                                                                  [      -6.14054526, -0.00235010, 0.00141166, 7.13819516, 0.99273480, 0.99623824, 0.48873093],
    1316                                                                                                  [      -6.14099381, -0.00234850, 0.00141079, 7.13864532, 0.99274001, 0.99624071, 0.48874446],
    1317                                                                                                  [      -6.14144091, -0.00234689, 0.00140993, 7.13909401, 0.99274523, 0.99624318, 0.48875794],
    1318                                                                                                  [      -6.14188654, -0.00234530, 0.00140906, 7.13954125, 0.99275043, 0.99624564, 0.48877139],
    1319                                                                                                  [      -6.14233072, -0.00234370, 0.00140820, 7.13998702, 0.99275563, 0.99624811, 0.48878479],
    1320                                                                                                  [      -6.14277345, -0.00234210, 0.00140733, 7.14043134, 0.99276082, 0.99625057, 0.48879815],
    1321                                                                                                  [      -6.14321473, -0.00234051, 0.00140647, 7.14087422, 0.99276601, 0.99625302, 0.48881147],
    1322                                                                                                  [      -6.14365457, -0.00233892, 0.00140561, 7.14131565, 0.99277118, 0.99625548, 0.48882475],
    1323                                                                                                  [      -6.14409297, -0.00233733, 0.00140474, 7.14175564, 0.99277636, 0.99625793, 0.48883798],
    1324                                                                                                  [      -6.14452994, -0.00233574, 0.00140388, 7.14219420, 0.99278152, 0.99626038, 0.48885118],
    1325                                                                                                  [      -6.14496548, -0.00233415, 0.00140302, 7.14263132, 0.99278668, 0.99626283, 0.48886433],
    1326                                                                                                  [      -6.14539959, -0.00233257, 0.00140216, 7.14306702, 0.99279183, 0.99626527, 0.48887745],
    1327                                                                                                  [      -6.14583228, -0.00233098, 0.00140130, 7.14350130, 0.99279698, 0.99626772, 0.48889052],
    1328                                                                                                  [      -6.14626356, -0.00232940, 0.00140044, 7.14393416, 0.99280212, 0.99627016, 0.48890355],
    1329                                                                                                  [      -6.14669342, -0.00232782, 0.00139958, 7.14436560, 0.99280725, 0.99627259, 0.48891654],
    1330                                                                                                  [      -6.14712188, -0.00232625, 0.00139873, 7.14479564, 0.99281238, 0.99627503, 0.48892949],
    1331                                                                                                  [      -6.14754894, -0.00232467, 0.00139787, 7.14522427, 0.99281750, 0.99627746, 0.48894240],
    1332                                                                                                  [      -6.14797459, -0.00232309, 0.00139701, 7.14565150, 0.99282261, 0.99627989, 0.48895527],
    1333                                                                                                  [      -6.14839885, -0.00232152, 0.00139616, 7.14607733, 0.99282772, 0.99628232, 0.48896810],
    1334                                                                                                  [      -6.14882172, -0.00231995, 0.00139530, 7.14650177, 0.99283282, 0.99628475, 0.48898089],
    1335                                                                                                  [      -6.14924320, -0.00231838, 0.00139445, 7.14692482, 0.99283791, 0.99628717, 0.48899364],
    1336                                                                                                  [      -6.14966330, -0.00231681, 0.00139359, 7.14734649, 0.99284300, 0.99628959, 0.48900634],
    1337                                                                                                  [      -6.15008202, -0.00231525, 0.00139274, 7.14776677, 0.99284808, 0.99629201, 0.48901902],
    1338                                                                                                  [      -6.15049937, -0.00231368, 0.00139189, 7.14818569, 0.99285316, 0.99629443, 0.48903165],
    1339                                                                                                  [      -6.15091535, -0.00231212, 0.00139104, 7.14860323, 0.99285823, 0.99629684, 0.48904424],
    1340                                                                                                  [      -6.15132996, -0.00231056, 0.00139018, 7.14901940, 0.99286329, 0.99629926, 0.48905679],
    1341                                                                                                  [      -6.15174321, -0.00230900, 0.00138933, 7.14943421, 0.99286834, 0.99630166, 0.48906930],
    1342                                                                                                  [      -6.15215510, -0.00230744, 0.00138848, 7.14984766, 0.99287339, 0.99630407, 0.48908178],
    1343                                                                                                  [      -6.15256564, -0.00230589, 0.00138763, 7.15025975, 0.99287844, 0.99630648, 0.48909421],
    1344                                                                                                  [      -6.15297483, -0.00230433, 0.00138679, 7.15067050, 0.99288347, 0.99630888, 0.48910661],
    1345                                                                                                  [      -6.15338268, -0.00230278, 0.00138594, 7.15107989, 0.99288850, 0.99631128, 0.48911897],
    1346                                                                                                  [      -6.15378918, -0.00230123, 0.00138509, 7.15148795, 0.99289353, 0.99631368, 0.48913128],
    1347                                                                                                  [      -6.15419435, -0.00229968, 0.00138424, 7.15189467, 0.99289855, 0.99631607, 0.48914356],
    1348                                                                                                  [      -6.15459818, -0.00229814, 0.00138340, 7.15230005, 0.99290356, 0.99631847, 0.48915581],
    1349                                                                                                  [      -6.15500069, -0.00229659, 0.00138255, 7.15270410, 0.99290856, 0.99632086, 0.48916801],
    1350                                                                                                  [      -6.15540187, -0.00229505, 0.00138171, 7.15310682, 0.99291356, 0.99632324, 0.48918017],
    1351                                                                                                  [      -6.15580173, -0.00229350, 0.00138087, 7.15350822, 0.99291855, 0.99632563, 0.48919230],
    1352                                                                                                  [      -6.15620027, -0.00229196, 0.00138002, 7.15390831, 0.99292354, 0.99632801, 0.48920439],
    1353                                                                                                  [      -6.15659750, -0.00229042, 0.00137918, 7.15430708, 0.99292852, 0.99633040, 0.48921644],
    1354                                                                                                  [      -6.15699342, -0.00228889, 0.00137834, 7.15470454, 0.99293349, 0.99633278, 0.48922846],
    1355                                                                                                  [      -6.15738804, -0.00228735, 0.00137750, 7.15510069, 0.99293846, 0.99633515, 0.48924043],
    1356                                                                                                  [      -6.15778136, -0.00228582, 0.00137666, 7.15549554, 0.99294342, 0.99633753, 0.48925237],
    1357                                                                                                  [      -6.15817338, -0.00228429, 0.00137582, 7.15588909, 0.99294838, 0.99633990, 0.48926427],
    1358                                                                                                  [      -6.15856410, -0.00228276, 0.00137498, 7.15628135, 0.99295333, 0.99634227, 0.48927613],
    1359                                                                                                  [      -6.15895354, -0.00228123, 0.00137414, 7.15667231, 0.99295827, 0.99634464, 0.48928796],
    1360                                                                                                  [      -6.15934170, -0.00227970, 0.00137330, 7.15706199, 0.99296321, 0.99634700, 0.48929975],
    1361                                                                                                  [      -6.15972857, -0.00227818, 0.00137246, 7.15745039, 0.99296814, 0.99634936, 0.48931151],
    1362                                                                                                  [      -6.16011416, -0.00227665, 0.00137162, 7.15783751, 0.99297306, 0.99635172, 0.48932322],
    1363                                                                                                  [      -6.16049848, -0.00227513, 0.00137079, 7.15822335, 0.99297798, 0.99635408, 0.48933490],
    1364                                                                                                  [      -6.16088154, -0.00227361, 0.00136995, 7.15860793, 0.99298289, 0.99635644, 0.48934654],
    1365                                                                                                  [      -6.16126332, -0.00227209, 0.00136912, 7.15899123, 0.99298780, 0.99635879, 0.48935815],
    1366                                                                                                  [      -6.16164385, -0.00227057, 0.00136828, 7.15937328, 0.99299270, 0.99636114, 0.48936972],
    1367                                                                                                  [      -6.16202312, -0.00226906, 0.00136745, 7.15975406, 0.99299759, 0.99636349, 0.48938125],
    1368                                                                                                  [      -6.16240113, -0.00226754, 0.00136662, 7.16013359, 0.99300248, 0.99636584, 0.48939275],
    1369                                                                                                  [      -6.16277790, -0.00226603, 0.00136579, 7.16051186, 0.99300736, 0.99636818, 0.48940421],
    1370                                                                                                  [      -6.16315341, -0.00226452, 0.00136495, 7.16088889, 0.99301224, 0.99637052, 0.48941563],
    1371                                                                                                  [      -6.16352769, -0.00226301, 0.00136412, 7.16126468, 0.99301711, 0.99637286, 0.48942702],
    1372                                                                                                  [      -6.16390073, -0.00226151, 0.00136329, 7.16163922, 0.99302197, 0.99637520, 0.48943837],
    1373                                                                                                  [      -6.16427253, -0.00226000, 0.00136246, 7.16201253, 0.99302683, 0.99637753, 0.48944969],
    1374                                                                                                  [      -6.16464310, -0.00225850, 0.00136164, 7.16238461, 0.99303168, 0.99637987, 0.48946098],
    1375                                                                                                  [      -6.16501245, -0.00225700, 0.00136081, 7.16275545, 0.99303653, 0.99638220, 0.48947222],
    1376                                                                                                  [      -6.16538057, -0.00225549, 0.00135998, 7.16312507, 0.99304136, 0.99638453, 0.48948343],
    1377                                                                                                  [      -6.16574747, -0.00225400, 0.00135915, 7.16349348, 0.99304620, 0.99638685, 0.48949461],
    1378                                                                                                  [      -6.16611316, -0.00225250, 0.00135833, 7.16386066, 0.99305103, 0.99638918, 0.48950575],
    1379                                                                                                  [      -6.16647763, -0.00225100, 0.00135750, 7.16422663, 0.99305585, 0.99639150, 0.48951685],
    1380                                                                                                  [      -6.16684090, -0.00224951, 0.00135668, 7.16459139, 0.99306066, 0.99639382, 0.48952792],
    1381                                                                                                  [      -6.16720296, -0.00224802, 0.00135585, 7.16495494, 0.99306547, 0.99639613, 0.48953896],
    1382                                                                                                  [      -6.16756382, -0.00224653, 0.00135503, 7.16531729, 0.99307027, 0.99639845, 0.48954996],
    1383                                                                                                  [      -6.16792348, -0.00224504, 0.00135421, 7.16567845, 0.99307507, 0.99640076, 0.48956093],
    1384                                                                                                  [      -6.16828195, -0.00224355, 0.00135338, 7.16603840, 0.99307986, 0.99640307, 0.48957186],
    1385                                                                                                  [      -6.16863923, -0.00224206, 0.00135256, 7.16639717, 0.99308465, 0.99640538, 0.48958276],
    1386                                                                                                  [      -6.16899533, -0.00224058, 0.00135174, 7.16675475, 0.99308943, 0.99640768, 0.48959363],
    1387                                                                                                  [      -6.16935024, -0.00223910, 0.00135092, 7.16711114, 0.99309420, 0.99640998, 0.48960445],
    1388                                                                                                  [      -6.16970397, -0.00223762, 0.00135010, 7.16746636, 0.99309897, 0.99641228, 0.48961525],
    1389                                                                                                  [      -6.17005653, -0.00223614, 0.00134928, 7.16782039, 0.99310373, 0.99641458, 0.48962601],
    1390                                                                                                  [      -6.17040791, -0.00223466, 0.00134846, 7.16817326, 0.99310849, 0.99641688, 0.48963673],
    1391                                                                                                  [      -6.17075813, -0.00223318, 0.00134765, 7.16852495, 0.99311324, 0.99641917, 0.48964743],
    1392                                                                                                  [      -6.17110719, -0.00223171, 0.00134683, 7.16887548, 0.99311798, 0.99642146, 0.48965809],
    1393                                                                                                  [      -6.17145508, -0.00223024, 0.00134601, 7.16922484, 0.99312272, 0.99642375, 0.48966871],
    1394                                                                                                  [      -6.17180182, -0.00222876, 0.00134520, 7.16957305, 0.99312745, 0.99642604, 0.48967931],
    1395                                                                                                  [      -6.17214740, -0.00222729, 0.00134438, 7.16992010, 0.99313218, 0.99642832, 0.48968987],
    1396                                                                                                  [      -6.17249183, -0.00222583, 0.00134357, 7.17026601, 0.99313690, 0.99643061, 0.48970039],
    1397                                                                                                  [      -6.17283512, -0.00222436, 0.00134275, 7.17061076, 0.99314162, 0.99643289, 0.48971088],
    1398                                                                                                  [      -6.17317726, -0.00222289, 0.00134194, 7.17095437, 0.99314633, 0.99643517, 0.48972134],
    1399                                                                                                  [      -6.17351827, -0.00222143, 0.00134113, 7.17129683, 0.99315103, 0.99643744, 0.48973177],
    1400                                                                                                  [      -6.17385813, -0.00221997, 0.00134032, 7.17163816, 0.99315573, 0.99643971, 0.48974217],
    1401                                                                                                  [      -6.17419687, -0.00221851, 0.00133950, 7.17197836, 0.99316042, 0.99644199, 0.48975252],
    1402                                                                                                  [      -6.17453448, -0.00221705, 0.00133869, 7.17231743, 0.99316511, 0.99644425, 0.48976285],
    1403                                                                                                  [      -6.17487096, -0.00221559, 0.00133788, 7.17265537, 0.99316979, 0.99644652, 0.48977314],
    1404                                                                                                  [      -6.17520632, -0.00221414, 0.00133708, 7.17299218, 0.99317446, 0.99644879, 0.48978341],
    1405                                                                                                  [      -6.17554056, -0.00221269, 0.00133627, 7.17332788, 0.99317913, 0.99645105, 0.48979364],
    1406                                                                                                  [      -6.17587369, -0.00221123, 0.00133546, 7.17366246, 0.99318379, 0.99645331, 0.48980384],
    1407                                                                                                  [      -6.17620571, -0.00220978, 0.00133465, 7.17399593, 0.99318845, 0.99645557, 0.48981400],
    1408                                                                                                  [      -6.17653662, -0.00220833, 0.00133385, 7.17432829, 0.99319310, 0.99645782, 0.48982414],
    1409                                                                                                  [      -6.17686642, -0.00220689, 0.00133304, 7.17465954, 0.99319775, 0.99646007, 0.48983424],
    1410                                                                                                  [      -6.17719513, -0.00220544, 0.00133223, 7.17498969, 0.99320239, 0.99646233, 0.48984431],
    1411                                                                                                  [      -6.17752273, -0.00220400, 0.00133143, 7.17531874, 0.99320702, 0.99646457, 0.48985434],
    1412                                                                                                  [      -6.17784925, -0.00220255, 0.00133063, 7.17564669, 0.99321165, 0.99646682, 0.48986435],
    1413                                                                                                  [      -6.17817467, -0.00220111, 0.00132982, 7.17597356, 0.99321628, 0.99646906, 0.48987432],
    1414                                                                                                  [      -6.17849900, -0.00219967, 0.00132902, 7.17629933, 0.99322089, 0.99647131, 0.48988427],
    1415                                                                                                  [      -6.17882225, -0.00219823, 0.00132822, 7.17662402, 0.99322551, 0.99647355, 0.48989418],
    1416                                                                                                  [      -6.17914442, -0.00219680, 0.00132742, 7.17694762, 0.99323011, 0.99647578, 0.48990406],
    1417                                                                                                  [      -6.17946552, -0.00219536, 0.00132662, 7.17727015, 0.99323471, 0.99647802, 0.48991391],
    1418                                                                                                  [      -6.17978554, -0.00219393, 0.00132582, 7.17759161, 0.99323931, 0.99648025, 0.48992373],
    1419                                                                                                  [      -6.18010448, -0.00219250, 0.00132502, 7.17791199, 0.99324390, 0.99648248, 0.48993351],
    1420                                                                                                  [      -6.18042237, -0.00219107, 0.00132422, 7.17823130, 0.99324848, 0.99648471, 0.48994327],
    1421                                                                                                  [      -6.18073919, -0.00218964, 0.00132342, 7.17854955, 0.99325306, 0.99648694, 0.48995299],
    1422                                                                                                  [      -6.18105494, -0.00218821, 0.00132262, 7.17886673, 0.99325763, 0.99648916, 0.48996269],
    1423                                                                                                  [      -6.18136964, -0.00218679, 0.00132183, 7.17918286, 0.99326220, 0.99649139, 0.48997235],
    1424                                                                                                  [      -6.18168329, -0.00218536, 0.00132103, 7.17949793, 0.99326676, 0.99649361, 0.48998198],
    1425                                                                                                  [      -6.18199589, -0.00218394, 0.00132024, 7.17981195, 0.99327132, 0.99649582, 0.48999158],
    1426                                                                                                  [      -6.18230744, -0.00218252, 0.00131944, 7.18012492, 0.99327587, 0.99649804, 0.49000115],
    1427                                                                                                  [      -6.18261795, -0.00218110, 0.00131865, 7.18043684, 0.99328041, 0.99650025, 0.49001070],
    1428                                                                                                  [      -6.18292741, -0.00217968, 0.00131785, 7.18074773, 0.99328495, 0.99650246, 0.49002020],
    1429                                                                                                  [      -6.18323584, -0.00217827, 0.00131706, 7.18105757, 0.99328949, 0.99650467, 0.49002969],
    1430                                                                                                  [      -6.18354323, -0.00217685, 0.00131627, 7.18136638, 0.99329401, 0.99650688, 0.49003913],
    1431                                                                                                  [      -6.18384960, -0.00217544, 0.00131548, 7.18167416, 0.99329854, 0.99650908, 0.49004855],
    1432                                                                                                  [      -6.18415493, -0.00217403, 0.00131469, 7.18198091, 0.99330305, 0.99651129, 0.49005794],
    1433                                                                                                  [      -6.18445924, -0.00217262, 0.00131390, 7.18228663, 0.99330757, 0.99651349, 0.49006730],
    1434                                                                                                  [      -6.18476253, -0.00217121, 0.00131311, 7.18259133, 0.99331207, 0.99651568, 0.49007664],
    1435                                                                                                  [      -6.18506481, -0.00216980, 0.00131232, 7.18289501, 0.99331657, 0.99651788, 0.49008594],
    1436                                                                                                  [      -6.18536606, -0.00216840, 0.00131153, 7.18319767, 0.99332107, 0.99652007, 0.49009521],
    1437                                                                                                  [      -6.18566631, -0.00216699, 0.00131074, 7.18349932, 0.99332556, 0.99652226, 0.49010445],
    1438                                                                                                  [      -6.18596555, -0.00216559, 0.00130996, 7.18379996, 0.99333004, 0.99652445, 0.49011367],
    1439                                                                                                  [      -6.18626378, -0.00216419, 0.00130917, 7.18409959, 0.99333452, 0.99652664, 0.49012285],
    1440                                                                                                  [      -6.18656101, -0.00216279, 0.00130839, 7.18439822, 0.99333900, 0.99652882, 0.49013200],
    1441                                                                                                  [      -6.18685724, -0.00216139, 0.00130760, 7.18469585, 0.99334346, 0.99653101, 0.49014113],
    1442                                                                                                  [      -6.18715248, -0.00216000, 0.00130682, 7.18499249, 0.99334793, 0.99653319, 0.49015022],
    1443                                                                                                  [      -6.18744673, -0.00215860, 0.00130603, 7.18528812, 0.99335238, 0.99653537, 0.49015929],
    1444                                                                                                  [      -6.18773998, -0.00215721, 0.00130525, 7.18558277, 0.99335684, 0.99653754, 0.49016833],
    1445                                                                                                  [      -6.18803225, -0.00215582, 0.00130447, 7.18587643, 0.99336128, 0.99653972, 0.49017734],
    1446                                                                                                  [      -6.18832353, -0.00215443, 0.00130369, 7.18616911, 0.99336572, 0.99654189, 0.49018632],
    1447                                                                                                  [      -6.18861384, -0.00215304, 0.00130291, 7.18646080, 0.99337016, 0.99654406, 0.49019527],
    1448                                                                                                  [      -6.18890316, -0.00215165, 0.00130213, 7.18675152, 0.99337459, 0.99654622, 0.49020420],
    1449                                                                                                  [      -6.18919152, -0.00215026, 0.00130135, 7.18704125, 0.99337901, 0.99654839, 0.49021309],
    1450                                                                                                  [      -6.18947890, -0.00214888, 0.00130057, 7.18733002, 0.99338343, 0.99655055, 0.49022196],
    1451                                                                                                  [      -6.18976532, -0.00214750, 0.00129979, 7.18761782, 0.99338785, 0.99655271, 0.49023080],
    1452                                                                                                  [      -6.19005077, -0.00214612, 0.00129901, 7.18790465, 0.99339226, 0.99655487, 0.49023961],
    1453                                                                                                  [      -6.19033526, -0.00214474, 0.00129823, 7.18819052, 0.99339666, 0.99655703, 0.49024839],
    1454                                                                                                  [      -6.19061879, -0.00214336, 0.00129746, 7.18847543, 0.99340106, 0.99655918, 0.49025714],
    1455                                                                                                  [      -6.19090136, -0.00214198, 0.00129668, 7.18875938, 0.99340545, 0.99656134, 0.49026588],
    1456                                                                                                  [      -6.19118298, -0.00214061, 0.00129591, 7.18904238, 0.99340984, 0.99656349, 0.49027457],
    1457                                                                                                  [      -6.19146366, -0.00213923, 0.00129513, 7.18932442, 0.99341422, 0.99656563, 0.49028324],
    1458                                                                                                  [      -6.19174338, -0.00213786, 0.00129436, 7.18960552, 0.99341860, 0.99656778, 0.49029189],
    1459                                                                                                  [      -6.19202217, -0.00213649, 0.00129359, 7.18988568, 0.99342297, 0.99656992, 0.49030051],
    1460                                                                                                  [      -6.19230001, -0.00213512, 0.00129281, 7.19016489, 0.99342734, 0.99657207, 0.49030909],
    1461                                                                                                  [      -6.19257691, -0.00213375, 0.00129204, 7.19044316, 0.99343170, 0.99657421, 0.49031766],
    1462                                                                                                  [      -6.19285288, -0.00213239, 0.00129127, 7.19072050, 0.99343606, 0.99657634, 0.49032619],
    1463                                                                                                  [      -6.19312792, -0.00213102, 0.00129050, 7.19099690, 0.99344041, 0.99657848, 0.49033470],
    1464                                                                                                  [      -6.19340203, -0.00212966, 0.00128973, 7.19127237, 0.99344475, 0.99658061, 0.49034317],
    1465                                                                                                  [      -6.19367521, -0.00212830, 0.00128896, 7.19154692, 0.99344909, 0.99658274, 0.49035163],
    1466                                                                                                  [      -6.19394748, -0.00212694, 0.00128819, 7.19182054, 0.99345343, 0.99658487, 0.49036006],
    1467                                                                                                  [      -6.19421882, -0.00212558, 0.00128743, 7.19209324, 0.99345776, 0.99658700, 0.49036845],
    1468                                                                                                  [      -6.19448924, -0.00212422, 0.00128666, 7.19236502, 0.99346208, 0.99658912, 0.49037683],
    1469                                                                                                  [      -6.19475875, -0.00212286, 0.00128589, 7.19263589, 0.99346640, 0.99659124, 0.49038517],
    1470                                                                                                  [      -6.19502735, -0.00212151, 0.00128513, 7.19290584, 0.99347072, 0.99659336, 0.49039349],
    1471                                                                                                  [      -6.19529504, -0.00212016, 0.00128436, 7.19317489, 0.99347503, 0.99659548, 0.49040178],
    1472                                                                                                  [      -6.19556183, -0.00211880, 0.00128360, 7.19344302, 0.99347933, 0.99659760, 0.49041005],
    1473                                                                                                  [      -6.19582771, -0.00211745, 0.00128283, 7.19371026, 0.99348363, 0.99659971, 0.49041829],
    1474                                                                                                  [      -6.19609270, -0.00211611, 0.00128207, 7.19397659, 0.99348792, 0.99660182, 0.49042650],
    1475                                                                                                  [      -6.19635678, -0.00211476, 0.00128131, 7.19424203, 0.99349221, 0.99660393, 0.49043469],
    1476                                                                                                  [      -6.19661998, -0.00211341, 0.00128054, 7.19450656, 0.99349650, 0.99660604, 0.49044285],
    1477                                                                                                  [      -6.19688228, -0.00211207, 0.00127978, 7.19477021, 0.99350077, 0.99660815, 0.49045099],
    1478                                                                                                  [      -6.19714369, -0.00211073, 0.00127902, 7.19503297, 0.99350505, 0.99661025, 0.49045909],
    1479                                                                                                  [      -6.19740422, -0.00210938, 0.00127826, 7.19529484, 0.99350932, 0.99661235, 0.49046717],
    1480                                                                                                  [      -6.19766387, -0.00210804, 0.00127750, 7.19555583, 0.99351358, 0.99661445, 0.49047523],
    1481                                                                                                  [      -6.19792264, -0.00210671, 0.00127674, 7.19581593, 0.99351784, 0.99661655, 0.49048326],
    1482                                                                                                  [      -6.19818053, -0.00210537, 0.00127599, 7.19607516, 0.99352209, 0.99661864, 0.49049127],
    1483                                                                                                  [      -6.19843754, -0.00210403, 0.00127523, 7.19633351, 0.99352634, 0.99662074, 0.49049925],
    1484                                                                                                  [      -6.19869369, -0.00210270, 0.00127447, 7.19659099, 0.99353058, 0.99662283, 0.49050720],
    1485                                                                                                  [      -6.19894896, -0.00210137, 0.00127372, 7.19684760, 0.99353482, 0.99662492, 0.49051513],
    1486                                                                                                  [      -6.19920337, -0.00210004, 0.00127296, 7.19710334, 0.99353905, 0.99662700, 0.49052303],
    1487                                                                                                  [      -6.19945692, -0.00209871, 0.00127221, 7.19735822, 0.99354328, 0.99662909, 0.49053091],
    1488                                                                                                  [      -6.19970961, -0.00209738, 0.00127145, 7.19761223, 0.99354750, 0.99663117, 0.49053876],
    1489                                                                                                  [      -6.19996144, -0.00209605, 0.00127070, 7.19786539, 0.99355172, 0.99663325, 0.49054659],
    1490                                                                                                  [      -6.20021242, -0.00209473, 0.00126995, 7.19811769, 0.99355593, 0.99663533, 0.49055439],
    1491                                                                                                  [      -6.20046254, -0.00209340, 0.00126919, 7.19836914, 0.99356014, 0.99663741, 0.49056217],
    1492                                                                                                  [      -6.20071181, -0.00209208, 0.00126844, 7.19861973, 0.99356434, 0.99663948, 0.49056992],
    1493                                                                                                  [      -6.20096024, -0.00209076, 0.00126769, 7.19886948, 0.99356854, 0.99664155, 0.49057765],
    1494                                                                                                  [      -6.20120782, -0.00208944, 0.00126694, 7.19911839, 0.99357273, 0.99664362, 0.49058536],
    1495                                                                                                  [      -6.20145457, -0.00208812, 0.00126619, 7.19936645, 0.99357692, 0.99664569, 0.49059304],
    1496                                                                                                  [      -6.20170047, -0.00208680, 0.00126544, 7.19961367, 0.99358110, 0.99664776, 0.49060069],
    1497                                                                                                  [      -6.20194554, -0.00208549, 0.00126469, 7.19986005, 0.99358528, 0.99664982, 0.49060832],
    1498                                                                                                  [      -6.20218978, -0.00208417, 0.00126395, 7.20010560, 0.99358945, 0.99665188, 0.49061593],
    1499                                                                                                  [      -6.20243318, -0.00208286, 0.00126320, 7.20035032, 0.99359362, 0.99665394, 0.49062351],
    1500                                                                                                  [      -6.20267576, -0.00208155, 0.00126245, 7.20059421, 0.99359778, 0.99665600, 0.49063106],
    1501                                                                                                  [      -6.20291751, -0.00208024, 0.00126171, 7.20083727, 0.99360194, 0.99665805, 0.49063859],
    1502                                                                                                  [      -6.20315844, -0.00207893, 0.00126096, 7.20107951, 0.99360609, 0.99666011, 0.49064611],
    1503                                                                                                  [      -6.20339855, -0.00207762, 0.00126022, 7.20132093, 0.99361024, 0.99666216, 0.49065358],
    1504                                                                                                  [      -6.20363785, -0.00207632, 0.00125947, 7.20156153, 0.99361438, 0.99666421, 0.49066104],
    1505                                                                                                  [      -6.20387633, -0.00207501, 0.00125873, 7.20180131, 0.99361852, 0.99666626, 0.49066848],
    1506                                                                                                  [      -6.20411399, -0.00207371, 0.00125799, 7.20204028, 0.99362265, 0.99666830, 0.49067589],
    1507                                                                                                  [      -6.20435085, -0.00207241, 0.00125725, 7.20227844, 0.99362678, 0.99667034, 0.49068328],
    1508                                                                                                  [      -6.20458690, -0.00207111, 0.00125650, 7.20251579, 0.99363090, 0.99667238, 0.49069064],
    1509                                                                                                  [      -6.20482215, -0.00206981, 0.00125576, 7.20275234, 0.99363502, 0.99667442, 0.49069799],
    1510                                                                                                  [      -6.20505660, -0.00206852, 0.00125502, 7.20298808, 0.99363914, 0.99667646, 0.49070530],
    1511                                                                                                  [      -6.20529024, -0.00206722, 0.00125428, 7.20322302, 0.99364325, 0.99667850, 0.49071260],
    1512                                                                                                  [      -6.20552310, -0.00206593, 0.00125355, 7.20345717, 0.99364735, 0.99668053, 0.49071987],
    1513                                                                                                  [      -6.20575515, -0.00206463, 0.00125281, 7.20369052, 0.99365145, 0.99668256, 0.49072711],
    1514                                                                                                  [      -6.20598642, -0.00206334, 0.00125207, 7.20392308, 0.99365554, 0.99668459, 0.49073434],
    1515                                                                                                  [      -6.20621690, -0.00206205, 0.00125133, 7.20415485, 0.99365963, 0.99668662, 0.49074154],
    1516                                                                                                  [      -6.20644659, -0.00206076, 0.00125060, 7.20438583, 0.99366372, 0.99668864, 0.49074872],
    1517                                                                                                  [      -6.20667550, -0.00205947, 0.00124986, 7.20461602, 0.99366780, 0.99669066, 0.49075587],
    1518                                                                                                  [      -6.20690362, -0.00205819, 0.00124913, 7.20484543, 0.99367187, 0.99669268, 0.49076300],
    1519                                                                                                  [      -6.20713097, -0.00205690, 0.00124839, 7.20507407, 0.99367594, 0.99669470, 0.49077011],
    1520                                                                                                  [      -6.20735754, -0.00205562, 0.00124766, 7.20530192, 0.99368001, 0.99669672, 0.49077720],
    1521                                                                                                  [      -6.20758334, -0.00205434, 0.00124693, 7.20552900, 0.99368407, 0.99669873, 0.49078426],
    1522                                                                                                  [      -6.20780837, -0.00205306, 0.00124619, 7.20575531, 0.99368812, 0.99670075, 0.49079130],
    1523                                                                                                  [      -6.20803263, -0.00205178, 0.00124546, 7.20598085, 0.99369217, 0.99670276, 0.49079832],
    1524                                                                                                  [      -6.20825612, -0.00205050, 0.00124473, 7.20620562, 0.99369622, 0.99670477, 0.49080531],
    1525                                                                                                  [      -6.20847885, -0.00204923, 0.00124400, 7.20642963, 0.99370026, 0.99670677, 0.49081228],
    1526                                                                                                  [      -6.20870082, -0.00204795, 0.00124327, 7.20665287, 0.99370430, 0.99670878, 0.49081924],
    1527                                                                                                  [      -6.20892203, -0.00204668, 0.00124254, 7.20687536, 0.99370833, 0.99671078, 0.49082617],
    1528                                                                                                  [      -6.20914249, -0.00204540, 0.00124181, 7.20709708, 0.99371236, 0.99671278, 0.49083307],
    1529                                                                                                  [      -6.20936219, -0.00204413, 0.00124109, 7.20731805, 0.99371638, 0.99671478, 0.49083996],
    1530                                                                                                  [      -6.20958114, -0.00204286, 0.00124036, 7.20753827, 0.99372040, 0.99671678, 0.49084681],
    1531                                                                                                  [      -6.20979934, -0.00204160, 0.00123963, 7.20775774, 0.99372441, 0.99671877, 0.49085365],
    1532                                                                                                  [      -6.21001679, -0.00204033, 0.00123891, 7.20797646, 0.99372842, 0.99672076, 0.49086047],
    1533                                                                                                  [      -6.21023350, -0.00203906, 0.00123818, 7.20819444, 0.99373242, 0.99672275, 0.49086727],
    1534                                                                                                  [      -6.21044947, -0.00203780, 0.00123746, 7.20841167, 0.99373642, 0.99672474, 0.49087404],
    1535                                                                                                  [      -6.21066470, -0.00203654, 0.00123673, 7.20862816, 0.99374042, 0.99672673, 0.49088079],
    1536                                                                                                  [      -6.21087920, -0.00203528, 0.00123601, 7.20884392, 0.99374441, 0.99672871, 0.49088752],
    1537                                                                                                  [      -6.21109295, -0.00203402, 0.00123529, 7.20905894, 0.99374839, 0.99673070, 0.49089423],
    1538                                                                                                  [      -6.21130598, -0.00203276, 0.00123456, 7.20927322, 0.99375237, 0.99673268, 0.49090092],
    1539                                                                                                  [      -6.21151828, -0.00203150, 0.00123384, 7.20948678, 0.99375635, 0.99673466, 0.49090759],
    1540                                                                                                  [      -6.21172985, -0.00203024, 0.00123312, 7.20969960, 0.99376032, 0.99673663, 0.49091423],
    1541                                                                                                  [      -6.21194069, -0.00202899, 0.00123240, 7.20991170, 0.99376428, 0.99673861, 0.49092085],
    1542                                                                                                  [      -6.21215082, -0.00202774, 0.00123168, 7.21012308, 0.99376825, 0.99674058, 0.49092745],
    1543                                                                                                  [      -6.21236022, -0.00202648, 0.00123096, 7.21033373, 0.99377220, 0.99674255, 0.49093403],
    1544                                                                                                  [      -6.21256890, -0.00202523, 0.00123025, 7.21054367, 0.99377616, 0.99674452, 0.49094059],
    1545                                                                                                  [      -6.21277687, -0.00202398, 0.00122953, 7.21075289, 0.99378010, 0.99674649, 0.49094712],
    1546                                                                                                  [      -6.21298413, -0.00202274, 0.00122881, 7.21096139, 0.99378405, 0.99674845, 0.49095364],
    1547                                                                                                  [      -6.21319067, -0.00202149, 0.00122809, 7.21116918, 0.99378798, 0.99675042, 0.49096013],
    1548                                                                                                  [      -6.21339651, -0.00202025, 0.00122738, 7.21137627, 0.99379192, 0.99675238, 0.49096661],
    1549                                                                                                  [      -6.21360164, -0.00201900, 0.00122666, 7.21158264, 0.99379585, 0.99675434, 0.49097306],
    1550                                                                                                  [      -6.21380607, -0.00201776, 0.00122595, 7.21178831, 0.99379977, 0.99675629, 0.49097950],
    1551                                                                                                  [      -6.21400979, -0.00201652, 0.00122523, 7.21199328, 0.99380369, 0.99675825, 0.49098591],
    1552                                                                                                  [      -6.21421282, -0.00201528, 0.00122452, 7.21219754, 0.99380761, 0.99676020, 0.49099230],
    1553                                                                                                  [      -6.21441515, -0.00201404, 0.00122381, 7.21240111, 0.99381152, 0.99676215, 0.49099867],
    1554                                                                                                  [      -6.21461678, -0.00201280, 0.00122310, 7.21260398, 0.99381543, 0.99676410, 0.49100502],
    1555                                                                                                  [      -6.21481773, -0.00201157, 0.00122239, 7.21280616, 0.99381933, 0.99676605, 0.49101135],
    1556                                                                                                  [      -6.21501798, -0.00201033, 0.00122167, 7.21300765, 0.99382323, 0.99676799, 0.49101767],
    1557                                                                                                  [      -6.21521754, -0.00200910, 0.00122096, 7.21320844, 0.99382712, 0.99676994, 0.49102395],
    1558                                                                                                  [      -6.21541642, -0.00200787, 0.00122026, 7.21340855, 0.99383101, 0.99677188, 0.49103022],
    1559                                                                                                  [      -6.21561461, -0.00200664, 0.00121955, 7.21360798, 0.99383489, 0.99677382, 0.49103647],
    1560                                                                                                  [      -6.21581213, -0.00200541, 0.00121884, 7.21380672, 0.99383877, 0.99677575, 0.49104269],
    1561                                                                                                  [      -6.21600896, -0.00200418, 0.00121813, 7.21400478, 0.99384265, 0.99677769, 0.49104891],
    1562                                                                                                  [      -6.21620512, -0.00200295, 0.00121742, 7.21420217, 0.99384652, 0.99677962, 0.49105509],
    1563                                                                                                  [      -6.21640060, -0.00200173, 0.00121672, 7.21439887, 0.99385038, 0.99678156, 0.49106126],
    1564                                                                                                  [      -6.21659541, -0.00200050, 0.00121601, 7.21459491, 0.99385424, 0.99678349, 0.49106741],
    1565                                                                                                  [      -6.21678955, -0.00199928, 0.00121531, 7.21479027, 0.99385810, 0.99678541, 0.49107353],
    1566                                                                                                  [      -6.21698302, -0.00199806, 0.00121460, 7.21498497, 0.99386195, 0.99678734, 0.49107964],
    1567                                                                                                  [      -6.21717583, -0.00199684, 0.00121390, 7.21517899, 0.99386580, 0.99678926, 0.49108574],
    1568                                                                                                  [      -6.21736797, -0.00199562, 0.00121320, 7.21537235, 0.99386965, 0.99679119, 0.49109180],
    1569                                                                                                  [      -6.21755945, -0.00199440, 0.00121249, 7.21556505, 0.99387349, 0.99679311, 0.49109786],
    1570                                                                                                  [      -6.21775028, -0.00199319, 0.00121179, 7.21575709, 0.99387732, 0.99679502, 0.49110388],
    1571                                                                                                  [      -6.21794044, -0.00199197, 0.00121109, 7.21594847, 0.99388115, 0.99679694, 0.49110989],
    1572                                                                                                  [      -6.21812995, -0.00199076, 0.00121039, 7.21613919, 0.99388498, 0.99679885, 0.49111588],
    1573                                                                                                  [      -6.21831881, -0.00198955, 0.00120969, 7.21632926, 0.99388880, 0.99680077, 0.49112186],
    1574                                                                                                  [      -6.21850702, -0.00198833, 0.00120899, 7.21651868, 0.99389261, 0.99680268, 0.49112781],
    1575                                                                                                  [      -6.21869457, -0.00198712, 0.00120829, 7.21670745, 0.99389643, 0.99680459, 0.49113374],
    1576                                                                                                  [      -6.21888149, -0.00198592, 0.00120759, 7.21689557, 0.99390024, 0.99680649, 0.49113965],
    1577                                                                                                  [      -6.21906775, -0.00198471, 0.00120689, 7.21708304, 0.99390404, 0.99680840, 0.49114555],
    1578                                                                                                  [      -6.21925338, -0.00198350, 0.00120620, 7.21726987, 0.99390784, 0.99681030, 0.49115142],
    1579                                                                                                  [      -6.21943836, -0.00198230, 0.00120550, 7.21745606, 0.99391163, 0.99681220, 0.49115728],
    1580                                                                                                  [      -6.21962271, -0.00198110, 0.00120481, 7.21764161, 0.99391542, 0.99681410, 0.49116312],
    1581                                                                                                  [      -6.21980642, -0.00197989, 0.00120411, 7.21782653, 0.99391921, 0.99681600, 0.49116895],
    1582                                                                                                  [      -6.21998950, -0.00197869, 0.00120342, 7.21801081, 0.99392299, 0.99681789, 0.49117474],
    1583                                                                                                  [      -6.22017194, -0.00197749, 0.00120272, 7.21819445, 0.99392677, 0.99681979, 0.49118052],
    1584                                                                                                  [      -6.22035376, -0.00197630, 0.00120203, 7.21837746, 0.99393054, 0.99682168, 0.49118629],
    1585                                                                                                  [      -6.22053495, -0.00197510, 0.00120134, 7.21855985, 0.99393431, 0.99682357, 0.49119203],
    1586                                                                                                  [      -6.22071551, -0.00197390, 0.00120064, 7.21874161, 0.99393808, 0.99682545, 0.49119776],
    1587                                                                                                  [      -6.22089545, -0.00197271, 0.00119995, 7.21892274, 0.99394184, 0.99682734, 0.49120347],
    1588                                                                                                  [      -6.22107477, -0.00197152, 0.00119926, 7.21910325, 0.99394559, 0.99682922, 0.49120916],
    1589                                                                                                  [      -6.22125347, -0.00197032, 0.00119857, 7.21928314, 0.99394935, 0.99683111, 0.49121482],
    1590                                                                                                  [      -6.22143155, -0.00196913, 0.00119788, 7.21946242, 0.99395309, 0.99683299, 0.49122047],
    1591                                                                                                  [      -6.22160902, -0.00196794, 0.00119719, 7.21964107, 0.99395684, 0.99683486, 0.49122611],
    1592                                                                                                  [      -6.22178587, -0.00196676, 0.00119650, 7.21981911, 0.99396058, 0.99683674, 0.49123173],
    1593                                                                                                  [      -6.22196211, -0.00196557, 0.00119582, 7.21999654, 0.99396431, 0.99683861, 0.49123732],
    1594                                                                                                  [      -6.22213774, -0.00196438, 0.00119513, 7.22017336, 0.99396804, 0.99684049, 0.49124290],
    1595                                                                                                  [      -6.22231277, -0.00196320, 0.00119444, 7.22034957, 0.99397177, 0.99684236, 0.49124846],
    1596                                                                                                  [      -6.22248719, -0.00196202, 0.00119376, 7.22052517, 0.99397549, 0.99684423, 0.49125400],
    1597                                                                                                  [      -6.22266101, -0.00196083, 0.00119307, 7.22070017, 0.99397920, 0.99684609, 0.49125953],
    1598                                                                                                  [      -6.22283422, -0.00195965, 0.00119239, 7.22087457, 0.99398292, 0.99684796, 0.49126504],
    1599                                                                                                  [      -6.22300684, -0.00195848, 0.00119170, 7.22104836, 0.99398663, 0.99684982, 0.49127053],
    1600                                                                                                  [      -6.22317886, -0.00195730, 0.00119102, 7.22122156, 0.99399033, 0.99685168, 0.49127600],
    1601                                                                                                  [      -6.22335028, -0.00195612, 0.00119034, 7.22139416, 0.99399403, 0.99685354, 0.49128145],
    1602                                                                                                  [      -6.22352111, -0.00195495, 0.00118965, 7.22156617, 0.99399773, 0.99685540, 0.49128689],
    1603                                                                                                  [      -6.22369135, -0.00195377, 0.00118897, 7.22173758, 0.99400142, 0.99685726, 0.49129231],
    1604                                                                                                  [      -6.22386100, -0.00195260, 0.00118829, 7.22190841, 0.99400511, 0.99685911, 0.49129771],
    1605                                                                                                  [      -6.22403007, -0.00195143, 0.00118761, 7.22207864, 0.99400879, 0.99686096, 0.49130310],
    1606                                                                                                  [      -6.22419854, -0.00195026, 0.00118693, 7.22224829, 0.99401247, 0.99686281, 0.49130846],
    1607                                                                                                  [      -6.22436644, -0.00194909, 0.00118625, 7.22241735, 0.99401615, 0.99686466, 0.49131381],
    1608                                                                                                  [      -6.22453375, -0.00194792, 0.00118557, 7.22258583, 0.99401982, 0.99686651, 0.49131914],
    1609                                                                                                  [      -6.22470048, -0.00194675, 0.00118490, 7.22275373, 0.99402348, 0.99686835, 0.49132446],
    1610                                                                                                  [      -6.22486664, -0.00194559, 0.00118422, 7.22292105, 0.99402715, 0.99687019, 0.49132975],
    1611                                                                                                  [      -6.22503222, -0.00194442, 0.00118354, 7.22308780, 0.99403081, 0.99687204, 0.49133503],
    1612                                                                                                  [      -6.22519722, -0.00194326, 0.00118287, 7.22325396, 0.99403446, 0.99687387, 0.49134030],
    1613                                                                                                  [      -6.22536166, -0.00194210, 0.00118219, 7.22341956, 0.99403811, 0.99687571, 0.49134554],
    1614                                                                                                  [      -6.22552552, -0.00194094, 0.00118152, 7.22358458, 0.99404176, 0.99687755, 0.49135077],
    1615                                                                                                  [      -6.22568881, -0.00193978, 0.00118084, 7.22374904, 0.99404540, 0.99687938, 0.49135598],
    1616                                                                                                  [      -6.22585154, -0.00193862, 0.00118017, 7.22391292, 0.99404904, 0.99688121, 0.49136117],
    1617                                                                                                  [      -6.22601370, -0.00193746, 0.00117950, 7.22407624, 0.99405267, 0.99688304, 0.49136635],
    1618                                                                                                  [      -6.22617531, -0.00193631, 0.00117882, 7.22423900, 0.99405630, 0.99688487, 0.49137152],
    1619                                                                                                  [      -6.22633635, -0.00193515, 0.00117815, 7.22440119, 0.99405992, 0.99688670, 0.49137666],
    1620                                                                                                  [      -6.22649683, -0.00193400, 0.00117748, 7.22456283, 0.99406354, 0.99688852, 0.49138179],
    1621                                                                                                  [      -6.22665675, -0.00193285, 0.00117681, 7.22472390, 0.99406716, 0.99689034, 0.49138690],
    1622                                                                                                  [      -6.22681612, -0.00193170, 0.00117614, 7.22488442, 0.99407077, 0.99689216, 0.49139199],
    1623                                                                                                  [      -6.22697494, -0.00193055, 0.00117547, 7.22504439, 0.99407438, 0.99689398, 0.49139707],
    1624                                                                                                  [      -6.22713320, -0.00192940, 0.00117480, 7.22520380, 0.99407799, 0.99689580, 0.49140214],
    1625                                                                                                  [      -6.22729092, -0.00192825, 0.00117413, 7.22536266, 0.99408159, 0.99689762, 0.49140718],
    1626                                                                                                  [      -6.22744808, -0.00192711, 0.00117346, 7.22552098, 0.99408519, 0.99689943, 0.49141221],
    1627                                                                                                  [      -6.22760470, -0.00192596, 0.00117280, 7.22567874, 0.99408878, 0.99690124, 0.49141723],
    1628                                                                                                  [      -6.22776078, -0.00192482, 0.00117213, 7.22583596, 0.99409237, 0.99690305, 0.49142222],
    1629                                                                                                  [      -6.22791631, -0.00192368, 0.00117147, 7.22599264, 0.99409595, 0.99690486, 0.49142719],
    1630                                                                                                  [      -6.22807131, -0.00192253, 0.00117080, 7.22614877, 0.99409953, 0.99690667, 0.49143216],
    1631                                                                                                  [      -6.22822576, -0.00192139, 0.00117014, 7.22630437, 0.99410311, 0.99690847, 0.49143711],
    1632                                                                                                  [      -6.22837968, -0.00192026, 0.00116947, 7.22645942, 0.99410668, 0.99691027, 0.49144204],
    1633                                                                                                  [      -6.22853306, -0.00191912, 0.00116881, 7.22661394, 0.99411025, 0.99691207, 0.49144696],
    1634                                                                                                  [      -6.22868591, -0.00191798, 0.00116815, 7.22676793, 0.99411381, 0.99691387, 0.49145186],
    1635                                                                                                  [      -6.22883823, -0.00191685, 0.00116748, 7.22692138, 0.99411737, 0.99691567, 0.49145674],
    1636                                                                                                  [      -6.22899002, -0.00191571, 0.00116682, 7.22707430, 0.99412093, 0.99691747, 0.49146161],
    1637                                                                                                  [      -6.22914128, -0.00191458, 0.00116616, 7.22722670, 0.99412448, 0.99691926, 0.49146647],
    1638                                                                                                  [      -6.22929201, -0.00191345, 0.00116550, 7.22737856, 0.99412803, 0.99692105, 0.49147130],
    1639                                                                                                  [      -6.22944222, -0.00191232, 0.00116484, 7.22752990, 0.99413157, 0.99692284, 0.49147613],
    1640                                                                                                  [      -6.22959190, -0.00191119, 0.00116418, 7.22768071, 0.99413511, 0.99692463, 0.49148093],
    1641                                                                                                  [      -6.22974107, -0.00191006, 0.00116352, 7.22783101, 0.99413865, 0.99692642, 0.49148571],
    1642                                                                                                  [      -6.22988971, -0.00190893, 0.00116286, 7.22798078, 0.99414218, 0.99692820, 0.49149049],
    1643                                                                                                  [      -6.23003784, -0.00190781, 0.00116221, 7.22813003, 0.99414571, 0.99692998, 0.49149525],
    1644                                                                                                  [      -6.23018545, -0.00190669, 0.00116155, 7.22827877, 0.99414924, 0.99693176, 0.49149999],
    1645                                                                                                  [      -6.23033255, -0.00190556, 0.00116089, 7.22842699, 0.99415276, 0.99693354, 0.49150472],
    1646                                                                                                  [      -6.23047913, -0.00190444, 0.00116024, 7.22857469, 0.99415627, 0.99693532, 0.49150944],
    1647                                                                                                  [      -6.23062521, -0.00190332, 0.00115958, 7.22872189, 0.99415978, 0.99693710, 0.49151413],
    1648                                                                                                  [      -6.23077077, -0.00190220, 0.00115893, 7.22886857, 0.99416329, 0.99693887, 0.49151881],
    1649                                                                                                  [      -6.23091583, -0.00190108, 0.00115828, 7.22901475, 0.99416680, 0.99694064, 0.49152348],
    1650                                                                                                  [      -6.23106038, -0.00189996, 0.00115762, 7.22916042, 0.99417030, 0.99694241, 0.49152813],
    1651                                                                                                  [      -6.23120443, -0.00189885, 0.00115697, 7.22930558, 0.99417379, 0.99694418, 0.49153277],
    1652                                                                                                  [      -6.23134798, -0.00189773, 0.00115632, 7.22945024, 0.99417729, 0.99694595, 0.49153739],
    1653                                                                                                  [      -6.23149102, -0.00189662, 0.00115567, 7.22959440, 0.99418078, 0.99694772, 0.49154200],
    1654                                                                                                  [      -6.23163357, -0.00189551, 0.00115501, 7.22973806, 0.99418426, 0.99694948, 0.49154659],
    1655                                                                                                  [      -6.23177562, -0.00189439, 0.00115436, 7.22988122, 0.99418774, 0.99695124, 0.49155116],
    1656                                                                                                  [      -6.23191717, -0.00189328, 0.00115371, 7.23002389, 0.99419122, 0.99695300, 0.49155572],
    1657                                                                                                  [      -6.23205823, -0.00189218, 0.00115307, 7.23016606, 0.99419469, 0.99695476, 0.49156028],
    1658                                                                                                  [      -6.23219880, -0.00189107, 0.00115242, 7.23030773, 0.99419816, 0.99695652, 0.49156481],
    1659                                                                                                  [      -6.23233888, -0.00188996, 0.00115177, 7.23044891, 0.99420163, 0.99695827, 0.49156932],
    1660                                                                                                  [      -6.23247846, -0.00188886, 0.00115112, 7.23058961, 0.99420509, 0.99696002, 0.49157383],
    1661                                                                                                  [      -6.23261756, -0.00188775, 0.00115047, 7.23072981, 0.99420855, 0.99696177, 0.49157832],
    1662                                                                                                  [      -6.23275618, -0.00188665, 0.00114983, 7.23086953, 0.99421200, 0.99696352, 0.49158279],
    1663                                                                                                  [      -6.23289431, -0.00188555, 0.00114918, 7.23100876, 0.99421545, 0.99696527, 0.49158725],
    1664                                                                                                  [      -6.23303196, -0.00188444, 0.00114854, 7.23114751, 0.99421890, 0.99696702, 0.49159170],
    1665                                                                                                  [      -6.23316912, -0.00188334, 0.00114789, 7.23128578, 0.99422234, 0.99696876, 0.49159612],
    1666                                                                                                  [      -6.23330581, -0.00188225, 0.00114725, 7.23142357, 0.99422578, 0.99697050, 0.49160053],
    1667                                                                                                  [      -6.23344202, -0.00188115, 0.00114661, 7.23156087, 0.99422921, 0.99697225, 0.49160494],
    1668                                                                                                  [      -6.23357776, -0.00188005, 0.00114596, 7.23169771, 0.99423264, 0.99697398, 0.49160932],
    1669                                                                                                  [      -6.23371302, -0.00187896, 0.00114532, 7.23183406, 0.99423607, 0.99697572, 0.49161370],
    1670                                                                                                  [      -6.23384781, -0.00187786, 0.00114468, 7.23196994, 0.99423949, 0.99697746, 0.49161806],
    1671                                                                                                  [      -6.23398212, -0.00187677, 0.00114404, 7.23210535, 0.99424291, 0.99697919, 0.49162241],
    1672                                                                                                  [      -6.23411597, -0.00187568, 0.00114340, 7.23224029, 0.99424633, 0.99698092, 0.49162674],
    1673                                                                                                  [      -6.23424935, -0.00187459, 0.00114276, 7.23237476, 0.99424974, 0.99698265, 0.49163105],
    1674                                                                                                  [      -6.23438226, -0.00187350, 0.00114212, 7.23250876, 0.99425315, 0.99698438, 0.49163535],
    1675                                                                                                  [      -6.23451471, -0.00187241, 0.00114148, 7.23264230, 0.99425655, 0.99698611, 0.49163964],
    1676                                                                                                  [      -6.23464669, -0.00187132, 0.00114084, 7.23277537, 0.99425995, 0.99698783, 0.49164392],
    1677                                                                                                  [      -6.23477821, -0.00187024, 0.00114021, 7.23290797, 0.99426335, 0.99698956, 0.49164818],
    1678                                                                                                  [      -6.23490927, -0.00186915, 0.00113957, 7.23304012, 0.99426674, 0.99699128, 0.49165242],
    1679                                                                                                  [      -6.23503988, -0.00186807, 0.00113893, 7.23317181, 0.99427013, 0.99699300, 0.49165666],
    1680                                                                                                  [      -6.23517002, -0.00186698, 0.00113830, 7.23330304, 0.99427352, 0.99699472, 0.49166087],
    1681                                                                                                  [      -6.23529971, -0.00186590, 0.00113766, 7.23343381, 0.99427690, 0.99699644, 0.49166508],
    1682                                                                                                  [      -6.23542895, -0.00186482, 0.00113703, 7.23356413, 0.99428028, 0.99699815, 0.49166927],
    1683                                                                                                  [      -6.23555773, -0.00186374, 0.00113639, 7.23369399, 0.99428365, 0.99699986, 0.49167345],
    1684                                                                                                  [      -6.23568606, -0.00186267, 0.00113576, 7.23382340, 0.99428702, 0.99700157, 0.49167762],
    1685                                                                                                  [      -6.23581395, -0.00186159, 0.00113513, 7.23395236, 0.99429039, 0.99700328, 0.49168176],
    1686                                                                                                  [      -6.23594138, -0.00186051, 0.00113449, 7.23408087, 0.99429375, 0.99700499, 0.49168591],
    1687                                                                                                  [      -6.23606837, -0.00185944, 0.00113386, 7.23420893, 0.99429711, 0.99700670, 0.49169003],
    1688                                                                                                  [      -6.23619491, -0.00185836, 0.00113323, 7.23433655, 0.99430047, 0.99700840, 0.49169415],
    1689                                                                                                  [      -6.23632102, -0.00185729, 0.00113260, 7.23446372, 0.99430382, 0.99701011, 0.49169823],
    1690                                                                                                  [      -6.23644667, -0.00185622, 0.00113197, 7.23459045, 0.99430717, 0.99701181, 0.49170232],
    1691                                                                                                  [      -6.23657189, -0.00185515, 0.00113134, 7.23471674, 0.99431051, 0.99701351, 0.49170640],
    1692                                                                                                  [      -6.23669667, -0.00185408, 0.00113071, 7.23484259, 0.99431385, 0.99701521, 0.49171044],
    1693                                                                                                  [      -6.23682101, -0.00185301, 0.00113009, 7.23496800, 0.99431719, 0.99701690, 0.49171449],
    1694                                                                                                  [      -6.23694492, -0.00185195, 0.00112946, 7.23509297, 0.99432052, 0.99701860, 0.49171853],
    1695                                                                                                  [      -6.23706839, -0.00185088, 0.00112883, 7.23521751, 0.99432385, 0.99702029, 0.49172254],
    1696                                                                                                  [      -6.23719143, -0.00184981, 0.00112820, 7.23534161, 0.99432718, 0.99702198, 0.49172655],
    1697                                                                                                  [      -6.23731403, -0.00184875, 0.00112758, 7.23546528, 0.99433050, 0.99702367, 0.49173054],
    1698                                                                                                  [      -6.23743621, -0.00184769, 0.00112695, 7.23558852, 0.99433382, 0.99702536, 0.49173452],
    1699                                                                                                  [      -6.23755795, -0.00184663, 0.00112633, 7.23571133, 0.99433713, 0.99702705, 0.49173848],
    1700                                                                                                  [      -6.23767927, -0.00184557, 0.00112570, 7.23583371, 0.99434044, 0.99702873, 0.49174243],
    1701                                                                                                  [      -6.23780017, -0.00184451, 0.00112508, 7.23595566, 0.99434375, 0.99703041, 0.49174639],
    1702                                                                                                  [      -6.23792064, -0.00184345, 0.00112446, 7.23607719, 0.99434706, 0.99703209, 0.49175031],
    1703                                                                                                  [      -6.23804068, -0.00184239, 0.00112383, 7.23619829, 0.99435036, 0.99703377, 0.49175422],
    1704                                                                                                  [      -6.23816031, -0.00184134, 0.00112321, 7.23631897, 0.99435365, 0.99703545, 0.49175813],
    1705                                                                                                  [      -6.23827952, -0.00184028, 0.00112259, 7.23643923, 0.99435695, 0.99703713, 0.49176201],
    1706                                                                                                  [      -6.23839830, -0.00183923, 0.00112197, 7.23655907, 0.99436024, 0.99703880, 0.49176589],
    1707                                                                                                  [      -6.23851667, -0.00183817, 0.00112135, 7.23667850, 0.99436352, 0.99704048, 0.49176975],
    1708                                                                                                  [      -6.23863462, -0.00183712, 0.00112073, 7.23679750, 0.99436680, 0.99704215, 0.49177361],
    1709                                                                                                  [      -6.23875216, -0.00183607, 0.00112011, 7.23691609, 0.99437008, 0.99704382, 0.49177744],
    1710                                                                                                  [      -6.23886929, -0.00183502, 0.00111949, 7.23703427, 0.99437336, 0.99704548, 0.49178127],
    1711                                                                                                  [      -6.23898600, -0.00183398, 0.00111887, 7.23715203, 0.99437663, 0.99704715, 0.49178508],
    1712                                                                                                  [      -6.23910231, -0.00183293, 0.00111826, 7.23726938, 0.99437990, 0.99704881, 0.49178889],
    1713                                                                                                  [      -6.23921820, -0.00183188, 0.00111764, 7.23738632, 0.99438316, 0.99705048, 0.49179268],
    1714                                                                                                  [      -6.23933369, -0.00183084, 0.00111702, 7.23750286, 0.99438642, 0.99705214, 0.49179645],
    1715                                                                                                  [      -6.23944877, -0.00182979, 0.00111641, 7.23761898, 0.99438968, 0.99705380, 0.49180022],
    1716                                                                                                  [      -6.23956345, -0.00182875, 0.00111579, 7.23773470, 0.99439293, 0.99705546, 0.49180397],
    1717                                                                                                  [      -6.23967773, -0.00182771, 0.00111518, 7.23785002, 0.99439618, 0.99705711, 0.49180771],
    1718                                                                                                  [      -6.23979160, -0.00182667, 0.00111456, 7.23796493, 0.99439943, 0.99705877, 0.49181144],
    1719                                                                                                  [      -6.23990507, -0.00182563, 0.00111395, 7.23807944, 0.99440267, 0.99706042, 0.49181516],
    1720                                                                                                  [      -6.24001814, -0.00182459, 0.00111334, 7.23819355, 0.99440591, 0.99706207, 0.49181886],
    1721                                                                                                  [      -6.24013082, -0.00182355, 0.00111273, 7.23830726, 0.99440915, 0.99706372, 0.49182255],
    1722                                                                                                  [      -6.24024309, -0.00182251, 0.00111211, 7.23842058, 0.99441238, 0.99706537, 0.49182623],
    1723                                                                                                  [      -6.24035498, -0.00182148, 0.00111150, 7.23853350, 0.99441561, 0.99706702, 0.49182990],
    1724                                                                                                  [      -6.24046647, -0.00182045, 0.00111089, 7.23864602, 0.99441884, 0.99706866, 0.49183355],
    1725                                                                                                  [      -6.24057756, -0.00181941, 0.00111028, 7.23875815, 0.99442206, 0.99707031, 0.49183719],
    1726                                                                                                  [      -6.24068827, -0.00181838, 0.00110967, 7.23886989, 0.99442528, 0.99707195, 0.49184083],
    1727                                                                                                  [      -6.24079858, -0.00181735, 0.00110906, 7.23898123, 0.99442849, 0.99707359, 0.49184446],
    1728                                                                                                  [      -6.24090851, -0.00181632, 0.00110846, 7.23909219, 0.99443170, 0.99707523, 0.49184806],
    1729                                                                                                  [      -6.24101805, -0.00181529, 0.00110785, 7.23920276, 0.99443491, 0.99707686, 0.49185165],
    1730                                                                                                  [      -6.24112720, -0.00181426, 0.00110724, 7.23931294, 0.99443812, 0.99707850, 0.49185524],
    1731                                                                                                  [      -6.24123597, -0.00181324, 0.00110663, 7.23942274, 0.99444132, 0.99708013, 0.49185881],
    1732                                                                                                  [      -6.24134436, -0.00181221, 0.00110603, 7.23953215, 0.99444451, 0.99708176, 0.49186237],
    1733                                                                                                  [      -6.24145237, -0.00181118, 0.00110542, 7.23964118, 0.99444771, 0.99708339, 0.49186593],
    1734                                                                                                  [      -6.24155999, -0.00181016, 0.00110482, 7.23974983, 0.99445090, 0.99708502, 0.49186947],
    1735                                                                                                  [      -6.24166723, -0.00180914, 0.00110421, 7.23985810, 0.99445408, 0.99708665, 0.49187299],
    1736                                                                                                  [      -6.24177410, -0.00180812, 0.00110361, 7.23996598, 0.99445727, 0.99708828, 0.49187651],
    1737                                                                                                  [      -6.24188059, -0.00180710, 0.00110300, 7.24007349, 0.99446045, 0.99708990, 0.49188001],
    1738                                                                                                  [      -6.24198671, -0.00180608, 0.00110240, 7.24018063, 0.99446363, 0.99709152, 0.49188351],
    1739                                                                                                  [      -6.24209245, -0.00180506, 0.00110180, 7.24028739, 0.99446680, 0.99709314, 0.49188699],
    1740                                                                                                  [      -6.24219781, -0.00180404, 0.00110120, 7.24039377, 0.99446997, 0.99709476, 0.49189046],
    1741                                                                                                  [      -6.24230281, -0.00180302, 0.00110060, 7.24049978, 0.99447313, 0.99709638, 0.49189392],
    1742                                                                                                  [      -6.24240743, -0.00180201, 0.00110000, 7.24060543, 0.99447630, 0.99709800, 0.49189737],
    1743                                                                                                  [      -6.24251169, -0.00180100, 0.00109940, 7.24071070, 0.99447946, 0.99709961, 0.49190081],
    1744                                                                                                  [      -6.24261558, -0.00179998, 0.00109880, 7.24081560, 0.99448261, 0.99710122, 0.49190424],
    1745                                                                                                  [      -6.24271910, -0.00179897, 0.00109820, 7.24092013, 0.99448577, 0.99710283, 0.49190765],
    1746                                                                                                  [      -6.24282226, -0.00179796, 0.00109760, 7.24102430, 0.99448891, 0.99710444, 0.49191105],
    1747                                                                                                  [      -6.24292505, -0.00179695, 0.00109700, 7.24112810, 0.99449206, 0.99710605, 0.49191444],
    1748                                                                                                  [      -6.24302748, -0.00179594, 0.00109640, 7.24123154, 0.99449520, 0.99710766, 0.49191782],
    1749                                                                                                  [      -6.24312955, -0.00179493, 0.00109581, 7.24133462, 0.99449834, 0.99710926, 0.49192119],
    1750                                                                                                  [      -6.24323126, -0.00179392, 0.00109521, 7.24143733, 0.99450148, 0.99711087, 0.49192455],
    1751                                                                                                  [      -6.24333261, -0.00179292, 0.00109461, 7.24153969, 0.99450461, 0.99711247, 0.49192789],
    1752                                                                                                  [      -6.24343360, -0.00179191, 0.00109402, 7.24164168, 0.99450774, 0.99711407, 0.49193123],
    1753                                                                                                  [      -6.24353423, -0.00179091, 0.00109342, 7.24174332, 0.99451086, 0.99711567, 0.49193456],
    1754                                                                                                  [      -6.24363451, -0.00178991, 0.00109283, 7.24184460, 0.99451399, 0.99711726, 0.49193787],
    1755                                                                                                  [      -6.24373444, -0.00178891, 0.00109224, 7.24194553, 0.99451711, 0.99711886, 0.49194119],
    1756                                                                                                  [      -6.24383401, -0.00178790, 0.00109164, 7.24204610, 0.99452022, 0.99712045, 0.49194448],
    1757                                                                                                  [      -6.24393323, -0.00178690, 0.00109105, 7.24214632, 0.99452333, 0.99712204, 0.49194776],
    1758                                                                                                  [      -6.24403210, -0.00178591, 0.00109046, 7.24224619, 0.99452644, 0.99712364, 0.49195103],
    1759                                                                                                  [      -6.24413062, -0.00178491, 0.00108987, 7.24234571, 0.99452955, 0.99712522, 0.49195429],
    1760                                                                                                  [      -6.24422879, -0.00178391, 0.00108928, 7.24244488, 0.99453265, 0.99712681, 0.49195755],
    1761                                                                                                  [      -6.24432661, -0.00178292, 0.00108869, 7.24254370, 0.99453575, 0.99712840, 0.49196079],
    1762                                                                                                  [      -6.24442409, -0.00178192, 0.00108810, 7.24264217, 0.99453884, 0.99712998, 0.49196402],
    1763                                                                                                  [      -6.24452123, -0.00178093, 0.00108751, 7.24274030, 0.99454194, 0.99713157, 0.49196723],
    1764                                                                                                  [      -6.24461802, -0.00177993, 0.00108692, 7.24283808, 0.99454502, 0.99713315, 0.49197045],
    1765                                                                                                  [      -6.24471446, -0.00177894, 0.00108633, 7.24293552, 0.99454811, 0.99713473, 0.49197365],
    1766                                                                                                  [      -6.24481057, -0.00177795, 0.00108574, 7.24303262, 0.99455119, 0.99713630, 0.49197684],
    1767                                                                                                  [      -6.24490634, -0.00177696, 0.00108516, 7.24312938, 0.99455427, 0.99713788, 0.49198002],
    1768                                                                                                  [      -6.24500177, -0.00177597, 0.00108457, 7.24322579, 0.99455735, 0.99713946, 0.49198318],
    1769                                                                                                  [      -6.24509686, -0.00177499, 0.00108398, 7.24332187, 0.99456042, 0.99714103, 0.49198634],
    1770                                                                                                  [      -6.24519161, -0.00177400, 0.00108340, 7.24341761, 0.99456349, 0.99714260, 0.49198949],
    1771                                                                                                  [      -6.24528603, -0.00177301, 0.00108281, 7.24351302, 0.99456655, 0.99714417, 0.49199263],
    1772                                                                                                  [      -6.24538012, -0.00177203, 0.00108223, 7.24360809, 0.99456961, 0.99714574, 0.49199575],
    1773                                                                                                  [      -6.24547387, -0.00177105, 0.00108164, 7.24370283, 0.99457267, 0.99714731, 0.49199887],
    1774                                                                                                  [      -6.24556729, -0.00177006, 0.00108106, 7.24379723, 0.99457573, 0.99714887, 0.49200198],
    1775                                                                                                  [      -6.24566038, -0.00176908, 0.00108048, 7.24389130, 0.99457878, 0.99715044, 0.49200507],
    1776                                                                                                  [      -6.24575314, -0.00176810, 0.00107990, 7.24398504, 0.99458183, 0.99715200, 0.49200817],
    1777                                                                                                  [      -6.24584557, -0.00176712, 0.00107931, 7.24407845, 0.99458488, 0.99715356, 0.49201123],
    1778                                                                                                  [      -6.24593768, -0.00176614, 0.00107873, 7.24417153, 0.99458792, 0.99715512, 0.49201431],
    1779                                                                                                  [      -6.24602946, -0.00176517, 0.00107815, 7.24426429, 0.99459096, 0.99715668, 0.49201737],
    1780                                                                                                  [      -6.24612091, -0.00176419, 0.00107757, 7.24435672, 0.99459400, 0.99715824, 0.49202041],
    1781                                                                                                  [      -6.24621204, -0.00176321, 0.00107699, 7.24444883, 0.99459703, 0.99715979, 0.49202344],
    1782                                                                                                  [      -6.24630285, -0.00176224, 0.00107641, 7.24454061, 0.99460006, 0.99716135, 0.49202647],
    1783                                                                                                  [      -6.24639333, -0.00176127, 0.00107584, 7.24463206, 0.99460309, 0.99716290, 0.49202949],
    1784                                                                                                  [      -6.24648350, -0.00176029, 0.00107526, 7.24472320, 0.99460611, 0.99716445, 0.49203250],
    1785                                                                                                  [      -6.24657334, -0.00175932, 0.00107468, 7.24481402, 0.99460913, 0.99716600, 0.49203550],
    1786                                                                                                  [      -6.24666287, -0.00175835, 0.00107410, 7.24490451, 0.99461215, 0.99716755, 0.49203848],
    1787                                                                                                  [      -6.24675208, -0.00175738, 0.00107353, 7.24499469, 0.99461516, 0.99716909, 0.49204146],
    1788                                                                                                  [      -6.24684097, -0.00175641, 0.00107295, 7.24508455, 0.99461817, 0.99717064, 0.49204443],
    1789                                                                                                  [      -6.24692955, -0.00175545, 0.00107238, 7.24517410, 0.99462118, 0.99717218, 0.49204739],
    1790                                                                                                  [      -6.24701781, -0.00175448, 0.00107180, 7.24526333, 0.99462418, 0.99717372, 0.49205033],
    1791                                                                                                  [      -6.24710576, -0.00175351, 0.00107123, 7.24535225, 0.99462718, 0.99717526, 0.49205328],
    1792                                                                                                  [      -6.24719340, -0.00175255, 0.00107065, 7.24544085, 0.99463018, 0.99717680, 0.49205621],
    1793                                                                                                  [      -6.24728073, -0.00175158, 0.00107008, 7.24552914, 0.99463317, 0.99717834, 0.49205913],
    1794                                                                                                  [      -6.24736775, -0.00175062, 0.00106951, 7.24561712, 0.99463617, 0.99717987, 0.49206204],
    1795                                                                                                  [      -6.24745446, -0.00174966, 0.00106893, 7.24570479, 0.99463915, 0.99718141, 0.49206494],
    1796                                                                                                  [      -6.24754086, -0.00174870, 0.00106836, 7.24579216, 0.99464214, 0.99718294, 0.49206783],
    1797                                                                                                  [      -6.24762695, -0.00174774, 0.00106779, 7.24587921, 0.99464512, 0.99718447, 0.49207072],
    1798                                                                                                  [      -6.24771274, -0.00174678, 0.00106722, 7.24596596, 0.99464810, 0.99718600, 0.49207359],
    1799                                                                                                  [      -6.24779823, -0.00174582, 0.00106665, 7.24605241, 0.99465108, 0.99718753, 0.49207645],
    1800                                                                                                  [      -6.24788341, -0.00174487, 0.00106608, 7.24613854, 0.99465405, 0.99718905, 0.49207931],
    1801                                                                                                  [      -6.24796829, -0.00174391, 0.00106551, 7.24622438, 0.99465702, 0.99719058, 0.49208216],
    1802                                                                                                  [      -6.24805287, -0.00174296, 0.00106494, 7.24630991, 0.99465998, 0.99719210, 0.49208499],
    1803                                                                                                  [      -6.24813715, -0.00174200, 0.00106438, 7.24639515, 0.99466295, 0.99719362, 0.49208783],
    1804                                                                                                  [      -6.24822113, -0.00174105, 0.00106381, 7.24648008, 0.99466591, 0.99719514, 0.49209064],
    1805                                                                                                  [      -6.24830481, -0.00174010, 0.00106324, 7.24656471, 0.99466886, 0.99719666, 0.49209345],
    1806                                                                                                  [      -6.24838819, -0.00173915, 0.00106267, 7.24664905, 0.99467182, 0.99719818, 0.49209625],
    1807                                                                                                  [      -6.24847128, -0.00173819, 0.00106211, 7.24673309, 0.99467477, 0.99719970, 0.49209904],
    1808                                                                                                  [      -6.24855407, -0.00173725, 0.00106154, 7.24681683, 0.99467771, 0.99720121, 0.49210182],
    1809                                                                                                  [      -6.24863657, -0.00173630, 0.00106098, 7.24690027, 0.99468066, 0.99720272, 0.49210459],
    1810                                                                                                  [      -6.24871878, -0.00173535, 0.00106041, 7.24698343, 0.99468360, 0.99720424, 0.49210735],
    1811                                                                                                  [      -6.24880069, -0.00173440, 0.00105985, 7.24706629, 0.99468654, 0.99720575, 0.49211010],
    1812                                                                                                  [      -6.24888231, -0.00173346, 0.00105929, 7.24714886, 0.99468947, 0.99720725, 0.49211286],
    1813                                                                                                  [      -6.24896365, -0.00173251, 0.00105872, 7.24723113, 0.99469240, 0.99720876, 0.49211559],
    1814                                                                                                  [      -6.24904469, -0.00173157, 0.00105816, 7.24731312, 0.99469533, 0.99721027, 0.49211832],
    1815                                                                                                  [      -6.24912545, -0.00173063, 0.00105760, 7.24739482, 0.99469826, 0.99721177, 0.49212104],
    1816                                                                                                  [      -6.24920591, -0.00172969, 0.00105704, 7.24747623, 0.99470118, 0.99721327, 0.49212375],
    1817                                                                                                  [      -6.24928610, -0.00172875, 0.00105648, 7.24755735, 0.99470410, 0.99721478, 0.49212645],
    1818                                                                                                  [      -6.24936599, -0.00172781, 0.00105592, 7.24763819, 0.99470702, 0.99721628, 0.49212915],
    1819                                                                                                  [      -6.24944561, -0.00172687, 0.00105536, 7.24771874, 0.99470993, 0.99721777, 0.49213183],
    1820                                                                                                  [      -6.24952494, -0.00172593, 0.00105480, 7.24779901, 0.99471284, 0.99721927, 0.49213451],
    1821                                                                                                  [      -6.24960399, -0.00172499, 0.00105424, 7.24787899, 0.99471575, 0.99722077, 0.49213717],
    1822                                                                                                  [      -6.24968275, -0.00172406, 0.00105368, 7.24795870, 0.99471865, 0.99722226, 0.49213983],
    1823                                                                                                  [      -6.24976124, -0.00172312, 0.00105312, 7.24803812, 0.99472155, 0.99722375, 0.49214248],
    1824                                                                                                  [      -6.24983945, -0.00172219, 0.00105257, 7.24811726, 0.99472445, 0.99722524, 0.49214512],
    1825                                                                                                  [      -6.24991738, -0.00172126, 0.00105201, 7.24819612, 0.99472735, 0.99722673, 0.49214776],
    1826                                                                                                  [      -6.24999503, -0.00172032, 0.00105145, 7.24827471, 0.99473024, 0.99722822, 0.49215038],
    1827                                                                                                  [      -6.25007241, -0.00171939, 0.00105090, 7.24835302, 0.99473313, 0.99722971, 0.49215299],
    1828                                                                                                  [      -6.25014951, -0.00171846, 0.00105034, 7.24843105, 0.99473601, 0.99723119, 0.49215561],
    1829                                                                                                  [      -6.25022634, -0.00171753, 0.00104979, 7.24850880, 0.99473890, 0.99723268, 0.49215820],
    1830                                                                                                  [      -6.25030289, -0.00171660, 0.00104923, 7.24858628, 0.99474178, 0.99723416, 0.49216079],
    1831                                                                                                  [      -6.25037917, -0.00171568, 0.00104868, 7.24866349, 0.99474465, 0.99723564, 0.49216338],
    1832                                                                                                  [      -6.25045518, -0.00171475, 0.00104813, 7.24874043, 0.99474753, 0.99723712, 0.49216595],
    1833                                                                                                  [      -6.25053092, -0.00171382, 0.00104758, 7.24881709, 0.99475040, 0.99723860, 0.49216851],
    1834                                                                                                  [      -6.25060639, -0.00171290, 0.00104702, 7.24889349, 0.99475327, 0.99724008, 0.49217106],
    1835                                                                                                  [      -6.25068159, -0.00171198, 0.00104647, 7.24896961, 0.99475613, 0.99724155, 0.49217362],
    1836                                                                                                  [      -6.25075652, -0.00171105, 0.00104592, 7.24904547, 0.99475899, 0.99724303, 0.49217616],
    1837                                                                                                  [      -6.25083119, -0.00171013, 0.00104537, 7.24912106, 0.99476185, 0.99724450, 0.49217869],
    1838                                                                                                  [      -6.25090559, -0.00170921, 0.00104482, 7.24919638, 0.99476471, 0.99724597, 0.49218121],
    1839                                                                                                  [      -6.25097972, -0.00170829, 0.00104427, 7.24927143, 0.99476756, 0.99724744, 0.49218373],
    1840                                                                                                  [      -6.25105359, -0.00170737, 0.00104372, 7.24934622, 0.99477041, 0.99724891, 0.49218624],
    1841                                                                                                  [      -6.25112720, -0.00170645, 0.00104317, 7.24942075, 0.99477326, 0.99725037, 0.49218873],
    1842                                                                                                  [      -6.25120055, -0.00170554, 0.00104262, 7.24949501, 0.99477610, 0.99725184, 0.49219122],
    1843                                                                                                  [      -6.25127363, -0.00170462, 0.00104208, 7.24956901, 0.99477894, 0.99725330, 0.49219371],
    1844                                                                                                  [      -6.25134646, -0.00170370, 0.00104153, 7.24964275, 0.99478178, 0.99725477, 0.49219618],
    1845                                                                                                  [      -6.25141902, -0.00170279, 0.00104098, 7.24971623, 0.99478462, 0.99725623, 0.49219865],
    1846                                                                                                  [      -6.25149133, -0.00170188, 0.00104044, 7.24978945, 0.99478745, 0.99725769, 0.49220112],
    1847                                                                                                  [      -6.25156338, -0.00170096, 0.00103989, 7.24986241, 0.99479028, 0.99725915, 0.49220356],
    1848                                                                                                  [      -6.25163517, -0.00170005, 0.00103935, 7.24993512, 0.99479311, 0.99726060, 0.49220600],
    1849                                                                                                  [      -6.25170670, -0.00169914, 0.00103880, 7.25000756, 0.99479593, 0.99726206, 0.49220844],
    1850                                                                                                  [      -6.25177798, -0.00169823, 0.00103826, 7.25007975, 0.99479875, 0.99726351, 0.49221087],
    1851                                                                                                  [      -6.25184901, -0.00169732, 0.00103771, 7.25015169, 0.99480157, 0.99726496, 0.49221329],
    1852                                                                                                  [      -6.25191978, -0.00169641, 0.00103717, 7.25022337, 0.99480438, 0.99726642, 0.49221570],
    1853                                                                                                  [      -6.25199031, -0.00169551, 0.00103663, 7.25029480, 0.99480719, 0.99726787, 0.49221811],
    1854                                                                                                  [      -6.25206057, -0.00169460, 0.00103609, 7.25036598, 0.99481000, 0.99726931, 0.49222050],
    1855                                                                                                  [      -6.25213059, -0.00169369, 0.00103555, 7.25043690, 0.99481281, 0.99727076, 0.49222289],
    1856                                                                                                  [      -6.25220036, -0.00169279, 0.00103500, 7.25050757, 0.99481561, 0.99727221, 0.49222527],
    1857                                                                                                  [      -6.25226988, -0.00169189, 0.00103446, 7.25057800, 0.99481841, 0.99727365, 0.49222765],
    1858                                                                                                  [      -6.25233916, -0.00169098, 0.00103392, 7.25064817, 0.99482121, 0.99727509, 0.49223001],
    1859                                                                                                  [      -6.25240818, -0.00169008, 0.00103338, 7.25071810, 0.99482400, 0.99727653, 0.49223237],
    1860                                                                                                  [      -6.25247696, -0.00168918, 0.00103285, 7.25078778, 0.99482680, 0.99727797, 0.49223472],
    1861                                                                                                  [      -6.25254550, -0.00168828, 0.00103231, 7.25085722, 0.99482958, 0.99727941, 0.49223706],
    1862                                                                                                  [      -6.25261379, -0.00168738, 0.00103177, 7.25092640, 0.99483237, 0.99728085, 0.49223939],
    1863                                                                                                  [      -6.25268183, -0.00168648, 0.00103123, 7.25099535, 0.99483515, 0.99728229, 0.49224172],
    1864                                                                                                  [      -6.25274963, -0.00168559, 0.00103069, 7.25106405, 0.99483793, 0.99728372, 0.49224404],
    1865                                                                                                  [      -6.25281720, -0.00168469, 0.00103016, 7.25113251, 0.99484071, 0.99728515, 0.49224636],
    1866                                                                                                  [      -6.25288452, -0.00168379, 0.00102962, 7.25120072, 0.99484348, 0.99728659, 0.49224866],
    1867                                                                                                  [      -6.25295160, -0.00168290, 0.00102909, 7.25126870, 0.99484626, 0.99728802, 0.49225097],
    1868                                                                                                  [      -6.25301844, -0.00168200, 0.00102855, 7.25133643, 0.99484902, 0.99728945, 0.49225325],
    1869                                                                                                  [      -6.25308504, -0.00168111, 0.00102802, 7.25140393, 0.99485179, 0.99729087, 0.49225553],
    1870                                                                                                  [      -6.25315140, -0.00168022, 0.00102748, 7.25147118, 0.99485455, 0.99729230, 0.49225780],
    1871                                                                                                  [      -6.25321753, -0.00167933, 0.00102695, 7.25153820, 0.99485731, 0.99729372, 0.49226008],
    1872                                                                                                  [      -6.25328342, -0.00167844, 0.00102641, 7.25160498, 0.99486007, 0.99729515, 0.49226233],
    1873                                                                                                  [      -6.25334907, -0.00167755, 0.00102588, 7.25167153, 0.99486282, 0.99729657, 0.49226459],
    1874                                                                                                  [      -6.25341450, -0.00167666, 0.00102535, 7.25173784, 0.99486558, 0.99729799, 0.49226684],
    1875                                                                                                  [      -6.25347968, -0.00167577, 0.00102482, 7.25180391, 0.99486832, 0.99729941, 0.49226907],
    1876                                                                                                  [      -6.25354464, -0.00167489, 0.00102429, 7.25186975, 0.99487107, 0.99730083, 0.49227131],
    1877                                                                                                  [      -6.25360936, -0.00167400, 0.00102376, 7.25193536, 0.99487381, 0.99730224, 0.49227354],
    1878                                                                                                  [      -6.25367385, -0.00167312, 0.00102323, 7.25200074, 0.99487655, 0.99730366, 0.49227575],
    1879                                                                                                  [      -6.25373811, -0.00167223, 0.00102270, 7.25206588, 0.99487929, 0.99730507, 0.49227796],
    1880                                                                                                  [      -6.25380215, -0.00167135, 0.00102217, 7.25213080, 0.99488202, 0.99730649, 0.49228016],
    1881                                                                                                  [      -6.25386595, -0.00167047, 0.00102164, 7.25219548, 0.99488476, 0.99730790, 0.49228236],
    1882                                                                                                  [      -6.25392952, -0.00166958, 0.00102111, 7.25225994, 0.99488749, 0.99730931, 0.49228455],
    1883                                                                                                  [      -6.25399287, -0.00166870, 0.00102058, 7.25232417, 0.99489021, 0.99731072, 0.49228673],
    1884                                                                                                  [      -6.25405599, -0.00166782, 0.00102005, 7.25238817, 0.99489294, 0.99731212, 0.49228892],
    1885                                                                                                  [      -6.25411889, -0.00166694, 0.00101953, 7.25245194, 0.99489566, 0.99731353, 0.49229108],
    1886                                                                                                  [      -6.25418156, -0.00166607, 0.00101900, 7.25251549, 0.99489837, 0.99731493, 0.49229324],
    1887                                                                                                  [      -6.25424401, -0.00166519, 0.00101847, 7.25257882, 0.99490109, 0.99731634, 0.49229539],
    1888                                                                                                  [      -6.25430623, -0.00166431, 0.00101795, 7.25264192, 0.99490380, 0.99731774, 0.49229754],
    1889                                                                                                  [      -6.25436823, -0.00166344, 0.00101742, 7.25270479, 0.99490651, 0.99731914, 0.49229968],
    1890                                                                                                  [      -6.25443001, -0.00166256, 0.00101690, 7.25276745, 0.99490922, 0.99732054, 0.49230182],
    1891                                                                                                  [      -6.25449157, -0.00166169, 0.00101638, 7.25282988, 0.99491192, 0.99732194, 0.49230394],
    1892                                                                                                  [      -6.25455291, -0.00166082, 0.00101585, 7.25289209, 0.99491462, 0.99732333, 0.49230606],
    1893                                                                                                  [      -6.25461403, -0.00165994, 0.00101533, 7.25295408, 0.99491732, 0.99732473, 0.49230817],
    1894                                                                                                  [      -6.25467493, -0.00165907, 0.00101481, 7.25301586, 0.99492002, 0.99732612, 0.49231027],
    1895                                                                                                  [      -6.25473561, -0.00165820, 0.00101428, 7.25307741, 0.99492271, 0.99732751, 0.49231238],
    1896                                                                                                  [      -6.25479608, -0.00165733, 0.00101376, 7.25313874, 0.99492540, 0.99732890, 0.49231446],
    1897                                                                                                  [      -6.25485633, -0.00165647, 0.00101324, 7.25319986, 0.99492809, 0.99733029, 0.49231656],
    1898                                                                                                  [      -6.25491636, -0.00165560, 0.00101272, 7.25326076, 0.99493077, 0.99733168, 0.49231863],
    1899                                                                                                  [      -6.25497618, -0.00165473, 0.00101220, 7.25332145, 0.99493345, 0.99733307, 0.49232070],
    1900                                                                                                  [      -6.25503579, -0.00165386, 0.00101168, 7.25338192, 0.99493613, 0.99733445, 0.49232277],
    1901                                                                                                  [      -6.25509518, -0.00165300, 0.00101116, 7.25344218, 0.99493881, 0.99733584, 0.49232483],
    1902                                                                                                  [      -6.25515436, -0.00165214, 0.00101064, 7.25350222, 0.99494148, 0.99733722, 0.49232688],
    1903                                                                                                  [      -6.25521333, -0.00165127, 0.00101012, 7.25356206, 0.99494415, 0.99733860, 0.49232894],
    1904                                                                                                  [      -6.25527209, -0.00165041, 0.00100961, 7.25362168, 0.99494682, 0.99733998, 0.49233097],
    1905                                                                                                  [      -6.25533063, -0.00164955, 0.00100909, 7.25368108, 0.99494949, 0.99734136, 0.49233301],
    1906                                                                                                  [      -6.25538897, -0.00164869, 0.00100857, 7.25374028, 0.99495215, 0.99734274, 0.49233504],
    1907                                                                                                  [      -6.25544710, -0.00164783, 0.00100806, 7.25379927, 0.99495481, 0.99734412, 0.49233704],
    1908                                                                                                  [      -6.25550502, -0.00164697, 0.00100754, 7.25385805, 0.99495747, 0.99734549, 0.49233906],
    1909                                                                                                  [      -6.25556273, -0.00164611, 0.00100702, 7.25391662, 0.99496012, 0.99734687, 0.49234107],
    1910                                                                                                  [      -6.25562024, -0.00164525, 0.00100651, 7.25397499, 0.99496278, 0.99734824, 0.49234308],
    1911                                                                                                  [      -6.25567754, -0.00164440, 0.00100599, 7.25403314, 0.99496543, 0.99734961, 0.49234506],
    1912                                                                                                  [      -6.25573464, -0.00164354, 0.00100548, 7.25409110, 0.99496807, 0.99735098, 0.49234706],
    1913                                                                                                  [      -6.25579153, -0.00164268, 0.00100497, 7.25414884, 0.99497072, 0.99735235, 0.49234904],
    1914                                                                                                  [      -6.25584821, -0.00164183, 0.00100445, 7.25420638, 0.99497336, 0.99735372, 0.49235101],
    1915                                                                                                  [      -6.25590470, -0.00164098, 0.00100394, 7.25426372, 0.99497600, 0.99735508, 0.49235297],
    1916                                                                                                  [      -6.25596098, -0.00164012, 0.00100343, 7.25432086, 0.99497863, 0.99735645, 0.49235495],
    1917                                                                                                  [      -6.25601706, -0.00163927, 0.00100292, 7.25437779, 0.99498127, 0.99735781, 0.49235690],
    1918                                                                                                  [      -6.25607294, -0.00163842, 0.00100241, 7.25443452, 0.99498390, 0.99735917, 0.49235884],
    1919                                                                                                  [      -6.25612862, -0.00163757, 0.00100189, 7.25449105, 0.99498652, 0.99736053, 0.49236079],
    1920                                                                                                  [      -6.25618410, -0.00163672, 0.00100138, 7.25454738, 0.99498915, 0.99736189, 0.49236272],
    1921                                                                                                  [      -6.25623938, -0.00163587, 0.00100087, 7.25460351, 0.99499177, 0.99736325, 0.49236466],
    1922                                                                                                  [      -6.25629447, -0.00163503, 0.00100036, 7.25465944, 0.99499439, 0.99736461, 0.49236658],
    1923                                                                                                  [      -6.25634936, -0.00163418, 0.00099986, 7.25471518, 0.99499701, 0.99736596, 0.49236850],
    1924                                                                                                  [      -6.25640405, -0.00163333, 0.00099935, 7.25477071, 0.99499963, 0.99736732, 0.49237042],
    1925                                                                                                  [      -6.25645854, -0.00163249, 0.00099884, 7.25482605, 0.99500224, 0.99736867, 0.49237232],
    1926                                                                                                  [      -6.25651284, -0.00163164, 0.00099833, 7.25488119, 0.99500485, 0.99737002, 0.49237422],
    1927                                                                                                  [      -6.25656694, -0.00163080, 0.00099782, 7.25493614, 0.99500745, 0.99737137, 0.49237612],
    1928                                                                                                  [      -6.25662085, -0.00162996, 0.00099732, 7.25499089, 0.99501006, 0.99737272, 0.49237800],
    1929                                                                                                  [      -6.25667457, -0.00162912, 0.00099681, 7.25504545, 0.99501266, 0.99737407, 0.49237989],
    1930                                                                                                  [      -6.25672809, -0.00162828, 0.00099631, 7.25509982, 0.99501526, 0.99737542, 0.49238176],
    1931                                                                                                  [      -6.25678143, -0.00162744, 0.00099580, 7.25515399, 0.99501786, 0.99737676, 0.49238364],
    1932                                                                                                  [      -6.25683457, -0.00162660, 0.00099530, 7.25520797, 0.99502045, 0.99737811, 0.49238550],
    1933                                                                                                  [      -6.25688752, -0.00162576, 0.00099479, 7.25526176, 0.99502304, 0.99737945, 0.49238736],
    1934                                                                                                  [      -6.25694028, -0.00162492, 0.00099429, 7.25531536, 0.99502563, 0.99738079, 0.49238921],
    1935                                                                                                  [      -6.25699285, -0.00162408, 0.00099378, 7.25536877, 0.99502822, 0.99738213, 0.49239105],
    1936                                                                                                  [      -6.25704524, -0.00162325, 0.00099328, 7.25542199, 0.99503080, 0.99738347, 0.49239289],
    1937                                                                                                  [      -6.25709743, -0.00162241, 0.00099278, 7.25547502, 0.99503338, 0.99738481, 0.49239473],
    1938                                                                                                  [      -6.25714944, -0.00162158, 0.00099228, 7.25552786, 0.99503596, 0.99738615, 0.49239656],
    1939                                                                                                  [      -6.25720127, -0.00162074, 0.00099177, 7.25558052, 0.99503853, 0.99738748, 0.49239838],
    1940                                                                                                  [      -6.25725290, -0.00161991, 0.00099127, 7.25563299, 0.99504111, 0.99738881, 0.49240020],
    1941                                                                                                  [      -6.25730435, -0.00161908, 0.00099077, 7.25568527, 0.99504368, 0.99739015, 0.49240201],
    1942                                                                                                  [      -6.25735562, -0.00161825, 0.00099027, 7.25573737, 0.99504625, 0.99739148, 0.49240381],
    1943                                                                                                  [      -6.25740670, -0.00161742, 0.00098977, 7.25578929, 0.99504881, 0.99739281, 0.49240561],
    1944                                                                                                  [      -6.25745761, -0.00161659, 0.00098927, 7.25584102, 0.99505137, 0.99739414, 0.49240741],
    1945                                                                                                  [      -6.25750832, -0.00161576, 0.00098877, 7.25589256, 0.99505393, 0.99739547, 0.49240919],
    1946                                                                                                  [      -6.25755886, -0.00161493, 0.00098828, 7.25594393, 0.99505649, 0.99739679, 0.49241098],
    1947                                                                                                  [      -6.25760921, -0.00161411, 0.00098778, 7.25599511, 0.99505905, 0.99739812, 0.49241276],
    1948                                                                                                  [      -6.25765939, -0.00161328, 0.00098728, 7.25604611, 0.99506160, 0.99739944, 0.49241453],
    1949                                                                                                  [      -6.25770938, -0.00161245, 0.00098678, 7.25609693, 0.99506415, 0.99740076, 0.49241630],
    1950                                                                                                  [      -6.25775920, -0.00161163, 0.00098629, 7.25614757, 0.99506670, 0.99740209, 0.49241806],
    1951                                                                                                  [      -6.25780883, -0.00161080, 0.00098579, 7.25619803, 0.99506924, 0.99740341, 0.49241981],
    1952                                                                                                  [      -6.25785829, -0.00160998, 0.00098529, 7.25624831, 0.99507179, 0.99740472, 0.49242156],
    1953                                                                                                  [      -6.25790757, -0.00160916, 0.00098480, 7.25629841, 0.99507433, 0.99740604, 0.49242330],
    1954                                                                                                  [      -6.25795667, -0.00160834, 0.00098430, 7.25634834, 0.99507686, 0.99740736, 0.49242504],
    1955                                                                                                  [      -6.25800560, -0.00160752, 0.00098381, 7.25639808, 0.99507940, 0.99740867, 0.49242678],
    1956                                                                                                  [      -6.25805435, -0.00160670, 0.00098332, 7.25644766, 0.99508193, 0.99740999, 0.49242849],
    1957                                                                                                  [      -6.25810293, -0.00160588, 0.00098282, 7.25649705, 0.99508446, 0.99741130, 0.49243022],
    1958                                                                                                  [      -6.25815133, -0.00160506, 0.00098233, 7.25654627, 0.99508699, 0.99741261, 0.49243193],
    1959                                                                                                  [      -6.25819956, -0.00160424, 0.00098184, 7.25659532, 0.99508951, 0.99741392, 0.49243365],
    1960                                                                                                  [      -6.25824762, -0.00160342, 0.00098134, 7.25664419, 0.99509203, 0.99741523, 0.49243535],
    1961                                                                                                  [      -6.25829550, -0.00160261, 0.00098085, 7.25669289, 0.99509455, 0.99741654, 0.49243704],
    1962                                                                                                  [      -6.25834321, -0.00160179, 0.00098036, 7.25674142, 0.99509707, 0.99741784, 0.49243875],
    1963                                                                                                  [      -6.25839075, -0.00160098, 0.00097987, 7.25678978, 0.99509959, 0.99741915, 0.49244043],
    1964                                                                                                  [      -6.25843812, -0.00160017, 0.00097938, 7.25683796, 0.99510210, 0.99742045, 0.49244213],
    1965                                                                                                  [      -6.25848532, -0.00159935, 0.00097889, 7.25688597, 0.99510461, 0.99742176, 0.49244379],
    1966                                                                                                  [      -6.25853235, -0.00159854, 0.00097840, 7.25693381, 0.99510712, 0.99742306, 0.49244547],
    1967                                                                                                  [      -6.25857922, -0.00159773, 0.00097791, 7.25698149, 0.99510962, 0.99742436, 0.49244714],
    1968                                                                                                  [      -6.25862591, -0.00159692, 0.00097742, 7.25702899, 0.99511212, 0.99742566, 0.49244880],
    1969                                                                                                  [      -6.25867244, -0.00159611, 0.00097693, 7.25707633, 0.99511462, 0.99742696, 0.49245046],
    1970                                                                                                  [      -6.25871879, -0.00159530, 0.00097645, 7.25712350, 0.99511712, 0.99742825, 0.49245210],
    1971                                                                                                  [      -6.25876499, -0.00159449, 0.00097596, 7.25717050, 0.99511962, 0.99742955, 0.49245376],
    1972                                                                                                  [      -6.25881101, -0.00159368, 0.00097547, 7.25721733, 0.99512211, 0.99743084, 0.49245539],
    1973                                                                                                  [      -6.25885688, -0.00159288, 0.00097499, 7.25726400, 0.99512460, 0.99743214, 0.49245702],
    1974                                                                                                  [      -6.25890257, -0.00159207, 0.00097450, 7.25731050, 0.99512709, 0.99743343, 0.49245866],
    1975                                                                                                  [      -6.25894810, -0.00159127, 0.00097402, 7.25735684, 0.99512957, 0.99743472, 0.49246028],
    1976                                                                                                  [      -6.25899347, -0.00159046, 0.00097353, 7.25740301, 0.99513205, 0.99743601, 0.49246190],
    1977                                                                                                  [      -6.25903868, -0.00158966, 0.00097305, 7.25744902, 0.99513453, 0.99743730, 0.49246352],
    1978                                                                                                  [      -6.25908372, -0.00158886, 0.00097256, 7.25749487, 0.99513701, 0.99743858, 0.49246513],
    1979                                                                                                  [      -6.25912861, -0.00158805, 0.00097208, 7.25754055, 0.99513949, 0.99743987, 0.49246673],
    1980                                                                                                  [      -6.25917333, -0.00158725, 0.00097159, 7.25758607, 0.99514196, 0.99744115, 0.49246833],
    1981                                                                                                  [      -6.25921789, -0.00158645, 0.00097111, 7.25763144, 0.99514443, 0.99744244, 0.49246993],
    1982                                                                                                  [      -6.25926229, -0.00158565, 0.00097063, 7.25767664, 0.99514690, 0.99744372, 0.49247152],
    1983                                                                                                  [      -6.25930653, -0.00158485, 0.00097015, 7.25772168, 0.99514936, 0.99744500, 0.49247309],
    1984                                                                                                  [      -6.25935061, -0.00158406, 0.00096966, 7.25776656, 0.99515183, 0.99744628, 0.49247468],
    1985                                                                                                  [      -6.25939453, -0.00158326, 0.00096918, 7.25781128, 0.99515429, 0.99744756, 0.49247625],
    1986                                                                                                  [      -6.25943830, -0.00158246, 0.00096870, 7.25785584, 0.99515675, 0.99744884, 0.49247782],
    1987                                                                                                  [      -6.25948191, -0.00158167, 0.00096822, 7.25790024, 0.99515920, 0.99745011, 0.49247939],
    1988                                                                                                  [      -6.25952536, -0.00158087, 0.00096774, 7.25794449, 0.99516165, 0.99745139, 0.49248095],
    1989                                                                                                  [      -6.25956866, -0.00158008, 0.00096726, 7.25798858, 0.99516411, 0.99745266, 0.49248251],
    1990                                                                                                  [      -6.25961180, -0.00157928, 0.00096678, 7.25803252, 0.99516655, 0.99745393, 0.49248405],
    1991                                                                                                  [      -6.25965478, -0.00157849, 0.00096631, 7.25807629, 0.99516900, 0.99745521, 0.49248560],
    1992                                                                                                  [      -6.25969761, -0.00157770, 0.00096583, 7.25811992, 0.99517144, 0.99745648, 0.49248715],
    1993                                                                                                  [      -6.25974029, -0.00157691, 0.00096535, 7.25816339, 0.99517389, 0.99745774, 0.49248867],
    1994                                                                                                  [      -6.25978282, -0.00157612, 0.00096487, 7.25820670, 0.99517633, 0.99745901, 0.49249021],
    1995                                                                                                  [      -6.25982519, -0.00157533, 0.00096440, 7.25824986, 0.99517876, 0.99746028, 0.49249174],
    1996                                                                                                  [      -6.25986741, -0.00157454, 0.00096392, 7.25829287, 0.99518120, 0.99746154, 0.49249325],
    1997                                                                                                  [      -6.25990947, -0.00157375, 0.00096344, 7.25833572, 0.99518363, 0.99746281, 0.49249477],
    1998                                                                                                  [      -6.25995139, -0.00157296, 0.00096297, 7.25837843, 0.99518606, 0.99746407, 0.49249628],
    1999                                                                                                  [      -6.25999315, -0.00157217, 0.00096249, 7.25842098, 0.99518848, 0.99746533, 0.49249779],
    2000                                                                                                  [      -6.26003477, -0.00157139, 0.00096202, 7.25846338, 0.99519091, 0.99746659, 0.49249929],
    2001                                                                                                  [      -6.26007624, -0.00157060, 0.00096154, 7.25850563, 0.99519333, 0.99746785, 0.49250079],
    2002                                                                                                  [      -6.26011755, -0.00156982, 0.00096107, 7.25854773, 0.99519575, 0.99746911, 0.49250228],
    2003                                                                                                  [      -6.26015872, -0.00156903, 0.00096060, 7.25858969, 0.99519817, 0.99747037, 0.49250377],
    2004                                                                                                  [      -6.26019974, -0.00156825, 0.00096012, 7.25863149, 0.99520058, 0.99747163, 0.49250524],
    2005                                                                                                  [      -6.26024061, -0.00156747, 0.00095965, 7.25867315, 0.99520300, 0.99747288, 0.49250672],
    2006                                                                                                  [      -6.26028134, -0.00156669, 0.00095918, 7.25871465, 0.99520541, 0.99747414, 0.49250819],
    2007                                                                                                  [      -6.26032192, -0.00156591, 0.00095871, 7.25875601, 0.99520782, 0.99747539, 0.49250967],
    2008                                                                                                  [      -6.26036235, -0.00156513, 0.00095823, 7.25879723, 0.99521022, 0.99747664, 0.49251114],
    2009                                                                                                  [      -6.26040264, -0.00156435, 0.00095776, 7.25883830, 0.99521263, 0.99747789, 0.49251259],
    2010                                                                                                  [      -6.26044279, -0.00156357, 0.00095729, 7.25887922, 0.99521503, 0.99747914, 0.49251404],
    2011                                                                                                  [      -6.26048279, -0.00156279, 0.00095682, 7.25892000, 0.99521743, 0.99748039, 0.49251549],
    2012                                                                                                  [      -6.26052264, -0.00156201, 0.00095635, 7.25896063, 0.99521982, 0.99748163, 0.49251694],
    2013                                                                                                  [      -6.26056235, -0.00156124, 0.00095588, 7.25900112, 0.99522222, 0.99748288, 0.49251838],
    2014                                                                                                  [      -6.26060192, -0.00156046, 0.00095542, 7.25904146, 0.99522461, 0.99748412, 0.49251982],
    2015                                                                                                  [      -6.26064135, -0.00155969, 0.00095495, 7.25908167, 0.99522700, 0.99748537, 0.49252125],
    2016                                                                                                  [      -6.26068064, -0.00155891, 0.00095448, 7.25912173, 0.99522939, 0.99748661, 0.49252269],
    2017                                                                                                  [      -6.26071978, -0.00155814, 0.00095401, 7.25916164, 0.99523177, 0.99748785, 0.49252410],
    2018                                                                                                  [      -6.26075879, -0.00155737, 0.00095354, 7.25920142, 0.99523415, 0.99748909, 0.49252552],
    2019                                                                                                  [      -6.26079765, -0.00155659, 0.00095308, 7.25924106, 0.99523653, 0.99749033, 0.49252694],
    2020                                                                                                  [      -6.26083637, -0.00155582, 0.00095261, 7.25928055, 0.99523891, 0.99749157, 0.49252834],
    2021                                                                                                  [      -6.26087496, -0.00155505, 0.00095215, 7.25931991, 0.99524129, 0.99749280, 0.49252975],
    2022                                                                                                  [      -6.26091341, -0.00155428, 0.00095168, 7.25935912, 0.99524366, 0.99749404, 0.49253116],
    2023                                                                                                  [      -6.26095171, -0.00155351, 0.00095122, 7.25939820, 0.99524603, 0.99749527, 0.49253255],
    2024                                                                                                  [      -6.26098988, -0.00155274, 0.00095075, 7.25943714, 0.99524840, 0.99749651, 0.49253394],
    2025                                                                                                  [      -6.26102792, -0.00155198, 0.00095029, 7.25947594, 0.99525077, 0.99749774, 0.49253533],
    2026                                                                                                  [      -6.26106581, -0.00155121, 0.00094982, 7.25951460, 0.99525313, 0.99749897, 0.49253672],
    2027                                                                                                  [      -6.26110357, -0.00155044, 0.00094936, 7.25955313, 0.99525549, 0.99750020, 0.49253810],
    2028                                                                                                  [      -6.26114120, -0.00154968, 0.00094890, 7.25959152, 0.99525785, 0.99750143, 0.49253947],
    2029                                                                                                  [      -6.26117869, -0.00154891, 0.00094843, 7.25962977, 0.99526021, 0.99750265, 0.49254085],
    2030                                                                                                  [      -6.26121604, -0.00154815, 0.00094797, 7.25966789, 0.99526256, 0.99750388, 0.49254220],
    2031                                                                                                  [      -6.26125326, -0.00154739, 0.00094751, 7.25970587, 0.99526492, 0.99750510, 0.49254357],
    2032                                                                                                  [      -6.26129035, -0.00154662, 0.00094705, 7.25974372, 0.99526727, 0.99750633, 0.49254493],
    2033                                                                                                  [      -6.26132730, -0.00154586, 0.00094659, 7.25978144, 0.99526962, 0.99750755, 0.49254628],
    2034                                                                                                  [      -6.26136412, -0.00154510, 0.00094613, 7.25981902, 0.99527196, 0.99750877, 0.49254763],
    2035                                                                                                  [      -6.26140081, -0.00154434, 0.00094567, 7.25985647, 0.99527431, 0.99750999, 0.49254897],
    2036                                                                                                  [      -6.26143736, -0.00154358, 0.00094521, 7.25989378, 0.99527665, 0.99751121, 0.49255032],
    2037                                                                                                  [      -6.26147379, -0.00154282, 0.00094475, 7.25993097, 0.99527899, 0.99751243, 0.49255166],
    2038                                                                                                  [      -6.26151008, -0.00154206, 0.00094429, 7.25996802, 0.99528132, 0.99751365, 0.49255299],
    2039                                                                                                  [      -6.26154624, -0.00154131, 0.00094383, 7.26000494, 0.99528366, 0.99751486, 0.49255432],
    2040                                                                                                  [      -6.26158228, -0.00154055, 0.00094337, 7.26004173, 0.99528599, 0.99751608, 0.49255564],
    2041                                                                                                  [      -6.26161818, -0.00153979, 0.00094292, 7.26007839, 0.99528832, 0.99751729, 0.49255696],
    2042                                                                                                  [      -6.26165395, -0.00153904, 0.00094246, 7.26011492, 0.99529065, 0.99751851, 0.49255828],
    2043                                                                                                  [      -6.26168960, -0.00153828, 0.00094200, 7.26015132, 0.99529297, 0.99751972, 0.49255958],
    2044                                                                                                  [      -6.26172512, -0.00153753, 0.00094155, 7.26018759, 0.99529530, 0.99752093, 0.49256090],
    2045                                                                                                  [      -6.26176051, -0.00153677, 0.00094109, 7.26022373, 0.99529762, 0.99752214, 0.49256219],
    2046                                                                                                  [      -6.26179577, -0.00153602, 0.00094063, 7.26025975, 0.99529994, 0.99752334, 0.49256349],
    2047                                                                                                  [      -6.26183090, -0.00153527, 0.00094018, 7.26029563, 0.99530226, 0.99752455, 0.49256478],
    2048                                                                                                  [      -6.26186591, -0.00153452, 0.00093972, 7.26033139, 0.99530457, 0.99752576, 0.49256609],
    2049                                                                                                  [      -6.26190080, -0.00153377, 0.00093927, 7.26036703, 0.99530688, 0.99752696, 0.49256738],
    2050                                                                                                  [      -6.26193555, -0.00153302, 0.00093882, 7.26040254, 0.99530919, 0.99752817, 0.49256866],
    2051                                                                                                  [      -6.26197019, -0.00153227, 0.00093836, 7.26043792, 0.99531150, 0.99752937, 0.49256993],
    2052                                                                                                  [      -6.26200470, -0.00153152, 0.00093791, 7.26047317, 0.99531381, 0.99753057, 0.49257121],
    2053                                                                                                  [      -6.26203908, -0.00153077, 0.00093746, 7.26050831, 0.99531611, 0.99753177, 0.49257249],
    2054                                                                                                  [      -6.26207334, -0.00153003, 0.00093700, 7.26054331, 0.99531841, 0.99753297, 0.49257375],
    2055                                                                                                  [      -6.26210748, -0.00152928, 0.00093655, 7.26057820, 0.99532071, 0.99753417, 0.49257501],
    2056                                                                                                  [      -6.26214149, -0.00152853, 0.00093610, 7.26061296, 0.99532301, 0.99753537, 0.49257629],
    2057                                                                                                  [      -6.26217539, -0.00152779, 0.00093565, 7.26064760, 0.99532530, 0.99753656, 0.49257754],
    2058                                                                                                  [      -6.26220916, -0.00152705, 0.00093520, 7.26068211, 0.99532759, 0.99753776, 0.49257879],
    2059                                                                                                  [      -6.26224280, -0.00152630, 0.00093475, 7.26071650, 0.99532988, 0.99753895, 0.49258003],
    2060                                                                                                  [      -6.26227633, -0.00152556, 0.00093430, 7.26075077, 0.99533217, 0.99754014, 0.49258128],
    2061                                                                                                  [      -6.26230974, -0.00152482, 0.00093385, 7.26078492, 0.99533446, 0.99754133, 0.49258252],
    2062                                                                                                  [      -6.26234303, -0.00152408, 0.00093340, 7.26081895, 0.99533674, 0.99754253, 0.49258376],
    2063                                                                                                  [      -6.26237620, -0.00152333, 0.00093295, 7.26085286, 0.99533902, 0.99754372, 0.49258498],
    2064                                                                                                  [      -6.26240924, -0.00152259, 0.00093250, 7.26088665, 0.99534130, 0.99754490, 0.49258622],
    2065                                                                                                  [      -6.26244217, -0.00152186, 0.00093205, 7.26092032, 0.99534358, 0.99754609, 0.49258745],
    2066                                                                                                  [      -6.26247499, -0.00152112, 0.00093161, 7.26095387, 0.99534586, 0.99754728, 0.49258868],
    2067                                                                                                  [      -6.26250768, -0.00152038, 0.00093116, 7.26098730, 0.99534813, 0.99754846, 0.49258989],
    2068                                                                                                  [      -6.26254025, -0.00151964, 0.00093071, 7.26102061, 0.99535040, 0.99754965, 0.49259110],
    2069                                                                                                  [      -6.26257271, -0.00151890, 0.00093027, 7.26105381, 0.99535267, 0.99755083, 0.49259230],
    2070                                                                                                  [      -6.26260505, -0.00151817, 0.00092982, 7.26108689, 0.99535493, 0.99755201, 0.49259351],
    2071                                                                                                  [      -6.26263728, -0.00151743, 0.00092937, 7.26111985, 0.99535720, 0.99755319, 0.49259471],
    2072                                                                                                  [      -6.26266939, -0.00151670, 0.00092893, 7.26115269, 0.99535946, 0.99755437, 0.49259592],
    2073                                                                                                  [      -6.26270138, -0.00151596, 0.00092848, 7.26118542, 0.99536172, 0.99755555, 0.49259711],
    2074                                                                                                  [      -6.26273326, -0.00151523, 0.00092804, 7.26121803, 0.99536398, 0.99755673, 0.49259829],
    2075                                                                                                  [      -6.26276503, -0.00151450, 0.00092760, 7.26125053, 0.99536623, 0.99755790, 0.49259950],
    2076                                                                                                  [      -6.26279668, -0.00151377, 0.00092715, 7.26128291, 0.99536849, 0.99755908, 0.49260067],
    2077                                                                                                  [      -6.26282822, -0.00151304, 0.00092671, 7.26131518, 0.99537074, 0.99756025, 0.49260186],
    2078                                                                                                  [      -6.26285964, -0.00151231, 0.00092627, 7.26134733, 0.99537299, 0.99756143, 0.49260303],
    2079                                                                                                  [      -6.26289095, -0.00151158, 0.00092582, 7.26137937, 0.99537524, 0.99756260, 0.49260421],
    2080                                                                                                  [      -6.26292215, -0.00151085, 0.00092538, 7.26141130, 0.99537748, 0.99756377, 0.49260538],
    2081                                                                                                  [      -6.26295323, -0.00151012, 0.00092494, 7.26144311, 0.99537972, 0.99756494, 0.49260653],
    2082                                                                                                  [      -6.26298421, -0.00150939, 0.00092450, 7.26147481, 0.99538196, 0.99756611, 0.49260770],
    2083                                                                                                  [      -6.26301507, -0.00150866, 0.00092406, 7.26150640, 0.99538420, 0.99756728, 0.49260887],
    2084                                                                                                  [      -6.26304582, -0.00150794, 0.00092362, 7.26153788, 0.99538644, 0.99756844, 0.49261002],
    2085                                                                                                  [      -6.26307646, -0.00150721, 0.00092318, 7.26156925, 0.99538867, 0.99756961, 0.49261117],
    2086                                                                                                  [      -6.26310699, -0.00150649, 0.00092274, 7.26160050, 0.99539091, 0.99757078, 0.49261231],
    2087                                                                                                  [      -6.26313741, -0.00150576, 0.00092230, 7.26163165, 0.99539314, 0.99757194, 0.49261347],
    2088                                                                                                  [      -6.26316772, -0.00150504, 0.00092186, 7.26166269, 0.99539536, 0.99757310, 0.49261461],
    2089                                                                                                  [      -6.26319793, -0.00150431, 0.00092142, 7.26169361, 0.99539759, 0.99757426, 0.49261575],
    2090                                                                                                  [      -6.26322802, -0.00150359, 0.00092098, 7.26172443, 0.99539981, 0.99757542, 0.49261688],
    2091                                                                                                  [      -6.26325801, -0.00150287, 0.00092055, 7.26175513, 0.99540204, 0.99757658, 0.49261801],
    2092                                                                                                  [      -6.26328788, -0.00150215, 0.00092011, 7.26178573, 0.99540426, 0.99757774, 0.49261913],
    2093                                                                                                  [      -6.26331765, -0.00150143, 0.00091967, 7.26181623, 0.99540647, 0.99757890, 0.49262025],
    2094                                                                                                  [      -6.26334732, -0.00150071, 0.00091924, 7.26184661, 0.99540869, 0.99758006, 0.49262138],
    2095                                                                                                  [      -6.26337687, -0.00149999, 0.00091880, 7.26187688, 0.99541090, 0.99758121, 0.49262250],
    2096                                                                                                  [      -6.26340633, -0.00149927, 0.00091836, 7.26190705, 0.99541311, 0.99758236, 0.49262361],
    2097                                                                                                  [      -6.26343567, -0.00149855, 0.00091793, 7.26193712, 0.99541532, 0.99758352, 0.49262472],
    2098                                                                                                  [      -6.26346491, -0.00149784, 0.00091749, 7.26196707, 0.99541753, 0.99758467, 0.49262583],
    2099                                                                                                  [      -6.26349404, -0.00149712, 0.00091706, 7.26199692, 0.99541974, 0.99758582, 0.49262693],
    2100                                                                                                  [      -6.26352307, -0.00149640, 0.00091662, 7.26202667, 0.99542194, 0.99758697, 0.49262803],
    2101                                                                                                  [      -6.26355200, -0.00149569, 0.00091619, 7.26205631, 0.99542414, 0.99758812, 0.49262913],
    2102                                                                                                  [      -6.26358082, -0.00149498, 0.00091576, 7.26208585, 0.99542634, 0.99758927, 0.49263021],
    2103                                                                                                  [      -6.26360954, -0.00149426, 0.00091532, 7.26211528, 0.99542854, 0.99759042, 0.49263131],
    2104                                                                                                  [      -6.26363815, -0.00149355, 0.00091489, 7.26214460, 0.99543073, 0.99759156, 0.49263239],
    2105                                                                                                  [      -6.26366666, -0.00149284, 0.00091446, 7.26217383, 0.99543292, 0.99759271, 0.49263348],
    2106                                                                                                  [      -6.26369507, -0.00149212, 0.00091403, 7.26220295, 0.99543511, 0.99759385, 0.49263456],
    2107                                                                                                  [      -6.26372338, -0.00149141, 0.00091359, 7.26223197, 0.99543730, 0.99759499, 0.49263563],
    2108                                                                                                  [      -6.26375159, -0.00149070, 0.00091316, 7.26226088, 0.99543949, 0.99759613, 0.49263671],
    2109                                                                                                  [      -6.26377969, -0.00148999, 0.00091273, 7.26228970, 0.99544167, 0.99759728, 0.49263778],
    2110                                                                                                  [      -6.26380769, -0.00148928, 0.00091230, 7.26231841, 0.99544386, 0.99759841, 0.49263884],
    2111                                                                                                  [      -6.26383560, -0.00148857, 0.00091187, 7.26234702, 0.99544604, 0.99759955, 0.49263991],
    2112                                                                                                  [      -6.26386340, -0.00148787, 0.00091144, 7.26237553, 0.99544821, 0.99760069, 0.49264097],
    2113                                                                                                  [      -6.26389110, -0.00148716, 0.00091101, 7.26240394, 0.99545039, 0.99760183, 0.49264203],
    2114                                                                                                  [      -6.26391870, -0.00148645, 0.00091058, 7.26243225, 0.99545257, 0.99760296, 0.49264308],
    2115                                                                                                  [      -6.26394621, -0.00148575, 0.00091016, 7.26246046, 0.99545474, 0.99760410, 0.49264413],
    2116                                                                                                  [      -6.26397361, -0.00148504, 0.00090973, 7.26248857, 0.99545691, 0.99760523, 0.49264518],
    2117                                                                                                  [      -6.26400092, -0.00148434, 0.00090930, 7.26251658, 0.99545908, 0.99760636, 0.49264622],
    2118                                                                                                  [      -6.26402813, -0.00148363, 0.00090887, 7.26254449, 0.99546124, 0.99760750, 0.49264726],
    2119                                                                                                  [      -6.26405524, -0.00148293, 0.00090844, 7.26257231, 0.99546341, 0.99760863, 0.49264830],
    2120                                                                                                  [      -6.26408225, -0.00148223, 0.00090802, 7.26260002, 0.99546557, 0.99760976, 0.49264934],
    2121                                                                                                  [      -6.26410916, -0.00148152, 0.00090759, 7.26262764, 0.99546773, 0.99761088, 0.49265036],
    2122                                                                                                  [      -6.26413598, -0.00148082, 0.00090717, 7.26265516, 0.99546989, 0.99761201, 0.49265140],
    2123                                                                                                  [      -6.26416271, -0.00148012, 0.00090674, 7.26268258, 0.99547204, 0.99761314, 0.49265242],
    2124                                                                                                  [      -6.26418933, -0.00147942, 0.00090631, 7.26270991, 0.99547420, 0.99761426, 0.49265345],
    2125                                                                                                  [      -6.26421586, -0.00147872, 0.00090589, 7.26273714, 0.99547635, 0.99761539, 0.49265447],
    2126                                                                                                  [      -6.26424230, -0.00147802, 0.00090547, 7.26276428, 0.99547850, 0.99761651, 0.49265547],
    2127                                                                                                  [      -6.26426864, -0.00147733, 0.00090504, 7.26279132, 0.99548065, 0.99761763, 0.49265649],
    2128                                                                                                  [      -6.26429489, -0.00147663, 0.00090462, 7.26281826, 0.99548279, 0.99761875, 0.49265751],
    2129                                                                                                  [      -6.26432104, -0.00147593, 0.00090419, 7.26284511, 0.99548494, 0.99761987, 0.49265851],
    2130                                                                                                  [      -6.26434710, -0.00147523, 0.00090377, 7.26287186, 0.99548708, 0.99762099, 0.49265951],
    2131                                                                                                  [      -6.26437306, -0.00147454, 0.00090335, 7.26289852, 0.99548922, 0.99762211, 0.49266051],
    2132                                                                                                  [      -6.26439893, -0.00147384, 0.00090293, 7.26292509, 0.99549136, 0.99762323, 0.49266151],
    2133                                                                                                  [      -6.26442471, -0.00147315, 0.00090250, 7.26295156, 0.99549349, 0.99762435, 0.49266249],
    2134                                                                                                  [      -6.26445040, -0.00147246, 0.00090208, 7.26297794, 0.99549563, 0.99762546, 0.49266350],
    2135                                                                                                  [      -6.26447599, -0.00147176, 0.00090166, 7.26300423, 0.99549776, 0.99762658, 0.49266448],
    2136                                                                                                  [      -6.26450150, -0.00147107, 0.00090124, 7.26303043, 0.99549989, 0.99762769, 0.49266547],
    2137                                                                                                  [      -6.26452691, -0.00147038, 0.00090082, 7.26305653, 0.99550202, 0.99762880, 0.49266646],
    2138                                                                                                  [      -6.26455222, -0.00146969, 0.00090040, 7.26308254, 0.99550415, 0.99762991, 0.49266744],
    2139                                                                                                  [      -6.26457745, -0.00146900, 0.00089998, 7.26310846, 0.99550627, 0.99763102, 0.49266841],
    2140                                                                                                  [      -6.26460259, -0.00146831, 0.00089956, 7.26313428, 0.99550839, 0.99763213, 0.49266939],
    2141                                                                                                  [      -6.26462764, -0.00146762, 0.00089914, 7.26316002, 0.99551051, 0.99763324, 0.49267035],
    2142                                                                                                  [      -6.26465259, -0.00146693, 0.00089872, 7.26318567, 0.99551263, 0.99763435, 0.49267132],
    2143                                                                                                  [      -6.26467746, -0.00146624, 0.00089831, 7.26321122, 0.99551475, 0.99763545, 0.49267230],
    2144                                                                                                  [      -6.26470224, -0.00146555, 0.00089789, 7.26323669, 0.99551686, 0.99763656, 0.49267325],
    2145                                                                                                  [      -6.26472693, -0.00146486, 0.00089747, 7.26326207, 0.99551898, 0.99763766, 0.49267421],
    2146                                                                                                  [      -6.26475153, -0.00146418, 0.00089705, 7.26328735, 0.99552109, 0.99763877, 0.49267517],
    2147                                                                                                  [      -6.26477604, -0.00146349, 0.00089664, 7.26331255, 0.99552319, 0.99763987, 0.49267611],
    2148                                                                                                  [      -6.26480047, -0.00146281, 0.00089622, 7.26333766, 0.99552530, 0.99764097, 0.49267707],
    2149                                                                                                  [      -6.26482481, -0.00146212, 0.00089580, 7.26336268, 0.99552741, 0.99764207, 0.49267802],
    2150                                                                                                  [      -6.26484906, -0.00146144, 0.00089539, 7.26338762, 0.99552951, 0.99764317, 0.49267897],
    2151                                                                                                  [      -6.26487322, -0.00146076, 0.00089497, 7.26341246, 0.99553161, 0.99764427, 0.49267991],
    2152                                                                                                  [      -6.26489730, -0.00146007, 0.00089456, 7.26343722, 0.99553371, 0.99764537, 0.49268085],
    2153                                                                                                  [      -6.26492129, -0.00145939, 0.00089414, 7.26346189, 0.99553581, 0.99764646, 0.49268179],
    2154                                                                                                  [      -6.26494519, -0.00145871, 0.00089373, 7.26348648, 0.99553790, 0.99764756, 0.49268272],
    2155                                                                                                  [      -6.26496901, -0.00145803, 0.00089332, 7.26351098, 0.99553999, 0.99764865, 0.49268365],
    2156                                                                                                  [      -6.26499274, -0.00145735, 0.00089290, 7.26353539, 0.99554209, 0.99764975, 0.49268458],
    2157                                                                                                  [      -6.26501639, -0.00145667, 0.00089249, 7.26355972, 0.99554417, 0.99765084, 0.49268549],
    2158                                                                                                  [      -6.26503995, -0.00145599, 0.00089208, 7.26358396, 0.99554626, 0.99765193, 0.49268643],
    2159                                                                                                  [      -6.26506343, -0.00145531, 0.00089166, 7.26360811, 0.99554835, 0.99765302, 0.49268735],
    2160                                                                                                  [      -6.26508682, -0.00145463, 0.00089125, 7.26363219, 0.99555043, 0.99765411, 0.49268826],
    2161                                                                                                  [      -6.26511013, -0.00145396, 0.00089084, 7.26365617, 0.99555251, 0.99765520, 0.49268918],
    2162                                                                                                  [      -6.26513336, -0.00145328, 0.00089043, 7.26368008, 0.99555459, 0.99765629, 0.49269008],
    2163                                                                                                  [      -6.26515650, -0.00145261, 0.00089002, 7.26370389, 0.99555667, 0.99765738, 0.49269099],
    2164                                                                                                  [      -6.26517956, -0.00145193, 0.00088961, 7.26372763, 0.99555875, 0.99765846, 0.49269190],
    2165                                                                                                  [      -6.26520254, -0.00145126, 0.00088920, 7.26375128, 0.99556082, 0.99765955, 0.49269281],
    2166                                                                                                  [      -6.26522543, -0.00145058, 0.00088879, 7.26377485, 0.99556289, 0.99766063, 0.49269370],
    2167                                                                                                  [      -6.26524824, -0.00144991, 0.00088838, 7.26379834, 0.99556496, 0.99766171, 0.49269460],
    2168                                                                                                  [      -6.26527098, -0.00144924, 0.00088797, 7.26382174, 0.99556703, 0.99766280, 0.49269550],
    2169                                                                                                  [      -6.26529363, -0.00144856, 0.00088756, 7.26384506, 0.99556910, 0.99766388, 0.49269640],
    2170                                                                                                  [      -6.26531619, -0.00144789, 0.00088715, 7.26386830, 0.99557116, 0.99766496, 0.49269728],
    2171                                                                                                  [      -6.26533868, -0.00144722, 0.00088674, 7.26389146, 0.99557323, 0.99766604, 0.49269817],
    2172                                                                                                  [      -6.26536109, -0.00144655, 0.00088634, 7.26391454, 0.99557529, 0.99766711, 0.49269905],
    2173                                                                                                  [      -6.26538341, -0.00144588, 0.00088593, 7.26393753, 0.99557735, 0.99766819, 0.49269994],
    2174                                                                                                  [      -6.26540566, -0.00144521, 0.00088552, 7.26396045, 0.99557940, 0.99766927, 0.49270083],
    2175                                                                                                  [      -6.26542783, -0.00144454, 0.00088511, 7.26398329, 0.99558146, 0.99767034, 0.49270168],
    2176                                                                                                  [      -6.26544992, -0.00144387, 0.00088471, 7.26400604, 0.99558351, 0.99767142, 0.49270256],
    2177                                                                                                  [      -6.26547192, -0.00144321, 0.00088430, 7.26402872, 0.99558556, 0.99767249, 0.49270344],
    2178                                                                                                  [      -6.26549385, -0.00144254, 0.00088390, 7.26405131, 0.99558761, 0.99767356, 0.49270431],
    2179                                                                                                  [      -6.26551570, -0.00144187, 0.00088349, 7.26407383, 0.99558966, 0.99767463, 0.49270518],
    2180                                                                                                  [      -6.26553748, -0.00144121, 0.00088309, 7.26409627, 0.99559171, 0.99767571, 0.49270604],
    2181                                                                                                  [      -6.26555917, -0.00144054, 0.00088268, 7.26411863, 0.99559375, 0.99767678, 0.49270690],
    2182                                                                                                  [      -6.26558079, -0.00143988, 0.00088228, 7.26414091, 0.99559579, 0.99767784, 0.49270776],
    2183                                                                                                  [      -6.26560233, -0.00143922, 0.00088187, 7.26416311, 0.99559783, 0.99767891, 0.49270862],
    2184                                                                                                  [      -6.26562379, -0.00143855, 0.00088147, 7.26418524, 0.99559987, 0.99767998, 0.49270947],
    2185                                                                                                  [      -6.26564518, -0.00143789, 0.00088107, 7.26420729, 0.99560191, 0.99768104, 0.49271032],
    2186                                                                                                  [      -6.26566648, -0.00143723, 0.00088066, 7.26422926, 0.99560394, 0.99768211, 0.49271118],
    2187                                                                                                  [      -6.26568772, -0.00143657, 0.00088026, 7.26425115, 0.99560598, 0.99768317, 0.49271202],
    2188                                                                                                  [      -6.26570887, -0.00143590, 0.00087986, 7.26427297, 0.99560801, 0.99768424, 0.49271286],
    2189                                                                                                  [      -6.26572995, -0.00143524, 0.00087946, 7.26429471, 0.99561004, 0.99768530, 0.49271371],
    2190                                                                                                  [      -6.26575096, -0.00143458, 0.00087906, 7.26431637, 0.99561206, 0.99768636, 0.49271455],
    2191                                                                                                  [      -6.26577189, -0.00143393, 0.00087865, 7.26433796, 0.99561409, 0.99768742, 0.49271537],
    2192                                                                                                  [      -6.26579274, -0.00143327, 0.00087825, 7.26435948, 0.99561611, 0.99768848, 0.49271621],
    2193                                                                                                  [      -6.26581352, -0.00143261, 0.00087785, 7.26438092, 0.99561813, 0.99768954, 0.49271704],
    2194                                                                                                  [      -6.26583423, -0.00143195, 0.00087745, 7.26440228, 0.99562015, 0.99769059, 0.49271787],
    2195                                                                                                  [      -6.26585486, -0.00143130, 0.00087705, 7.26442357, 0.99562217, 0.99769165, 0.49271871],
    2196                                                                                                  [      -6.26587542, -0.00143064, 0.00087665, 7.26444478, 0.99562419, 0.99769271, 0.49271954],
    2197                                                                                                  [      -6.26589591, -0.00142998, 0.00087626, 7.26446592, 0.99562620, 0.99769376, 0.49272035],
    2198                                                                                                  [      -6.26591632, -0.00142933, 0.00087586, 7.26448699, 0.99562822, 0.99769482, 0.49272117],
    2199                                                                                                  [      -6.26593666, -0.00142867, 0.00087546, 7.26450798, 0.99563023, 0.99769587, 0.49272198],
    2200                                                                                                  [      -6.26595692, -0.00142802, 0.00087506, 7.26452890, 0.99563224, 0.99769692, 0.49272279],
    2201                                                                                                  [      -6.26597711, -0.00142737, 0.00087466, 7.26454975, 0.99563424, 0.99769797, 0.49272362],
    2202                                                                                                  [      -6.26599724, -0.00142671, 0.00087426, 7.26457052, 0.99563625, 0.99769902, 0.49272441],
    2203                                                                                                  [      -6.26601728, -0.00142606, 0.00087387, 7.26459122, 0.99563825, 0.99770007, 0.49272522],
    2204                                                                                                  [      -6.26603726, -0.00142541, 0.00087347, 7.26461185, 0.99564025, 0.99770112, 0.49272604],
    2205                                                                                                  [      -6.26605717, -0.00142476, 0.00087307, 7.26463241, 0.99564225, 0.99770217, 0.49272683],
    2206                                                                                                  [      -6.26607700, -0.00142411, 0.00087268, 7.26465289, 0.99564425, 0.99770321, 0.49272764],
    2207                                                                                                  [      -6.26609676, -0.00142346, 0.00087228, 7.26467331, 0.99564625, 0.99770426, 0.49272843],
    2208                                                                                                  [      -6.26611646, -0.00142281, 0.00087189, 7.26469365, 0.99564824, 0.99770530, 0.49272921],
    2209                                                                                                  [      -6.26613608, -0.00142216, 0.00087149, 7.26471392, 0.99565024, 0.99770635, 0.49273003],
    2210                                                                                                  [      -6.26615563, -0.00142151, 0.00087110, 7.26473412, 0.99565223, 0.99770739, 0.49273081],
    2211                                                                                                  [      -6.26617512, -0.00142087, 0.00087070, 7.26475425, 0.99565422, 0.99770843, 0.49273160],
    2212                                                                                                  [      -6.26619453, -0.00142022, 0.00087031, 7.26477431, 0.99565620, 0.99770947, 0.49273238],
    2213                                                                                                  [      -6.26621387, -0.00141957, 0.00086992, 7.26479430, 0.99565819, 0.99771051, 0.49273317],
    2214                                                                                                  [      -6.26623315, -0.00141893, 0.00086952, 7.26481422, 0.99566017, 0.99771155, 0.49273396],
    2215                                                                                                  [      -6.26625235, -0.00141828, 0.00086913, 7.26483407, 0.99566216, 0.99771259, 0.49273473],
    2216                                                                                                  [      -6.26627149, -0.00141764, 0.00086874, 7.26485385, 0.99566414, 0.99771362, 0.49273551],
    2217                                                                                                  [      -6.26629056, -0.00141699, 0.00086835, 7.26487356, 0.99566612, 0.99771466, 0.49273628],
    2218                                                                                                  [      -6.26630956, -0.00141635, 0.00086795, 7.26489321, 0.99566809, 0.99771570, 0.49273706],
    2219                                                                                                  [      -6.26632849, -0.00141571, 0.00086756, 7.26491278, 0.99567007, 0.99771673, 0.49273783],
    2220                                                                                                  [      -6.26634735, -0.00141506, 0.00086717, 7.26493229, 0.99567204, 0.99771776, 0.49273859],
    2221                                                                                                  [      -6.26636615, -0.00141442, 0.00086678, 7.26495173, 0.99567401, 0.99771880, 0.49273935],
    2222                                                                                                  [      -6.26638488, -0.00141378, 0.00086639, 7.26497110, 0.99567598, 0.99771983, 0.49274013],
    2223                                                                                                  [      -6.26640355, -0.00141314, 0.00086600, 7.26499041, 0.99567795, 0.99772086, 0.49274089],
    2224                                                                                                  [      -6.26642214, -0.00141250, 0.00086561, 7.26500964, 0.99567992, 0.99772189, 0.49274164],
    2225                                                                                                  [      -6.26644067, -0.00141186, 0.00086522, 7.26502881, 0.99568188, 0.99772292, 0.49274241],
    2226                                                                                                  [      -6.26645914, -0.00141122, 0.00086483, 7.26504792, 0.99568384, 0.99772395, 0.49274316],
    2227                                                                                                  [      -6.26647754, -0.00141058, 0.00086444, 7.26506695, 0.99568580, 0.99772497, 0.49274392],
    2228                                                                                                  [      -6.26649587, -0.00140995, 0.00086405, 7.26508592, 0.99568776, 0.99772600, 0.49274466],
    2229                                                                                                  [      -6.26651414, -0.00140931, 0.00086366, 7.26510483, 0.99568972, 0.99772703, 0.49274542],
    2230                                                                                                  [      -6.26653234, -0.00140867, 0.00086328, 7.26512367, 0.99569168, 0.99772805, 0.49274618],
    2231                                                                                                  [      -6.26655048, -0.00140804, 0.00086289, 7.26514244, 0.99569363, 0.99772908, 0.49274690],
    2232                                                                                                  [      -6.26656855, -0.00140740, 0.00086250, 7.26516115, 0.99569558, 0.99773010, 0.49274765],
    2233                                                                                                  [      -6.26658656, -0.00140677, 0.00086211, 7.26517979, 0.99569753, 0.99773112, 0.49274839],
    2234                                                                                                  [      -6.26660450, -0.00140613, 0.00086173, 7.26519837, 0.99569948, 0.99773214, 0.49274912],
    2235                                                                                                  [      -6.26662238, -0.00140550, 0.00086134, 7.26521688, 0.99570143, 0.99773316, 0.49274986],
    2236                                                                                                  [      -6.26664020, -0.00140486, 0.00086096, 7.26523533, 0.99570337, 0.99773418, 0.49275059],
    2237                                                                                                  [      -6.26665795, -0.00140423, 0.00086057, 7.26525372, 0.99570532, 0.99773520, 0.49275132],
    2238                                                                                                  [      -6.26667564, -0.00140360, 0.00086018, 7.26527204, 0.99570726, 0.99773622, 0.49275206],
    2239                                                                                                  [      -6.26669326, -0.00140297, 0.00085980, 7.26529030, 0.99570920, 0.99773723, 0.49275276],
    2240                                                                                                  [      -6.26671083, -0.00140234, 0.00085942, 7.26530849, 0.99571114, 0.99773825, 0.49275350],
    2241                                                                                                  [      -6.26672833, -0.00140171, 0.00085903, 7.26532662, 0.99571307, 0.99773926, 0.49275423],
    2242                                                                                                  [      -6.26674577, -0.00140108, 0.00085865, 7.26534469, 0.99571501, 0.99774028, 0.49275495],
    2243                                                                                                  [      -6.26676314, -0.00140045, 0.00085826, 7.26536270, 0.99571694, 0.99774129, 0.49275567],
    2244                                                                                                  [      -6.26678046, -0.00139982, 0.00085788, 7.26538064, 0.99571887, 0.99774230, 0.49275639],
    2245                                                                                                  [      -6.26679771, -0.00139919, 0.00085750, 7.26539852, 0.99572080, 0.99774331, 0.49275711],
    2246                                                                                                  [      -6.26681490, -0.00139856, 0.00085711, 7.26541634, 0.99572273, 0.99774433, 0.49275782],
    2247                                                                                                  [      -6.26683203, -0.00139793, 0.00085673, 7.26543410, 0.99572466, 0.99774533, 0.49275852],
    2248                                                                                                  [      -6.26684910, -0.00139731, 0.00085635, 7.26545179, 0.99572658, 0.99774634, 0.49275924],
    2249                                                                                                  [      -6.26686611, -0.00139668, 0.00085597, 7.26546943, 0.99572851, 0.99774735, 0.49275995],
    2250                                                                                                  [      -6.26688306, -0.00139605, 0.00085559, 7.26548700, 0.99573043, 0.99774836, 0.49276065],
    2251                                                                                                  [      -6.26689994, -0.00139543, 0.00085521, 7.26550451, 0.99573235, 0.99774936, 0.49276134],
    2252                                                                                                  [      -6.26691677, -0.00139481, 0.00085482, 7.26552196, 0.99573426, 0.99775037, 0.49276204],
    2253                                                                                                  [      -6.26693354, -0.00139418, 0.00085444, 7.26553936, 0.99573618, 0.99775137, 0.49276274],
    2254                                                                                                  [      -6.26695024, -0.00139356, 0.00085406, 7.26555669, 0.99573809, 0.99775238, 0.49276344],
    2255                                                                                                  [      -6.26696689, -0.00139293, 0.00085368, 7.26557396, 0.99574001, 0.99775338, 0.49276413],
    2256                                                                                                  [      -6.26698348, -0.00139231, 0.00085331, 7.26559117, 0.99574192, 0.99775438, 0.49276484],
    2257                                                                                                  [      -6.26700001, -0.00139169, 0.00085293, 7.26560832, 0.99574383, 0.99775538, 0.49276553],
    2258                                                                                                  [      -6.26701648, -0.00139107, 0.00085255, 7.26562541, 0.99574574, 0.99775638, 0.49276621],
    2259                                                                                                  [      -6.26703289, -0.00139045, 0.00085217, 7.26564245, 0.99574764, 0.99775738, 0.49276691],
    2260                                                                                                  [      -6.26704925, -0.00138983, 0.00085179, 7.26565942, 0.99574955, 0.99775838, 0.49276759],
    2261                                                                                                  [      -6.26706554, -0.00138921, 0.00085141, 7.26567633, 0.99575145, 0.99775938, 0.49276826],
    2262                                                                                                  [      -6.26708178, -0.00138859, 0.00085104, 7.26569319, 0.99575335, 0.99776038, 0.49276895],
    2263                                                                                                  [      -6.26709796, -0.00138797, 0.00085066, 7.26570999, 0.99575525, 0.99776137, 0.49276963],
    2264                                                                                                  [      -6.26711408, -0.00138735, 0.00085028, 7.26572673, 0.99575715, 0.99776237, 0.49277030],
    2265                                                                                                  [      -6.26713015, -0.00138674, 0.00084990, 7.26574341, 0.99575904, 0.99776336, 0.49277097],
    2266                                                                                                  [      -6.26714616, -0.00138612, 0.00084953, 7.26576004, 0.99576094, 0.99776435, 0.49277165],
    2267                                                                                                  [      -6.26716211, -0.00138550, 0.00084915, 7.26577661, 0.99576283, 0.99776535, 0.49277232],
    2268                                                                                                  [      -6.26717800, -0.00138489, 0.00084878, 7.26579312, 0.99576472, 0.99776634, 0.49277298],
    2269                                                                                                  [      -6.26719384, -0.00138427, 0.00084840, 7.26580957, 0.99576661, 0.99776733, 0.49277366],
    2270                                                                                                  [      -6.26720962, -0.00138366, 0.00084803, 7.26582597, 0.99576850, 0.99776832, 0.49277432],
    2271                                                                                                  [      -6.26722535, -0.00138304, 0.00084765, 7.26584231, 0.99577038, 0.99776931, 0.49277499],
    2272                                                                                                  [      -6.26724102, -0.00138243, 0.00084728, 7.26585859, 0.99577227, 0.99777029, 0.49277565],
    2273                                                                                                  [      -6.26725663, -0.00138181, 0.00084690, 7.26587482, 0.99577415, 0.99777128, 0.49277630],
    2274                                                                                                  [      -6.26727219, -0.00138120, 0.00084653, 7.26589099, 0.99577603, 0.99777227, 0.49277698],
    2275                                                                                                  [      -6.26728769, -0.00138059, 0.00084616, 7.26590710, 0.99577791, 0.99777325, 0.49277763],
    2276                                                                                                  [      -6.26730314, -0.00137998, 0.00084578, 7.26592316, 0.99577979, 0.99777424, 0.49277828],
    2277                                                                                                  [      -6.26731854, -0.00137937, 0.00084541, 7.26593917, 0.99578166, 0.99777522, 0.49277893],
    2278                                                                                                  [      -6.26733388, -0.00137876, 0.00084504, 7.26595512, 0.99578354, 0.99777621, 0.49277959],
    2279                                                                                                  [      -6.26734916, -0.00137815, 0.00084467, 7.26597101, 0.99578541, 0.99777719, 0.49278024],
    2280                                                                                                  [      -6.26736439, -0.00137754, 0.00084429, 7.26598685, 0.99578728, 0.99777817, 0.49278088],
    2281                                                                                                  [      -6.26737957, -0.00137693, 0.00084392, 7.26600264, 0.99578915, 0.99777915, 0.49278153],
    2282                                                                                                  [      -6.26739469, -0.00137632, 0.00084355, 7.26601837, 0.99579102, 0.99778013, 0.49278219],
    2283                                                                                                  [      -6.26740976, -0.00137571, 0.00084318, 7.26603405, 0.99579289, 0.99778111, 0.49278281],
    2284                                                                                                  [      -6.26742477, -0.00137510, 0.00084281, 7.26604967, 0.99579475, 0.99778209, 0.49278347],
    2285                                                                                                  [      -6.26743974, -0.00137450, 0.00084244, 7.26606524, 0.99579661, 0.99778306, 0.49278410],
    2286                                                                                                  [      -6.26745464, -0.00137389, 0.00084207, 7.26608075, 0.99579847, 0.99778404, 0.49278472],
    2287                                                                                                  [      -6.26746950, -0.00137328, 0.00084170, 7.26609622, 0.99580033, 0.99778502, 0.49278536],
    2288                                                                                                  [      -6.26748430, -0.00137268, 0.00084133, 7.26611162, 0.99580219, 0.99778599, 0.49278600],
    2289                                                                                                  [      -6.26749906, -0.00137207, 0.00084096, 7.26612698, 0.99580405, 0.99778696, 0.49278663],
    2290                                                                                                  [      -6.26751375, -0.00137147, 0.00084059, 7.26614228, 0.99580590, 0.99778794, 0.49278724],
    2291                                                                                                  [      -6.26752840, -0.00137087, 0.00084022, 7.26615753, 0.99580776, 0.99778891, 0.49278789],
    2292                                                                                                  [      -6.26754300, -0.00137026, 0.00083986, 7.26617273, 0.99580961, 0.99778988, 0.49278852],
    2293                                                                                                  [      -6.26755754, -0.00136966, 0.00083949, 7.26618788, 0.99581146, 0.99779085, 0.49278914],
    2294                                                                                                  [      -6.26757203, -0.00136906, 0.00083912, 7.26620297, 0.99581331, 0.99779182, 0.49278975],
    2295                                                                                                  [      -6.26758647, -0.00136846, 0.00083875, 7.26621801, 0.99581515, 0.99779279, 0.49279037],
    2296                                                                                                  [      -6.26760086, -0.00136786, 0.00083839, 7.26623300, 0.99581700, 0.99779376, 0.49279099],
    2297                                                                                                  [      -6.26761520, -0.00136725, 0.00083802, 7.26624794, 0.99581884, 0.99779472, 0.49279161],
    2298                                                                                                  [      -6.26762949, -0.00136665, 0.00083765, 7.26626283, 0.99582068, 0.99779569, 0.49279223],
    2299                                                                                                  [      -6.26764372, -0.00136605, 0.00083729, 7.26627767, 0.99582252, 0.99779666, 0.49279284],
    2300                                                                                                  [      -6.26765791, -0.00136546, 0.00083692, 7.26629245, 0.99582436, 0.99779762, 0.49279345],
    2301                                                                                                  [      -6.26767205, -0.00136486, 0.00083656, 7.26630719, 0.99582620, 0.99779859, 0.49279407],
    2302                                                                                                  [      -6.26768613, -0.00136426, 0.00083619, 7.26632187, 0.99582804, 0.99779955, 0.49279468],
    2303                                                                                                  [      -6.26770017, -0.00136366, 0.00083583, 7.26633651, 0.99582987, 0.99780051, 0.49279528],
    2304                                                                                                  [      -6.26771416, -0.00136306, 0.00083546, 7.26635109, 0.99583170, 0.99780147, 0.49279588],
    2305                                                                                                  [      -6.26772809, -0.00136247, 0.00083510, 7.26636562, 0.99583353, 0.99780243, 0.49279649],
    2306                                                                                                  [      -6.26774198, -0.00136187, 0.00083474, 7.26638011, 0.99583536, 0.99780339, 0.49279710],
    2307                                                                                                  [      -6.26775582, -0.00136128, 0.00083437, 7.26639454, 0.99583719, 0.99780435, 0.49279770],
    2308                                                                                                  [      -6.26776961, -0.00136068, 0.00083401, 7.26640893, 0.99583902, 0.99780531, 0.49279829],
    2309                                                                                                  [      -6.26778335, -0.00136009, 0.00083365, 7.26642326, 0.99584084, 0.99780627, 0.49279888],
    2310                                                                                                  [      -6.26779704, -0.00135949, 0.00083328, 7.26643755, 0.99584266, 0.99780722, 0.49279946],
    2311                                                                                                  [      -6.26781069, -0.00135890, 0.00083292, 7.26645179, 0.99584449, 0.99780818, 0.49280008],
    2312                                                                                                  [      -6.26782428, -0.00135831, 0.00083256, 7.26646598, 0.99584631, 0.99780913, 0.49280067],
    2313                                                                                                  [      -6.26783783, -0.00135771, 0.00083220, 7.26648012, 0.99584812, 0.99781009, 0.49280125],
    2314                                                                                                  [      -6.26785133, -0.00135712, 0.00083184, 7.26649421, 0.99584994, 0.99781104, 0.49280185],
    2315                                                                                                  [      -6.26786479, -0.00135653, 0.00083148, 7.26650826, 0.99585175, 0.99781199, 0.49280244],
    2316                                                                                                  [      -6.26787819, -0.00135594, 0.00083111, 7.26652225, 0.99585357, 0.99781295, 0.49280301],
    2317                                                                                                  [      -6.26789155, -0.00135535, 0.00083075, 7.26653620, 0.99585538, 0.99781390, 0.49280360],
    2318                                                                                                  [      -6.26790486, -0.00135476, 0.00083039, 7.26655010, 0.99585719, 0.99781485, 0.49280419],
    2319                                                                                                  [      -6.26791812, -0.00135417, 0.00083003, 7.26656395, 0.99585900, 0.99781580, 0.49280476],
    2320                                                                                                  [      -6.26793134, -0.00135358, 0.00082967, 7.26657776, 0.99586081, 0.99781675, 0.49280534],
    2321                                                                                                  [      -6.26794451, -0.00135299, 0.00082931, 7.26659152, 0.99586261, 0.99781769, 0.49280594],
    2322                                                                                                  [      -6.26795764, -0.00135240, 0.00082896, 7.26660523, 0.99586442, 0.99781864, 0.49280650],
    2323                                                                                                  [      -6.26797071, -0.00135182, 0.00082860, 7.26661890, 0.99586622, 0.99781959, 0.49280708],
    2324                                                                                                  [      -6.26798374, -0.00135123, 0.00082824, 7.26663252, 0.99586802, 0.99782053, 0.49280764],
    2325                                                                                                  [      -6.26799673, -0.00135064, 0.00082788, 7.26664609, 0.99586982, 0.99782148, 0.49280822],
    2326                                                                                                  [      -6.26800967, -0.00135006, 0.00082752, 7.26665961, 0.99587162, 0.99782242, 0.49280878],
    2327                                                                                                  [      -6.26802256, -0.00134947, 0.00082717, 7.26667309, 0.99587341, 0.99782336, 0.49280935],
    2328                                                                                                  [      -6.26803541, -0.00134889, 0.00082681, 7.26668653, 0.99587521, 0.99782431, 0.49280992],
    2329                                                                                                  [      -6.26804822, -0.00134830, 0.00082645, 7.26669991, 0.99587700, 0.99782525, 0.49281048],
    2330                                                                                                  [      -6.26806098, -0.00134772, 0.00082609, 7.26671326, 0.99587879, 0.99782619, 0.49281107],
    2331                                                                                                  [      -6.26807369, -0.00134713, 0.00082574, 7.26672655, 0.99588058, 0.99782713, 0.49281162],
    2332                                                                                                  [      -6.26808636, -0.00134655, 0.00082538, 7.26673981, 0.99588237, 0.99782807, 0.49281218],
    2333                                                                                                  [      -6.26809898, -0.00134597, 0.00082503, 7.26675301, 0.99588416, 0.99782900, 0.49281274],
    2334                                                                                                  [      -6.26811156, -0.00134539, 0.00082467, 7.26676617, 0.99588595, 0.99782994, 0.49281329],
    2335                                                                                                  [      -6.26812410, -0.00134481, 0.00082432, 7.26677929, 0.99588773, 0.99783088, 0.49281384],
    2336                                                                                                  [      -6.26813659, -0.00134422, 0.00082396, 7.26679236, 0.99588951, 0.99783181, 0.49281439],
    2337                                                                                                  [      -6.26814904, -0.00134364, 0.00082361, 7.26680539, 0.99589129, 0.99783275, 0.49281496],
    2338                                                                                                  [      -6.26816144, -0.00134306, 0.00082325, 7.26681838, 0.99589307, 0.99783368, 0.49281552],
    2339                                                                                                  [      -6.26817380, -0.00134248, 0.00082290, 7.26683132, 0.99589485, 0.99783462, 0.49281605],
    2340                                                                                                  [      -6.26818612, -0.00134191, 0.00082255, 7.26684421, 0.99589663, 0.99783555, 0.49281661],
    2341                                                                                                  [      -6.26819839, -0.00134133, 0.00082219, 7.26685706, 0.99589840, 0.99783648, 0.49281716],
    2342                                                                                                  [      -6.26821062, -0.00134075, 0.00082184, 7.26686987, 0.99590018, 0.99783741, 0.49281769],
    2343                                                                                                  [      -6.26822281, -0.00134017, 0.00082149, 7.26688264, 0.99590195, 0.99783834, 0.49281824],
    2344                                                                                                  [      -6.26823495, -0.00133959, 0.00082113, 7.26689536, 0.99590372, 0.99783927, 0.49281878],
    2345                                                                                                  [      -6.26824705, -0.00133902, 0.00082078, 7.26690804, 0.99590549, 0.99784020, 0.49281933],
    2346                                                                                                  [      -6.26825911, -0.00133844, 0.00082043, 7.26692067, 0.99590725, 0.99784113, 0.49281987],
    2347                                                                                                  [      -6.26827113, -0.00133787, 0.00082008, 7.26693326, 0.99590902, 0.99784206, 0.49282040],
    2348                                                                                                  [      -6.26828310, -0.00133729, 0.00081973, 7.26694581, 0.99591078, 0.99784298, 0.49282094],
    2349                                                                                                  [      -6.26829504, -0.00133672, 0.00081938, 7.26695832, 0.99591255, 0.99784391, 0.49282147],
    2350                                                                                                  [      -6.26830693, -0.00133614, 0.00081902, 7.26697079, 0.99591431, 0.99784483, 0.49282201],
    2351                                                                                                  [      -6.26831878, -0.00133557, 0.00081867, 7.26698321, 0.99591607, 0.99784576, 0.49282254],
    2352                                                                                                  [      -6.26833058, -0.00133499, 0.00081832, 7.26699559, 0.99591783, 0.99784668, 0.49282308],
    2353                                                                                                  [      -6.26834235, -0.00133442, 0.00081797, 7.26700793, 0.99591958, 0.99784760, 0.49282360],
    2354                                                                                                  [      -6.26835407, -0.00133385, 0.00081762, 7.26702023, 0.99592134, 0.99784853, 0.49282414],
    2355                                                                                                  [      -6.26836576, -0.00133328, 0.00081728, 7.26703248, 0.99592309, 0.99784945, 0.49282465],
    2356                                                                                                  [      -6.26837740, -0.00133271, 0.00081693, 7.26704469, 0.99592485, 0.99785037, 0.49282520],
    2357                                                                                                  [      -6.26838900, -0.00133214, 0.00081658, 7.26705687, 0.99592660, 0.99785129, 0.49282572],
    2358                                                                                                  [      -6.26840056, -0.00133157, 0.00081623, 7.26706900, 0.99592835, 0.99785221, 0.49282624],
    2359                                                                                                  [      -6.26841209, -0.00133100, 0.00081588, 7.26708109, 0.99593009, 0.99785312, 0.49282676],
    2360                                                                                                  [      -6.26842357, -0.00133043, 0.00081553, 7.26709314, 0.99593184, 0.99785404, 0.49282728],
    2361                                                                                                  [      -6.26843501, -0.00132986, 0.00081519, 7.26710515, 0.99593359, 0.99785496, 0.49282780],
    2362                                                                                                  [      -6.26844641, -0.00132929, 0.00081484, 7.26711712, 0.99593533, 0.99785587, 0.49282829],
    2363                                                                                                  [      -6.26845777, -0.00132872, 0.00081449, 7.26712905, 0.99593707, 0.99785679, 0.49282883],
    2364                                                                                                  [      -6.26846909, -0.00132815, 0.00081414, 7.26714093, 0.99593881, 0.99785770, 0.49282934],
    2365                                                                                                  [      -6.26848037, -0.00132759, 0.00081380, 7.26715278, 0.99594055, 0.99785862, 0.49282986],
    2366                                                                                                  [      -6.26849161, -0.00132702, 0.00081345, 7.26716459, 0.99594229, 0.99785953, 0.49283037],
    2367                                                                                                  [      -6.26850281, -0.00132645, 0.00081311, 7.26717636, 0.99594402, 0.99786044, 0.49283087],
    2368                                                                                                  [      -6.26851397, -0.00132589, 0.00081276, 7.26718809, 0.99594576, 0.99786135, 0.49283138],
    2369                                                                                                  [      -6.26852510, -0.00132532, 0.00081242, 7.26719977, 0.99594749, 0.99786226, 0.49283189],
    2370                                                                                                  [      -6.26853618, -0.00132476, 0.00081207, 7.26721142, 0.99594922, 0.99786317, 0.49283239],
    2371                                                                                                  [      -6.26854723, -0.00132419, 0.00081173, 7.26722303, 0.99595095, 0.99786408, 0.49283291],
    2372                                                                                                  [      -6.26855824, -0.00132363, 0.00081138, 7.26723461, 0.99595268, 0.99786499, 0.49283341],
    2373                                                                                                  [      -6.26856921, -0.00132307, 0.00081104, 7.26724614, 0.99595441, 0.99786590, 0.49283391],
    2374                                                                                                  [      -6.26858014, -0.00132251, 0.00081069, 7.26725763, 0.99595614, 0.99786680, 0.49283441],
    2375                                                                                                  [      -6.26859103, -0.00132194, 0.00081035, 7.26726909, 0.99595786, 0.99786771, 0.49283490],
    2376                                                                                                  [      -6.26860188, -0.00132138, 0.00081001, 7.26728050, 0.99595958, 0.99786861, 0.49283543],
    2377                                                                                                  [      -6.26861270, -0.00132082, 0.00080966, 7.26729188, 0.99596131, 0.99786952, 0.49283590],
    2378                                                                                                  [      -6.26862348, -0.00132026, 0.00080932, 7.26730322, 0.99596303, 0.99787042, 0.49283641],
    2379                                                                                                  [      -6.26863422, -0.00131970, 0.00080898, 7.26731452, 0.99596474, 0.99787132, 0.49283690],
    2380                                                                                                  [      -6.26864493, -0.00131914, 0.00080864, 7.26732579, 0.99596646, 0.99787223, 0.49283740],
    2381                                                                                                  [      -6.26865559, -0.00131858, 0.00080829, 7.26733701, 0.99596818, 0.99787313, 0.49283789],
    2382                                                                                                  [      -6.26866622, -0.00131802, 0.00080795, 7.26734820, 0.99596989, 0.99787403, 0.49283838],
    2383                                                                                                  [      -6.26867681, -0.00131746, 0.00080761, 7.26735935, 0.99597160, 0.99787493, 0.49283886],
    2384                                                                                                  [      -6.26868737, -0.00131690, 0.00080727, 7.26737047, 0.99597332, 0.99787583, 0.49283935],
    2385                                                                                                  [      -6.26869789, -0.00131635, 0.00080693, 7.26738154, 0.99597503, 0.99787673, 0.49283983],
    2386                                                                                                  [      -6.26870837, -0.00131579, 0.00080659, 7.26739258, 0.99597673, 0.99787762, 0.49284032],
    2387                                                                                                  [      -6.26871882, -0.00131523, 0.00080625, 7.26740358, 0.99597844, 0.99787852, 0.49284083],
    2388                                                                                                  [      -6.26872923, -0.00131468, 0.00080591, 7.26741455, 0.99598015, 0.99787942, 0.49284129],
    2389                                                                                                  [      -6.26873960, -0.00131412, 0.00080557, 7.26742548, 0.99598185, 0.99788031, 0.49284178],
    2390                                                                                                  [      -6.26874993, -0.00131357, 0.00080523, 7.26743637, 0.99598355, 0.99788121, 0.49284226],
    2391                                                                                                  [      -6.26876024, -0.00131301, 0.00080489, 7.26744723, 0.99598526, 0.99788210, 0.49284273],
    2392                                                                                                  [      -6.26877050, -0.00131246, 0.00080455, 7.26745804, 0.99598696, 0.99788299, 0.49284320],
    2393                                                                                                  [      -6.26878073, -0.00131190, 0.00080421, 7.26746883, 0.99598865, 0.99788389, 0.49284369],
    2394                                                                                                  [      -6.26879092, -0.00131135, 0.00080387, 7.26747958, 0.99599035, 0.99788478, 0.49284417],
    2395                                                                                                  [      -6.26880108, -0.00131080, 0.00080354, 7.26749029, 0.99599205, 0.99788567, 0.49284465],
    2396                                                                                                  [      -6.26881120, -0.00131024, 0.00080320, 7.26750096, 0.99599374, 0.99788656, 0.49284510],
    2397                                                                                                  [      -6.26882129, -0.00130969, 0.00080286, 7.26751160, 0.99599543, 0.99788745, 0.49284559],
    2398                                                                                                  [      -6.26883135, -0.00130914, 0.00080252, 7.26752221, 0.99599713, 0.99788834, 0.49284606],
    2399                                                                                                  [      -6.26884136, -0.00130859, 0.00080219, 7.26753278, 0.99599882, 0.99788923, 0.49284653],
    2400                                                                                                  [      -6.26885135, -0.00130804, 0.00080185, 7.26754331, 0.99600050, 0.99789011, 0.49284699],
    2401                                                                                                  [      -6.26886129, -0.00130749, 0.00080151, 7.26755381, 0.99600219, 0.99789100, 0.49284746],
    2402                                                                                                  [      -6.26887121, -0.00130694, 0.00080118, 7.26756427, 0.99600388, 0.99789189, 0.49284793],
    2403                                                                                                  [      -6.26888109, -0.00130639, 0.00080084, 7.26757470, 0.99600556, 0.99789277, 0.49284838],
    2404                                                                                                  [      -6.26889093, -0.00130584, 0.00080051, 7.26758509, 0.99600724, 0.99789365, 0.49284885],
    2405                                                                                                  [      -6.26890074, -0.00130529, 0.00080017, 7.26759545, 0.99600893, 0.99789454, 0.49284932],
    2406                                                                                                  [      -6.26891052, -0.00130474, 0.00079984, 7.26760578, 0.99601061, 0.99789542, 0.49284977],
    2407                                                                                                  [      -6.26892026, -0.00130420, 0.00079950, 7.26761607, 0.99601228, 0.99789630, 0.49285024],
    2408                                                                                                  [      -6.26892997, -0.00130365, 0.00079917, 7.26762633, 0.99601396, 0.99789719, 0.49285069],
    2409                                                                                                  [      -6.26893965, -0.00130310, 0.00079883, 7.26763655, 0.99601564, 0.99789807, 0.49285114],
    2410                                                                                                  [      -6.26894929, -0.00130256, 0.00079850, 7.26764674, 0.99601731, 0.99789895, 0.49285162],
    2411                                                                                                  [      -6.26895890, -0.00130201, 0.00079816, 7.26765689, 0.99601899, 0.99789983, 0.49285206],
    2412                                                                                                  [      -6.26896848, -0.00130146, 0.00079783, 7.26766701, 0.99602066, 0.99790070, 0.49285251],
    2413                                                                                                  [      -6.26897802, -0.00130092, 0.00079750, 7.26767710, 0.99602233, 0.99790158, 0.49285297],
    2414                                                                                                  [      -6.26898753, -0.00130038, 0.00079717, 7.26768715, 0.99602400, 0.99790246, 0.49285344],
    2415                                                                                                  [      -6.26899700, -0.00129983, 0.00079683, 7.26769717, 0.99602566, 0.99790334, 0.49285388],
    2416                                                                                                  [      -6.26900645, -0.00129929, 0.00079650, 7.26770716, 0.99602733, 0.99790421, 0.49285432],
    2417                                                                                                  [      -6.26901586, -0.00129875, 0.00079617, 7.26771711, 0.99602900, 0.99790509, 0.49285477],
    2418                                                                                                  [      -6.26902524, -0.00129820, 0.00079584, 7.26772703, 0.99603066, 0.99790596, 0.49285523],
    2419                                                                                                  [      -6.26903458, -0.00129766, 0.00079550, 7.26773692, 0.99603232, 0.99790683, 0.49285566],
    2420                                                                                                  [      -6.26904390, -0.00129712, 0.00079517, 7.26774678, 0.99603398, 0.99790771, 0.49285611],
    2421                                                                                                  [      -6.26905318, -0.00129658, 0.00079484, 7.26775660, 0.99603564, 0.99790858, 0.49285655],
    2422                                                                                                  [      -6.26906243, -0.00129604, 0.00079451, 7.26776639, 0.99603730, 0.99790945, 0.49285701],
    2423                                                                                                  [      -6.26907164, -0.00129550, 0.00079418, 7.26777615, 0.99603896, 0.99791032, 0.49285743],
    2424                                                                                                  [      -6.26908083, -0.00129496, 0.00079385, 7.26778587, 0.99604061, 0.99791119, 0.49285787],
    2425                                                                                                  [      -6.26908998, -0.00129442, 0.00079352, 7.26779557, 0.99604227, 0.99791206, 0.49285833],
    2426                                                                                                  [      -6.26909911, -0.00129388, 0.00079319, 7.26780523, 0.99604392, 0.99791293, 0.49285876],
    2427                                                                                                  [      -6.26910820, -0.00129334, 0.00079286, 7.26781486, 0.99604557, 0.99791380, 0.49285921],
    2428                                                                                                  [      -6.26911726, -0.00129280, 0.00079253, 7.26782446, 0.99604722, 0.99791467, 0.49285963],
    2429                                                                                                  [      -6.26912629, -0.00129226, 0.00079220, 7.26783402, 0.99604887, 0.99791553, 0.49286007],
    2430                                                                                                  [      -6.26913528, -0.00129173, 0.00079188, 7.26784356, 0.99605051, 0.99791640, 0.49286049],
    2431                                                                                                  [      -6.26914425, -0.00129119, 0.00079155, 7.26785306, 0.99605216, 0.99791726, 0.49286093],
    2432                                                                                                  [      -6.26915318, -0.00129065, 0.00079122, 7.26786253, 0.99605380, 0.99791813, 0.49286138],
    2433                                                                                                  [      -6.26916209, -0.00129012, 0.00079089, 7.26787197, 0.99605545, 0.99791899, 0.49286178],
    2434                                                                                                  [      -6.26917096, -0.00128958, 0.00079056, 7.26788138, 0.99605709, 0.99791985, 0.49286223],
    2435                                                                                                  [      -6.26917981, -0.00128905, 0.00079024, 7.26789076, 0.99605873, 0.99792072, 0.49286266],
    2436                                                                                                  [      -6.26918862, -0.00128851, 0.00078991, 7.26790011, 0.99606037, 0.99792158, 0.49286308],
    2437                                                                                                  [      -6.26919740, -0.00128798, 0.00078958, 7.26790942, 0.99606201, 0.99792244, 0.49286350],
    2438                                                                                                  [      -6.26920615, -0.00128744, 0.00078926, 7.26791871, 0.99606364, 0.99792330, 0.49286392],
    2439                                                                                                  [      -6.26921488, -0.00128691, 0.00078893, 7.26792797, 0.99606528, 0.99792416, 0.49286436],
    2440                                                                                                  [      -6.26922357, -0.00128638, 0.00078860, 7.26793719, 0.99606691, 0.99792502, 0.49286478],
    2441                                                                                                  [      -6.26923223, -0.00128585, 0.00078828, 7.26794639, 0.99606854, 0.99792588, 0.49286521],
    2442                                                                                                  [      -6.26924086, -0.00128531, 0.00078795, 7.26795555, 0.99607017, 0.99792673, 0.49286564],
    2443                                                                                                  [      -6.26924947, -0.00128478, 0.00078763, 7.26796468, 0.99607180, 0.99792759, 0.49286605],
    2444                                                                                                  [      -6.26925804, -0.00128425, 0.00078730, 7.26797379, 0.99607343, 0.99792845, 0.49286646],
    2445                                                                                                  [      -6.26926658, -0.00128372, 0.00078698, 7.26798286, 0.99607506, 0.99792930, 0.49286689],
    2446                                                                                                  [      -6.26927510, -0.00128319, 0.00078665, 7.26799191, 0.99607668, 0.99793016, 0.49286730],
    2447                                                                                                  [      -6.26928358, -0.00128266, 0.00078633, 7.26800092, 0.99607831, 0.99793101, 0.49286770],
    2448                                                                                                  [      -6.26929204, -0.00128213, 0.00078601, 7.26800991, 0.99607993, 0.99793186, 0.49286812],
    2449                                                                                                  [      -6.26930047, -0.00128160, 0.00078568, 7.26801887, 0.99608155, 0.99793272, 0.49286854],
    2450                                                                                                  [      -6.26930887, -0.00128107, 0.00078536, 7.26802779, 0.99608317, 0.99793357, 0.49286895],
    2451                                                                                                  [      -6.26931724, -0.00128054, 0.00078504, 7.26803669, 0.99608479, 0.99793442, 0.49286937],
    2452                                                                                                  [      -6.26932558, -0.00128002, 0.00078471, 7.26804556, 0.99608641, 0.99793527, 0.49286977],
    2453                                                                                                  [      -6.26933389, -0.00127949, 0.00078439, 7.26805440, 0.99608802, 0.99793612, 0.49287019],
    2454                                                                                                  [      -6.26934217, -0.00127896, 0.00078407, 7.26806321, 0.99608964, 0.99793697, 0.49287058],
    2455                                                                                                  [      -6.26935043, -0.00127844, 0.00078375, 7.26807199, 0.99609125, 0.99793782, 0.49287100],
    2456                                                                                                  [      -6.26935866, -0.00127791, 0.00078342, 7.26808075, 0.99609287, 0.99793867, 0.49287142],
    2457                                                                                                  [      -6.26936686, -0.00127738, 0.00078310, 7.26808947, 0.99609448, 0.99793951, 0.49287182],
    2458                                                                                                  [      -6.26937503, -0.00127686, 0.00078278, 7.26809817, 0.99609609, 0.99794036, 0.49287224],
    2459                                                                                                  [      -6.26938317, -0.00127634, 0.00078246, 7.26810683, 0.99609769, 0.99794120, 0.49287263],
    2460                                                                                                  [      -6.26939129, -0.00127581, 0.00078214, 7.26811547, 0.99609930, 0.99794205, 0.49287302],
    2461                                                                                                  [      -6.26939937, -0.00127529, 0.00078182, 7.26812409, 0.99610091, 0.99794289, 0.49287345],
    2462                                                                                                  [      -6.26940743, -0.00127476, 0.00078150, 7.26813267, 0.99610251, 0.99794374, 0.49287384],
    2463                                                                                                  [      -6.26941547, -0.00127424, 0.00078118, 7.26814123, 0.99610411, 0.99794458, 0.49287423],
    2464                                                                                                  [      -6.26942347, -0.00127372, 0.00078086, 7.26814975, 0.99610572, 0.99794542, 0.49287464],
    2465                                                                                                  [      -6.26943145, -0.00127320, 0.00078054, 7.26815825, 0.99610732, 0.99794626, 0.49287504],
    2466                                                                                                  [      -6.26943940, -0.00127267, 0.00078022, 7.26816673, 0.99610892, 0.99794711, 0.49287543],
    2467                                                                                                  [      -6.26944732, -0.00127215, 0.00077990, 7.26817517, 0.99611051, 0.99794795, 0.49287581],
    2468                                                                                                  [      -6.26945522, -0.00127163, 0.00077958, 7.26818359, 0.99611211, 0.99794879, 0.49287621],
    2469                                                                                                  [      -6.26946309, -0.00127111, 0.00077926, 7.26819198, 0.99611370, 0.99794962, 0.49287661],
    2470                                                                                                  [      -6.26947093, -0.00127059, 0.00077895, 7.26820034, 0.99611530, 0.99795046, 0.49287701],
    2471                                                                                                  [      -6.26947875, -0.00127007, 0.00077863, 7.26820868, 0.99611689, 0.99795130, 0.49287739],
    2472                                                                                                  [      -6.26948654, -0.00126955, 0.00077831, 7.26821698, 0.99611848, 0.99795214, 0.49287779],
    2473                                                                                                  [      -6.26949430, -0.00126903, 0.00077799, 7.26822527, 0.99612007, 0.99795297, 0.49287817],
    2474                                                                                                  [      -6.26950204, -0.00126852, 0.00077768, 7.26823352, 0.99612166, 0.99795381, 0.49287857],
    2475                                                                                                  [      -6.26950975, -0.00126800, 0.00077736, 7.26824175, 0.99612325, 0.99795464, 0.49287896],
    2476                                                                                                  [      -6.26951743, -0.00126748, 0.00077704, 7.26824995, 0.99612484, 0.99795548, 0.49287934],
    2477                                                                                                  [      -6.26952509, -0.00126696, 0.00077673, 7.26825813, 0.99612642, 0.99795631, 0.49287973],
    2478                                                                                                  [      -6.26953272, -0.00126645, 0.00077641, 7.26826627, 0.99612800, 0.99795714, 0.49288012],
    2479                                                                                                  [      -6.26954033, -0.00126593, 0.00077609, 7.26827440, 0.99612959, 0.99795798, 0.49288050],
    2480                                                                                                  [      -6.26954791, -0.00126541, 0.00077578, 7.26828249, 0.99613117, 0.99795881, 0.49288087],
    2481                                                                                                  [      -6.26955546, -0.00126490, 0.00077546, 7.26829056, 0.99613275, 0.99795964, 0.49288126],
    2482                                                                                                  [      -6.26956299, -0.00126438, 0.00077515, 7.26829860, 0.99613433, 0.99796047, 0.49288164],
    2483                                                                                                  [      -6.26957049, -0.00126387, 0.00077483, 7.26830662, 0.99613590, 0.99796130, 0.49288203],
    2484                                                                                                  [      -6.26957797, -0.00126335, 0.00077452, 7.26831461, 0.99613748, 0.99796213, 0.49288240],
    2485                                                                                                  [      -6.26958542, -0.00126284, 0.00077420, 7.26832258, 0.99613905, 0.99796296, 0.49288278],
    2486                                                                                                  [      -6.26959285, -0.00126233, 0.00077389, 7.26833052, 0.99614063, 0.99796378, 0.49288317],
    2487                                                                                                  [      -6.26960025, -0.00126181, 0.00077357, 7.26833844, 0.99614220, 0.99796461, 0.49288354],
    2488                                                                                                  [      -6.26960763, -0.00126130, 0.00077326, 7.26834632, 0.99614377, 0.99796544, 0.49288392],
    2489                                                                                                  [      -6.26961498, -0.00126079, 0.00077295, 7.26835419, 0.99614534, 0.99796626, 0.49288432],
    2490                                                                                                  [      -6.26962230, -0.00126028, 0.00077263, 7.26836203, 0.99614691, 0.99796709, 0.49288467],
    2491                                                                                                  [      -6.26962961, -0.00125977, 0.00077232, 7.26836984, 0.99614847, 0.99796791, 0.49288504],
    2492                                                                                                  [      -6.26963688, -0.00125926, 0.00077201, 7.26837763, 0.99615004, 0.99796874, 0.49288540],
    2493                                                                                                  [      -6.26964414, -0.00125874, 0.00077170, 7.26838539, 0.99615160, 0.99796956, 0.49288580],
    2494                                                                                                  [      -6.26965137, -0.00125823, 0.00077138, 7.26839313, 0.99615317, 0.99797038, 0.49288618],
    2495                                                                                                  [      -6.26965857, -0.00125772, 0.00077107, 7.26840084, 0.99615473, 0.99797120, 0.49288651],
    2496                                                                                                  [      -6.26966575, -0.00125722, 0.00077076, 7.26840853, 0.99615629, 0.99797202, 0.49288691],
    2497                                                                                                  [      -6.26967290, -0.00125671, 0.00077045, 7.26841620, 0.99615785, 0.99797284, 0.49288729],
    2498                                                                                                  [      -6.26968003, -0.00125620, 0.00077014, 7.26842384, 0.99615941, 0.99797366, 0.49288765],
    2499                                                                                                  [      -6.26968714, -0.00125569, 0.00076983, 7.26843145, 0.99616097, 0.99797448, 0.49288801],
    2500                                                                                                  [      -6.26969422, -0.00125518, 0.00076952, 7.26843904, 0.99616252, 0.99797530, 0.49288835],
    2501                                                                                                  [      -6.26970128, -0.00125468, 0.00076920, 7.26844661, 0.99616408, 0.99797612, 0.49288872],
    2502                                                                                                  [      -6.26970832, -0.00125417, 0.00076889, 7.26845415, 0.99616563, 0.99797694, 0.49288910],
    2503                                                                                                  [      -6.26971533, -0.00125366, 0.00076858, 7.26846167, 0.99616718, 0.99797775, 0.49288946],
    2504                                                                                                  [      -6.26972232, -0.00125316, 0.00076827, 7.26846916, 0.99616873, 0.99797857, 0.49288983],
    2505                                                                                                  [      -6.26972928, -0.00125265, 0.00076797, 7.26847663, 0.99617028, 0.99797938, 0.49289019],
    2506                                                                                                  [      -6.26973622, -0.00125214, 0.00076766, 7.26848408, 0.99617183, 0.99798020, 0.49289056],
    2507                                                                                                  [      -6.26974314, -0.00125164, 0.00076735, 7.26849150, 0.99617338, 0.99798101, 0.49289092],
    2508                                                                                                  [      -6.26975003, -0.00125114, 0.00076704, 7.26849890, 0.99617492, 0.99798183, 0.49289126],
    2509                                                                                                  [      -6.26975691, -0.00125063, 0.00076673, 7.26850627, 0.99617647, 0.99798264, 0.49289162],
    2510                                                                                                  [      -6.26976375, -0.00125013, 0.00076642, 7.26851363, 0.99617801, 0.99798345, 0.49289199],
    2511                                                                                                  [      -6.26977058, -0.00124962, 0.00076611, 7.26852095, 0.99617955, 0.99798426, 0.49289234],
    2512                                                                                                  [      -6.26977738, -0.00124912, 0.00076581, 7.26852826, 0.99618109, 0.99798507, 0.49289269],
    2513                                                                                                  [      -6.26978416, -0.00124862, 0.00076550, 7.26853554, 0.99618263, 0.99798588, 0.49289304],
    2514                                                                                                  [      -6.26979092, -0.00124812, 0.00076519, 7.26854280, 0.99618417, 0.99798669, 0.49289341],
    2515                                                                                                  [      -6.26979765, -0.00124762, 0.00076488, 7.26855003, 0.99618571, 0.99798750, 0.49289376],
    2516                                                                                                  [      -6.26980436, -0.00124711, 0.00076458, 7.26855725, 0.99618724, 0.99798831, 0.49289409],
    2517                                                                                                  [      -6.26981105, -0.00124661, 0.00076427, 7.26856444, 0.99618878, 0.99798912, 0.49289444],
    2518                                                                                                  [      -6.26981772, -0.00124611, 0.00076396, 7.26857160, 0.99619031, 0.99798992, 0.49289482],
    2519                                                                                                  [      -6.26982436, -0.00124561, 0.00076366, 7.26857875, 0.99619184, 0.99799073, 0.49289516],
    2520                                                                                                  [      -6.26983098, -0.00124511, 0.00076335, 7.26858587, 0.99619337, 0.99799154, 0.49289554],
    2521                                                                                                  [      -6.26983758, -0.00124461, 0.00076305, 7.26859297, 0.99619490, 0.99799234, 0.49289586],
    2522                                                                                                  [      -6.26984416, -0.00124412, 0.00076274, 7.26860004, 0.99619643, 0.99799314, 0.49289620],
    2523                                                                                                  [      -6.26985071, -0.00124362, 0.00076244, 7.26860710, 0.99619796, 0.99799395, 0.49289657],
    2524                                                                                                  [      -6.26985725, -0.00124312, 0.00076213, 7.26861413, 0.99619949, 0.99799475, 0.49289690],
    2525                                                                                                  [      -6.26986376, -0.00124262, 0.00076183, 7.26862114, 0.99620101, 0.99799555, 0.49289724],
    2526                                                                                                  [      -6.26987025, -0.00124212, 0.00076152, 7.26862812, 0.99620253, 0.99799636, 0.49289757],
    2527                                                                                                  [      -6.26987672, -0.00124163, 0.00076122, 7.26863509, 0.99620406, 0.99799716, 0.49289792],
    2528                                                                                                  [      -6.26988316, -0.00124113, 0.00076091, 7.26864203, 0.99620558, 0.99799796, 0.49289828],
    2529                                                                                                  [      -6.26988959, -0.00124063, 0.00076061, 7.26864895, 0.99620710, 0.99799876, 0.49289862],
    2530                                                                                                  [      -6.26989599, -0.00124014, 0.00076031, 7.26865585, 0.99620862, 0.99799956, 0.49289895],
    2531                                                                                                  [      -6.26990237, -0.00123964, 0.00076000, 7.26866273, 0.99621013, 0.99800035, 0.49289931],
    2532                                                                                                  [      -6.26990873, -0.00123915, 0.00075970, 7.26866958, 0.99621165, 0.99800115, 0.49289965],
    2533                                                                                                  [      -6.26991507, -0.00123865, 0.00075940, 7.26867642, 0.99621317, 0.99800195, 0.49289998],
    2534                                                                                                  [      -6.26992139, -0.00123816, 0.00075909, 7.26868323, 0.99621468, 0.99800275, 0.49290032],
    2535                                                                                                  [      -6.26992769, -0.00123767, 0.00075879, 7.26869002, 0.99621619, 0.99800354, 0.49290066],
    2536                                                                                                  [      -6.26993396, -0.00123717, 0.00075849, 7.26869679, 0.99621770, 0.99800434, 0.49290100],
    2537                                                                                                  [      -6.26994022, -0.00123668, 0.00075819, 7.26870354, 0.99621921, 0.99800513, 0.49290132],
    2538                                                                                                  [      -6.26994645, -0.00123619, 0.00075789, 7.26871027, 0.99622072, 0.99800593, 0.49290166],
    2539                                                                                                  [      -6.26995267, -0.00123569, 0.00075758, 7.26871697, 0.99622223, 0.99800672, 0.49290199],
    2540                                                                                                  [      -6.26995886, -0.00123520, 0.00075728, 7.26872366, 0.99622374, 0.99800751, 0.49290231],
    2541                                                                                                  [      -6.26996503, -0.00123471, 0.00075698, 7.26873032, 0.99622524, 0.99800831, 0.49290268],
    2542                                                                                                  [      -6.26997119, -0.00123422, 0.00075668, 7.26873697, 0.99622675, 0.99800910, 0.49290298],
    2543                                                                                                  [      -6.26997732, -0.00123373, 0.00075638, 7.26874359, 0.99622825, 0.99800989, 0.49290333],
    2544                                                                                                  [      -6.26998343, -0.00123324, 0.00075608, 7.26875019, 0.99622975, 0.99801068, 0.49290366],
    2545                                                                                                  [      -6.26998952, -0.00123275, 0.00075578, 7.26875677, 0.99623126, 0.99801147, 0.49290397],
    2546                                                                                                  [      -6.26999559, -0.00123226, 0.00075548, 7.26876333, 0.99623275, 0.99801226, 0.49290432],
    2547                                                                                                  [      -6.27000164, -0.00123177, 0.00075518, 7.26876987, 0.99623425, 0.99801305, 0.49290464],
    2548                                                                                                  [      -6.27000767, -0.00123128, 0.00075488, 7.26877639, 0.99623575, 0.99801384, 0.49290499],
    2549                                                                                                  [      -6.27001368, -0.00123079, 0.00075458, 7.26878289, 0.99623725, 0.99801462, 0.49290530],
    2550                                                                                                  [      -6.27001968, -0.00123031, 0.00075428, 7.26878937, 0.99623874, 0.99801541, 0.49290562],
    2551                                                                                                  [      -6.27002565, -0.00122982, 0.00075399, 7.26879583, 0.99624024, 0.99801620, 0.49290596],
    2552                                                                                                  [      -6.27003160, -0.00122933, 0.00075369, 7.26880227, 0.99624173, 0.99801698, 0.49290628],
    2553                                                                                                  [      -6.27003753, -0.00122884, 0.00075339, 7.26880869, 0.99624322, 0.99801777, 0.49290660],
    2554                                                                                                  [      -6.27004344, -0.00122836, 0.00075309, 7.26881508, 0.99624471, 0.99801855, 0.49290693],
    2555                                                                                                  [      -6.27004933, -0.00122787, 0.00075279, 7.26882146, 0.99624620, 0.99801934, 0.49290725],
    2556                                                                                                  [      -6.27005521, -0.00122739, 0.00075250, 7.26882782, 0.99624769, 0.99802012, 0.49290756],
    2557                                                                                                  [      -6.27006106, -0.00122690, 0.00075220, 7.26883416, 0.99624917, 0.99802090, 0.49290790],
    2558                                                                                                  [      -6.27006690, -0.00122642, 0.00075190, 7.26884048, 0.99625066, 0.99802168, 0.49290821],
    2559                                                                                                  [      -6.27007271, -0.00122593, 0.00075160, 7.26884678, 0.99625214, 0.99802246, 0.49290851],
    2560                                                                                                  [      -6.27007851, -0.00122545, 0.00075131, 7.26885306, 0.99625363, 0.99802324, 0.49290885],
    2561                                                                                                  [      -6.27008428, -0.00122496, 0.00075101, 7.26885932, 0.99625511, 0.99802402, 0.49290916],
    2562                                                                                                  [      -6.27009004, -0.00122448, 0.00075072, 7.26886556, 0.99625659, 0.99802480, 0.49290948],
    2563                                                                                                  [      -6.27009578, -0.00122400, 0.00075042, 7.26887178, 0.99625807, 0.99802558, 0.49290980],
    2564                                                                                                  [      -6.27010150, -0.00122351, 0.00075012, 7.26887799, 0.99625955, 0.99802636, 0.49291012],
    2565                                                                                                  [      -6.27010720, -0.00122303, 0.00074983, 7.26888417, 0.99626102, 0.99802714, 0.49291045],
    2566                                                                                                  [      -6.27011288, -0.00122255, 0.00074953, 7.26889033, 0.99626250, 0.99802792, 0.49291075],
    2567                                                                                                  [      -6.27011855, -0.00122207, 0.00074924, 7.26889648, 0.99626398, 0.99802869, 0.49291108],
    2568                                                                                                  [      -6.27012419, -0.00122159, 0.00074894, 7.26890260, 0.99626545, 0.99802947, 0.49291137],
    2569                                                                                                  [      -6.27012982, -0.00122111, 0.00074865, 7.26890871, 0.99626692, 0.99803024, 0.49291169],
    2570                                                                                                  [      -6.27013543, -0.00122063, 0.00074836, 7.26891480, 0.99626839, 0.99803102, 0.49291199],
    2571                                                                                                  [      -6.27014102, -0.00122015, 0.00074806, 7.26892087, 0.99626986, 0.99803179, 0.49291232],
    2572                                                                                                  [      -6.27014659, -0.00121967, 0.00074777, 7.26892692, 0.99627133, 0.99803257, 0.49291262],
    2573                                                                                                  [      -6.27015214, -0.00121919, 0.00074747, 7.26893295, 0.99627280, 0.99803334, 0.49291295],
    2574                                                                                                  [      -6.27015767, -0.00121871, 0.00074718, 7.26893897, 0.99627427, 0.99803411, 0.49291325],
    2575                                                                                                  [      -6.27016319, -0.00121823, 0.00074689, 7.26894496, 0.99627574, 0.99803488, 0.49291356],
    2576                                                                                                  [      -6.27016869, -0.00121775, 0.00074659, 7.26895094, 0.99627720, 0.99803565, 0.49291386],
    2577                                                                                                  [      -6.27017417, -0.00121727, 0.00074630, 7.26895690, 0.99627866, 0.99803642, 0.49291418],
    2578                                                                                                  [      -6.27017963, -0.00121680, 0.00074601, 7.26896284, 0.99628013, 0.99803719, 0.49291448],
    2579                                                                                                  [      -6.27018508, -0.00121632, 0.00074572, 7.26896876, 0.99628159, 0.99803796, 0.49291478],
    2580                                                                                                  [      -6.27019050, -0.00121584, 0.00074543, 7.26897466, 0.99628305, 0.99803873, 0.49291509],
    2581                                                                                                  [      -6.27019591, -0.00121537, 0.00074513, 7.26898055, 0.99628451, 0.99803950, 0.49291539],
    2582                                                                                                  [      -6.27020130, -0.00121489, 0.00074484, 7.26898641, 0.99628596, 0.99804027, 0.49291571],
    2583                                                                                                  [      -6.27020668, -0.00121441, 0.00074455, 7.26899226, 0.99628742, 0.99804103, 0.49291599],
    2584                                                                                                  [      -6.27021203, -0.00121394, 0.00074426, 7.26899810, 0.99628888, 0.99804180, 0.49291629],
    2585                                                                                                  [      -6.27021737, -0.00121346, 0.00074397, 7.26900391, 0.99629033, 0.99804257, 0.49291660],
    2586                                                                                                  [      -6.27022270, -0.00121299, 0.00074368, 7.26900971, 0.99629178, 0.99804333, 0.49291688],
    2587                                                                                                  [      -6.27022800, -0.00121252, 0.00074339, 7.26901548, 0.99629324, 0.99804410, 0.49291722],
    2588                                                                                                  [      -6.27023329, -0.00121204, 0.00074310, 7.26902124, 0.99629469, 0.99804486, 0.49291750],
    2589                                                                                                  [      -6.27023856, -0.00121157, 0.00074281, 7.26902699, 0.99629614, 0.99804562, 0.49291781],
    2590                                                                                                  [      -6.27024381, -0.00121110, 0.00074252, 7.26903271, 0.99629759, 0.99804639, 0.49291812],
    2591                                                                                                  [      -6.27024904, -0.00121062, 0.00074223, 7.26903842, 0.99629903, 0.99804715, 0.49291840],
    2592                                                                                                  [      -6.27025426, -0.00121015, 0.00074194, 7.26904411, 0.99630048, 0.99804791, 0.49291870],
    2593                                                                                                  [      -6.27025946, -0.00120968, 0.00074165, 7.26904979, 0.99630193, 0.99804867, 0.49291902],
    2594                                                                                                  [      -6.27026465, -0.00120921, 0.00074136, 7.26905544, 0.99630337, 0.99804943, 0.49291932],
    2595                                                                                                  [      -6.27026982, -0.00120874, 0.00074107, 7.26906108, 0.99630481, 0.99805019, 0.49291960],
    2596                                                                                                  [      -6.27027497, -0.00120827, 0.00074078, 7.26906670, 0.99630626, 0.99805095, 0.49291988],
    2597                                                                                                  [      -6.27028010, -0.00120780, 0.00074050, 7.26907231, 0.99630770, 0.99805171, 0.49292018],
    2598                                                                                                  [      -6.27028522, -0.00120732, 0.00074021, 7.26907789, 0.99630914, 0.99805247, 0.49292047],
    2599                                                                                                  [      -6.27029032, -0.00120686, 0.00073992, 7.26908347, 0.99631057, 0.99805322, 0.49292077],
    2600                                                                                                  [      -6.27029541, -0.00120639, 0.00073963, 7.26908902, 0.99631201, 0.99805398, 0.49292106],
    2601                                                                                                  [      -6.27030047, -0.00120592, 0.00073934, 7.26909456, 0.99631345, 0.99805474, 0.49292137],
    2602                                                                                                  [      -6.27030552, -0.00120545, 0.00073906, 7.26910008, 0.99631488, 0.99805549, 0.49292164],
    2603                                                                                                  [      -6.27031056, -0.00120498, 0.00073877, 7.26910558, 0.99631632, 0.99805625, 0.49292193],
    2604                                                                                                  [      -6.27031558, -0.00120451, 0.00073848, 7.26911107, 0.99631775, 0.99805700, 0.49292223],
    2605                                                                                                  [      -6.27032058, -0.00120404, 0.00073820, 7.26911654, 0.99631918, 0.99805776, 0.49292252],
    2606                                                                                                  [      -6.27032557, -0.00120358, 0.00073791, 7.26912199, 0.99632061, 0.99805851, 0.49292278],
    2607                                                                                                  [      -6.27033054, -0.00120311, 0.00073763, 7.26912743, 0.99632204, 0.99805926, 0.49292312],
    2608                                                                                                  [      -6.27033549, -0.00120264, 0.00073734, 7.26913285, 0.99632347, 0.99806002, 0.49292338],
    2609                                                                                                  [      -6.27034043, -0.00120218, 0.00073705, 7.26913825, 0.99632490, 0.99806077, 0.49292367],
    2610                                                                                                  [      -6.27034536, -0.00120171, 0.00073677, 7.26914364, 0.99632633, 0.99806152, 0.49292394],
    2611                                                                                                  [      -6.27035026, -0.00120125, 0.00073648, 7.26914902, 0.99632775, 0.99806227, 0.49292425],
    2612                                                                                                  [      -6.27035515, -0.00120078, 0.00073620, 7.26915437, 0.99632918, 0.99806302, 0.49292452],
    2613                                                                                                  [      -6.27036003, -0.00120032, 0.00073591, 7.26915971, 0.99633060, 0.99806377, 0.49292480],
    2614                                                                                                  [      -6.27036489, -0.00119985, 0.00073563, 7.26916504, 0.99633202, 0.99806452, 0.49292511],
    2615                                                                                                  [      -6.27036973, -0.00119939, 0.00073535, 7.26917034, 0.99633344, 0.99806527, 0.49292536],
    2616                                                                                                  [      -6.27037456, -0.00119892, 0.00073506, 7.26917564, 0.99633486, 0.99806601, 0.49292567],
    2617                                                                                                  [      -6.27037937, -0.00119846, 0.00073478, 7.26918091, 0.99633628, 0.99806676, 0.49292595],
    2618                                                                                                  [      -6.27038417, -0.00119800, 0.00073449, 7.26918617, 0.99633770, 0.99806751, 0.49292622],
    2619                                                                                                  [      -6.27038895, -0.00119754, 0.00073421, 7.26919142, 0.99633912, 0.99806825, 0.49292651],
    2620                                                                                                  [      -6.27039372, -0.00119707, 0.00073393, 7.26919664, 0.99634053, 0.99806900, 0.49292678],
    2621                                                                                                  [      -6.27039847, -0.00119661, 0.00073364, 7.26920186, 0.99634195, 0.99806974, 0.49292707],
    2622                                                                                                  [      -6.27040321, -0.00119615, 0.00073336, 7.26920706, 0.99634336, 0.99807049, 0.49292736],
    2623                                                                                                  [      -6.27040793, -0.00119569, 0.00073308, 7.26921224, 0.99634477, 0.99807123, 0.49292762],
    2624                                                                                                  [      -6.27041263, -0.00119523, 0.00073280, 7.26921740, 0.99634618, 0.99807198, 0.49292790],
    2625                                                                                                  [      -6.27041732, -0.00119477, 0.00073251, 7.26922256, 0.99634759, 0.99807272, 0.49292816],
    2626                                                                                                  [      -6.27042200, -0.00119431, 0.00073223, 7.26922769, 0.99634900, 0.99807346, 0.49292845],
    2627                                                                                                  [      -6.27042666, -0.00119385, 0.00073195, 7.26923281, 0.99635041, 0.99807420, 0.49292873],
    2628                                                                                                  [      -6.27043131, -0.00119339, 0.00073167, 7.26923792, 0.99635182, 0.99807494, 0.49292902],
    2629                                                                                                  [      -6.27043594, -0.00119293, 0.00073139, 7.26924301, 0.99635322, 0.99807568, 0.49292929],
    2630                                                                                                  [      -6.27044055, -0.00119247, 0.00073111, 7.26924808, 0.99635463, 0.99807642, 0.49292955],
    2631                                                                                                  [      -6.27044516, -0.00119201, 0.00073083, 7.26925314, 0.99635603, 0.99807716, 0.49292983],
    2632                                                                                                  [      -6.27044974, -0.00119155, 0.00073054, 7.26925819, 0.99635743, 0.99807790, 0.49293011],
    2633                                                                                                  [      -6.27045432, -0.00119110, 0.00073026, 7.26926322, 0.99635884, 0.99807864, 0.49293037],
    2634                                                                                                  [      -6.27045887, -0.00119064, 0.00072998, 7.26926823, 0.99636024, 0.99807938, 0.49293066],
    2635                                                                                                  [      -6.27046342, -0.00119018, 0.00072970, 7.26927323, 0.99636164, 0.99808011, 0.49293095],
    2636                                                                                                  [      -6.27046795, -0.00118973, 0.00072942, 7.26927822, 0.99636303, 0.99808085, 0.49293118],
    2637                                                                                                  [      -6.27047246, -0.00118927, 0.00072914, 7.26928319, 0.99636443, 0.99808158, 0.49293146],
    2638                                                                                                  [      -6.27047696, -0.00118881, 0.00072887, 7.26928815, 0.99636583, 0.99808232, 0.49293175],
    2639                                                                                                  [      -6.27048145, -0.00118836, 0.00072859, 7.26929309, 0.99636722, 0.99808305, 0.49293201],
    2640                                                                                                  [      -6.27048592, -0.00118790, 0.00072831, 7.26929802, 0.99636862, 0.99808379, 0.49293228],
    2641                                                                                                  [      -6.27049038, -0.00118745, 0.00072803, 7.26930293, 0.99637001, 0.99808452, 0.49293255],
    2642                                                                                                  [      -6.27049482, -0.00118699, 0.00072775, 7.26930783, 0.99637140, 0.99808526, 0.49293281],
    2643                                                                                                  [      -6.27049925, -0.00118654, 0.00072747, 7.26931271, 0.99637279, 0.99808599, 0.49293309],
    2644                                                                                                  [      -6.27050366, -0.00118609, 0.00072719, 7.26931758, 0.99637418, 0.99808672, 0.49293334],
    2645                                                                                                  [      -6.27050807, -0.00118563, 0.00072692, 7.26932243, 0.99637557, 0.99808745, 0.49293360],
    2646                                                                                                  [      -6.27051245, -0.00118518, 0.00072664, 7.26932727, 0.99637696, 0.99808818, 0.49293390],
    2647                                                                                                  [      -6.27051683, -0.00118473, 0.00072636, 7.26933210, 0.99637835, 0.99808891, 0.49293415],
    2648                                                                                                  [      -6.27052119, -0.00118427, 0.00072608, 7.26933691, 0.99637973, 0.99808964, 0.49293444],
    2649                                                                                                  [      -6.27052553, -0.00118382, 0.00072581, 7.26934171, 0.99638112, 0.99809037, 0.49293467],
    2650                                                                                                  [      -6.27052986, -0.00118337, 0.00072553, 7.26934649, 0.99638250, 0.99809110, 0.49293494],
    2651                                                                                                  [      -6.27053418, -0.00118292, 0.00072525, 7.26935126, 0.99638388, 0.99809183, 0.49293521],
    2652                                                                                                  [      -6.27053849, -0.00118247, 0.00072498, 7.26935602, 0.99638526, 0.99809256, 0.49293547],
    2653                                                                                                  [      -6.27054278, -0.00118202, 0.00072470, 7.26936076, 0.99638664, 0.99809328, 0.49293575],
    2654                                                                                                  [      -6.27054706, -0.00118157, 0.00072442, 7.26936549, 0.99638802, 0.99809401, 0.49293600],
    2655                                                                                                  [      -6.27055132, -0.00118112, 0.00072415, 7.26937020, 0.99638940, 0.99809474, 0.49293625],
    2656                                                                                                  [      -6.27055557, -0.00118067, 0.00072387, 7.26937491, 0.99639078, 0.99809546, 0.49293651],
    2657                                                                                                  [      -6.27055981, -0.00118022, 0.00072360, 7.26937959, 0.99639215, 0.99809619, 0.49293677],
    2658                                                                                                  [      -6.27056403, -0.00117977, 0.00072332, 7.26938427, 0.99639353, 0.99809691, 0.49293703],
    2659                                                                                                  [      -6.27056825, -0.00117932, 0.00072305, 7.26938893, 0.99639490, 0.99809763, 0.49293729],
    2660                                                                                                  [      -6.27057244, -0.00117887, 0.00072277, 7.26939357, 0.99639628, 0.99809836, 0.49293754],
    2661                                                                                                  [      -6.27057663, -0.00117842, 0.00072250, 7.26939820, 0.99639765, 0.99809908, 0.49293783],
    2662                                                                                                  [      -6.27058080, -0.00117798, 0.00072222, 7.26940282, 0.99639902, 0.99809980, 0.49293807],
    2663                                                                                                  [      -6.27058496, -0.00117753, 0.00072195, 7.26940743, 0.99640039, 0.99810052, 0.49293833],
    2664                                                                                                  [      -6.27058910, -0.00117708, 0.00072167, 7.26941202, 0.99640176, 0.99810124, 0.49293858],
    2665                                                                                                  [      -6.27059324, -0.00117663, 0.00072140, 7.26941660, 0.99640312, 0.99810196, 0.49293885],
    2666                                                                                                  [      -6.27059736, -0.00117619, 0.00072113, 7.26942117, 0.99640449, 0.99810268, 0.49293910],
    2667                                                                                                  [      -6.27060146, -0.00117574, 0.00072085, 7.26942572, 0.99640586, 0.99810340, 0.49293936],
    2668                                                                                                  [      -6.27060556, -0.00117530, 0.00072058, 7.26943026, 0.99640722, 0.99810412, 0.49293961],
    2669                                                                                                  [      -6.27060964, -0.00117485, 0.00072031, 7.26943479, 0.99640859, 0.99810484, 0.49293988],
    2670                                                                                                  [      -6.27061371, -0.00117441, 0.00072004, 7.26943930, 0.99640995, 0.99810556, 0.49294014],
    2671                                                                                                  [      -6.27061776, -0.00117396, 0.00071976, 7.26944380, 0.99641131, 0.99810628, 0.49294037],
    2672                                                                                                  [      -6.27062180, -0.00117352, 0.00071949, 7.26944829, 0.99641267, 0.99810699, 0.49294061],
    2673                                                                                                  [      -6.27062583, -0.00117307, 0.00071922, 7.26945276, 0.99641403, 0.99810771, 0.49294091],
    2674                                                                                                  [      -6.27062985, -0.00117263, 0.00071895, 7.26945722, 0.99641539, 0.99810842, 0.49294113],
    2675                                                                                                  [      -6.27063386, -0.00117219, 0.00071867, 7.26946167, 0.99641675, 0.99810914, 0.49294137],
    2676                                                                                                  [      -6.27063785, -0.00117174, 0.00071840, 7.26946611, 0.99641810, 0.99810985, 0.49294161],
    2677                                                                                                  [      -6.27064183, -0.00117130, 0.00071813, 7.26947053, 0.99641946, 0.99811057, 0.49294187],
    2678                                                                                                  [      -6.27064580, -0.00117086, 0.00071786, 7.26947494, 0.99642081, 0.99811128, 0.49294216],
    2679                                                                                                  [      -6.27064976, -0.00117042, 0.00071759, 7.26947934, 0.99642217, 0.99811199, 0.49294239],
    2680                                                                                                  [      -6.27065370, -0.00116997, 0.00071732, 7.26948372, 0.99642352, 0.99811271, 0.49294263],
    2681                                                                                                  [      -6.27065763, -0.00116953, 0.00071705, 7.26948810, 0.99642487, 0.99811342, 0.49294289],
    2682                                                                                                  [      -6.27066155, -0.00116909, 0.00071678, 7.26949246, 0.99642622, 0.99811413, 0.49294314],
    2683                                                                                                  [      -6.27066546, -0.00116865, 0.00071651, 7.26949680, 0.99642757, 0.99811484, 0.49294338],
    2684                                                                                                  [      -6.27066935, -0.00116821, 0.00071624, 7.26950114, 0.99642892, 0.99811555, 0.49294362],
    2685                                                                                                  [      -6.27067323, -0.00116777, 0.00071597, 7.26950546, 0.99643026, 0.99811626, 0.49294387],
    2686                                                                                                  [      -6.27067711, -0.00116733, 0.00071570, 7.26950977, 0.99643161, 0.99811697, 0.49294414],
    2687                                                                                                  [      -6.27068096, -0.00116689, 0.00071543, 7.26951407, 0.99643296, 0.99811768, 0.49294435],
    2688                                                                                                  [      -6.27068481, -0.00116645, 0.00071516, 7.26951836, 0.99643430, 0.99811839, 0.49294462],
    2689                                                                                                  [      -6.27068865, -0.00116601, 0.00071489, 7.26952263, 0.99643564, 0.99811909, 0.49294486],
    2690                                                                                                  [      -6.27069247, -0.00116558, 0.00071462, 7.26952689, 0.99643699, 0.99811980, 0.49294512],
    2691                                                                                                  [      -6.27069628, -0.00116514, 0.00071435, 7.26953114, 0.99643833, 0.99812051, 0.49294533],
    2692                                                                                                  [      -6.27070008, -0.00116470, 0.00071409, 7.26953538, 0.99643967, 0.99812121, 0.49294559],
    2693                                                                                                  [      -6.27070387, -0.00116426, 0.00071382, 7.26953961, 0.99644101, 0.99812192, 0.49294582],
    2694                                                                                                  [      -6.27070765, -0.00116383, 0.00071355, 7.26954382, 0.99644235, 0.99812262, 0.49294607],
    2695                                                                                                  [      -6.27071141, -0.00116339, 0.00071328, 7.26954802, 0.99644368, 0.99812333, 0.49294633],
    2696                                                                                                  [      -6.27071516, -0.00116295, 0.00071301, 7.26955221, 0.99644502, 0.99812403, 0.49294657],
    2697                                                                                                  [      -6.27071891, -0.00116252, 0.00071275, 7.26955639, 0.99644635, 0.99812474, 0.49294678],
    2698                                                                                                  [      -6.27072264, -0.00116208, 0.00071248, 7.26956056, 0.99644769, 0.99812544, 0.49294701],
    2699                                                                                                  [      -6.27072636, -0.00116165, 0.00071221, 7.26956471, 0.99644902, 0.99812614, 0.49294726],
    2700                                                                                                  [      -6.27073006, -0.00116121, 0.00071195, 7.26956885, 0.99645035, 0.99812684, 0.49294753],
    2701                                                                                                  [      -6.27073376, -0.00116078, 0.00071168, 7.26957298, 0.99645169, 0.99812755, 0.49294774],
    2702                                                                                                  [      -6.27073744, -0.00116034, 0.00071141, 7.26957710, 0.99645302, 0.99812825, 0.49294799],
    2703                                                                                                  [      -6.27074112, -0.00115991, 0.00071115, 7.26958121, 0.99645434, 0.99812895, 0.49294824],
    2704                                                                                                  [      -6.27074478, -0.00115947, 0.00071088, 7.26958531, 0.99645567, 0.99812965, 0.49294849],
    2705                                                                                                  [      -6.27074843, -0.00115904, 0.00071062, 7.26958939, 0.99645700, 0.99813035, 0.49294867],
    2706                                                                                                  [      -6.27075207, -0.00115861, 0.00071035, 7.26959347, 0.99645833, 0.99813104, 0.49294894],
    2707                                                                                                  [      -6.27075570, -0.00115817, 0.00071008, 7.26959753, 0.99645965, 0.99813174, 0.49294918],
    2708                                                                                                  [      -6.27075932, -0.00115774, 0.00070982, 7.26960158, 0.99646098, 0.99813244, 0.49294940],
    2709                                                                                                  [      -6.27076293, -0.00115731, 0.00070955, 7.26960562, 0.99646230, 0.99813314, 0.49294966],
    2710                                                                                                  [      -6.27076652, -0.00115688, 0.00070929, 7.26960965, 0.99646362, 0.99813383, 0.49294988],
    2711                                                                                                  [      -6.27077011, -0.00115644, 0.00070902, 7.26961366, 0.99646494, 0.99813453, 0.49295014],
    2712                                                                                                  [      -6.27077368, -0.00115601, 0.00070876, 7.26961767, 0.99646626, 0.99813523, 0.49295035],
    2713                                                                                                  [      -6.27077724, -0.00115558, 0.00070850, 7.26962166, 0.99646758, 0.99813592, 0.49295058],
    2714                                                                                                  [      -6.27078080, -0.00115515, 0.00070823, 7.26962565, 0.99646890, 0.99813662, 0.49295081],
    2715                                                                                                  [      -6.27078434, -0.00115472, 0.00070797, 7.26962962, 0.99647022, 0.99813731, 0.49295107],
    2716                                                                                                  [      -6.27078787, -0.00115429, 0.00070770, 7.26963358, 0.99647154, 0.99813800, 0.49295129],
    2717                                                                                                  [      -6.27079139, -0.00115386, 0.00070744, 7.26963753, 0.99647285, 0.99813870, 0.49295151],
    2718                                                                                                  [      -6.27079490, -0.00115343, 0.00070718, 7.26964147, 0.99647417, 0.99813939, 0.49295175],
    2719                                                                                                  [      -6.27079840, -0.00115300, 0.00070692, 7.26964540, 0.99647548, 0.99814008, 0.49295200],
    2720                                                                                                  [      -6.27080189, -0.00115257, 0.00070665, 7.26964931, 0.99647679, 0.99814077, 0.49295221],
    2721                                                                                                  [      -6.27080537, -0.00115215, 0.00070639, 7.26965322, 0.99647810, 0.99814146, 0.49295246],
    2722                                                                                                  [      -6.27080883, -0.00115172, 0.00070613, 7.26965711, 0.99647941, 0.99814215, 0.49295267],
    2723                                                                                                  [      -6.27081229, -0.00115129, 0.00070586, 7.26966100, 0.99648072, 0.99814284, 0.49295289],
    2724                                                                                                  [      -6.27081574, -0.00115086, 0.00070560, 7.26966487, 0.99648203, 0.99814353, 0.49295314],
    2725                                                                                                  [      -6.27081917, -0.00115044, 0.00070534, 7.26966874, 0.99648334, 0.99814422, 0.49295337],
    2726                                                                                                  [      -6.27082260, -0.00115001, 0.00070508, 7.26967259, 0.99648465, 0.99814491, 0.49295357],
    2727                                                                                                  [      -6.27082601, -0.00114958, 0.00070482, 7.26967643, 0.99648595, 0.99814560, 0.49295381],
    2728                                                                                                  [      -6.27082942, -0.00114916, 0.00070456, 7.26968026, 0.99648726, 0.99814629, 0.49295404],
    2729                                                                                                  [      -6.27083281, -0.00114873, 0.00070430, 7.26968408, 0.99648856, 0.99814697, 0.49295428],
    2730                                                                                                  [      -6.27083620, -0.00114830, 0.00070403, 7.26968789, 0.99648986, 0.99814766, 0.49295451],
    2731                                                                                                  [      -6.27083957, -0.00114788, 0.00070377, 7.26969169, 0.99649117, 0.99814835, 0.49295473],
    2732                                                                                                  [      -6.27084294, -0.00114745, 0.00070351, 7.26969548, 0.99649247, 0.99814903, 0.49295497],
    2733                                                                                                  [      -6.27084629, -0.00114703, 0.00070325, 7.26969926, 0.99649377, 0.99814972, 0.49295518],
    2734                                                                                                  [      -6.27084964, -0.00114661, 0.00070299, 7.26970303, 0.99649507, 0.99815040, 0.49295540],
    2735                                                                                                  [      -6.27085297, -0.00114618, 0.00070273, 7.26970679, 0.99649636, 0.99815109, 0.49295563],
    2736                                                                                                  [      -6.27085630, -0.00114576, 0.00070247, 7.26971054, 0.99649766, 0.99815177, 0.49295584],
    2737                                                                                                  [      -6.27085961, -0.00114533, 0.00070221, 7.26971428, 0.99649896, 0.99815245, 0.49295609],
    2738                                                                                                  [      -6.27086292, -0.00114491, 0.00070195, 7.26971800, 0.99650025, 0.99815313, 0.49295629],
    2739                                                                                                  [      -6.27086621, -0.00114449, 0.00070169, 7.26972172, 0.99650155, 0.99815382, 0.49295653],
    2740                                                                                                  [      -6.27086950, -0.00114407, 0.00070144, 7.26972543, 0.99650284, 0.99815450, 0.49295673],
    2741                                                                                                  [      -6.27087277, -0.00114364, 0.00070118, 7.26972913, 0.99650413, 0.99815518, 0.49295696],
    2742                                                                                                  [      -6.27087604, -0.00114322, 0.00070092, 7.26973281, 0.99650542, 0.99815586, 0.49295720],
    2743                                                                                                  [      -6.27087929, -0.00114280, 0.00070066, 7.26973649, 0.99650671, 0.99815654, 0.49295739],
    2744                                                                                                  [      -6.27088254, -0.00114238, 0.00070040, 7.26974016, 0.99650800, 0.99815722, 0.49295764],
    2745                                                                                                  [      -6.27088577, -0.00114196, 0.00070014, 7.26974382, 0.99650929, 0.99815790, 0.49295785],
    2746                                                                                                  [      -6.27088900, -0.00114154, 0.00069989, 7.26974746, 0.99651058, 0.99815858, 0.49295811],
    2747                                                                                                  [      -6.27089222, -0.00114112, 0.00069963, 7.26975110, 0.99651187, 0.99815925, 0.49295829],
    2748                                                                                                  [      -6.27089543, -0.00114070, 0.00069937, 7.26975473, 0.99651315, 0.99815993, 0.49295850],
    2749                                                                                                  [      -6.27089862, -0.00114028, 0.00069911, 7.26975835, 0.99651444, 0.99816061, 0.49295875],
    2750                                                                                                  [      -6.27090181, -0.00113986, 0.00069886, 7.26976195, 0.99651572, 0.99816129, 0.49295895],
    2751                                                                                                  [      -6.27090499, -0.00113944, 0.00069860, 7.26976555, 0.99651700, 0.99816196, 0.49295918],
    2752                                                                                                  [      -6.27090816, -0.00113902, 0.00069834, 7.26976914, 0.99651829, 0.99816264, 0.49295938],
    2753                                                                                                  [      -6.27091132, -0.00113860, 0.00069809, 7.26977272, 0.99651957, 0.99816331, 0.49295963],
    2754                                                                                                  [      -6.27091447, -0.00113818, 0.00069783, 7.26977629, 0.99652085, 0.99816399, 0.49295982],
    2755                                                                                                  [      -6.27091762, -0.00113777, 0.00069757, 7.26977985, 0.99652213, 0.99816466, 0.49296003],
    2756                                                                                                  [      -6.27092075, -0.00113735, 0.00069732, 7.26978340, 0.99652340, 0.99816533, 0.49296028],
    2757                                                                                                  [      -6.27092387, -0.00113693, 0.00069706, 7.26978694, 0.99652468, 0.99816601, 0.49296049],
    2758                                                                                                  [      -6.27092699, -0.00113651, 0.00069681, 7.26979047, 0.99652596, 0.99816668, 0.49296071],
    2759                                                                                                  [      -6.27093009, -0.00113610, 0.00069655, 7.26979399, 0.99652723, 0.99816735, 0.49296091],
    2760                                                                                                  [      -6.27093319, -0.00113568, 0.00069629, 7.26979751, 0.99652851, 0.99816802, 0.49296112],
    2761                                                                                                  [      -6.27093627, -0.00113527, 0.00069604, 7.26980101, 0.99652978, 0.99816869, 0.49296137],
    2762                                                                                                  [      -6.27093935, -0.00113485, 0.00069578, 7.26980450, 0.99653105, 0.99816937, 0.49296155],
    2763                                                                                                  [      -6.27094242, -0.00113443, 0.00069553, 7.26980799, 0.99653232, 0.99817004, 0.49296176],
    2764                                                                                                  [      -6.27094548, -0.00113402, 0.00069528, 7.26981146, 0.99653360, 0.99817070, 0.49296198],
    2765                                                                                                  [      -6.27094853, -0.00113360, 0.00069502, 7.26981493, 0.99653487, 0.99817137, 0.49296221],
    2766                                                                                                  [      -6.27095157, -0.00113319, 0.00069477, 7.26981838, 0.99653613, 0.99817204, 0.49296241],
    2767                                                                                                  [      -6.27095461, -0.00113278, 0.00069451, 7.26982183, 0.99653740, 0.99817271, 0.49296261],
    2768                                                                                                  [      -6.27095763, -0.00113236, 0.00069426, 7.26982527, 0.99653867, 0.99817338, 0.49296284],
    2769                                                                                                  [      -6.27096065, -0.00113195, 0.00069401, 7.26982870, 0.99653994, 0.99817405, 0.49296306],
    2770                                                                                                  [      -6.27096365, -0.00113154, 0.00069375, 7.26983212, 0.99654120, 0.99817471, 0.49296324],
    2771                                                                                                  [      -6.27096665, -0.00113112, 0.00069350, 7.26983553, 0.99654246, 0.99817538, 0.49296349],
    2772                                                                                                  [      -6.27096964, -0.00113071, 0.00069325, 7.26983893, 0.99654373, 0.99817604, 0.49296367],
    2773                                                                                                  [      -6.27097262, -0.00113030, 0.00069299, 7.26984232, 0.99654499, 0.99817671, 0.49296390],
    2774                                                                                                  [      -6.27097559, -0.00112989, 0.00069274, 7.26984571, 0.99654625, 0.99817737, 0.49296411],
    2775                                                                                                  [      -6.27097856, -0.00112947, 0.00069249, 7.26984908, 0.99654751, 0.99817804, 0.49296432],
    2776                                                                                                  [      -6.27098151, -0.00112906, 0.00069224, 7.26985245, 0.99654877, 0.99817870, 0.49296451],
    2777                                                                                                  [      -6.27098446, -0.00112865, 0.00069198, 7.26985581, 0.99655003, 0.99817937, 0.49296475],
    2778                                                                                                  [      -6.27098739, -0.00112824, 0.00069173, 7.26985915, 0.99655129, 0.99818003, 0.49296493],
    2779                                                                                                  [      -6.27099032, -0.00112783, 0.00069148, 7.26986249, 0.99655255, 0.99818069, 0.49296516],
    2780                                                                                                  [      -6.27099324, -0.00112742, 0.00069123, 7.26986583, 0.99655380, 0.99818135, 0.49296535],
    2781                                                                                                  [      -6.27099616, -0.00112701, 0.00069098, 7.26986915, 0.99655506, 0.99818202, 0.49296556],
    2782                                                                                                  [      -6.27099906, -0.00112660, 0.00069072, 7.26987246, 0.99655631, 0.99818268, 0.49296577],
    2783                                                                                                  [      -6.27100196, -0.00112619, 0.00069047, 7.26987577, 0.99655756, 0.99818334, 0.49296597],
    2784                                                                                                  [      -6.27100484, -0.00112578, 0.00069022, 7.26987906, 0.99655882, 0.99818400, 0.49296619],
    2785                                                                                                  [      -6.27100772, -0.00112537, 0.00068997, 7.26988235, 0.99656007, 0.99818466, 0.49296639],
    2786                                                                                                  [      -6.27101059, -0.00112496, 0.00068972, 7.26988563, 0.99656132, 0.99818532, 0.49296663],
    2787                                                                                                  [      -6.27101345, -0.00112455, 0.00068947, 7.26988890, 0.99656257, 0.99818597, 0.49296681],
    2788                                                                                                  [      -6.27101631, -0.00112415, 0.00068922, 7.26989216, 0.99656382, 0.99818663, 0.49296699],
    2789                                                                                                  [      -6.27101915, -0.00112374, 0.00068897, 7.26989541, 0.99656506, 0.99818729, 0.49296722],
    2790                                                                                                  [      -6.27102199, -0.00112333, 0.00068872, 7.26989866, 0.99656631, 0.99818795, 0.49296743],
    2791                                                                                                  [      -6.27102482, -0.00112292, 0.00068847, 7.26990189, 0.99656756, 0.99818860, 0.49296764],
    2792                                                                                                  [      -6.27102764, -0.00112252, 0.00068822, 7.26990512, 0.99656880, 0.99818926, 0.49296783],
    2793                                                                                                  [      -6.27103045, -0.00112211, 0.00068797, 7.26990834, 0.99657005, 0.99818992, 0.49296802],
    2794                                                                                                  [      -6.27103326, -0.00112171, 0.00068772, 7.26991155, 0.99657129, 0.99819057, 0.49296822],
    2795                                                                                                  [      -6.27103606, -0.00112130, 0.00068747, 7.26991476, 0.99657253, 0.99819123, 0.49296843],
    2796                                                                                                  [      -6.27103885, -0.00112089, 0.00068723, 7.26991795, 0.99657377, 0.99819188, 0.49296863],
    2797                                                                                                  [      -6.27104163, -0.00112049, 0.00068698, 7.26992114, 0.99657501, 0.99819253, 0.49296882],
    2798                                                                                                  [      -6.27104440, -0.00112008, 0.00068673, 7.26992432, 0.99657625, 0.99819319, 0.49296903],
    2799                                                                                                  [      -6.27104717, -0.00111968, 0.00068648, 7.26992749, 0.99657749, 0.99819384, 0.49296925],
    2800                                                                                                  [      -6.27104992, -0.00111927, 0.00068623, 7.26993065, 0.99657873, 0.99819449, 0.49296948],
    2801                                                                                                  [      -6.27105267, -0.00111887, 0.00068599, 7.26993380, 0.99657997, 0.99819514, 0.49296966],
    2802                                                                                                  [      -6.27105541, -0.00111847, 0.00068574, 7.26993695, 0.99658120, 0.99819580, 0.49296986],
    2803                                                                                                  [      -6.27105815, -0.00111806, 0.00068549, 7.26994009, 0.99658244, 0.99819645, 0.49297006],
    2804                                                                                                  [      -6.27106088, -0.00111766, 0.00068524, 7.26994322, 0.99658367, 0.99819710, 0.49297025],
    2805                                                                                                  [      -6.27106359, -0.00111726, 0.00068500, 7.26994634, 0.99658491, 0.99819775, 0.49297043],
    2806                                                                                                  [      -6.27106630, -0.00111685, 0.00068475, 7.26994945, 0.99658614, 0.99819840, 0.49297064],
    2807                                                                                                  [      -6.27106901, -0.00111645, 0.00068450, 7.26995256, 0.99658737, 0.99819905, 0.49297085],
    2808                                                                                                  [      -6.27107170, -0.00111605, 0.00068426, 7.26995565, 0.99658860, 0.99819970, 0.49297106],
    2809                                                                                                  [      -6.27107439, -0.00111565, 0.00068401, 7.26995874, 0.99658983, 0.99820034, 0.49297123],
    2810                                                                                                  [      -6.27107707, -0.00111525, 0.00068376, 7.26996183, 0.99659106, 0.99820099, 0.49297145],
    2811                                                                                                  [      -6.27107974, -0.00111484, 0.00068352, 7.26996490, 0.99659229, 0.99820164, 0.49297165],
    2812                                                                                                  [      -6.27108241, -0.00111444, 0.00068327, 7.26996797, 0.99659352, 0.99820229, 0.49297182],
    2813                                                                                                  [      -6.27108507, -0.00111404, 0.00068302, 7.26997103, 0.99659474, 0.99820293, 0.49297202],
    2814                                                                                                  [      -6.27108772, -0.00111364, 0.00068278, 7.26997408, 0.99659597, 0.99820358, 0.49297222],
    2815                                                                                                  [      -6.27109036, -0.00111324, 0.00068253, 7.26997712, 0.99659719, 0.99820422, 0.49297241],
    2816                                                                                                  [      -6.27109300, -0.00111284, 0.00068229, 7.26998015, 0.99659842, 0.99820487, 0.49297262],
    2817                                                                                                  [      -6.27109562, -0.00111244, 0.00068204, 7.26998318, 0.99659964, 0.99820551, 0.49297281],
    2818                                                                                                  [      -6.27109825, -0.00111204, 0.00068180, 7.26998620, 0.99660086, 0.99820616, 0.49297301],
    2819                                                                                                  [      -6.27110086, -0.00111164, 0.00068155, 7.26998921, 0.99660208, 0.99820680, 0.49297320],
    2820                                                                                                  [      -6.27110347, -0.00111125, 0.00068131, 7.26999222, 0.99660330, 0.99820744, 0.49297339],
    2821                                                                                                  [      -6.27110606, -0.00111085, 0.00068106, 7.26999522, 0.99660452, 0.99820809, 0.49297359],
    2822                                                                                                  [      -6.27110866, -0.00111045, 0.00068082, 7.26999821, 0.99660574, 0.99820873, 0.49297380],
    2823                                                                                                  [      -6.27111124, -0.00111005, 0.00068058, 7.27000119, 0.99660696, 0.99820937, 0.49297397],
    2824                                                                                                  [      -6.27111382, -0.00110965, 0.00068033, 7.27000416, 0.99660818, 0.99821001, 0.49297417],
    2825                                                                                                  [      -6.27111639, -0.00110926, 0.00068009, 7.27000713, 0.99660939, 0.99821065, 0.49297437],
    2826                                                                                                  [      -6.27111895, -0.00110886, 0.00067985, 7.27001009, 0.99661061, 0.99821129, 0.49297456],
    2827                                                                                                  [      -6.27112151, -0.00110846, 0.00067960, 7.27001304, 0.99661182, 0.99821193, 0.49297477],
    2828                                                                                                  [      -6.27112405, -0.00110807, 0.00067936, 7.27001599, 0.99661303, 0.99821257, 0.49297493],
    2829                                                                                                  [      -6.27112660, -0.00110767, 0.00067912, 7.27001892, 0.99661425, 0.99821321, 0.49297516],
    2830                                                                                                  [      -6.27112913, -0.00110728, 0.00067887, 7.27002185, 0.99661546, 0.99821385, 0.49297533],
    2831                                                                                                  [      -6.27113166, -0.00110688, 0.00067863, 7.27002478, 0.99661667, 0.99821449, 0.49297550],
    2832                                                                                                  [      -6.27113418, -0.00110648, 0.00067839, 7.27002769, 0.99661788, 0.99821513, 0.49297572],
    2833                                                                                                  [      -6.27113669, -0.00110609, 0.00067815, 7.27003060, 0.99661909, 0.99821576, 0.49297589],
    2834                                                                                                  [      -6.27113920, -0.00110569, 0.00067790, 7.27003350, 0.99662030, 0.99821640, 0.49297607],
    2835                                                                                                  [      -6.27114170, -0.00110530, 0.00067766, 7.27003640, 0.99662150, 0.99821704, 0.49297628],
    2836                                                                                                  [      -6.27114419, -0.00110491, 0.00067742, 7.27003928, 0.99662271, 0.99821767, 0.49297646],
    2837                                                                                                  [      -6.27114668, -0.00110451, 0.00067718, 7.27004216, 0.99662392, 0.99821831, 0.49297664],
    2838                                                                                                  [      -6.27114915, -0.00110412, 0.00067694, 7.27004504, 0.99662512, 0.99821894, 0.49297684],
    2839                                                                                                  [      -6.27115163, -0.00110372, 0.00067670, 7.27004790, 0.99662632, 0.99821958, 0.49297702],
    2840                                                                                                  [      -6.27115409, -0.00110333, 0.00067646, 7.27005076, 0.99662753, 0.99822021, 0.49297723],
    2841                                                                                                  [      -6.27115655, -0.00110294, 0.00067621, 7.27005361, 0.99662873, 0.99822085, 0.49297742],
    2842                                                                                                  [      -6.27115900, -0.00110255, 0.00067597, 7.27005646, 0.99662993, 0.99822148, 0.49297759],
    2843                                                                                                  [      -6.27116145, -0.00110215, 0.00067573, 7.27005929, 0.99663113, 0.99822211, 0.49297781],
    2844                                                                                                  [      -6.27116389, -0.00110176, 0.00067549, 7.27006212, 0.99663233, 0.99822274, 0.49297799],
    2845                                                                                                  [      -6.27116632, -0.00110137, 0.00067525, 7.27006495, 0.99663353, 0.99822338, 0.49297818],
    2846                                                                                                  [      -6.27116874, -0.00110098, 0.00067501, 7.27006776, 0.99663473, 0.99822401, 0.49297837],
    2847                                                                                                  [      -6.27117116, -0.00110059, 0.00067477, 7.27007057, 0.99663592, 0.99822464, 0.49297853],
    2848                                                                                                  [      -6.27117357, -0.00110020, 0.00067453, 7.27007338, 0.99663712, 0.99822527, 0.49297873],
    2849                                                                                                  [      -6.27117598, -0.00109981, 0.00067429, 7.27007617, 0.99663832, 0.99822590, 0.49297890],
    2850                                                                                                  [      -6.27117838, -0.00109942, 0.00067405, 7.27007896, 0.99663951, 0.99822653, 0.49297910],
    2851                                                                                                  [      -6.27118077, -0.00109903, 0.00067381, 7.27008174, 0.99664070, 0.99822716, 0.49297929],
    2852                                                                                                  [      -6.27118315, -0.00109864, 0.00067358, 7.27008452, 0.99664190, 0.99822779, 0.49297945],
    2853                                                                                                  [      -6.27118553, -0.00109825, 0.00067334, 7.27008729, 0.99664309, 0.99822842, 0.49297965],
    2854                                                                                                  [      -6.27118791, -0.00109786, 0.00067310, 7.27009005, 0.99664428, 0.99822904, 0.49297987],
    2855                                                                                                  [      -6.27119027, -0.00109747, 0.00067286, 7.27009280, 0.99664547, 0.99822967, 0.49298005],
    2856                                                                                                  [      -6.27119263, -0.00109708, 0.00067262, 7.27009555, 0.99664666, 0.99823030, 0.49298023],
    2857                                                                                                  [      -6.27119499, -0.00109669, 0.00067238, 7.27009829, 0.99664785, 0.99823092, 0.49298041],
    2858                                                                                                  [      -6.27119733, -0.00109630, 0.00067214, 7.27010103, 0.99664904, 0.99823155, 0.49298056],
    2859                                                                                                  [      -6.27119968, -0.00109592, 0.00067191, 7.27010376, 0.99665022, 0.99823218, 0.49298074],
    2860                                                                                                  [      -6.27120201, -0.00109553, 0.00067167, 7.27010648, 0.99665141, 0.99823280, 0.49298095],
    2861                                                                                                  [      -6.27120434, -0.00109514, 0.00067143, 7.27010920, 0.99665259, 0.99823343, 0.49298115],
    2862                                                                                                  [      -6.27120666, -0.00109475, 0.00067119, 7.27011190, 0.99665378, 0.99823405, 0.49298131],
    2863                                                                                                  [      -6.27120898, -0.00109437, 0.00067096, 7.27011461, 0.99665496, 0.99823467, 0.49298149],
    2864                                                                                                  [      -6.27121129, -0.00109398, 0.00067072, 7.27011730, 0.99665614, 0.99823530, 0.49298166],
    2865                                                                                                  [      -6.27121359, -0.00109360, 0.00067048, 7.27011999, 0.99665733, 0.99823592, 0.49298185],
    2866                                                                                                  [      -6.27121589, -0.00109321, 0.00067025, 7.27012268, 0.99665851, 0.99823654, 0.49298202],
    2867                                                                                                  [      -6.27121818, -0.00109282, 0.00067001, 7.27012535, 0.99665969, 0.99823717, 0.49298224],
    2868                                                                                                  [      -6.27122046, -0.00109244, 0.00066977, 7.27012802, 0.99666087, 0.99823779, 0.49298236],
    2869                                                                                                  [      -6.27122274, -0.00109205, 0.00066954, 7.27013069, 0.99666205, 0.99823841, 0.49298260],
    2870                                                                                                  [      -6.27122501, -0.00109167, 0.00066930, 7.27013334, 0.99666322, 0.99823903, 0.49298275],
    2871                                                                                                  [      -6.27122728, -0.00109128, 0.00066907, 7.27013600, 0.99666440, 0.99823965, 0.49298294],
    2872                                                                                                  [      -6.27122954, -0.00109090, 0.00066883, 7.27013864, 0.99666558, 0.99824027, 0.49298313],
    2873                                                                                                  [      -6.27123179, -0.00109052, 0.00066859, 7.27014128, 0.99666675, 0.99824089, 0.49298330],
    2874                                                                                                  [      -6.27123404, -0.00109013, 0.00066836, 7.27014391, 0.99666793, 0.99824151, 0.49298351],
    2875                                                                                                  [      -6.27123629, -0.00108975, 0.00066812, 7.27014654, 0.99666910, 0.99824213, 0.49298363],
    2876                                                                                                  [      -6.27123852, -0.00108937, 0.00066789, 7.27014916, 0.99667027, 0.99824275, 0.49298382],
    2877                                                                                                  [      -6.27124075, -0.00108898, 0.00066765, 7.27015177, 0.99667144, 0.99824336, 0.49298401],
    2878                                                                                                  [      -6.27124298, -0.00108860, 0.00066742, 7.27015438, 0.99667261, 0.99824398, 0.49298420],
    2879                                                                                                  [      -6.27124520, -0.00108822, 0.00066718, 7.27015698, 0.99667379, 0.99824460, 0.49298438],
    2880                                                                                                  [      -6.27124741, -0.00108784, 0.00066695, 7.27015957, 0.99667495, 0.99824521, 0.49298453],
    2881                                                                                                  [      -6.27124962, -0.00108745, 0.00066672, 7.27016216, 0.99667612, 0.99824583, 0.49298471],
    2882                                                                                                  [      -6.27125182, -0.00108707, 0.00066648, 7.27016475, 0.99667729, 0.99824645, 0.49298491],
    2883                                                                                                  [      -6.27125401, -0.00108669, 0.00066625, 7.27016732, 0.99667846, 0.99824706, 0.49298510],
    2884                                                                                                  [      -6.27125620, -0.00108631, 0.00066601, 7.27016989, 0.99667962, 0.99824768, 0.49298524],
    2885                                                                                                  [      -6.27125839, -0.00108593, 0.00066578, 7.27017246, 0.99668079, 0.99824829, 0.49298544],
    2886                                                                                                  [      -6.27126057, -0.00108555, 0.00066555, 7.27017502, 0.99668195, 0.99824890, 0.49298562],
    2887                                                                                                  [      -6.27126274, -0.00108517, 0.00066531, 7.27017757, 0.99668312, 0.99824952, 0.49298575],
    2888                                                                                                  [      -6.27126490, -0.00108479, 0.00066508, 7.27018012, 0.99668428, 0.99825013, 0.49298596],
    2889                                                                                                  [      -6.27126707, -0.00108441, 0.00066485, 7.27018266, 0.99668544, 0.99825074, 0.49298614],
    2890                                                                                                  [      -6.27126922, -0.00108403, 0.00066461, 7.27018519, 0.99668660, 0.99825136, 0.49298629],
    2891                                                                                                  [      -6.27127137, -0.00108365, 0.00066438, 7.27018772, 0.99668776, 0.99825197, 0.49298647],
    2892                                                                                                  [      -6.27127351, -0.00108327, 0.00066415, 7.27019024, 0.99668892, 0.99825258, 0.49298665],
    2893                                                                                                  [      -6.27127565, -0.00108289, 0.00066392, 7.27019276, 0.99669008, 0.99825319, 0.49298685],
    2894                                                                                                  [      -6.27127779, -0.00108251, 0.00066369, 7.27019527, 0.99669124, 0.99825380, 0.49298701],
    2895                                                                                                  [      -6.27127991, -0.00108214, 0.00066345, 7.27019778, 0.99669240, 0.99825441, 0.49298719],
    2896                                                                                                  [      -6.27128204, -0.00108176, 0.00066322, 7.27020028, 0.99669356, 0.99825502, 0.49298735],
    2897                                                                                                  [      -6.27128415, -0.00108138, 0.00066299, 7.27020277, 0.99669471, 0.99825563, 0.49298754],
    2898                                                                                                  [      -6.27128626, -0.00108100, 0.00066276, 7.27020526, 0.99669587, 0.99825624, 0.49298772],
    2899                                                                                                  [      -6.27128837, -0.00108063, 0.00066253, 7.27020774, 0.99669702, 0.99825685, 0.49298787],
    2900                                                                                                  [      -6.27129047, -0.00108025, 0.00066230, 7.27021022, 0.99669817, 0.99825746, 0.49298806],
    2901                                                                                                  [      -6.27129256, -0.00107987, 0.00066206, 7.27021269, 0.99669933, 0.99825806, 0.49298822],
    2902                                                                                                  [      -6.27129465, -0.00107950, 0.00066183, 7.27021516, 0.99670048, 0.99825867, 0.49298838],
    2903                                                                                                  [      -6.27129674, -0.00107912, 0.00066160, 7.27021762, 0.99670163, 0.99825928, 0.49298857],
    2904                                                                                                  [      -6.27129881, -0.00107874, 0.00066137, 7.27022007, 0.99670278, 0.99825988, 0.49298872],
    2905                                                                                                  [      -6.27130089, -0.00107837, 0.00066114, 7.27022252, 0.99670393, 0.99826049, 0.49298890],
    2906                                                                                                  [      -6.27130295, -0.00107799, 0.00066091, 7.27022496, 0.99670508, 0.99826109, 0.49298906],
    2907                                                                                                  [      -6.27130502, -0.00107762, 0.00066068, 7.27022740, 0.99670622, 0.99826170, 0.49298921],
    2908                                                                                                  [      -6.27130707, -0.00107724, 0.00066045, 7.27022983, 0.99670737, 0.99826230, 0.49298942],
    2909                                                                                                  [      -6.27130913, -0.00107687, 0.00066022, 7.27023226, 0.99670852, 0.99826291, 0.49298958],
    2910                                                                                                  [      -6.27131117, -0.00107649, 0.00065999, 7.27023468, 0.99670966, 0.99826351, 0.49298977],
    2911                                                                                                  [      -6.27131321, -0.00107612, 0.00065976, 7.27023709, 0.99671081, 0.99826412, 0.49298992],
    2912                                                                                                  [      -6.27131525, -0.00107575, 0.00065953, 7.27023950, 0.99671195, 0.99826472, 0.49299011],
    2913                                                                                                  [      -6.27131728, -0.00107537, 0.00065931, 7.27024191, 0.99671309, 0.99826532, 0.49299028],
    2914                                                                                                  [      -6.27131930, -0.00107500, 0.00065908, 7.27024430, 0.99671423, 0.99826592, 0.49299042],
    2915                                                                                                  [      -6.27132133, -0.00107463, 0.00065885, 7.27024670, 0.99671538, 0.99826653, 0.49299058],
    2916                                                                                                  [      -6.27132334, -0.00107425, 0.00065862, 7.27024909, 0.99671652, 0.99826713, 0.49299077],
    2917                                                                                                  [      -6.27132535, -0.00107388, 0.00065839, 7.27025147, 0.99671766, 0.99826773, 0.49299096],
    2918                                                                                                  [      -6.27132736, -0.00107351, 0.00065816, 7.27025385, 0.99671879, 0.99826833, 0.49299111],
    2919                                                                                                  [      -6.27132936, -0.00107314, 0.00065793, 7.27025622, 0.99671993, 0.99826893, 0.49299126],
    2920                                                                                                  [      -6.27133135, -0.00107277, 0.00065771, 7.27025858, 0.99672107, 0.99826953, 0.49299144],
    2921                                                                                                  [      -6.27133334, -0.00107239, 0.00065748, 7.27026094, 0.99672221, 0.99827013, 0.49299160],
    2922                                                                                                  [      -6.27133532, -0.00107202, 0.00065725, 7.27026330, 0.99672334, 0.99827073, 0.49299180],
    2923                                                                                                  [      -6.27133730, -0.00107165, 0.00065702, 7.27026565, 0.99672448, 0.99827132, 0.49299193],
    2924                                                                                                  [      -6.27133928, -0.00107128, 0.00065680, 7.27026800, 0.99672561, 0.99827192, 0.49299212],
    2925                                                                                                  [      -6.27134125, -0.00107091, 0.00065657, 7.27027034, 0.99672674, 0.99827252, 0.49299227],
    2926                                                                                                  [      -6.27134321, -0.00107054, 0.00065634, 7.27027267, 0.99672788, 0.99827312, 0.49299243],
    2927                                                                                                  [      -6.27134517, -0.00107017, 0.00065611, 7.27027500, 0.99672901, 0.99827371, 0.49299259],
    2928                                                                                                  [      -6.27134713, -0.00106980, 0.00065589, 7.27027733, 0.99673014, 0.99827431, 0.49299280],
    2929                                                                                                  [      -6.27134908, -0.00106943, 0.00065566, 7.27027964, 0.99673127, 0.99827491, 0.49299296],
    2930                                                                                                  [      -6.27135102, -0.00106906, 0.00065543, 7.27028196, 0.99673240, 0.99827550, 0.49299309],
    2931                                                                                                  [      -6.27135296, -0.00106870, 0.00065521, 7.27028427, 0.99673353, 0.99827610, 0.49299327],
    2932                                                                                                  [      -6.27135490, -0.00106833, 0.00065498, 7.27028657, 0.99673466, 0.99827669, 0.49299344],
    2933                                                                                                  [      -6.27135683, -0.00106796, 0.00065476, 7.27028887, 0.99673578, 0.99827729, 0.49299361],
    2934                                                                                                  [      -6.27135875, -0.00106759, 0.00065453, 7.27029116, 0.99673691, 0.99827788, 0.49299378],
    2935                                                                                                  [      -6.27136067, -0.00106722, 0.00065430, 7.27029345, 0.99673804, 0.99827847, 0.49299395],
    2936                                                                                                  [      -6.27136259, -0.00106685, 0.00065408, 7.27029574, 0.99673916, 0.99827907, 0.49299413],
    2937                                                                                                  [      -6.27136450, -0.00106649, 0.00065385, 7.27029801, 0.99674028, 0.99827966, 0.49299427],
    2938                                                                                                  [      -6.27136641, -0.00106612, 0.00065363, 7.27030029, 0.99674141, 0.99828025, 0.49299442],
    2939                                                                                                  [      -6.27136831, -0.00106575, 0.00065340, 7.27030256, 0.99674253, 0.99828084, 0.49299460],
    2940                                                                                                  [      -6.27137021, -0.00106539, 0.00065318, 7.27030482, 0.99674365, 0.99828143, 0.49299474],
    2941                                                                                                  [      -6.27137210, -0.00106502, 0.00065295, 7.27030708, 0.99674477, 0.99828203, 0.49299490],
    2942                                                                                                  [      -6.27137399, -0.00106465, 0.00065273, 7.27030933, 0.99674589, 0.99828262, 0.49299509],
    2943                                                                                                  [      -6.27137587, -0.00106429, 0.00065250, 7.27031158, 0.99674701, 0.99828321, 0.49299525],
    2944                                                                                                  [      -6.27137775, -0.00106392, 0.00065228, 7.27031382, 0.99674813, 0.99828380, 0.49299541],
    2945                                                                                                  [      -6.27137962, -0.00106356, 0.00065206, 7.27031606, 0.99674925, 0.99828439, 0.49299561],
    2946                                                                                                  [      -6.27138149, -0.00106319, 0.00065183, 7.27031830, 0.99675037, 0.99828497, 0.49299573],
    2947                                                                                                  [      -6.27138335, -0.00106283, 0.00065161, 7.27032053, 0.99675148, 0.99828556, 0.49299589],
    2948                                                                                                  [      -6.27138521, -0.00106246, 0.00065139, 7.27032275, 0.99675260, 0.99828615, 0.49299603],
    2949                                                                                                  [      -6.27138707, -0.00106210, 0.00065116, 7.27032497, 0.99675371, 0.99828674, 0.49299621],
    2950                                                                                                  [      -6.27138892, -0.00106173, 0.00065094, 7.27032719, 0.99675483, 0.99828733, 0.49299635],
    2951                                                                                                  [      -6.27139077, -0.00106137, 0.00065072, 7.27032940, 0.99675594, 0.99828791, 0.49299653],
    2952                                                                                                  [      -6.27139261, -0.00106101, 0.00065049, 7.27033160, 0.99675705, 0.99828850, 0.49299670],
    2953                                                                                                  [      -6.27139445, -0.00106064, 0.00065027, 7.27033380, 0.99675816, 0.99828909, 0.49299687],
    2954                                                                                                  [      -6.27139628, -0.00106028, 0.00065005, 7.27033600, 0.99675928, 0.99828967, 0.49299705],
    2955                                                                                                  [      -6.27139811, -0.00105992, 0.00064982, 7.27033819, 0.99676039, 0.99829026, 0.49299718],
    2956                                                                                                  [      -6.27139993, -0.00105956, 0.00064960, 7.27034037, 0.99676150, 0.99829084, 0.49299736],
    2957                                                                                                  [      -6.27140175, -0.00105919, 0.00064938, 7.27034256, 0.99676260, 0.99829143, 0.49299751],
    2958                                                                                                  [      -6.27140356, -0.00105883, 0.00064916, 7.27034473, 0.99676371, 0.99829201, 0.49299765],
    2959                                                                                                  [      -6.27140537, -0.00105847, 0.00064893, 7.27034690, 0.99676482, 0.99829260, 0.49299782],
    2960                                                                                                  [      -6.27140718, -0.00105811, 0.00064871, 7.27034907, 0.99676593, 0.99829318, 0.49299800],
    2961                                                                                                  [      -6.27140898, -0.00105775, 0.00064849, 7.27035123, 0.99676703, 0.99829376, 0.49299816],
    2962                                                                                                  [      -6.27141078, -0.00105739, 0.00064827, 7.27035339, 0.99676814, 0.99829434, 0.49299833],
    2963                                                                                                  [      -6.27141257, -0.00105702, 0.00064805, 7.27035555, 0.99676924, 0.99829493, 0.49299845],
    2964                                                                                                  [      -6.27141436, -0.00105666, 0.00064783, 7.27035770, 0.99677034, 0.99829551, 0.49299862],
    2965                                                                                                  [      -6.27141614, -0.00105630, 0.00064761, 7.27035984, 0.99677145, 0.99829609, 0.49299878],
    2966                                                                                                  [      -6.27141792, -0.00105594, 0.00064739, 7.27036198, 0.99677255, 0.99829667, 0.49299891],
    2967                                                                                                  [      -6.27141970, -0.00105558, 0.00064716, 7.27036412, 0.99677365, 0.99829725, 0.49299912],
    2968                                                                                                  [      -6.27142147, -0.00105522, 0.00064694, 7.27036625, 0.99677475, 0.99829783, 0.49299926],
    2969                                                                                                  [      -6.27142324, -0.00105486, 0.00064672, 7.27036837, 0.99677585, 0.99829841, 0.49299943],
    2970                                                                                                  [      -6.27142500, -0.00105451, 0.00064650, 7.27037050, 0.99677695, 0.99829899, 0.49299955],
    2971                                                                                                  [      -6.27142676, -0.00105415, 0.00064628, 7.27037261, 0.99677805, 0.99829957, 0.49299971],
    2972                                                                                                  [      -6.27142851, -0.00105379, 0.00064606, 7.27037473, 0.99677914, 0.99830015, 0.49299984],
    2973                                                                                                  [      -6.27143026, -0.00105343, 0.00064584, 7.27037683, 0.99678024, 0.99830073, 0.49300001],
    2974                                                                                                  [      -6.27143201, -0.00105307, 0.00064562, 7.27037894, 0.99678134, 0.99830131, 0.49300017],
    2975                                                                                                  [      -6.27143375, -0.00105271, 0.00064540, 7.27038104, 0.99678243, 0.99830188, 0.49300033],
    2976                                                                                                  [      -6.27143549, -0.00105236, 0.00064518, 7.27038313, 0.99678353, 0.99830246, 0.49300050],
    2977                                                                                                  [      -6.27143722, -0.00105200, 0.00064496, 7.27038522, 0.99678462, 0.99830304, 0.49300065],
    2978                                                                                                  [      -6.27143895, -0.00105164, 0.00064475, 7.27038731, 0.99678571, 0.99830361, 0.49300081],
    2979                                                                                                  [      -6.27144068, -0.00105128, 0.00064453, 7.27038939, 0.99678681, 0.99830419, 0.49300096],
    2980                                                                                                  [      -6.27144240, -0.00105093, 0.00064431, 7.27039147, 0.99678790, 0.99830477, 0.49300112],
    2981                                                                                                  [      -6.27144412, -0.00105057, 0.00064409, 7.27039355, 0.99678899, 0.99830534, 0.49300126],
    2982                                                                                                  [      -6.27144583, -0.00105021, 0.00064387, 7.27039561, 0.99679008, 0.99830592, 0.49300141],
    2983                                                                                                  [      -6.27144754, -0.00104986, 0.00064365, 7.27039768, 0.99679117, 0.99830649, 0.49300158],
    2984                                                                                                  [      -6.27144924, -0.00104950, 0.00064343, 7.27039974, 0.99679226, 0.99830706, 0.49300174],
    2985                                                                                                  [      -6.27145094, -0.00104915, 0.00064322, 7.27040180, 0.99679334, 0.99830764, 0.49300191],
    2986                                                                                                  [      -6.27145264, -0.00104879, 0.00064300, 7.27040385, 0.99679443, 0.99830821, 0.49300203],
    2987                                                                                                  [      -6.27145433, -0.00104844, 0.00064278, 7.27040590, 0.99679552, 0.99830878, 0.49300220],
    2988                                                                                                  [      -6.27145602, -0.00104808, 0.00064256, 7.27040794, 0.99679660, 0.99830936, 0.49300234],
    2989                                                                                                  [      -6.27145771, -0.00104773, 0.00064234, 7.27040998, 0.99679769, 0.99830993, 0.49300248],
    2990                                                                                                  [      -6.27145939, -0.00104737, 0.00064213, 7.27041202, 0.99679877, 0.99831050, 0.49300264],
    2991                                                                                                  [      -6.27146107, -0.00104702, 0.00064191, 7.27041405, 0.99679986, 0.99831107, 0.49300280],
    2992                                                                                                  [      -6.27146274, -0.00104667, 0.00064169, 7.27041607, 0.99680094, 0.99831164, 0.49300294],
    2993                                                                                                  [      -6.27146441, -0.00104631, 0.00064148, 7.27041810, 0.99680202, 0.99831221, 0.49300310],
    2994                                                                                                  [      -6.27146607, -0.00104596, 0.00064126, 7.27042012, 0.99680310, 0.99831278, 0.49300325],
    2995                                                                                                  [      -6.27146774, -0.00104561, 0.00064104, 7.27042213, 0.99680418, 0.99831335, 0.49300340],
    2996                                                                                                  [      -6.27146939, -0.00104525, 0.00064083, 7.27042414, 0.99680526, 0.99831392, 0.49300357],
    2997                                                                                                  [      -6.27147105, -0.00104490, 0.00064061, 7.27042615, 0.99680634, 0.99831449, 0.49300370],
    2998                                                                                                  [      -6.27147270, -0.00104455, 0.00064039, 7.27042815, 0.99680742, 0.99831506, 0.49300390],
    2999                                                                                                  [      -6.27147434, -0.00104420, 0.00064018, 7.27043015, 0.99680850, 0.99831563, 0.49300402],
    3000                                                                                                  [      -6.27147599, -0.00104384, 0.00063996, 7.27043214, 0.99680957, 0.99831620, 0.49300417],
    3001                                                                                                  [      -6.27147762, -0.00104349, 0.00063975, 7.27043413, 0.99681065, 0.99831676, 0.49300431],
    3002                                                                                                  [      -6.27147926, -0.00104314, 0.00063953, 7.27043612, 0.99681172, 0.99831733, 0.49300449],
    3003                                                                                                  [      -6.27148089, -0.00104279, 0.00063931, 7.27043810, 0.99681280, 0.99831790, 0.49300460],
    3004                                                                                                  [      -6.27148252, -0.00104244, 0.00063910, 7.27044008, 0.99681387, 0.99831846, 0.49300478],
    3005                                                                                                  [      -6.27148414, -0.00104209, 0.00063888, 7.27044205, 0.99681495, 0.99831903, 0.49300494],
    3006                                                                                                  [      -6.27148576, -0.00104174, 0.00063867, 7.27044402, 0.99681602, 0.99831959, 0.49300507],
    3007                                                                                                  [      -6.27148738, -0.00104139, 0.00063845, 7.27044599, 0.99681709, 0.99832016, 0.49300523],
    3008                                                                                                  [      -6.27148899, -0.00104104, 0.00063824, 7.27044795, 0.99681816, 0.99832072, 0.49300537],
    3009                                                                                                  [      -6.27149060, -0.00104069, 0.00063802, 7.27044991, 0.99681923, 0.99832129, 0.49300552],
    3010                                                                                                  [      -6.27149220, -0.00104034, 0.00063781, 7.27045186, 0.99682030, 0.99832185, 0.49300567],
    3011                                                                                                  [      -6.27149380, -0.00103999, 0.00063760, 7.27045382, 0.99682137, 0.99832242, 0.49300583],
    3012                                                                                                  [      -6.27149540, -0.00103964, 0.00063738, 7.27045576, 0.99682244, 0.99832298, 0.49300595],
    3013                                                                                                  [      -6.27149699, -0.00103929, 0.00063717, 7.27045771, 0.99682351, 0.99832354, 0.49300609],
    3014                                                                                                  [      -6.27149859, -0.00103894, 0.00063695, 7.27045964, 0.99682457, 0.99832411, 0.49300627],
    3015                                                                                                  [      -6.27150017, -0.00103859, 0.00063674, 7.27046158, 0.99682564, 0.99832467, 0.49300642],
    3016                                                                                                  [      -6.27150175, -0.00103824, 0.00063653, 7.27046351, 0.99682670, 0.99832523, 0.49300653],
    3017                                                                                                  [      -6.27150333, -0.00103790, 0.00063631, 7.27046544, 0.99682777, 0.99832579, 0.49300671],
    3018                                                                                                  [      -6.27150491, -0.00103755, 0.00063610, 7.27046736, 0.99682883, 0.99832635, 0.49300686],
    3019                                                                                                  [      -6.27150648, -0.00103720, 0.00063589, 7.27046928, 0.99682990, 0.99832691, 0.49300700],
    3020                                                                                                  [      -6.27150805, -0.00103685, 0.00063567, 7.27047120, 0.99683096, 0.99832747, 0.49300717],
    3021                                                                                                  [      -6.27150962, -0.00103651, 0.00063546, 7.27047311, 0.99683202, 0.99832803, 0.49300731],
    3022                                                                                                  [      -6.27151118, -0.00103616, 0.00063525, 7.27047502, 0.99683308, 0.99832859, 0.49300742],
    3023                                                                                                  [      -6.27151274, -0.00103581, 0.00063503, 7.27047692, 0.99683414, 0.99832915, 0.49300759],
    3024                                                                                                  [      -6.27151429, -0.00103547, 0.00063482, 7.27047882, 0.99683520, 0.99832971, 0.49300775],
    3025                                                                                                  [      -6.27151584, -0.00103512, 0.00063461, 7.27048072, 0.99683626, 0.99833027, 0.49300787],
    3026                                                                                                  [      -6.27151739, -0.00103478, 0.00063440, 7.27048262, 0.99683732, 0.99833083, 0.49300803],
    3027                                                                                                  [      -6.27151893, -0.00103443, 0.00063419, 7.27048451, 0.99683838, 0.99833138, 0.49300818],
    3028                                                                                                  [      -6.27152048, -0.00103408, 0.00063397, 7.27048639, 0.99683943, 0.99833194, 0.49300831],
    3029                                                                                                  [      -6.27152201, -0.00103374, 0.00063376, 7.27048827, 0.99684049, 0.99833250, 0.49300846],
    3030                                                                                                  [      -6.27152355, -0.00103339, 0.00063355, 7.27049015, 0.99684154, 0.99833306, 0.49300863],
    3031                                                                                                  [      -6.27152508, -0.00103305, 0.00063334, 7.27049203, 0.99684260, 0.99833361, 0.49300877],
    3032                                                                                                  [      -6.27152660, -0.00103270, 0.00063313, 7.27049390, 0.99684365, 0.99833417, 0.49300891],
    3033                                                                                                  [      -6.27152813, -0.00103236, 0.00063292, 7.27049577, 0.99684471, 0.99833472, 0.49300907],
    3034                                                                                                  [      -6.27152965, -0.00103202, 0.00063271, 7.27049763, 0.99684576, 0.99833528, 0.49300922],
    3035                                                                                                  [      -6.27153117, -0.00103167, 0.00063249, 7.27049949, 0.99684681, 0.99833583, 0.49300935],
    3036                                                                                                  [      -6.27153268, -0.00103133, 0.00063228, 7.27050135, 0.99684786, 0.99833639, 0.49300949],
    3037                                                                                                  [      -6.27153419, -0.00103099, 0.00063207, 7.27050320, 0.99684891, 0.99833694, 0.49300966],
    3038                                                                                                  [      -6.27153570, -0.00103064, 0.00063186, 7.27050505, 0.99684996, 0.99833749, 0.49300980],
    3039                                                                                                  [      -6.27153720, -0.00103030, 0.00063165, 7.27050690, 0.99685101, 0.99833805, 0.49300992],
    3040                                                                                                  [      -6.27153870, -0.00102996, 0.00063144, 7.27050874, 0.99685206, 0.99833860, 0.49301003],
    3041                                                                                                  [      -6.27154020, -0.00102961, 0.00063123, 7.27051058, 0.99685311, 0.99833915, 0.49301024],
    3042                                                                                                  [      -6.27154169, -0.00102927, 0.00063102, 7.27051242, 0.99685415, 0.99833971, 0.49301036],
    3043                                                                                                  [      -6.27154318, -0.00102893, 0.00063081, 7.27051425, 0.99685520, 0.99834026, 0.49301051],
    3044                                                                                                  [      -6.27154467, -0.00102859, 0.00063060, 7.27051608, 0.99685625, 0.99834081, 0.49301064],
    3045                                                                                                  [      -6.27154615, -0.00102825, 0.00063039, 7.27051791, 0.99685729, 0.99834136, 0.49301076],
    3046                                                                                                  [      -6.27154763, -0.00102791, 0.00063018, 7.27051973, 0.99685834, 0.99834191, 0.49301089],
    3047                                                                                                  [      -6.27154911, -0.00102756, 0.00062997, 7.27052155, 0.99685938, 0.99834246, 0.49301105],
    3048                                                                                                  [      -6.27155059, -0.00102722, 0.00062976, 7.27052336, 0.99686042, 0.99834301, 0.49301119],
    3049                                                                                                  [      -6.27155206, -0.00102688, 0.00062956, 7.27052517, 0.99686146, 0.99834356, 0.49301134],
    3050                                                                                                  [      -6.27155352, -0.00102654, 0.00062935, 7.27052698, 0.99686251, 0.99834411, 0.49301148],
    3051                                                                                                  [      -6.27155499, -0.00102620, 0.00062914, 7.27052879, 0.99686355, 0.99834466, 0.49301163],
    3052                                                                                                  [      -6.27155645, -0.00102586, 0.00062893, 7.27053059, 0.99686459, 0.99834521, 0.49301176],
    3053                                                                                                  [      -6.27155791, -0.00102552, 0.00062872, 7.27053239, 0.99686563, 0.99834576, 0.49301188],
    3054                                                                                                  [      -6.27155936, -0.00102518, 0.00062851, 7.27053418, 0.99686666, 0.99834630, 0.49301206],
    3055                                                                                                  [      -6.27156082, -0.00102484, 0.00062830, 7.27053597, 0.99686770, 0.99834685, 0.49301220],
    3056                                                                                                  [      -6.27156226, -0.00102451, 0.00062810, 7.27053776, 0.99686874, 0.99834740, 0.49301233],
    3057                                                                                                  [      -6.27156371, -0.00102417, 0.00062789, 7.27053954, 0.99686978, 0.99834794, 0.49301246],
    3058                                                                                                  [      -6.27156515, -0.00102383, 0.00062768, 7.27054132, 0.99687081, 0.99834849, 0.49301262],
    3059                                                                                                  [      -6.27156659, -0.00102349, 0.00062747, 7.27054310, 0.99687185, 0.99834904, 0.49301280],
    3060                                                                                                  [      -6.27156803, -0.00102315, 0.00062727, 7.27054488, 0.99687288, 0.99834958, 0.49301294],
    3061                                                                                                  [      -6.27156946, -0.00102281, 0.00062706, 7.27054665, 0.99687392, 0.99835013, 0.49301309],
    3062                                                                                                  [      -6.27157089, -0.00102248, 0.00062685, 7.27054842, 0.99687495, 0.99835067, 0.49301319],
    3063                                                                                                  [      -6.27157232, -0.00102214, 0.00062664, 7.27055018, 0.99687598, 0.99835122, 0.49301335],
    3064                                                                                                  [      -6.27157374, -0.00102180, 0.00062644, 7.27055194, 0.99687701, 0.99835176, 0.49301345],
    3065                                                                                                  [      -6.27157517, -0.00102146, 0.00062623, 7.27055370, 0.99687805, 0.99835231, 0.49301362],
    3066                                                                                                  [      -6.27157658, -0.00102113, 0.00062602, 7.27055546, 0.99687908, 0.99835285, 0.49301372],
    3067                                                                                                  [      -6.27157800, -0.00102079, 0.00062582, 7.27055721, 0.99688011, 0.99835339, 0.49301383],
    3068                                                                                                  [      -6.27157941, -0.00102045, 0.00062561, 7.27055896, 0.99688113, 0.99835393, 0.49301405],
    3069                                                                                                  [      -6.27158082, -0.00102012, 0.00062540, 7.27056070, 0.99688216, 0.99835448, 0.49301418],
    3070                                                                                                  [      -6.27158223, -0.00101978, 0.00062520, 7.27056244, 0.99688319, 0.99835502, 0.49301433],
    3071                                                                                                  [      -6.27158363, -0.00101945, 0.00062499, 7.27056418, 0.99688422, 0.99835556, 0.49301444],
    3072                                                                                                  [      -6.27158503, -0.00101911, 0.00062479, 7.27056592, 0.99688524, 0.99835610, 0.49301454],
    3073                                                                                                  [      -6.27158643, -0.00101878, 0.00062458, 7.27056765, 0.99688627, 0.99835664, 0.49301468],
    3074                                                                                                  [      -6.27158782, -0.00101844, 0.00062438, 7.27056938, 0.99688730, 0.99835718, 0.49301483],
    3075                                                                                                  [      -6.27158921, -0.00101811, 0.00062417, 7.27057111, 0.99688832, 0.99835772, 0.49301499],
    3076                                                                                                  [      -6.27159060, -0.00101777, 0.00062396, 7.27057283, 0.99688934, 0.99835826, 0.49301513],
    3077                                                                                                  [      -6.27159199, -0.00101744, 0.00062376, 7.27057455, 0.99689037, 0.99835880, 0.49301528],
    3078                                                                                                  [      -6.27159337, -0.00101710, 0.00062355, 7.27057627, 0.99689139, 0.99835934, 0.49301541],
    3079                                                                                                  [      -6.27159475, -0.00101677, 0.00062335, 7.27057798, 0.99689241, 0.99835988, 0.49301553],
    3080                                                                                                  [      -6.27159613, -0.00101644, 0.00062314, 7.27057969, 0.99689343, 0.99836042, 0.49301569],
    3081                                                                                                  [      -6.27159750, -0.00101610, 0.00062294, 7.27058140, 0.99689445, 0.99836096, 0.49301584],
    3082                                                                                                  [      -6.27159887, -0.00101577, 0.00062274, 7.27058310, 0.99689547, 0.99836150, 0.49301593],
    3083                                                                                                  [      -6.27160024, -0.00101544, 0.00062253, 7.27058480, 0.99689649, 0.99836203, 0.49301608],
    3084                                                                                                  [      -6.27160160, -0.00101510, 0.00062233, 7.27058650, 0.99689751, 0.99836257, 0.49301621],
    3085                                                                                                  [      -6.27160297, -0.00101477, 0.00062212, 7.27058820, 0.99689853, 0.99836311, 0.49301634],
    3086                                                                                                  [      -6.27160433, -0.00101444, 0.00062192, 7.27058989, 0.99689954, 0.99836364, 0.49301647],
    3087                                                                                                  [      -6.27160568, -0.00101410, 0.00062171, 7.27059158, 0.99690056, 0.99836418, 0.49301663],
    3088                                                                                                  [      -6.27160704, -0.00101377, 0.00062151, 7.27059327, 0.99690158, 0.99836472, 0.49301679],
    3089                                                                                                  [      -6.27160839, -0.00101344, 0.00062131, 7.27059495, 0.99690259, 0.99836525, 0.49301693],
    3090                                                                                                  [      -6.27160974, -0.00101311, 0.00062110, 7.27059663, 0.99690361, 0.99836579, 0.49301706],
    3091                                                                                                  [      -6.27161108, -0.00101278, 0.00062090, 7.27059831, 0.99690462, 0.99836632, 0.49301722],
    3092                                                                                                  [      -6.27161243, -0.00101245, 0.00062070, 7.27059998, 0.99690563, 0.99836686, 0.49301730],
    3093                                                                                                  [      -6.27161377, -0.00101212, 0.00062049, 7.27060165, 0.99690664, 0.99836739, 0.49301748],
    3094                                                                                                  [      -6.27161511, -0.00101179, 0.00062029, 7.27060332, 0.99690766, 0.99836792, 0.49301757],
    3095                                                                                                  [      -6.27161644, -0.00101146, 0.00062009, 7.27060499, 0.99690867, 0.99836846, 0.49301772],
    3096                                                                                                  [      -6.27161777, -0.00101112, 0.00061989, 7.27060665, 0.99690968, 0.99836899, 0.49301787],
    3097                                                                                                  [      -6.27161910, -0.00101079, 0.00061968, 7.27060831, 0.99691069, 0.99836952, 0.49301798],
    3098                                                                                                  [      -6.27162043, -0.00101046, 0.00061948, 7.27060996, 0.99691170, 0.99837005, 0.49301811],
    3099                                                                                                  [      -6.27162175, -0.00101014, 0.00061928, 7.27061162, 0.99691271, 0.99837059, 0.49301825],
    3100                                                                                                  [      -6.27162307, -0.00100981, 0.00061908, 7.27061327, 0.99691371, 0.99837112, 0.49301840],
    3101                                                                                                  [      -6.27162439, -0.00100948, 0.00061887, 7.27061492, 0.99691472, 0.99837165, 0.49301855],
    3102                                                                                                  [      -6.27162571, -0.00100915, 0.00061867, 7.27061656, 0.99691573, 0.99837218, 0.49301866],
    3103                                                                                                  [      -6.27162702, -0.00100882, 0.00061847, 7.27061820, 0.99691673, 0.99837271, 0.49301881],
    3104                                                                                                  [      -6.27162833, -0.00100849, 0.00061827, 7.27061984, 0.99691774, 0.99837324, 0.49301892],
    3105                                                                                                  [      -6.27162964, -0.00100816, 0.00061807, 7.27062148, 0.99691874, 0.99837377, 0.49301906],
    3106                                                                                                  [      -6.27163095, -0.00100783, 0.00061787, 7.27062311, 0.99691975, 0.99837430, 0.49301923],
    3107                                                                                                  [      -6.27163225, -0.00100751, 0.00061767, 7.27062474, 0.99692075, 0.99837483, 0.49301935],
    3108                                                                                                  [      -6.27163355, -0.00100718, 0.00061746, 7.27062637, 0.99692175, 0.99837536, 0.49301944],
    3109                                                                                                  [      -6.27163485, -0.00100685, 0.00061726, 7.27062800, 0.99692275, 0.99837589, 0.49301961],
    3110                                                                                                  [      -6.27163614, -0.00100652, 0.00061706, 7.27062962, 0.99692375, 0.99837641, 0.49301974],
    3111                                                                                                  [      -6.27163743, -0.00100620, 0.00061686, 7.27063124, 0.99692476, 0.99837694, 0.49301990],
    3112                                                                                                  [      -6.27163872, -0.00100587, 0.00061666, 7.27063285, 0.99692576, 0.99837747, 0.49301996],
    3113                                                                                                  [      -6.27164001, -0.00100554, 0.00061646, 7.27063447, 0.99692675, 0.99837800, 0.49302013],
    3114                                                                                                  [      -6.27164130, -0.00100522, 0.00061626, 7.27063608, 0.99692775, 0.99837852, 0.49302024],
    3115                                                                                                  [      -6.27164258, -0.00100489, 0.00061606, 7.27063769, 0.99692875, 0.99837905, 0.49302039],
    3116                                                                                                  [      -6.27164386, -0.00100456, 0.00061586, 7.27063929, 0.99692975, 0.99837957, 0.49302050],
    3117                                                                                                  [      -6.27164513, -0.00100424, 0.00061566, 7.27064090, 0.99693075, 0.99838010, 0.49302064],
    3118                                                                                                  [      -6.27164641, -0.00100391, 0.00061546, 7.27064250, 0.99693174, 0.99838063, 0.49302080],
    3119                                                                                                  [      -6.27164768, -0.00100359, 0.00061526, 7.27064409, 0.99693274, 0.99838115, 0.49302092],
    3120                                                                                                  [      -6.27164895, -0.00100326, 0.00061506, 7.27064569, 0.99693373, 0.99838168, 0.49302106],
    3121                                                                                                  [      -6.27165022, -0.00100294, 0.00061486, 7.27064728, 0.99693473, 0.99838220, 0.49302117],
    3122                                                                                                  [      -6.27165148, -0.00100261, 0.00061466, 7.27064887, 0.99693572, 0.99838272, 0.49302135],
    3123                                                                                                  [      -6.27165274, -0.00100229, 0.00061446, 7.27065045, 0.99693671, 0.99838325, 0.49302147],
    3124                                                                                                  [      -6.27165400, -0.00100196, 0.00061427, 7.27065204, 0.99693770, 0.99838377, 0.49302161],
    3125                                                                                                  [      -6.27165526, -0.00100164, 0.00061407, 7.27065362, 0.99693870, 0.99838429, 0.49302174],
    3126                                                                                                  [      -6.27165651, -0.00100132, 0.00061387, 7.27065520, 0.99693969, 0.99838482, 0.49302182],
    3127                                                                                                  [      -6.27165777, -0.00100099, 0.00061367, 7.27065677, 0.99694068, 0.99838534, 0.49302200],
    3128                                                                                                  [      -6.27165902, -0.00100067, 0.00061347, 7.27065835, 0.99694167, 0.99838586, 0.49302214],
    3129                                                                                                  [      -6.27166026, -0.00100035, 0.00061327, 7.27065992, 0.99694266, 0.99838638, 0.49302227],
    3130                                                                                                  [      -6.27166151, -0.00100002, 0.00061307, 7.27066149, 0.99694364, 0.99838690, 0.49302237],
    3131                                                                                                  [      -6.27166275, -0.00099970, 0.00061288, 7.27066305, 0.99694463, 0.99838742, 0.49302253],
    3132                                                                                                  [      -6.27166399, -0.00099938, 0.00061268, 7.27066461, 0.99694562, 0.99838795, 0.49302264],
    3133                                                                                                  [      -6.27166523, -0.00099905, 0.00061248, 7.27066617, 0.99694660, 0.99838847, 0.49302277],
    3134                                                                                                  [      -6.27166646, -0.00099873, 0.00061228, 7.27066773, 0.99694759, 0.99838899, 0.49302290],
    3135                                                                                                  [      -6.27166770, -0.00099841, 0.00061208, 7.27066928, 0.99694858, 0.99838951, 0.49302301],
    3136                                                                                                  [      -6.27166893, -0.00099809, 0.00061189, 7.27067084, 0.99694956, 0.99839002, 0.49302315],
    3137                                                                                                  [      -6.27167015, -0.00099777, 0.00061169, 7.27067239, 0.99695054, 0.99839054, 0.49302331],
    3138                                                                                                  [      -6.27167138, -0.00099745, 0.00061149, 7.27067393, 0.99695153, 0.99839106, 0.49302343],
    3139                                                                                                  [      -6.27167260, -0.00099712, 0.00061130, 7.27067548, 0.99695251, 0.99839158, 0.49302354],
    3140                                                                                                  [      -6.27167382, -0.00099680, 0.00061110, 7.27067702, 0.99695349, 0.99839210, 0.49302367],
    3141                                                                                                  [      -6.27167504, -0.00099648, 0.00061090, 7.27067856, 0.99695447, 0.99839262, 0.49302378],
    3142                                                                                                  [      -6.27167626, -0.00099616, 0.00061070, 7.27068010, 0.99695545, 0.99839313, 0.49302391],
    3143                                                                                                  [      -6.27167747, -0.00099584, 0.00061051, 7.27068163, 0.99695643, 0.99839365, 0.49302405],
    3144                                                                                                  [      -6.27167868, -0.00099552, 0.00061031, 7.27068316, 0.99695741, 0.99839417, 0.49302418],
    3145                                                                                                  [      -6.27167989, -0.00099520, 0.00061012, 7.27068469, 0.99695839, 0.99839468, 0.49302428],
    3146                                                                                                  [      -6.27168110, -0.00099488, 0.00060992, 7.27068622, 0.99695937, 0.99839520, 0.49302442],
    3147                                                                                                  [      -6.27168231, -0.00099456, 0.00060972, 7.27068774, 0.99696035, 0.99839571, 0.49302457],
    3148                                                                                                  [      -6.27168351, -0.00099424, 0.00060953, 7.27068927, 0.99696133, 0.99839623, 0.49302469],
    3149                                                                                                  [      -6.27168471, -0.00099392, 0.00060933, 7.27069078, 0.99696230, 0.99839674, 0.49302483],
    3150                                                                                                  [      -6.27168591, -0.00099360, 0.00060914, 7.27069230, 0.99696328, 0.99839726, 0.49302493],
    3151                                                                                                  [      -6.27168710, -0.00099329, 0.00060894, 7.27069382, 0.99696425, 0.99839777, 0.49302510],
    3152                                                                                                  [      -6.27168829, -0.00099297, 0.00060874, 7.27069533, 0.99696523, 0.99839829, 0.49302519],
    3153                                                                                                  [      -6.27168949, -0.00099265, 0.00060855, 7.27069684, 0.99696620, 0.99839880, 0.49302531],
    3154                                                                                                  [      -6.27169067, -0.00099233, 0.00060835, 7.27069834, 0.99696717, 0.99839931, 0.49302546],
    3155                                                                                                  [      -6.27169186, -0.00099201, 0.00060816, 7.27069985, 0.99696815, 0.99839983, 0.49302559],
    3156                                                                                                  [      -6.27169305, -0.00099170, 0.00060796, 7.27070135, 0.99696912, 0.99840034, 0.49302572],
    3157                                                                                                  [      -6.27169423, -0.00099138, 0.00060777, 7.27070285, 0.99697009, 0.99840085, 0.49302581],
    3158                                                                                                  [      -6.27169541, -0.00099106, 0.00060757, 7.27070435, 0.99697106, 0.99840137, 0.49302594],
    3159                                                                                                  [      -6.27169659, -0.00099074, 0.00060738, 7.27070584, 0.99697203, 0.99840188, 0.49302606],
    3160                                                                                                  [      -6.27169776, -0.00099043, 0.00060719, 7.27070734, 0.99697300, 0.99840239, 0.49302620],
    3161                                                                                                  [      -6.27169893, -0.00099011, 0.00060699, 7.27070883, 0.99697397, 0.99840290, 0.49302635],
    3162                                                                                                  [      -6.27170011, -0.00098979, 0.00060680, 7.27071031, 0.99697494, 0.99840341, 0.49302644],
    3163                                                                                                  [      -6.27170128, -0.00098948, 0.00060660, 7.27071180, 0.99697590, 0.99840392, 0.49302662],
    3164                                                                                                  [      -6.27170244, -0.00098916, 0.00060641, 7.27071328, 0.99697687, 0.99840443, 0.49302676],
    3165                                                                                                  [      -6.27170361, -0.00098884, 0.00060622, 7.27071476, 0.99697784, 0.99840494, 0.49302682],
    3166                                                                                                  [      -6.27170477, -0.00098853, 0.00060602, 7.27071624, 0.99697880, 0.99840545, 0.49302696],
    3167                                                                                                  [      -6.27170593, -0.00098821, 0.00060583, 7.27071772, 0.99697977, 0.99840596, 0.49302711],
    3168                                                                                                  [      -6.27170709, -0.00098790, 0.00060563, 7.27071919, 0.99698073, 0.99840647, 0.49302721],
    3169                                                                                                  [      -6.27170825, -0.00098758, 0.00060544, 7.27072066, 0.99698170, 0.99840698, 0.49302733],
    3170                                                                                                  [      -6.27170940, -0.00098727, 0.00060525, 7.27072213, 0.99698266, 0.99840748, 0.49302748],
    3171                                                                                                  [      -6.27171055, -0.00098695, 0.00060505, 7.27072360, 0.99698362, 0.99840799, 0.49302765],
    3172                                                                                                  [      -6.27171170, -0.00098664, 0.00060486, 7.27072506, 0.99698459, 0.99840850, 0.49302773],
    3173                                                                                                  [      -6.27171285, -0.00098633, 0.00060467, 7.27072652, 0.99698555, 0.99840901, 0.49302786],
    3174                                                                                                  [      -6.27171399, -0.00098601, 0.00060448, 7.27072798, 0.99698651, 0.99840951, 0.49302797],
    3175                                                                                                  [      -6.27171514, -0.00098570, 0.00060428, 7.27072944, 0.99698747, 0.99841002, 0.49302811],
    3176                                                                                                  [      -6.27171628, -0.00098538, 0.00060409, 7.27073090, 0.99698843, 0.99841053, 0.49302824],
    3177                                                                                                  [      -6.27171742, -0.00098507, 0.00060390, 7.27073235, 0.99698939, 0.99841103, 0.49302835],
    3178                                                                                                  [      -6.27171856, -0.00098476, 0.00060371, 7.27073380, 0.99699035, 0.99841154, 0.49302848],
    3179                                                                                                  [      -6.27171969, -0.00098444, 0.00060351, 7.27073525, 0.99699130, 0.99841204, 0.49302858],
    3180                                                                                                  [      -6.27172082, -0.00098413, 0.00060332, 7.27073669, 0.99699226, 0.99841255, 0.49302871],
    3181                                                                                                  [      -6.27172196, -0.00098382, 0.00060313, 7.27073814, 0.99699322, 0.99841305, 0.49302887],
    3182                                                                                                  [      -6.27172309, -0.00098351, 0.00060294, 7.27073958, 0.99699417, 0.99841356, 0.49302895],
    3183                                                                                                  [      -6.27172421, -0.00098319, 0.00060275, 7.27074102, 0.99699513, 0.99841406, 0.49302912],
    3184                                                                                                  [      -6.27172534, -0.00098288, 0.00060256, 7.27074246, 0.99699608, 0.99841456, 0.49302925],
    3185                                                                                                  [      -6.27172646, -0.00098257, 0.00060236, 7.27074389, 0.99699704, 0.99841507, 0.49302935],
    3186                                                                                                  [      -6.27172758, -0.00098226, 0.00060217, 7.27074532, 0.99699799, 0.99841557, 0.49302945],
    3187                                                                                                  [      -6.27172870, -0.00098195, 0.00060198, 7.27074676, 0.99699894, 0.99841607, 0.49302959],
    3188                                                                                                  [      -6.27172982, -0.00098163, 0.00060179, 7.27074818, 0.99699990, 0.99841657, 0.49302970],
    3189                                                                                                  [      -6.27173093, -0.00098132, 0.00060160, 7.27074961, 0.99700085, 0.99841708, 0.49302981],
    3190                                                                                                  [      -6.27173205, -0.00098101, 0.00060141, 7.27075103, 0.99700180, 0.99841758, 0.49302992],
    3191                                                                                                  [      -6.27173316, -0.00098070, 0.00060122, 7.27075246, 0.99700275, 0.99841808, 0.49303009],
    3192                                                                                                  [      -6.27173427, -0.00098039, 0.00060103, 7.27075388, 0.99700370, 0.99841858, 0.49303019],
    3193                                                                                                  [      -6.27173537, -0.00098008, 0.00060084, 7.27075529, 0.99700465, 0.99841908, 0.49303031],
    3194                                                                                                  [      -6.27173648, -0.00097977, 0.00060065, 7.27075671, 0.99700560, 0.99841958, 0.49303044],
    3195                                                                                                  [      -6.27173758, -0.00097946, 0.00060046, 7.27075812, 0.99700655, 0.99842008, 0.49303056],
    3196                                                                                                  [      -6.27173868, -0.00097915, 0.00060027, 7.27075953, 0.99700749, 0.99842058, 0.49303069],
    3197                                                                                                  [      -6.27173978, -0.00097884, 0.00060008, 7.27076094, 0.99700844, 0.99842108, 0.49303080],
    3198                                                                                                  [      -6.27174088, -0.00097853, 0.00059989, 7.27076235, 0.99700939, 0.99842158, 0.49303094],
    3199                                                                                                  [      -6.27174198, -0.00097822, 0.00059970, 7.27076375, 0.99701033, 0.99842208, 0.49303107],
    3200                                                                                                  [      -6.27174307, -0.00097791, 0.00059951, 7.27076516, 0.99701128, 0.99842258, 0.49303120],
    3201                                                                                                  [      -6.27174416, -0.00097761, 0.00059932, 7.27076656, 0.99701222, 0.99842308, 0.49303132],
    3202                                                                                                  [      -6.27174525, -0.00097730, 0.00059913, 7.27076795, 0.99701317, 0.99842357, 0.49303142],
    3203                                                                                                  [      -6.27174634, -0.00097699, 0.00059894, 7.27076935, 0.99701411, 0.99842407, 0.49303154],
    3204                                                                                                  [      -6.27174743, -0.00097668, 0.00059875, 7.27077075, 0.99701505, 0.99842457, 0.49303168],
    3205                                                                                                  [      -6.27174851, -0.00097637, 0.00059856, 7.27077214, 0.99701599, 0.99842507, 0.49303176],
    3206                                                                                                  [      -6.27174959, -0.00097606, 0.00059837, 7.27077353, 0.99701693, 0.99842556, 0.49303192],
    3207                                                                                                  [      -6.27175067, -0.00097576, 0.00059818, 7.27077491, 0.99701788, 0.99842606, 0.49303205],
    3208                                                                                                  [      -6.27175175, -0.00097545, 0.00059800, 7.27077630, 0.99701882, 0.99842656, 0.49303212],
    3209                                                                                                  [      -6.27175283, -0.00097514, 0.00059781, 7.27077769, 0.99701976, 0.99842705, 0.49303223],
    3210                                                                                                  [      -6.27175390, -0.00097484, 0.00059762, 7.27077907, 0.99702070, 0.99842755, 0.49303239],
    3211                                                                                                  [      -6.27175497, -0.00097453, 0.00059743, 7.27078045, 0.99702163, 0.99842804, 0.49303247],
    3212                                                                                                  [      -6.27175605, -0.00097422, 0.00059724, 7.27078182, 0.99702257, 0.99842854, 0.49303263],
    3213                                                                                                  [      -6.27175712, -0.00097392, 0.00059705, 7.27078320, 0.99702351, 0.99842903, 0.49303277],
    3214                                                                                                  [      -6.27175818, -0.00097361, 0.00059687, 7.27078457, 0.99702445, 0.99842952, 0.49303287],
    3215                                                                                                  [      -6.27175925, -0.00097330, 0.00059668, 7.27078595, 0.99702538, 0.99843002, 0.49303298],
    3216                                                                                                  [      -6.27176031, -0.00097300, 0.00059649, 7.27078731, 0.99702632, 0.99843051, 0.49303309],
    3217                                                                                                  [      -6.27176137, -0.00097269, 0.00059630, 7.27078868, 0.99702725, 0.99843101, 0.49303324],
    3218                                                                                                  [      -6.27176243, -0.00097239, 0.00059612, 7.27079005, 0.99702819, 0.99843150, 0.49303337],
    3219                                                                                                  [      -6.27176349, -0.00097208, 0.00059593, 7.27079141, 0.99702912, 0.99843199, 0.49303342],
    3220                                                                                                  [      -6.27176455, -0.00097178, 0.00059574, 7.27079277, 0.99703005, 0.99843248, 0.49303355],
    3221                                                                                                  [      -6.27176560, -0.00097147, 0.00059555, 7.27079413, 0.99703099, 0.99843298, 0.49303367],
    3222                                                                                                  [      -6.27176666, -0.00097117, 0.00059537, 7.27079549, 0.99703192, 0.99843347, 0.49303384],
    3223                                                                                                  [      -6.27176771, -0.00097086, 0.00059518, 7.27079685, 0.99703285, 0.99843396, 0.49303391],
    3224                                                                                                  [      -6.27176876, -0.00097056, 0.00059499, 7.27079820, 0.99703378, 0.99843445, 0.49303404],
    3225                                                                                                  [      -6.27176980, -0.00097025, 0.00059481, 7.27079955, 0.99703471, 0.99843494, 0.49303417],
    3226                                                                                                  [      -6.27177085, -0.00096995, 0.00059462, 7.27080090, 0.99703564, 0.99843543, 0.49303426],
    3227                                                                                                  [      -6.27177189, -0.00096965, 0.00059443, 7.27080225, 0.99703657, 0.99843592, 0.49303442],
    3228                                                                                                  [      -6.27177294, -0.00096934, 0.00059425, 7.27080359, 0.99703750, 0.99843641, 0.49303454],
    3229                                                                                                  [      -6.27177398, -0.00096904, 0.00059406, 7.27080494, 0.99703843, 0.99843690, 0.49303464],
    3230                                                                                                  [      -6.27177502, -0.00096874, 0.00059388, 7.27080628, 0.99703936, 0.99843739, 0.49303476],
    3231                                                                                                  [      -6.27177605, -0.00096843, 0.00059369, 7.27080762, 0.99704028, 0.99843788, 0.49303487],
    3232                                                                                                  [      -6.27177709, -0.00096813, 0.00059350, 7.27080896, 0.99704121, 0.99843837, 0.49303501],
    3233                                                                                                  [      -6.27177812, -0.00096783, 0.00059332, 7.27081030, 0.99704213, 0.99843886, 0.49303512],
    3234                                                                                                  [      -6.27177915, -0.00096752, 0.00059313, 7.27081163, 0.99704306, 0.99843934, 0.49303521],
    3235                                                                                                  [      -6.27178018, -0.00096722, 0.00059295, 7.27081296, 0.99704398, 0.99843983, 0.49303537],
    3236                                                                                                  [      -6.27178121, -0.00096692, 0.00059276, 7.27081429, 0.99704491, 0.99844032, 0.49303546],
    3237                                                                                                  [      -6.27178224, -0.00096662, 0.00059258, 7.27081562, 0.99704583, 0.99844081, 0.49303558],
    3238                                                                                                  [      -6.27178326, -0.00096632, 0.00059239, 7.27081695, 0.99704675, 0.99844129, 0.49303575],
    3239                                                                                                  [      -6.27178429, -0.00096602, 0.00059221, 7.27081827, 0.99704768, 0.99844178, 0.49303581],
    3240                                                                                                  [      -6.27178531, -0.00096571, 0.00059202, 7.27081960, 0.99704860, 0.99844227, 0.49303591],
    3241                                                                                                  [      -6.27178633, -0.00096541, 0.00059184, 7.27082092, 0.99704952, 0.99844275, 0.49303609],
    3242                                                                                                  [      -6.27178735, -0.00096511, 0.00059165, 7.27082224, 0.99705044, 0.99844324, 0.49303618],
    3243                                                                                                  [      -6.27178836, -0.00096481, 0.00059147, 7.27082355, 0.99705136, 0.99844372, 0.49303628],
    3244                                                                                                  [      -6.27178938, -0.00096451, 0.00059128, 7.27082487, 0.99705228, 0.99844421, 0.49303641],
    3245                                                                                                  [      -6.27179039, -0.00096421, 0.00059110, 7.27082618, 0.99705320, 0.99844469, 0.49303652],
    3246                                                                                                  [      -6.27179140, -0.00096391, 0.00059091, 7.27082749, 0.99705412, 0.99844518, 0.49303666],
    3247                                                                                                  [      -6.27179242, -0.00096361, 0.00059073, 7.27082881, 0.99705503, 0.99844566, 0.49303673],
    3248                                                                                                  [      -6.27179342, -0.00096331, 0.00059055, 7.27083011, 0.99705595, 0.99844614, 0.49303690],
    3249                                                                                                  [      -6.27179443, -0.00096301, 0.00059036, 7.27083142, 0.99705687, 0.99844663, 0.49303700],
    3250                                                                                                  [      -6.27179544, -0.00096271, 0.00059018, 7.27083272, 0.99705778, 0.99844711, 0.49303712],
    3251                                                                                                  [      -6.27179644, -0.00096241, 0.00058999, 7.27083403, 0.99705870, 0.99844759, 0.49303722],
    3252                                                                                                  [      -6.27179744, -0.00096211, 0.00058981, 7.27083533, 0.99705961, 0.99844808, 0.49303732],
    3253                                                                                                  [      -6.27179844, -0.00096181, 0.00058963, 7.27083663, 0.99706053, 0.99844856, 0.49303745],
    3254                                                                                                  [      -6.27179944, -0.00096152, 0.00058944, 7.27083792, 0.99706144, 0.99844904, 0.49303757],
    3255                                                                                                  [      -6.27180044, -0.00096122, 0.00058926, 7.27083922, 0.99706235, 0.99844952, 0.49303771],
    3256                                                                                                  [      -6.27180143, -0.00096092, 0.00058908, 7.27084051, 0.99706327, 0.99845000, 0.49303777],
    3257                                                                                                  [      -6.27180243, -0.00096062, 0.00058890, 7.27084181, 0.99706418, 0.99845048, 0.49303795],
    3258                                                                                                  [      -6.27180342, -0.00096032, 0.00058871, 7.27084310, 0.99706509, 0.99845097, 0.49303802],
    3259                                                                                                  [      -6.27180441, -0.00096002, 0.00058853, 7.27084438, 0.99706600, 0.99845145, 0.49303815],
    3260                                                                                                  [      -6.27180540, -0.00095973, 0.00058835, 7.27084567, 0.99706691, 0.99845193, 0.49303827],
    3261                                                                                                  [      -6.27180639, -0.00095943, 0.00058816, 7.27084696, 0.99706782, 0.99845241, 0.49303836],
    3262                                                                                                  [      -6.27180737, -0.00095913, 0.00058798, 7.27084824, 0.99706873, 0.99845289, 0.49303844],
    3263                                                                                                  [      -6.27180836, -0.00095884, 0.00058780, 7.27084952, 0.99706964, 0.99845336, 0.49303861],
    3264                                                                                                  [      -6.27180934, -0.00095854, 0.00058762, 7.27085080, 0.99707055, 0.99845384, 0.49303868],
    3265                                                                                                  [      -6.27181032, -0.00095824, 0.00058744, 7.27085208, 0.99707145, 0.99845432, 0.49303884],
    3266                                                                                                  [      -6.27181130, -0.00095795, 0.00058725, 7.27085335, 0.99707236, 0.99845480, 0.49303895],
    3267                                                                                                  [      -6.27181228, -0.00095765, 0.00058707, 7.27085463, 0.99707327, 0.99845528, 0.49303908],
    3268                                                                                                  [      -6.27181325, -0.00095735, 0.00058689, 7.27085590, 0.99707417, 0.99845576, 0.49303915],
    3269                                                                                                  [      -6.27181423, -0.00095706, 0.00058671, 7.27085717, 0.99707508, 0.99845623, 0.49303928],
    3270                                                                                                  [      -6.27181520, -0.00095676, 0.00058653, 7.27085844, 0.99707598, 0.99845671, 0.49303940],
    3271                                                                                                  [      -6.27181618, -0.00095647, 0.00058635, 7.27085971, 0.99707689, 0.99845719, 0.49303950],
    3272                                                                                                  [      -6.27181715, -0.00095617, 0.00058616, 7.27086098, 0.99707779, 0.99845766, 0.49303965],
    3273                                                                                                  [      -6.27181811, -0.00095588, 0.00058598, 7.27086224, 0.99707869, 0.99845814, 0.49303979],
    3274                                                                                                  [      -6.27181908, -0.00095558, 0.00058580, 7.27086350, 0.99707960, 0.99845862, 0.49303989],
    3275                                                                                                  [      -6.27182005, -0.00095529, 0.00058562, 7.27086476, 0.99708050, 0.99845909, 0.49303994],
    3276                                                                                                  [      -6.27182101, -0.00095499, 0.00058544, 7.27086602, 0.99708140, 0.99845957, 0.49304006],
    3277                                                                                                  [      -6.27182198, -0.00095470, 0.00058526, 7.27086728, 0.99708230, 0.99846004, 0.49304023],
    3278                                                                                                  [      -6.27182294, -0.00095440, 0.00058508, 7.27086854, 0.99708320, 0.99846052, 0.49304031],
    3279                                                                                                  [      -6.27182390, -0.00095411, 0.00058490, 7.27086979, 0.99708410, 0.99846099, 0.49304040],
    3280                                                                                                  [      -6.27182486, -0.00095381, 0.00058472, 7.27087104, 0.99708500, 0.99846147, 0.49304052],
    3281                                                                                                  [      -6.27182581, -0.00095352, 0.00058454, 7.27087229, 0.99708590, 0.99846194, 0.49304066],
    3282                                                                                                  [      -6.27182677, -0.00095323, 0.00058436, 7.27087354, 0.99708680, 0.99846242, 0.49304078],
    3283                                                                                                  [      -6.27182772, -0.00095293, 0.00058418, 7.27087479, 0.99708769, 0.99846289, 0.49304090],
    3284                                                                                                  [      -6.27182867, -0.00095264, 0.00058400, 7.27087603, 0.99708859, 0.99846336, 0.49304102],
    3285                                                                                                  [      -6.27182963, -0.00095235, 0.00058382, 7.27087728, 0.99708949, 0.99846383, 0.49304112],
    3286                                                                                                  [      -6.27183058, -0.00095205, 0.00058364, 7.27087852, 0.99709038, 0.99846431, 0.49304120],
    3287                                                                                                  [      -6.27183152, -0.00095176, 0.00058346, 7.27087976, 0.99709128, 0.99846478, 0.49304129],
    3288                                                                                                  [      -6.27183247, -0.00095147, 0.00058328, 7.27088100, 0.99709217, 0.99846525, 0.49304145],
    3289                                                                                                  [      -6.27183342, -0.00095118, 0.00058310, 7.27088224, 0.99709307, 0.99846572, 0.49304157],
    3290                                                                                                  [      -6.27183436, -0.00095088, 0.00058292, 7.27088348, 0.99709396, 0.99846619, 0.49304165],
    3291                                                                                                  [      -6.27183530, -0.00095059, 0.00058274, 7.27088471, 0.99709485, 0.99846667, 0.49304175],
    3292                                                                                                  [      -6.27183624, -0.00095030, 0.00058256, 7.27088594, 0.99709575, 0.99846714, 0.49304190],
    3293                                                                                                  [      -6.27183718, -0.00095001, 0.00058238, 7.27088717, 0.99709664, 0.99846761, 0.49304204],
    3294                                                                                                  [      -6.27183812, -0.00094972, 0.00058221, 7.27088840, 0.99709753, 0.99846808, 0.49304212],
    3295                                                                                                  [      -6.27183906, -0.00094943, 0.00058203, 7.27088963, 0.99709842, 0.99846855, 0.49304222],
    3296                                                                                                  [      -6.27183999, -0.00094914, 0.00058185, 7.27089086, 0.99709931, 0.99846902, 0.49304233],
    3297                                                                                                  [      -6.27184093, -0.00094884, 0.00058167, 7.27089208, 0.99710020, 0.99846949, 0.49304245],
    3298                                                                                                  [      -6.27184186, -0.00094855, 0.00058149, 7.27089331, 0.99710109, 0.99846996, 0.49304255],
    3299                                                                                                  [      -6.27184279, -0.00094826, 0.00058131, 7.27089453, 0.99710198, 0.99847042, 0.49304263],
    3300                                                                                                  [      -6.27184372, -0.00094797, 0.00058113, 7.27089575, 0.99710287, 0.99847089, 0.49304277],
    3301                                                                                                  [      -6.27184465, -0.00094768, 0.00058096, 7.27089697, 0.99710375, 0.99847136, 0.49304288],
    3302                                                                                                  [      -6.27184558, -0.00094739, 0.00058078, 7.27089818, 0.99710464, 0.99847183, 0.49304302],
    3303                                                                                                  [      -6.27184650, -0.00094710, 0.00058060, 7.27089940, 0.99710553, 0.99847230, 0.49304309],
    3304                                                                                                  [      -6.27184743, -0.00094681, 0.00058042, 7.27090061, 0.99710641, 0.99847276, 0.49304322],
    3305                                                                                                  [      -6.27184835, -0.00094652, 0.00058025, 7.27090182, 0.99710730, 0.99847323, 0.49304332],
    3306                                                                                                  [      -6.27184927, -0.00094623, 0.00058007, 7.27090304, 0.99710818, 0.99847370, 0.49304348],
    3307                                                                                                  [      -6.27185019, -0.00094595, 0.00057989, 7.27090424, 0.99710907, 0.99847416, 0.49304351],
    3308                                                                                                  [      -6.27185111, -0.00094566, 0.00057971, 7.27090545, 0.99710995, 0.99847463, 0.49304363],
    3309                                                                                                  [      -6.27185203, -0.00094537, 0.00057954, 7.27090666, 0.99711083, 0.99847510, 0.49304378],
    3310                                                                                                  [      -6.27185294, -0.00094508, 0.00057936, 7.27090786, 0.99711172, 0.99847556, 0.49304390],
    3311                                                                                                  [      -6.27185386, -0.00094479, 0.00057918, 7.27090907, 0.99711260, 0.99847603, 0.49304399],
    3312                                                                                                  [      -6.27185477, -0.00094450, 0.00057901, 7.27091027, 0.99711348, 0.99847649, 0.49304412],
    3313                                                                                                  [      -6.27185568, -0.00094421, 0.00057883, 7.27091147, 0.99711436, 0.99847696, 0.49304419],
    3314                                                                                                  [      -6.27185659, -0.00094393, 0.00057865, 7.27091267, 0.99711524, 0.99847742, 0.49304433],
    3315                                                                                                  [      -6.27185750, -0.00094364, 0.00057848, 7.27091386, 0.99711612, 0.99847789, 0.49304445],
    3316                                                                                                  [      -6.27185841, -0.00094335, 0.00057830, 7.27091506, 0.99711700, 0.99847835, 0.49304453],
    3317                                                                                                  [      -6.27185932, -0.00094306, 0.00057812, 7.27091625, 0.99711788, 0.99847881, 0.49304463],
    3318                                                                                                  [      -6.27186022, -0.00094278, 0.00057795, 7.27091745, 0.99711876, 0.99847928, 0.49304471],
    3319                                                                                                  [      -6.27186113, -0.00094249, 0.00057777, 7.27091864, 0.99711964, 0.99847974, 0.49304488],
    3320                                                                                                  [      -6.27186203, -0.00094220, 0.00057759, 7.27091983, 0.99712051, 0.99848020, 0.49304496],
    3321                                                                                                  [      -6.27186293, -0.00094192, 0.00057742, 7.27092101, 0.99712139, 0.99848067, 0.49304509],
    3322                                                                                                  [      -6.27186383, -0.00094163, 0.00057724, 7.27092220, 0.99712227, 0.99848113, 0.49304521],
    3323                                                                                                  [      -6.27186473, -0.00094134, 0.00057707, 7.27092339, 0.99712314, 0.99848159, 0.49304528],
    3324                                                                                                  [      -6.27186563, -0.00094106, 0.00057689, 7.27092457, 0.99712402, 0.99848205, 0.49304542],
    3325                                                                                                  [      -6.27186652, -0.00094077, 0.00057672, 7.27092575, 0.99712489, 0.99848251, 0.49304552],
    3326                                                                                                  [      -6.27186742, -0.00094049, 0.00057654, 7.27092693, 0.99712577, 0.99848297, 0.49304562],
    3327                                                                                                  [      -6.27186831, -0.00094020, 0.00057636, 7.27092811, 0.99712664, 0.99848344, 0.49304571],
    3328                                                                                                  [      -6.27186920, -0.00093991, 0.00057619, 7.27092929, 0.99712751, 0.99848390, 0.49304585],
    3329                                                                                                  [      -6.27187010, -0.00093963, 0.00057601, 7.27093047, 0.99712839, 0.99848436, 0.49304595],
    3330                                                                                                  [      -6.27187098, -0.00093934, 0.00057584, 7.27093164, 0.99712926, 0.99848482, 0.49304606],
    3331                                                                                                  [      -6.27187187, -0.00093906, 0.00057567, 7.27093281, 0.99713013, 0.99848528, 0.49304619],
    3332                                                                                                  [      -6.27187276, -0.00093877, 0.00057549, 7.27093399, 0.99713100, 0.99848574, 0.49304625],
    3333                                                                                                  [      -6.27187365, -0.00093849, 0.00057532, 7.27093516, 0.99713187, 0.99848619, 0.49304638],
    3334                                                                                                  [      -6.27187453, -0.00093821, 0.00057514, 7.27093633, 0.99713274, 0.99848665, 0.49304650],
    3335                                                                                                  [      -6.27187541, -0.00093792, 0.00057497, 7.27093749, 0.99713361, 0.99848711, 0.49304662],
    3336                                                                                                  [      -6.27187630, -0.00093764, 0.00057479, 7.27093866, 0.99713448, 0.99848757, 0.49304675],
    3337                                                                                                  [      -6.27187718, -0.00093735, 0.00057462, 7.27093983, 0.99713535, 0.99848803, 0.49304680],
    3338                                                                                                  [      -6.27187806, -0.00093707, 0.00057444, 7.27094099, 0.99713622, 0.99848849, 0.49304696],
    3339                                                                                                  [      -6.27187894, -0.00093679, 0.00057427, 7.27094215, 0.99713708, 0.99848894, 0.49304701],
    3340                                                                                                  [      -6.27187981, -0.00093650, 0.00057410, 7.27094331, 0.99713795, 0.99848940, 0.49304717],
    3341                                                                                                  [      -6.27188069, -0.00093622, 0.00057392, 7.27094447, 0.99713882, 0.99848986, 0.49304726],
    3342                                                                                                  [      -6.27188156, -0.00093594, 0.00057375, 7.27094563, 0.99713968, 0.99849031, 0.49304734],
    3343                                                                                                  [      -6.27188244, -0.00093565, 0.00057358, 7.27094678, 0.99714055, 0.99849077, 0.49304749],
    3344                                                                                                  [      -6.27188331, -0.00093537, 0.00057340, 7.27094794, 0.99714141, 0.99849123, 0.49304756],
    3345                                                                                                  [      -6.27188418, -0.00093509, 0.00057323, 7.27094909, 0.99714228, 0.99849168, 0.49304769],
    3346                                                                                                  [      -6.27188505, -0.00093481, 0.00057306, 7.27095025, 0.99714314, 0.99849214, 0.49304781],
    3347                                                                                                  [      -6.27188592, -0.00093452, 0.00057288, 7.27095140, 0.99714400, 0.99849259, 0.49304789],
    3348                                                                                                  [      -6.27188679, -0.00093424, 0.00057271, 7.27095255, 0.99714486, 0.99849305, 0.49304797],
    3349                                                                                                  [      -6.27188765, -0.00093396, 0.00057254, 7.27095369, 0.99714573, 0.99849350, 0.49304811],
    3350                                                                                                  [      -6.27188852, -0.00093368, 0.00057236, 7.27095484, 0.99714659, 0.99849396, 0.49304819],
    3351                                                                                                  [      -6.27188938, -0.00093340, 0.00057219, 7.27095599, 0.99714745, 0.99849441, 0.49304832],
    3352                                                                                                  [      -6.27189025, -0.00093312, 0.00057202, 7.27095713, 0.99714831, 0.99849487, 0.49304841],
    3353                                                                                                  [      -6.27189111, -0.00093283, 0.00057185, 7.27095827, 0.99714917, 0.99849532, 0.49304852],
    3354                                                                                                  [      -6.27189197, -0.00093255, 0.00057167, 7.27095942, 0.99715003, 0.99849577, 0.49304861],
    3355                                                                                                  [      -6.27189283, -0.00093227, 0.00057150, 7.27096056, 0.99715089, 0.99849623, 0.49304875],
    3356                                                                                                  [      -6.27189369, -0.00093199, 0.00057133, 7.27096169, 0.99715175, 0.99849668, 0.49304884],
    3357                                                                                                  [      -6.27189454, -0.00093171, 0.00057116, 7.27096283, 0.99715260, 0.99849713, 0.49304894],
    3358                                                                                                  [      -6.27189540, -0.00093143, 0.00057098, 7.27096397, 0.99715346, 0.99849758, 0.49304909],
    3359                                                                                                  [      -6.27189625, -0.00093115, 0.00057081, 7.27096510, 0.99715432, 0.99849804, 0.49304918],
    3360                                                                                                  [      -6.27189711, -0.00093087, 0.00057064, 7.27096624, 0.99715517, 0.99849849, 0.49304926],
    3361                                                                                                  [      -6.27189796, -0.00093059, 0.00057047, 7.27096737, 0.99715603, 0.99849894, 0.49304941],
    3362                                                                                                  [      -6.27189881, -0.00093031, 0.00057030, 7.27096850, 0.99715689, 0.99849939, 0.49304950],
    3363                                                                                                  [      -6.27189966, -0.00093003, 0.00057013, 7.27096963, 0.99715774, 0.99849984, 0.49304958],
    3364                                                                                                  [      -6.27190051, -0.00092975, 0.00056995, 7.27097076, 0.99715860, 0.99850029, 0.49304964],
    3365                                                                                                  [      -6.27190136, -0.00092947, 0.00056978, 7.27097188, 0.99715945, 0.99850074, 0.49304982],
    3366                                                                                                  [      -6.27190220, -0.00092919, 0.00056961, 7.27097301, 0.99716030, 0.99850119, 0.49304989],
    3367                                                                                                  [      -6.27190305, -0.00092892, 0.00056944, 7.27097413, 0.99716115, 0.99850164, 0.49305004],
    3368                                                                                                  [      -6.27190389, -0.00092864, 0.00056927, 7.27097525, 0.99716201, 0.99850209, 0.49305011],
    3369                                                                                                  [      -6.27190474, -0.00092836, 0.00056910, 7.27097638, 0.99716286, 0.99850254, 0.49305025],
    3370                                                                                                  [      -6.27190558, -0.00092808, 0.00056893, 7.27097750, 0.99716371, 0.99850299, 0.49305033],
    3371                                                                                                  [      -6.27190642, -0.00092780, 0.00056876, 7.27097862, 0.99716456, 0.99850344, 0.49305045],
    3372                                                                                                  [      -6.27190726, -0.00092752, 0.00056859, 7.27097973, 0.99716541, 0.99850389, 0.49305056],
    3373                                                                                                  [      -6.27190810, -0.00092725, 0.00056842, 7.27098085, 0.99716626, 0.99850434, 0.49305065],
    3374                                                                                                  [      -6.27190893, -0.00092697, 0.00056825, 7.27098197, 0.99716711, 0.99850478, 0.49305076],
    3375                                                                                                  [      -6.27190977, -0.00092669, 0.00056808, 7.27098308, 0.99716796, 0.99850523, 0.49305085],
    3376                                                                                                  [      -6.27191061, -0.00092641, 0.00056791, 7.27098419, 0.99716881, 0.99850568, 0.49305094],
    3377                                                                                                  [      -6.27191144, -0.00092614, 0.00056774, 7.27098530, 0.99716965, 0.99850613, 0.49305108],
    3378                                                                                                  [      -6.27191227, -0.00092586, 0.00056757, 7.27098641, 0.99717050, 0.99850657, 0.49305115],
    3379                                                                                                  [      -6.27191311, -0.00092558, 0.00056740, 7.27098752, 0.99717135, 0.99850702, 0.49305125],
    3380                                                                                                  [      -6.27191394, -0.00092531, 0.00056723, 7.27098863, 0.99717219, 0.99850747, 0.49305139],
    3381                                                                                                  [      -6.27191477, -0.00092503, 0.00056706, 7.27098974, 0.99717304, 0.99850791, 0.49305148],
    3382                                                                                                  [      -6.27191559, -0.00092475, 0.00056689, 7.27099084, 0.99717389, 0.99850836, 0.49305158],
    3383                                                                                                  [      -6.27191642, -0.00092448, 0.00056672, 7.27099194, 0.99717473, 0.99850880, 0.49305167],
    3384                                                                                                  [      -6.27191725, -0.00092420, 0.00056655, 7.27099305, 0.99717557, 0.99850925, 0.49305181],
    3385                                                                                                  [      -6.27191807, -0.00092393, 0.00056638, 7.27099415, 0.99717642, 0.99850969, 0.49305190],
    3386                                                                                                  [      -6.27191890, -0.00092365, 0.00056621, 7.27099525, 0.99717726, 0.99851014, 0.49305201],
    3387                                                                                                  [      -6.27191972, -0.00092338, 0.00056604, 7.27099635, 0.99717810, 0.99851058, 0.49305208],
    3388                                                                                                  [      -6.27192054, -0.00092310, 0.00056587, 7.27099744, 0.99717895, 0.99851103, 0.49305223],
    3389                                                                                                  [      -6.27192136, -0.00092282, 0.00056570, 7.27099854, 0.99717979, 0.99851147, 0.49305232],
    3390                                                                                                  [      -6.27192218, -0.00092255, 0.00056553, 7.27099964, 0.99718063, 0.99851192, 0.49305243],
    3391                                                                                                  [      -6.27192300, -0.00092227, 0.00056537, 7.27100073, 0.99718147, 0.99851236, 0.49305250],
    3392                                                                                                  [      -6.27192382, -0.00092200, 0.00056520, 7.27100182, 0.99718231, 0.99851280, 0.49305258],
    3393                                                                                                  [      -6.27192464, -0.00092173, 0.00056503, 7.27100291, 0.99718315, 0.99851325, 0.49305275],
    3394                                                                                                  [      -6.27192545, -0.00092145, 0.00056486, 7.27100400, 0.99718399, 0.99851369, 0.49305278],
    3395                                                                                                  [      -6.27192627, -0.00092118, 0.00056469, 7.27100509, 0.99718483, 0.99851413, 0.49305295],
    3396                                                                                                  [      -6.27192708, -0.00092090, 0.00056452, 7.27100618, 0.99718566, 0.99851457, 0.49305299],
    3397                                                                                                  [      -6.27192790, -0.00092063, 0.00056436, 7.27100727, 0.99718650, 0.99851502, 0.49305314],
    3398                                                                                                  [      -6.27192871, -0.00092036, 0.00056419, 7.27100835, 0.99718734, 0.99851546, 0.49305323],
    3399                                                                                                  [      -6.27192952, -0.00092008, 0.00056402, 7.27100944, 0.99718818, 0.99851590, 0.49305333],
    3400                                                                                                  [      -6.27193033, -0.00091981, 0.00056385, 7.27101052, 0.99718901, 0.99851634, 0.49305345],
    3401                                                                                                  [      -6.27193114, -0.00091954, 0.00056368, 7.27101160, 0.99718985, 0.99851678, 0.49305349],
    3402                                                                                                  [      -6.27193194, -0.00091926, 0.00056352, 7.27101268, 0.99719068, 0.99851722, 0.49305365],
    3403                                                                                                  [      -6.27193275, -0.00091899, 0.00056335, 7.27101376, 0.99719152, 0.99851766, 0.49305371],
    3404                                                                                                  [      -6.27193356, -0.00091872, 0.00056318, 7.27101484, 0.99719235, 0.99851810, 0.49305382],
    3405                                                                                                  [      -6.27193436, -0.00091844, 0.00056301, 7.27101592, 0.99719318, 0.99851854, 0.49305392],
    3406                                                                                                  [      -6.27193516, -0.00091817, 0.00056285, 7.27101699, 0.99719402, 0.99851898, 0.49305400],
    3407                                                                                                  [      -6.27193597, -0.00091790, 0.00056268, 7.27101807, 0.99719485, 0.99851942, 0.49305415],
    3408                                                                                                  [      -6.27193677, -0.00091763, 0.00056251, 7.27101914, 0.99719568, 0.99851986, 0.49305427],
    3409                                                                                                  [      -6.27193757, -0.00091736, 0.00056235, 7.27102021, 0.99719651, 0.99852030, 0.49305437],
    3410                                                                                                  [      -6.27193837, -0.00091708, 0.00056218, 7.27102128, 0.99719735, 0.99852074, 0.49305443],
    3411                                                                                                  [      -6.27193917, -0.00091681, 0.00056201, 7.27102235, 0.99719818, 0.99852117, 0.49305458],
    3412                                                                                                  [      -6.27193996, -0.00091654, 0.00056185, 7.27102342, 0.99719901, 0.99852161, 0.49305464],
    3413                                                                                                  [      -6.27194076, -0.00091627, 0.00056168, 7.27102449, 0.99719984, 0.99852205, 0.49305472],
    3414                                                                                                  [      -6.27194155, -0.00091600, 0.00056151, 7.27102556, 0.99720066, 0.99852249, 0.49305485],
    3415                                                                                                  [      -6.27194235, -0.00091573, 0.00056135, 7.27102662, 0.99720149, 0.99852292, 0.49305488],
    3416                                                                                                  [      -6.27194314, -0.00091546, 0.00056118, 7.27102769, 0.99720232, 0.99852336, 0.49305501],
    3417                                                                                                  [      -6.27194394, -0.00091519, 0.00056102, 7.27102875, 0.99720315, 0.99852380, 0.49305520],
    3418                                                                                                  [      -6.27194473, -0.00091492, 0.00056085, 7.27102981, 0.99720398, 0.99852423, 0.49305527],
    3419                                                                                                  [      -6.27194552, -0.00091465, 0.00056068, 7.27103087, 0.99720480, 0.99852467, 0.49305537],
    3420                                                                                                  [      -6.27194631, -0.00091438, 0.00056052, 7.27103193, 0.99720563, 0.99852511, 0.49305541],
    3421                                                                                                  [      -6.27194710, -0.00091411, 0.00056035, 7.27103299, 0.99720646, 0.99852554, 0.49305558],
    3422                                                                                                  [      -6.27194788, -0.00091384, 0.00056019, 7.27103405, 0.99720728, 0.99852598, 0.49305568],
    3423                                                                                                  [      -6.27194867, -0.00091357, 0.00056002, 7.27103510, 0.99720811, 0.99852641, 0.49305582],
    3424                                                                                                  [      -6.27194946, -0.00091330, 0.00055986, 7.27103616, 0.99720893, 0.99852685, 0.49305585],
    3425                                                                                                  [      -6.27195024, -0.00091303, 0.00055969, 7.27103721, 0.99720975, 0.99852728, 0.49305599],
    3426                                                                                                  [      -6.27195102, -0.00091276, 0.00055953, 7.27103827, 0.99721058, 0.99852772, 0.49305606],
    3427                                                                                                  [      -6.27195181, -0.00091249, 0.00055936, 7.27103932, 0.99721140, 0.99852815, 0.49305614],
    3428                                                                                                  [      -6.27195259, -0.00091222, 0.00055920, 7.27104037, 0.99721222, 0.99852858, 0.49305629],
    3429                                                                                                  [      -6.27195337, -0.00091195, 0.00055903, 7.27104142, 0.99721304, 0.99852902, 0.49305636],
    3430                                                                                                  [      -6.27195415, -0.00091168, 0.00055887, 7.27104247, 0.99721387, 0.99852945, 0.49305643],
    3431                                                                                                  [      -6.27195493, -0.00091141, 0.00055870, 7.27104351, 0.99721469, 0.99852988, 0.49305655],
    3432                                                                                                  [      -6.27195571, -0.00091115, 0.00055854, 7.27104456, 0.99721551, 0.99853032, 0.49305663],
    3433                                                                                                  [      -6.27195648, -0.00091088, 0.00055837, 7.27104561, 0.99721633, 0.99853075, 0.49305679],
    3434                                                                                                  [      -6.27195726, -0.00091061, 0.00055821, 7.27104665, 0.99721715, 0.99853118, 0.49305682],
    3435                                                                                                  [      -6.27195803, -0.00091034, 0.00055804, 7.27104769, 0.99721796, 0.99853161, 0.49305696],
    3436                                                                                                  [      -6.27195881, -0.00091007, 0.00055788, 7.27104873, 0.99721878, 0.99853205, 0.49305711],
    3437                                                                                                  [      -6.27195958, -0.00090981, 0.00055771, 7.27104978, 0.99721960, 0.99853248, 0.49305719],
    3438                                                                                                  [      -6.27196035, -0.00090954, 0.00055755, 7.27105081, 0.99722042, 0.99853291, 0.49305721],
    3439                                                                                                  [      -6.27196113, -0.00090927, 0.00055739, 7.27105185, 0.99722124, 0.99853334, 0.49305736],
    3440                                                                                                  [      -6.27196190, -0.00090901, 0.00055722, 7.27105289, 0.99722205, 0.99853377, 0.49305741],
    3441                                                                                                  [      -6.27196267, -0.00090874, 0.00055706, 7.27105393, 0.99722287, 0.99853420, 0.49305756],
    3442                                                                                                  [      -6.27196344, -0.00090847, 0.00055690, 7.27105496, 0.99722368, 0.99853463, 0.49305766],
    3443                                                                                                  [      -6.27196420, -0.00090821, 0.00055673, 7.27105600, 0.99722450, 0.99853506, 0.49305779],
    3444                                                                                                  [      -6.27196497, -0.00090794, 0.00055657, 7.27105703, 0.99722531, 0.99853549, 0.49305788],
    3445                                                                                                  [      -6.27196574, -0.00090767, 0.00055641, 7.27105806, 0.99722613, 0.99853592, 0.49305797],
    3446                                                                                                  [      -6.27196650, -0.00090741, 0.00055624, 7.27105909, 0.99722694, 0.99853635, 0.49305806],
    3447                                                                                                  [      -6.27196726, -0.00090714, 0.00055608, 7.27106012, 0.99722776, 0.99853678, 0.49305817],
    3448                                                                                                  [      -6.27196803, -0.00090688, 0.00055592, 7.27106115, 0.99722857, 0.99853721, 0.49305825],
    3449                                                                                                  [      -6.27196879, -0.00090661, 0.00055575, 7.27106218, 0.99722938, 0.99853764, 0.49305840],
    3450                                                                                                  [      -6.27196955, -0.00090634, 0.00055559, 7.27106321, 0.99723019, 0.99853807, 0.49305847],
    3451                                                                                                  [      -6.27197031, -0.00090608, 0.00055543, 7.27106423, 0.99723100, 0.99853849, 0.49305859],
    3452                                                                                                  [      -6.27197107, -0.00090581, 0.00055526, 7.27106526, 0.99723181, 0.99853892, 0.49305865],
    3453                                                                                                  [      -6.27197183, -0.00090555, 0.00055510, 7.27106628, 0.99723262, 0.99853935, 0.49305875],
    3454                                                                                                  [      -6.27197259, -0.00090528, 0.00055494, 7.27106730, 0.99723343, 0.99853978, 0.49305889],
    3455                                                                                                  [      -6.27197335, -0.00090502, 0.00055478, 7.27106833, 0.99723424, 0.99854020, 0.49305896],
    3456                                                                                                  [      -6.27197410, -0.00090476, 0.00055461, 7.27106935, 0.99723505, 0.99854063, 0.49305906],
    3457                                                                                                  [      -6.27197486, -0.00090449, 0.00055445, 7.27107037, 0.99723586, 0.99854106, 0.49305911],
    3458                                                                                                  [      -6.27197561, -0.00090423, 0.00055429, 7.27107138, 0.99723667, 0.99854148, 0.49305929],
    3459                                                                                                  [      -6.27197637, -0.00090396, 0.00055413, 7.27107240, 0.99723748, 0.99854191, 0.49305933],
    3460                                                                                                  [      -6.27197712, -0.00090370, 0.00055397, 7.27107342, 0.99723828, 0.99854233, 0.49305943],
    3461                                                                                                  [      -6.27197787, -0.00090344, 0.00055380, 7.27107443, 0.99723909, 0.99854276, 0.49305954],
    3462                                                                                                  [      -6.27197862, -0.00090317, 0.00055364, 7.27107545, 0.99723990, 0.99854319, 0.49305965],
    3463                                                                                                  [      -6.27197937, -0.00090291, 0.00055348, 7.27107646, 0.99724070, 0.99854361, 0.49305972],
    3464                                                                                                  [      -6.27198012, -0.00090264, 0.00055332, 7.27107748, 0.99724151, 0.99854404, 0.49305986],
    3465                                                                                                  [      -6.27198087, -0.00090238, 0.00055316, 7.27107849, 0.99724231, 0.99854446, 0.49305996],
    3466                                                                                                  [      -6.27198162, -0.00090212, 0.00055300, 7.27107950, 0.99724312, 0.99854488, 0.49306003],
    3467                                                                                                  [      -6.27198236, -0.00090186, 0.00055284, 7.27108051, 0.99724392, 0.99854531, 0.49306014],
    3468                                                                                                  [      -6.27198311, -0.00090159, 0.00055267, 7.27108151, 0.99724472, 0.99854573, 0.49306027],
    3469                                                                                                  [      -6.27198385, -0.00090133, 0.00055251, 7.27108252, 0.99724553, 0.99854616, 0.49306036],
    3470                                                                                                  [      -6.27198460, -0.00090107, 0.00055235, 7.27108353, 0.99724633, 0.99854658, 0.49306043],
    3471                                                                                                  [      -6.27198534, -0.00090081, 0.00055219, 7.27108453, 0.99724713, 0.99854700, 0.49306047],
    3472                                                                                                  [      -6.27198608, -0.00090054, 0.00055203, 7.27108554, 0.99724793, 0.99854742, 0.49306066],
    3473                                                                                                  [      -6.27198682, -0.00090028, 0.00055187, 7.27108654, 0.99724873, 0.99854785, 0.49306072],
    3474                                                                                                  [      -6.27198756, -0.00090002, 0.00055171, 7.27108754, 0.99724953, 0.99854827, 0.49306079],
    3475                                                                                                  [      -6.27198830, -0.00089976, 0.00055155, 7.27108855, 0.99725033, 0.99854869, 0.49306090],
    3476                                                                                                  [      -6.27198904, -0.00089950, 0.00055139, 7.27108955, 0.99725113, 0.99854911, 0.49306100],
    3477                                                                                                  [      -6.27198978, -0.00089924, 0.00055123, 7.27109054, 0.99725193, 0.99854954, 0.49306107],
    3478                                                                                                  [      -6.27199052, -0.00089898, 0.00055107, 7.27109154, 0.99725273, 0.99854996, 0.49306122],
    3479                                                                                                  [      -6.27199126, -0.00089871, 0.00055091, 7.27109254, 0.99725353, 0.99855038, 0.49306129],
    3480                                                                                                  [      -6.27199199, -0.00089845, 0.00055075, 7.27109354, 0.99725433, 0.99855080, 0.49306135],
    3481                                                                                                  [      -6.27199273, -0.00089819, 0.00055059, 7.27109453, 0.99725512, 0.99855122, 0.49306146],
    3482                                                                                                  [      -6.27199346, -0.00089793, 0.00055043, 7.27109553, 0.99725592, 0.99855164, 0.49306163],
    3483                                                                                                  [      -6.27199419, -0.00089767, 0.00055027, 7.27109652, 0.99725672, 0.99855206, 0.49306163],
    3484                                                                                                  [      -6.27199493, -0.00089741, 0.00055011, 7.27109751, 0.99725751, 0.99855248, 0.49306178],
    3485                                                                                                  [      -6.27199566, -0.00089715, 0.00054995, 7.27109851, 0.99725831, 0.99855290, 0.49306188],
    3486                                                                                                  [      -6.27199639, -0.00089689, 0.00054979, 7.27109950, 0.99725910, 0.99855332, 0.49306196],
    3487                                                                                                  [      -6.27199712, -0.00089663, 0.00054963, 7.27110049, 0.99725990, 0.99855374, 0.49306206],
    3488                                                                                                  [      -6.27199785, -0.00089637, 0.00054947, 7.27110147, 0.99726069, 0.99855416, 0.49306218],
    3489                                                                                                  [      -6.27199857, -0.00089611, 0.00054931, 7.27110246, 0.99726149, 0.99855458, 0.49306227],
    3490                                                                                                  [      -6.27199930, -0.00089585, 0.00054915, 7.27110345, 0.99726228, 0.99855499, 0.49306238],
    3491                                                                                                  [      -6.27200003, -0.00089559, 0.00054899, 7.27110443, 0.99726307, 0.99855541, 0.49306244],
    3492                                                                                                  [      -6.27200076, -0.00089534, 0.00054883, 7.27110542, 0.99726386, 0.99855583, 0.49306254],
    3493                                                                                                  [      -6.27200148, -0.00089508, 0.00054868, 7.27110640, 0.99726465, 0.99855625, 0.49306260],
    3494                                                                                                  [      -6.27200220, -0.00089482, 0.00054852, 7.27110739, 0.99726545, 0.99855667, 0.49306270],
    3495                                                                                                  [      -6.27200293, -0.00089456, 0.00054836, 7.27110837, 0.99726624, 0.99855708, 0.49306284],
    3496                                                                                                  [      -6.27200365, -0.00089430, 0.00054820, 7.27110935, 0.99726703, 0.99855750, 0.49306289],
    3497                                                                                                  [      -6.27200437, -0.00089404, 0.00054804, 7.27111033, 0.99726782, 0.99855792, 0.49306299],
    3498                                                                                                  [      -6.27200509, -0.00089378, 0.00054788, 7.27111131, 0.99726861, 0.99855833, 0.49306315],
    3499                                                                                                  [      -6.27200581, -0.00089353, 0.00054772, 7.27111229, 0.99726940, 0.99855875, 0.49306325],
    3500                                                                                                  [      -6.27200653, -0.00089327, 0.00054757, 7.27111326, 0.99727018, 0.99855916, 0.49306334],
    3501                                                                                                  [      -6.27200725, -0.00089301, 0.00054741, 7.27111424, 0.99727097, 0.99855958, 0.49306342],
    3502                                                                                                  [      -6.27200797, -0.00089275, 0.00054725, 7.27111522, 0.99727176, 0.99856000, 0.49306348],
    3503                                                                                                  [      -6.27200869, -0.00089250, 0.00054709, 7.27111619, 0.99727255, 0.99856041, 0.49306360],
    3504                                                                                                  [      -6.27200940, -0.00089224, 0.00054693, 7.27111717, 0.99727333, 0.99856083, 0.49306368],
    3505                                                                                                  [      -6.27201012, -0.00089198, 0.00054678, 7.27111814, 0.99727412, 0.99856124, 0.49306382],
    3506                                                                                                  [      -6.27201083, -0.00089172, 0.00054662, 7.27111911, 0.99727491, 0.99856166, 0.49306389],
    3507                                                                                                  [      -6.27201155, -0.00089147, 0.00054646, 7.27112008, 0.99727569, 0.99856207, 0.49306395],
    3508                                                                                                  [      -6.27201226, -0.00089121, 0.00054630, 7.27112105, 0.99727648, 0.99856248, 0.49306405],
    3509                                                                                                  [      -6.27201297, -0.00089095, 0.00054615, 7.27112202, 0.99727726, 0.99856290, 0.49306415],
    3510                                                                                                  [      -6.27201369, -0.00089070, 0.00054599, 7.27112299, 0.99727804, 0.99856331, 0.49306425],
    3511                                                                                                  [      -6.27201440, -0.00089044, 0.00054583, 7.27112395, 0.99727883, 0.99856373, 0.49306438],
    3512                                                                                                  [      -6.27201511, -0.00089019, 0.00054568, 7.27112492, 0.99727961, 0.99856414, 0.49306445],
    3513                                                                                                  [      -6.27201582, -0.00088993, 0.00054552, 7.27112589, 0.99728039, 0.99856455, 0.49306454],
    3514                                                                                                  [      -6.27201653, -0.00088967, 0.00054536, 7.27112685, 0.99728118, 0.99856496, 0.49306460],
    3515                                                                                                  [      -6.27201723, -0.00088942, 0.00054520, 7.27112782, 0.99728196, 0.99856538, 0.49306473],
    3516                                                                                                  [      -6.27201794, -0.00088916, 0.00054505, 7.27112878, 0.99728274, 0.99856579, 0.49306481],
    3517                                                                                                  [      -6.27201865, -0.00088891, 0.00054489, 7.27112974, 0.99728352, 0.99856620, 0.49306490],
    3518                                                                                                  [      -6.27201935, -0.00088865, 0.00054473, 7.27113070, 0.99728430, 0.99856661, 0.49306499],
    3519                                                                                                  [      -6.27202006, -0.00088840, 0.00054458, 7.27113166, 0.99728508, 0.99856702, 0.49306507],
    3520                                                                                                  [      -6.27202076, -0.00088814, 0.00054442, 7.27113262, 0.99728586, 0.99856744, 0.49306519],
    3521                                                                                                  [      -6.27202147, -0.00088789, 0.00054427, 7.27113358, 0.99728664, 0.99856785, 0.49306522],
    3522                                                                                                  [      -6.27202217, -0.00088763, 0.00054411, 7.27113454, 0.99728742, 0.99856826, 0.49306541],
    3523                                                                                                  [      -6.27202287, -0.00088738, 0.00054395, 7.27113549, 0.99728820, 0.99856867, 0.49306548],
    3524                                                                                                  [      -6.27202357, -0.00088713, 0.00054380, 7.27113645, 0.99728897, 0.99856908, 0.49306558],
    3525                                                                                                  [      -6.27202427, -0.00088687, 0.00054364, 7.27113740, 0.99728975, 0.99856949, 0.49306563],
    3526                                                                                                  [      -6.27202497, -0.00088662, 0.00054349, 7.27113836, 0.99729053, 0.99856990, 0.49306575],
    3527                                                                                                  [      -6.27202567, -0.00088636, 0.00054333, 7.27113931, 0.99729130, 0.99857031, 0.49306582],
    3528                                                                                                  [      -6.27202637, -0.00088611, 0.00054317, 7.27114026, 0.99729208, 0.99857072, 0.49306593],
    3529                                                                                                  [      -6.27202707, -0.00088586, 0.00054302, 7.27114121, 0.99729285, 0.99857113, 0.49306602],
    3530                                                                                                  [      -6.27202777, -0.00088560, 0.00054286, 7.27114216, 0.99729363, 0.99857153, 0.49306615],
    3531                                                                                                  [      -6.27202846, -0.00088535, 0.00054271, 7.27114311, 0.99729440, 0.99857194, 0.49306620],
    3532                                                                                                  [      -6.27202916, -0.00088510, 0.00054255, 7.27114406, 0.99729518, 0.99857235, 0.49306631],
    3533                                                                                                  [      -6.27202985, -0.00088484, 0.00054240, 7.27114501, 0.99729595, 0.99857276, 0.49306638],
    3534                                                                                                  [      -6.27203055, -0.00088459, 0.00054224, 7.27114596, 0.99729673, 0.99857317, 0.49306650],
    3535                                                                                                  [      -6.27203124, -0.00088434, 0.00054209, 7.27114690, 0.99729750, 0.99857358, 0.49306661],
    3536                                                                                                  [      -6.27203193, -0.00088409, 0.00054193, 7.27114785, 0.99729827, 0.99857398, 0.49306664],
    3537                                                                                                  [      -6.27203262, -0.00088383, 0.00054178, 7.27114879, 0.99729904, 0.99857439, 0.49306674],
    3538                                                                                                  [      -6.27203332, -0.00088358, 0.00054162, 7.27114973, 0.99729981, 0.99857480, 0.49306687],
    3539                                                                                                  [      -6.27203401, -0.00088333, 0.00054147, 7.27115068, 0.99730059, 0.99857520, 0.49306699],
    3540                                                                                                  [      -6.27203470, -0.00088308, 0.00054131, 7.27115162, 0.99730136, 0.99857561, 0.49306701],
    3541                                                                                                  [      -6.27203539, -0.00088282, 0.00054116, 7.27115256, 0.99730213, 0.99857602, 0.49306713],
    3542                                                                                                  [      -6.27203607, -0.00088257, 0.00054100, 7.27115350, 0.99730290, 0.99857642, 0.49306721],
    3543                                                                                                  [      -6.27203676, -0.00088232, 0.00054085, 7.27115444, 0.99730366, 0.99857683, 0.49306728],
    3544                                                                                                  [      -6.27203745, -0.00088207, 0.00054069, 7.27115538, 0.99730443, 0.99857724, 0.49306742],
    3545                                                                                                  [      -6.27203813, -0.00088182, 0.00054054, 7.27115632, 0.99730520, 0.99857764, 0.49306753],
    3546                                                                                                  [      -6.27203882, -0.00088157, 0.00054039, 7.27115725, 0.99730597, 0.99857805, 0.49306761],
    3547                                                                                                  [      -6.27203950, -0.00088132, 0.00054023, 7.27115819, 0.99730674, 0.99857845, 0.49306769],
    3548                                                                                                  [      -6.27204019, -0.00088107, 0.00054008, 7.27115912, 0.99730750, 0.99857886, 0.49306776],
    3549                                                                                                  [      -6.27204087, -0.00088082, 0.00053992, 7.27116006, 0.99730827, 0.99857926, 0.49306785],
    3550                                                                                                  [      -6.27204156, -0.00088056, 0.00053977, 7.27116099, 0.99730904, 0.99857966, 0.49306801],
    3551                                                                                                  [      -6.27204224, -0.00088031, 0.00053962, 7.27116192, 0.99730980, 0.99858007, 0.49306813],
    3552                                                                                                  [      -6.27204292, -0.00088006, 0.00053946, 7.27116286, 0.99731057, 0.99858047, 0.49306816],
    3553                                                                                                  [      -6.27204360, -0.00087981, 0.00053931, 7.27116379, 0.99731133, 0.99858088, 0.49306827],
    3554                                                                                                  [      -6.27204428, -0.00087956, 0.00053916, 7.27116472, 0.99731210, 0.99858128, 0.49306833],
    3555                                                                                                  [      -6.27204496, -0.00087931, 0.00053900, 7.27116565, 0.99731286, 0.99858168, 0.49306842],
    3556                                                                                                  [      -6.27204564, -0.00087906, 0.00053885, 7.27116657, 0.99731363, 0.99858209, 0.49306852],
    3557                                                                                                  [      -6.27204632, -0.00087881, 0.00053870, 7.27116750, 0.99731439, 0.99858249, 0.49306865],
    3558                                                                                                  [      -6.27204699, -0.00087857, 0.00053854, 7.27116843, 0.99731515, 0.99858289, 0.49306872],
    3559                                                                                                  [      -6.27204767, -0.00087832, 0.00053839, 7.27116935, 0.99731591, 0.99858329, 0.49306875],
    3560                                                                                                  [      -6.27204835, -0.00087807, 0.00053824, 7.27117028, 0.99731668, 0.99858369, 0.49306889],
    3561                                                                                                  [      -6.27204902, -0.00087782, 0.00053809, 7.27117120, 0.99731744, 0.99858410, 0.49306899],
    3562                                                                                                  [      -6.27204970, -0.00087757, 0.00053793, 7.27117213, 0.99731820, 0.99858450, 0.49306909],
    3563                                                                                                  [      -6.27205037, -0.00087732, 0.00053778, 7.27117305, 0.99731896, 0.99858490, 0.49306915],
    3564                                                                                                  [      -6.27205104, -0.00087707, 0.00053763, 7.27117397, 0.99731972, 0.99858530, 0.49306931],
    3565                                                                                                  [      -6.27205172, -0.00087682, 0.00053748, 7.27117489, 0.99732048, 0.99858570, 0.49306931],
    3566                                                                                                  [      -6.27205239, -0.00087658, 0.00053732, 7.27117581, 0.99732124, 0.99858610, 0.49306947],
    3567                                                                                                  [      -6.27205306, -0.00087633, 0.00053717, 7.27117673, 0.99732200, 0.99858650, 0.49306949],
    3568                                                                                                  [      -6.27205373, -0.00087608, 0.00053702, 7.27117765, 0.99732276, 0.99858690, 0.49306961],
    3569                                                                                                  [      -6.27205440, -0.00087583, 0.00053687, 7.27117857, 0.99732351, 0.99858730, 0.49306974],
    3570                                                                                                  [      -6.27205507, -0.00087558, 0.00053671, 7.27117949, 0.99732427, 0.99858770, 0.49306982],
    3571                                                                                                  [      -6.27205574, -0.00087534, 0.00053656, 7.27118040, 0.99732503, 0.99858810, 0.49306986],
    3572                                                                                                  [      -6.27205641, -0.00087509, 0.00053641, 7.27118132, 0.99732579, 0.99858850, 0.49306997],
    3573                                                                                                  [      -6.27205707, -0.00087484, 0.00053626, 7.27118223, 0.99732654, 0.99858890, 0.49307002],
    3574                                                                                                  [      -6.27205774, -0.00087459, 0.00053611, 7.27118315, 0.99732730, 0.99858930, 0.49307020],
    3575                                                                                                  [      -6.27205841, -0.00087435, 0.00053596, 7.27118406, 0.99732805, 0.99858970, 0.49307021],
    3576                                                                                                  [      -6.27205907, -0.00087410, 0.00053580, 7.27118497, 0.99732881, 0.99859010, 0.49307035],
    3577                                                                                                  [      -6.27205974, -0.00087385, 0.00053565, 7.27118588, 0.99732956, 0.99859049, 0.49307047],
    3578                                                                                                  [      -6.27206040, -0.00087361, 0.00053550, 7.27118679, 0.99733032, 0.99859089, 0.49307051],
    3579                                                                                                  [      -6.27206106, -0.00087336, 0.00053535, 7.27118770, 0.99733107, 0.99859129, 0.49307062],
    3580                                                                                                  [      -6.27206173, -0.00087311, 0.00053520, 7.27118861, 0.99733182, 0.99859169, 0.49307069],
    3581                                                                                                  [      -6.27206239, -0.00087287, 0.00053505, 7.27118952, 0.99733258, 0.99859208, 0.49307080],
    3582                                                                                                  [      -6.27206305, -0.00087262, 0.00053490, 7.27119043, 0.99733333, 0.99859248, 0.49307089],
    3583                                                                                                  [      -6.27206371, -0.00087238, 0.00053475, 7.27119134, 0.99733408, 0.99859288, 0.49307096],
    3584                                                                                                  [      -6.27206437, -0.00087213, 0.00053460, 7.27119224, 0.99733483, 0.99859327, 0.49307103],
    3585                                                                                                  [      -6.27206503, -0.00087188, 0.00053445, 7.27119315, 0.99733558, 0.99859367, 0.49307121],
    3586                                                                                                  [      -6.27206569, -0.00087164, 0.00053429, 7.27119405, 0.99733633, 0.99859407, 0.49307121],
    3587                                                                                                  [      -6.27206635, -0.00087139, 0.00053414, 7.27119496, 0.99733709, 0.99859446, 0.49307131],
    3588                                                                                                  [      -6.27206701, -0.00087115, 0.00053399, 7.27119586, 0.99733783, 0.99859486, 0.49307143],
    3589                                                                                                  [      -6.27206767, -0.00087090, 0.00053384, 7.27119676, 0.99733858, 0.99859525, 0.49307152],
    3590                                                                                                  [      -6.27206832, -0.00087066, 0.00053369, 7.27119766, 0.99733933, 0.99859565, 0.49307163],
    3591                                                                                                  [      -6.27206898, -0.00087041, 0.00053354, 7.27119856, 0.99734008, 0.99859604, 0.49307170],
    3592                                                                                                  [      -6.27206963, -0.00087017, 0.00053339, 7.27119946, 0.99734083, 0.99859644, 0.49307178],
    3593                                                                                                  [      -6.27207029, -0.00086992, 0.00053324, 7.27120036, 0.99734158, 0.99859683, 0.49307182],
    3594                                                                                                  [      -6.27207094, -0.00086968, 0.00053309, 7.27120126, 0.99734233, 0.99859723, 0.49307196],
    3595                                                                                                  [      -6.27207160, -0.00086944, 0.00053294, 7.27120216, 0.99734307, 0.99859762, 0.49307197],
    3596                                                                                                  [      -6.27207225, -0.00086919, 0.00053279, 7.27120306, 0.99734382, 0.99859802, 0.49307220],
    3597                                                                                                  [      -6.27207290, -0.00086895, 0.00053264, 7.27120395, 0.99734457, 0.99859841, 0.49307226],
    3598                                                                                                  [      -6.27207355, -0.00086870, 0.00053249, 7.27120485, 0.99734531, 0.99859880, 0.49307233],
    3599                                                                                                  [      -6.27207420, -0.00086846, 0.00053234, 7.27120574, 0.99734606, 0.99859920, 0.49307241],
    3600                                                                                                  [      -6.27207485, -0.00086822, 0.00053219, 7.27120664, 0.99734680, 0.99859959, 0.49307252],
    3601                                                                                                  [      -6.27207550, -0.00086797, 0.00053205, 7.27120753, 0.99734755, 0.99859998, 0.49307258],
    3602                                                                                                  [      -6.27207615, -0.00086773, 0.00053190, 7.27120842, 0.99734829, 0.99860037, 0.49307271],
    3603                                                                                                  [      -6.27207680, -0.00086749, 0.00053175, 7.27120931, 0.99734903, 0.99860077, 0.49307274],
    3604                                                                                                  [      -6.27207745, -0.00086724, 0.00053160, 7.27121021, 0.99734978, 0.99860116, 0.49307287],
    3605                                                                                                  [      -6.27207810, -0.00086700, 0.00053145, 7.27121110, 0.99735052, 0.99860155, 0.49307293],
    3606                                                                                                  [      -6.27207874, -0.00086676, 0.00053130, 7.27121199, 0.99735126, 0.99860194, 0.49307303],
    3607                                                                                                  [      -6.27207939, -0.00086652, 0.00053115, 7.27121287, 0.99735200, 0.99860233, 0.49307313],
    3608                                                                                                  [      -6.27208004, -0.00086627, 0.00053100, 7.27121376, 0.99735275, 0.99860273, 0.49307325],
    3609                                                                                                  [      -6.27208068, -0.00086603, 0.00053085, 7.27121465, 0.99735349, 0.99860312, 0.49307329],
    3610                                                                                                  [      -6.27208132, -0.00086579, 0.00053070, 7.27121554, 0.99735423, 0.99860351, 0.49307333],
    3611                                                                                                  [      -6.27208197, -0.00086555, 0.00053056, 7.27121642, 0.99735497, 0.99860390, 0.49307349],
    3612                                                                                                  [      -6.27208261, -0.00086530, 0.00053041, 7.27121731, 0.99735571, 0.99860429, 0.49307355],
    3613                                                                                                  [      -6.27208325, -0.00086506, 0.00053026, 7.27121819, 0.99735645, 0.99860468, 0.49307366],
    3614                                                                                                  [      -6.27208390, -0.00086482, 0.00053011, 7.27121907, 0.99735719, 0.99860507, 0.49307376],
    3615                                                                                                  [      -6.27208454, -0.00086458, 0.00052996, 7.27121996, 0.99735792, 0.99860546, 0.49307384],
    3616                                                                                                  [      -6.27208518, -0.00086434, 0.00052981, 7.27122084, 0.99735866, 0.99860585, 0.49307389],
    3617                                                                                                  [      -6.27208582, -0.00086410, 0.00052967, 7.27122172, 0.99735940, 0.99860624, 0.49307398],
    3618                                                                                                  [      -6.27208646, -0.00086386, 0.00052952, 7.27122260, 0.99736014, 0.99860663, 0.49307410],
    3619                                                                                                  [      -6.27208710, -0.00086361, 0.00052937, 7.27122348, 0.99736088, 0.99860701, 0.49307418],
    3620                                                                                                  [      -6.27208774, -0.00086337, 0.00052922, 7.27122436, 0.99736161, 0.99860740, 0.49307431],
    3621                                                                                                  [      -6.27208837, -0.00086313, 0.00052908, 7.27122524, 0.99736235, 0.99860779, 0.49307430],
    3622                                                                                                  [      -6.27208901, -0.00086289, 0.00052893, 7.27122612, 0.99736308, 0.99860818, 0.49307450],
    3623                                                                                                  [      -6.27208965, -0.00086265, 0.00052878, 7.27122700, 0.99736382, 0.99860857, 0.49307452],
    3624                                                                                                  [      -6.27209028, -0.00086241, 0.00052863, 7.27122787, 0.99736455, 0.99860896, 0.49307461],
    3625                                                                                                  [      -6.27209092, -0.00086217, 0.00052849, 7.27122875, 0.99736529, 0.99860934, 0.49307473],
    3626                                                                                                  [      -6.27209155, -0.00086193, 0.00052834, 7.27122962, 0.99736602, 0.99860973, 0.49307476],
    3627                                                                                                  [      -6.27209219, -0.00086169, 0.00052819, 7.27123050, 0.99736676, 0.99861012, 0.49307493],
    3628                                                                                                  [      -6.27209282, -0.00086145, 0.00052804, 7.27123137, 0.99736749, 0.99861050, 0.49307491],
    3629                                                                                                  [      -6.27209346, -0.00086121, 0.00052790, 7.27123224, 0.99736822, 0.99861089, 0.49307506],
    3630                                                                                                  [      -6.27209409, -0.00086097, 0.00052775, 7.27123312, 0.99736896, 0.99861128, 0.49307515],
    3631                                                                                                  [      -6.27209472, -0.00086073, 0.00052760, 7.27123399, 0.99736969, 0.99861166, 0.49307527],
    3632                                                                                                  [      -6.27209535, -0.00086049, 0.00052746, 7.27123486, 0.99737042, 0.99861205, 0.49307528],
    3633                                                                                                  [      -6.27209598, -0.00086025, 0.00052731, 7.27123573, 0.99737115, 0.99861244, 0.49307544],
    3634                                                                                                  [      -6.27209661, -0.00086002, 0.00052716, 7.27123660, 0.99737188, 0.99861282, 0.49307551],
    3635                                                                                                  [      -6.27209724, -0.00085978, 0.00052702, 7.27123747, 0.99737261, 0.99861321, 0.49307555],
    3636                                                                                                  [      -6.27209787, -0.00085954, 0.00052687, 7.27123833, 0.99737334, 0.99861359, 0.49307566],
    3637                                                                                                  [      -6.27209850, -0.00085930, 0.00052672, 7.27123920, 0.99737407, 0.99861398, 0.49307570],
    3638                                                                                                  [      -6.27209913, -0.00085906, 0.00052658, 7.27124007, 0.99737480, 0.99861436, 0.49307581],
    3639                                                                                                  [      -6.27209976, -0.00085882, 0.00052643, 7.27124094, 0.99737553, 0.99861475, 0.49307599],
    3640                                                                                                  [      -6.27210038, -0.00085858, 0.00052628, 7.27124180, 0.99737626, 0.99861513, 0.49307598],
    3641                                                                                                  [      -6.27210101, -0.00085835, 0.00052614, 7.27124266, 0.99737699, 0.99861551, 0.49307614],
    3642                                                                                                  [      -6.27210164, -0.00085811, 0.00052599, 7.27124353, 0.99737771, 0.99861590, 0.49307614],
    3643                                                                                                  [      -6.27210226, -0.00085787, 0.00052585, 7.27124439, 0.99737844, 0.99861628, 0.49307625],
    3644                                                                                                  [      -6.27210289, -0.00085763, 0.00052570, 7.27124525, 0.99737917, 0.99861667, 0.49307637],
    3645                                                                                                  [      -6.27210351, -0.00085740, 0.00052555, 7.27124612, 0.99737989, 0.99861705, 0.49307645],
    3646                                                                                                  [      -6.27210414, -0.00085716, 0.00052541, 7.27124698, 0.99738062, 0.99861743, 0.49307653],
    3647                                                                                                  [      -6.27210476, -0.00085692, 0.00052526, 7.27124784, 0.99738135, 0.99861782, 0.49307663],
    3648                                                                                                  [      -6.27210538, -0.00085668, 0.00052512, 7.27124870, 0.99738207, 0.99861820, 0.49307669],
    3649                                                                                                  [      -6.27210600, -0.00085645, 0.00052497, 7.27124956, 0.99738280, 0.99861858, 0.49307677],
    3650                                                                                                  [      -6.27210663, -0.00085621, 0.00052483, 7.27125042, 0.99738352, 0.99861896, 0.49307688],
    3651                                                                                                  [      -6.27210725, -0.00085597, 0.00052468, 7.27125127, 0.99738424, 0.99861934, 0.49307699],
    3652                                                                                                  [      -6.27210787, -0.00085574, 0.00052454, 7.27125213, 0.99738497, 0.99861973, 0.49307706],
    3653                                                                                                  [      -6.27210849, -0.00085550, 0.00052439, 7.27125299, 0.99738569, 0.99862011, 0.49307704],
    3654                                                                                                  [      -6.27210911, -0.00085526, 0.00052425, 7.27125384, 0.99738641, 0.99862049, 0.49307723],
    3655                                                                                                  [      -6.27210973, -0.00085503, 0.00052410, 7.27125470, 0.99738714, 0.99862087, 0.49307731],
    3656                                                                                                  [      -6.27211034, -0.00085479, 0.00052396, 7.27125555, 0.99738786, 0.99862125, 0.49307742],
    3657                                                                                                  [      -6.27211096, -0.00085456, 0.00052381, 7.27125641, 0.99738858, 0.99862163, 0.49307753],
    3658                                                                                                  [      -6.27211158, -0.00085432, 0.00052367, 7.27125726, 0.99738930, 0.99862201, 0.49307753],
    3659                                                                                                  [      -6.27211220, -0.00085408, 0.00052352, 7.27125811, 0.99739002, 0.99862239, 0.49307764],
    3660                                                                                                  [      -6.27211281, -0.00085385, 0.00052338, 7.27125896, 0.99739074, 0.99862277, 0.49307770],
    3661                                                                                                  [      -6.27211343, -0.00085361, 0.00052323, 7.27125981, 0.99739146, 0.99862315, 0.49307780],
    3662                                                                                                  [      -6.27211404, -0.00085338, 0.00052309, 7.27126067, 0.99739218, 0.99862353, 0.49307792],
    3663                                                                                                  [      -6.27211466, -0.00085314, 0.00052295, 7.27126152, 0.99739290, 0.99862391, 0.49307794],
    3664                                                                                                  [      -6.27211527, -0.00085291, 0.00052280, 7.27126236, 0.99739362, 0.99862429, 0.49307803],
    3665                                                                                                  [      -6.27211589, -0.00085267, 0.00052266, 7.27126321, 0.99739434, 0.99862467, 0.49307820],
    3666                                                                                                  [      -6.27211650, -0.00085244, 0.00052251, 7.27126406, 0.99739506, 0.99862505, 0.49307827],
    3667                                                                                                  [      -6.27211711, -0.00085220, 0.00052237, 7.27126491, 0.99739577, 0.99862543, 0.49307830],
    3668                                                                                                  [      -6.27211772, -0.00085197, 0.00052222, 7.27126575, 0.99739649, 0.99862581, 0.49307839],
    3669                                                                                                  [      -6.27211833, -0.00085173, 0.00052208, 7.27126660, 0.99739721, 0.99862618, 0.49307851],
    3670                                                                                                  [      -6.27211895, -0.00085150, 0.00052194, 7.27126745, 0.99739792, 0.99862656, 0.49307861],
    3671                                                                                                  [      -6.27211956, -0.00085127, 0.00052179, 7.27126829, 0.99739864, 0.99862694, 0.49307868],
    3672                                                                                                  [      -6.27212017, -0.00085103, 0.00052165, 7.27126913, 0.99739936, 0.99862732, 0.49307878],
    3673                                                                                                  [      -6.27212078, -0.00085080, 0.00052151, 7.27126998, 0.99740007, 0.99862770, 0.49307884],
    3674                                                                                                  [      -6.27212138, -0.00085056, 0.00052136, 7.27127082, 0.99740079, 0.99862807, 0.49307888],
    3675                                                                                                  [      -6.27212199, -0.00085033, 0.00052122, 7.27127166, 0.99740150, 0.99862845, 0.49307902],
    3676                                                                                                  [      -6.27212260, -0.00085010, 0.00052108, 7.27127250, 0.99740221, 0.99862883, 0.49307911],
    3677                                                                                                  [      -6.27212321, -0.00084986, 0.00052093, 7.27127334, 0.99740293, 0.99862920, 0.49307920],
    3678                                                                                                  [      -6.27212381, -0.00084963, 0.00052079, 7.27127418, 0.99740364, 0.99862958, 0.49307926],
    3679                                                                                                  [      -6.27212442, -0.00084940, 0.00052065, 7.27127502, 0.99740435, 0.99862996, 0.49307935],
    3680                                                                                                  [      -6.27212503, -0.00084916, 0.00052050, 7.27127586, 0.99740507, 0.99863033, 0.49307944],
    3681                                                                                                  [      -6.27212563, -0.00084893, 0.00052036, 7.27127670, 0.99740578, 0.99863071, 0.49307944],
    3682                                                                                                  [      -6.27212624, -0.00084870, 0.00052022, 7.27127754, 0.99740649, 0.99863108, 0.49307954],
    3683                                                                                                  [      -6.27212684, -0.00084847, 0.00052008, 7.27127837, 0.99740720, 0.99863146, 0.49307961],
    3684                                                                                                  [      -6.27212744, -0.00084823, 0.00051993, 7.27127921, 0.99740791, 0.99863183, 0.49307978],
    3685                                                                                                  [      -6.27212805, -0.00084800, 0.00051979, 7.27128005, 0.99740862, 0.99863221, 0.49307983],
    3686                                                                                                  [      -6.27212865, -0.00084777, 0.00051965, 7.27128088, 0.99740933, 0.99863258, 0.49307996],
    3687                                                                                                  [      -6.27212925, -0.00084754, 0.00051951, 7.27128172, 0.99741004, 0.99863296, 0.49308005],
    3688                                                                                                  [      -6.27212986, -0.00084730, 0.00051936, 7.27128255, 0.99741075, 0.99863333, 0.49308014],
    3689                                                                                                  [      -6.27213046, -0.00084707, 0.00051922, 7.27128338, 0.99741146, 0.99863371, 0.49308018],
    3690                                                                                                  [      -6.27213106, -0.00084684, 0.00051908, 7.27128422, 0.99741217, 0.99863408, 0.49308030],
    3691                                                                                                  [      -6.27213166, -0.00084661, 0.00051894, 7.27128505, 0.99741288, 0.99863445, 0.49308040],
    3692                                                                                                  [      -6.27213226, -0.00084638, 0.00051879, 7.27128588, 0.99741359, 0.99863483, 0.49308040],
    3693                                                                                                  [      -6.27213286, -0.00084615, 0.00051865, 7.27128671, 0.99741429, 0.99863520, 0.49308050],
    3694                                                                                                  [      -6.27213345, -0.00084592, 0.00051851, 7.27128754, 0.99741500, 0.99863557, 0.49308061],
    3695                                                                                                  [      -6.27213405, -0.00084568, 0.00051837, 7.27128837, 0.99741571, 0.99863595, 0.49308064],
    3696                                                                                                  [      -6.27213465, -0.00084545, 0.00051823, 7.27128920, 0.99741641, 0.99863632, 0.49308083],
    3697                                                                                                  [      -6.27213525, -0.00084522, 0.00051809, 7.27129003, 0.99741712, 0.99863669, 0.49308089],
    3698                                                                                                  [      -6.27213585, -0.00084499, 0.00051794, 7.27129085, 0.99741783, 0.99863706, 0.49308103],
    3699                                                                                                  [      -6.27213644, -0.00084476, 0.00051780, 7.27129168, 0.99741853, 0.99863744, 0.49308104],
    3700                                                                                                  [      -6.27213704, -0.00084453, 0.00051766, 7.27129251, 0.99741924, 0.99863781, 0.49308114],
    3701                                                                                                  [      -6.27213763, -0.00084430, 0.00051752, 7.27129333, 0.99741994, 0.99863818, 0.49308122],
    3702                                                                                                  [      -6.27213823, -0.00084407, 0.00051738, 7.27129416, 0.99742064, 0.99863855, 0.49308125],
    3703                                                                                                  [      -6.27213882, -0.00084384, 0.00051724, 7.27129498, 0.99742135, 0.99863892, 0.49308128],
    3704                                                                                                  [      -6.27213942, -0.00084361, 0.00051710, 7.27129581, 0.99742205, 0.99863929, 0.49308149],
    3705                                                                                                  [      -6.27214001, -0.00084338, 0.00051696, 7.27129663, 0.99742275, 0.99863966, 0.49308153],
    3706                                                                                                  [      -6.27214060, -0.00084315, 0.00051681, 7.27129745, 0.99742346, 0.99864003, 0.49308160],
    3707                                                                                                  [      -6.27214120, -0.00084292, 0.00051667, 7.27129827, 0.99742416, 0.99864041, 0.49308174],
    3708                                                                                                  [      -6.27214179, -0.00084269, 0.00051653, 7.27129910, 0.99742486, 0.99864078, 0.49308171],
    3709                                                                                                  [      -6.27214238, -0.00084246, 0.00051639, 7.27129992, 0.99742556, 0.99864115, 0.49308189],
    3710                                                                                                  [      -6.27214297, -0.00084223, 0.00051625, 7.27130074, 0.99742626, 0.99864152, 0.49308189],
    3711                                                                                                  [      -6.27214356, -0.00084200, 0.00051611, 7.27130156, 0.99742696, 0.99864188, 0.49308208],
    3712                                                                                                  [      -6.27214415, -0.00084178, 0.00051597, 7.27130237, 0.99742766, 0.99864225, 0.49308218],
    3713                                                                                                  [      -6.27214474, -0.00084155, 0.00051583, 7.27130319, 0.99742836, 0.99864262, 0.49308217],
    3714                                                                                                  [      -6.27214533, -0.00084132, 0.00051569, 7.27130401, 0.99742906, 0.99864299, 0.49308225],
    3715                                                                                                  [      -6.27214592, -0.00084109, 0.00051555, 7.27130483, 0.99742976, 0.99864336, 0.49308239],
    3716                                                                                                  [      -6.27214651, -0.00084086, 0.00051541, 7.27130564, 0.99743046, 0.99864373, 0.49308247],
    3717                                                                                                  [      -6.27214709, -0.00084063, 0.00051527, 7.27130646, 0.99743116, 0.99864410, 0.49308255],
    3718                                                                                                  [      -6.27214768, -0.00084040, 0.00051513, 7.27130728, 0.99743186, 0.99864447, 0.49308258],
    3719                                                                                                  [      -6.27214827, -0.00084018, 0.00051499, 7.27130809, 0.99743255, 0.99864483, 0.49308266],
    3720                                                                                                  [      -6.27214885, -0.00083995, 0.00051485, 7.27130891, 0.99743325, 0.99864520, 0.49308274],
    3721                                                                                                  [      -6.27214944, -0.00083972, 0.00051471, 7.27130972, 0.99743395, 0.99864557, 0.49308290],
    3722                                                                                                  [      -6.27215002, -0.00083949, 0.00051457, 7.27131053, 0.99743464, 0.99864594, 0.49308290],
    3723                                                                                                  [      -6.27215061, -0.00083926, 0.00051443, 7.27131134, 0.99743534, 0.99864631, 0.49308300],
    3724                                                                                                  [      -6.27215119, -0.00083904, 0.00051429, 7.27131216, 0.99743604, 0.99864667, 0.49308315],
    3725                                                                                                  [      -6.27215178, -0.00083881, 0.00051415, 7.27131297, 0.99743673, 0.99864704, 0.49308314],
    3726                                                                                                  [      -6.27215236, -0.00083858, 0.00051401, 7.27131378, 0.99743743, 0.99864741, 0.49308324],
    3727                                                                                                  [      -6.27215294, -0.00083836, 0.00051387, 7.27131459, 0.99743812, 0.99864777, 0.49308338],
    3728                                                                                                  [      -6.27215353, -0.00083813, 0.00051373, 7.27131540, 0.99743881, 0.99864814, 0.49308338],
    3729                                                                                                  [      -6.27215411, -0.00083790, 0.00051359, 7.27131621, 0.99743951, 0.99864850, 0.49308350],
    3730                                                                                                  [      -6.27215469, -0.00083768, 0.00051345, 7.27131702, 0.99744020, 0.99864887, 0.49308357],
    3731                                                                                                  [      -6.27215527, -0.00083745, 0.00051332, 7.27131782, 0.99744089, 0.99864924, 0.49308374],
    3732                                                                                                  [      -6.27215585, -0.00083722, 0.00051318, 7.27131863, 0.99744159, 0.99864960, 0.49308379],
    3733                                                                                                  [      -6.27215643, -0.00083700, 0.00051304, 7.27131944, 0.99744228, 0.99864997, 0.49308384],
    3734                                                                                                  [      -6.27215701, -0.00083677, 0.00051290, 7.27132024, 0.99744297, 0.99865033, 0.49308393],
    3735                                                                                                  [      -6.27215759, -0.00083654, 0.00051276, 7.27132105, 0.99744366, 0.99865070, 0.49308399],
    3736                                                                                                  [      -6.27215817, -0.00083632, 0.00051262, 7.27132185, 0.99744435, 0.99865106, 0.49308412],
    3737                                                                                                  [      -6.27215875, -0.00083609, 0.00051248, 7.27132266, 0.99744504, 0.99865143, 0.49308421],
    3738                                                                                                  [      -6.27215933, -0.00083587, 0.00051234, 7.27132346, 0.99744574, 0.99865179, 0.49308425],
    3739                                                                                                  [      -6.27215990, -0.00083564, 0.00051221, 7.27132426, 0.99744643, 0.99865215, 0.49308434],
    3740                                                                                                  [      -6.27216048, -0.00083541, 0.00051207, 7.27132507, 0.99744711, 0.99865252, 0.49308442],
    3741                                                                                                  [      -6.27216106, -0.00083519, 0.00051193, 7.27132587, 0.99744780, 0.99865288, 0.49308450],
    3742                                                                                                  [      -6.27216164, -0.00083496, 0.00051179, 7.27132667, 0.99744849, 0.99865324, 0.49308461],
    3743                                                                                                  [      -6.27216221, -0.00083474, 0.00051165, 7.27132747, 0.99744918, 0.99865361, 0.49308467],
    3744                                                                                                  [      -6.27216279, -0.00083451, 0.00051151, 7.27132827, 0.99744987, 0.99865397, 0.49308473],
    3745                                                                                                  [      -6.27216336, -0.00083429, 0.00051138, 7.27132907, 0.99745056, 0.99865433, 0.49308483],
    3746                                                                                                  [      -6.27216394, -0.00083406, 0.00051124, 7.27132987, 0.99745124, 0.99865470, 0.49308489],
    3747                                                                                                  [      -6.27216451, -0.00083384, 0.00051110, 7.27133067, 0.99745193, 0.99865506, 0.49308501],
    3748                                                                                                  [      -6.27216508, -0.00083361, 0.00051096, 7.27133147, 0.99745262, 0.99865542, 0.49308509],
    3749                                                                                                  [      -6.27216566, -0.00083339, 0.00051083, 7.27133227, 0.99745330, 0.99865578, 0.49308519],
    3750                                                                                                  [      -6.27216623, -0.00083317, 0.00051069, 7.27133306, 0.99745399, 0.99865615, 0.49308520],
    3751                                                                                                  [      -6.27216680, -0.00083294, 0.00051055, 7.27133386, 0.99745468, 0.99865651, 0.49308532],
    3752                                                                                                  [      -6.27216737, -0.00083272, 0.00051041, 7.27133465, 0.99745536, 0.99865687, 0.49308537],
    3753                                                                                                  [      -6.27216794, -0.00083249, 0.00051028, 7.27133545, 0.99745605, 0.99865723, 0.49308548],
    3754                                                                                                  [      -6.27216851, -0.00083227, 0.00051014, 7.27133624, 0.99745673, 0.99865759, 0.49308555],
    3755                                                                                                  [      -6.27216909, -0.00083205, 0.00051000, 7.27133704, 0.99745741, 0.99865795, 0.49308568],
    3756                                                                                                  [      -6.27216966, -0.00083182, 0.00050986, 7.27133783, 0.99745810, 0.99865831, 0.49308575],
    3757                                                                                                  [      -6.27217022, -0.00083160, 0.00050973, 7.27133863, 0.99745878, 0.99865867, 0.49308580],
    3758                                                                                                  [      -6.27217079, -0.00083138, 0.00050959, 7.27133942, 0.99745946, 0.99865903, 0.49308589],
    3759                                                                                                  [      -6.27217136, -0.00083115, 0.00050945, 7.27134021, 0.99746015, 0.99865939, 0.49308593],
    3760                                                                                                  [      -6.27217193, -0.00083093, 0.00050932, 7.27134100, 0.99746083, 0.99865975, 0.49308603],
    3761                                                                                                  [      -6.27217250, -0.00083071, 0.00050918, 7.27134179, 0.99746151, 0.99866011, 0.49308603],
    3762                                                                                                  [      -6.27217307, -0.00083048, 0.00050904, 7.27134258, 0.99746219, 0.99866047, 0.49308626],
    3763                                                                                                  [      -6.27217363, -0.00083026, 0.00050891, 7.27134337, 0.99746287, 0.99866083, 0.49308628],
    3764                                                                                                  [      -6.27217420, -0.00083004, 0.00050877, 7.27134416, 0.99746355, 0.99866119, 0.49308633],
    3765                                                                                                  [      -6.27217477, -0.00082982, 0.00050863, 7.27134495, 0.99746424, 0.99866155, 0.49308648],
    3766                                                                                                  [      -6.27217533, -0.00082959, 0.00050850, 7.27134574, 0.99746492, 0.99866191, 0.49308650],
    3767                                                                                                  [      -6.27217590, -0.00082937, 0.00050836, 7.27134653, 0.99746559, 0.99866227, 0.49308659],
    3768                                                                                                  [      -6.27217646, -0.00082915, 0.00050822, 7.27134731, 0.99746627, 0.99866263, 0.49308664],
    3769                                                                                                  [      -6.27217703, -0.00082893, 0.00050809, 7.27134810, 0.99746695, 0.99866299, 0.49308674],
    3770                                                                                                  [      -6.27217759, -0.00082871, 0.00050795, 7.27134888, 0.99746763, 0.99866334, 0.49308688],
    3771                                                                                                  [      -6.27217815, -0.00082848, 0.00050782, 7.27134967, 0.99746831, 0.99866370, 0.49308691],
    3772                                                                                                  [      -6.27217872, -0.00082826, 0.00050768, 7.27135045, 0.99746899, 0.99866406, 0.49308700],
    3773                                                                                                  [      -6.27217928, -0.00082804, 0.00050754, 7.27135124, 0.99746967, 0.99866442, 0.49308706],
    3774                                                                                                  [      -6.27217984, -0.00082782, 0.00050741, 7.27135202, 0.99747034, 0.99866477, 0.49308711],
    3775                                                                                                  [      -6.27218040, -0.00082760, 0.00050727, 7.27135281, 0.99747102, 0.99866513, 0.49308731],
    3776                                                                                                  [      -6.27218097, -0.00082738, 0.00050714, 7.27135359, 0.99747170, 0.99866549, 0.49308733],
    3777                                                                                                  [      -6.27218153, -0.00082716, 0.00050700, 7.27135437, 0.99747237, 0.99866584, 0.49308746],
    3778                                                                                                  [      -6.27218209, -0.00082693, 0.00050686, 7.27135515, 0.99747305, 0.99866620, 0.49308753],
    3779                                                                                                  [      -6.27218265, -0.00082671, 0.00050673, 7.27135593, 0.99747372, 0.99866656, 0.49308759],
    3780                                                                                                  [      -6.27218321, -0.00082649, 0.00050659, 7.27135671, 0.99747440, 0.99866691, 0.49308757],
    3781                                                                                                  [      -6.27218377, -0.00082627, 0.00050646, 7.27135749, 0.99747507, 0.99866727, 0.49308770],
    3782                                                                                                  [      -6.27218433, -0.00082605, 0.00050632, 7.27135827, 0.99747575, 0.99866763, 0.49308772],
    3783                                                                                                  [      -6.27218488, -0.00082583, 0.00050619, 7.27135905, 0.99747642, 0.99866798, 0.49308784],
    3784                                                                                                  [      -6.27218544, -0.00082561, 0.00050605, 7.27135983, 0.99747709, 0.99866834, 0.49308794],
    3785                                                                                                  [      -6.27218600, -0.00082539, 0.00050592, 7.27136061, 0.99747777, 0.99866869, 0.49308810],
    3786                                                                                                  [      -6.27218656, -0.00082517, 0.00050578, 7.27136139, 0.99747844, 0.99866905, 0.49308812],
    3787                                                                                                  [      -6.27218711, -0.00082495, 0.00050565, 7.27136216, 0.99747911, 0.99866940, 0.49308821],
    3788                                                                                                  [      -6.27218767, -0.00082473, 0.00050551, 7.27136294, 0.99747978, 0.99866976, 0.49308825],
    3789                                                                                                  [      -6.27218823, -0.00082451, 0.00050538, 7.27136371, 0.99748046, 0.99867011, 0.49308833],
    3790                                                                                                  [      -6.27218878, -0.00082429, 0.00050524, 7.27136449, 0.99748113, 0.99867046, 0.49308847],
    3791                                                                                                  [      -6.27218934, -0.00082407, 0.00050511, 7.27136526, 0.99748180, 0.99867082, 0.49308860],
    3792                                                                                                  [      -6.27218989, -0.00082385, 0.00050497, 7.27136604, 0.99748247, 0.99867117, 0.49308859],
    3793                                                                                                  [      -6.27219045, -0.00082363, 0.00050484, 7.27136681, 0.99748314, 0.99867153, 0.49308869],
    3794                                                                                                  [      -6.27219100, -0.00082341, 0.00050471, 7.27136759, 0.99748381, 0.99867188, 0.49308873],
    3795                                                                                                  [      -6.27219155, -0.00082320, 0.00050457, 7.27136836, 0.99748448, 0.99867223, 0.49308878],
    3796                                                                                                  [      -6.27219211, -0.00082298, 0.00050444, 7.27136913, 0.99748515, 0.99867259, 0.49308888],
    3797                                                                                                  [      -6.27219266, -0.00082276, 0.00050430, 7.27136990, 0.99748582, 0.99867294, 0.49308897],
    3798                                                                                                  [      -6.27219321, -0.00082254, 0.00050417, 7.27137067, 0.99748649, 0.99867329, 0.49308901],
    3799                                                                                                  [      -6.27219376, -0.00082232, 0.00050403, 7.27137144, 0.99748715, 0.99867364, 0.49308913],
    3800                                                                                                  [      -6.27219432, -0.00082210, 0.00050390, 7.27137221, 0.99748782, 0.99867400, 0.49308916],
    3801                                                                                                  [      -6.27219487, -0.00082188, 0.00050377, 7.27137298, 0.99748849, 0.99867435, 0.49308935],
    3802                                                                                                  [      -6.27219542, -0.00082167, 0.00050363, 7.27137375, 0.99748916, 0.99867470, 0.49308938],
    3803                                                                                                  [      -6.27219597, -0.00082145, 0.00050350, 7.27137452, 0.99748982, 0.99867505, 0.49308944],
    3804                                                                                                  [      -6.27219652, -0.00082123, 0.00050337, 7.27137529, 0.99749049, 0.99867540, 0.49308959],
    3805                                                                                                  [      -6.27219707, -0.00082101, 0.00050323, 7.27137606, 0.99749116, 0.99867576, 0.49308961],
    3806                                                                                                  [      -6.27219762, -0.00082080, 0.00050310, 7.27137682, 0.99749182, 0.99867611, 0.49308966],
    3807                                                                                                  [      -6.27219817, -0.00082058, 0.00050296, 7.27137759, 0.99749249, 0.99867646, 0.49308979],
    3808                                                                                                  [      -6.27219872, -0.00082036, 0.00050283, 7.27137836, 0.99749315, 0.99867681, 0.49308985],
    3809                                                                                                  [      -6.27219926, -0.00082014, 0.00050270, 7.27137912, 0.99749382, 0.99867716, 0.49308989],
    3810                                                                                                  [      -6.27219981, -0.00081993, 0.00050256, 7.27137989, 0.99749448, 0.99867751, 0.49309002],
    3811                                                                                                  [      -6.27220036, -0.00081971, 0.00050243, 7.27138065, 0.99749514, 0.99867786, 0.49309006],
    3812                                                                                                  [      -6.27220091, -0.00081949, 0.00050230, 7.27138141, 0.99749581, 0.99867821, 0.49309016],
    3813                                                                                                  [      -6.27220145, -0.00081927, 0.00050216, 7.27138218, 0.99749647, 0.99867856, 0.49309022],
    3814                                                                                                  [      -6.27220200, -0.00081906, 0.00050203, 7.27138294, 0.99749713, 0.99867891, 0.49309028],
    3815                                                                                                  [      -6.27220254, -0.00081884, 0.00050190, 7.27138370, 0.99749780, 0.99867926, 0.49309037],
    3816                                                                                                  [      -6.27220309, -0.00081862, 0.00050177, 7.27138446, 0.99749846, 0.99867961, 0.49309053],
    3817                                                                                                  [      -6.27220363, -0.00081841, 0.00050163, 7.27138523, 0.99749912, 0.99867996, 0.49309055],
    3818                                                                                                  [      -6.27220418, -0.00081819, 0.00050150, 7.27138599, 0.99749978, 0.99868031, 0.49309069],
    3819                                                                                                  [      -6.27220472, -0.00081798, 0.00050137, 7.27138675, 0.99750044, 0.99868066, 0.49309070],
    3820                                                                                                  [      -6.27220527, -0.00081776, 0.00050124, 7.27138751, 0.99750110, 0.99868100, 0.49309083],
    3821                                                                                                  [      -6.27220581, -0.00081754, 0.00050110, 7.27138827, 0.99750176, 0.99868135, 0.49309090],
    3822                                                                                                  [      -6.27220635, -0.00081733, 0.00050097, 7.27138902, 0.99750242, 0.99868170, 0.49309098],
    3823                                                                                                  [      -6.27220690, -0.00081711, 0.00050084, 7.27138978, 0.99750308, 0.99868205, 0.49309101],
    3824                                                                                                  [      -6.27220744, -0.00081690, 0.00050071, 7.27139054, 0.99750374, 0.99868240, 0.49309113],
    3825                                                                                                  [      -6.27220798, -0.00081668, 0.00050057, 7.27139130, 0.99750440, 0.99868275, 0.49309116],
    3826                                                                                                  [      -6.27220852, -0.00081647, 0.00050044, 7.27139205, 0.99750506, 0.99868309, 0.49309123],
    3827                                                                                                  [      -6.27220906, -0.00081625, 0.00050031, 7.27139281, 0.99750572, 0.99868344, 0.49309142],
    3828                                                                                                  [      -6.27220960, -0.00081604, 0.00050018, 7.27139357, 0.99750638, 0.99868379, 0.49309142],
    3829                                                                                                  [      -6.27221014, -0.00081582, 0.00050005, 7.27139432, 0.99750703, 0.99868413, 0.49309146],
    3830                                                                                                  [      -6.27221068, -0.00081561, 0.00049991, 7.27139508, 0.99750769, 0.99868448, 0.49309158],
    3831                                                                                                  [      -6.27221122, -0.00081539, 0.00049978, 7.27139583, 0.99750835, 0.99868483, 0.49309166],
    3832                                                                                                  [      -6.27221176, -0.00081518, 0.00049965, 7.27139659, 0.99750901, 0.99868517, 0.49309171],
    3833                                                                                                  [      -6.27221230, -0.00081496, 0.00049952, 7.27139734, 0.99750966, 0.99868552, 0.49309183],
    3834                                                                                                  [      -6.27221284, -0.00081475, 0.00049939, 7.27139809, 0.99751032, 0.99868587, 0.49309186],
    3835                                                                                                  [      -6.27221338, -0.00081453, 0.00049926, 7.27139884, 0.99751097, 0.99868621, 0.49309196],
    3836                                                                                                  [      -6.27221391, -0.00081432, 0.00049912, 7.27139960, 0.99751163, 0.99868656, 0.49309197],
    3837                                                                                                  [      -6.27221445, -0.00081410, 0.00049899, 7.27140035, 0.99751228, 0.99868690, 0.49309212],
    3838                                                                                                  [      -6.27221499, -0.00081389, 0.00049886, 7.27140110, 0.99751294, 0.99868725, 0.49309226],
    3839                                                                                                  [      -6.27221552, -0.00081368, 0.00049873, 7.27140185, 0.99751359, 0.99868759, 0.49309233],
    3840                                                                                                  [      -6.27221606, -0.00081346, 0.00049860, 7.27140260, 0.99751425, 0.99868794, 0.49309240],
    3841                                                                                                  [      -6.27221660, -0.00081325, 0.00049847, 7.27140335, 0.99751490, 0.99868828, 0.49309241],
    3842                                                                                                  [      -6.27221713, -0.00081303, 0.00049834, 7.27140410, 0.99751555, 0.99868863, 0.49309250],
    3843                                                                                                  [      -6.27221767, -0.00081282, 0.00049821, 7.27140485, 0.99751621, 0.99868897, 0.49309252],
    3844                                                                                                  [      -6.27221820, -0.00081261, 0.00049807, 7.27140559, 0.99751686, 0.99868932, 0.49309262],
    3845                                                                                                  [      -6.27221874, -0.00081239, 0.00049794, 7.27140634, 0.99751751, 0.99868966, 0.49309274],
    3846                                                                                                  [      -6.27221927, -0.00081218, 0.00049781, 7.27140709, 0.99751816, 0.99869001, 0.49309277],
    3847                                                                                                  [      -6.27221980, -0.00081197, 0.00049768, 7.27140784, 0.99751881, 0.99869035, 0.49309287],
    3848                                                                                                  [      -6.27222034, -0.00081176, 0.00049755, 7.27140858, 0.99751946, 0.99869069, 0.49309295],
    3849                                                                                                  [      -6.27222087, -0.00081154, 0.00049742, 7.27140933, 0.99752012, 0.99869104, 0.49309305],
    3850                                                                                                  [      -6.27222140, -0.00081133, 0.00049729, 7.27141007, 0.99752077, 0.99869138, 0.49309311],
    3851                                                                                                  [      -6.27222193, -0.00081112, 0.00049716, 7.27141082, 0.99752142, 0.99869172, 0.49309317],
    3852                                                                                                  [      -6.27222247, -0.00081090, 0.00049703, 7.27141156, 0.99752207, 0.99869207, 0.49309328],
    3853                                                                                                  [      -6.27222300, -0.00081069, 0.00049690, 7.27141230, 0.99752271, 0.99869241, 0.49309332],
    3854                                                                                                  [      -6.27222353, -0.00081048, 0.00049677, 7.27141305, 0.99752336, 0.99869275, 0.49309344],
    3855                                                                                                  [      -6.27222406, -0.00081027, 0.00049664, 7.27141379, 0.99752401, 0.99869309, 0.49309341],
    3856                                                                                                  [      -6.27222459, -0.00081006, 0.00049651, 7.27141453, 0.99752466, 0.99869344, 0.49309354],
    3857                                                                                                  [      -6.27222512, -0.00080984, 0.00049638, 7.27141527, 0.99752531, 0.99869378, 0.49309361],
    3858                                                                                                  [      -6.27222565, -0.00080963, 0.00049625, 7.27141602, 0.99752596, 0.99869412, 0.49309375],
    3859                                                                                                  [      -6.27222618, -0.00080942, 0.00049612, 7.27141676, 0.99752660, 0.99869446, 0.49309380],
    3860                                                                                                  [      -6.27222671, -0.00080921, 0.00049599, 7.27141750, 0.99752725, 0.99869480, 0.49309382],
    3861                                                                                                  [      -6.27222723, -0.00080900, 0.00049586, 7.27141824, 0.99752790, 0.99869514, 0.49309395],
    3862                                                                                                  [      -6.27222776, -0.00080879, 0.00049573, 7.27141898, 0.99752854, 0.99869548, 0.49309403],
    3863                                                                                                  [      -6.27222829, -0.00080857, 0.00049560, 7.27141972, 0.99752919, 0.99869582, 0.49309409],
    3864                                                                                                  [      -6.27222882, -0.00080836, 0.00049547, 7.27142045, 0.99752984, 0.99869617, 0.49309410],
    3865                                                                                                  [      -6.27222934, -0.00080815, 0.00049534, 7.27142119, 0.99753048, 0.99869651, 0.49309425],
    3866                                                                                                  [      -6.27222987, -0.00080794, 0.00049521, 7.27142193, 0.99753113, 0.99869685, 0.49309434],
    3867                                                                                                  [      -6.27223040, -0.00080773, 0.00049508, 7.27142267, 0.99753177, 0.99869719, 0.49309443],
    3868                                                                                                  [      -6.27223092, -0.00080752, 0.00049495, 7.27142340, 0.99753241, 0.99869753, 0.49309447],
    3869                                                                                                  [      -6.27223145, -0.00080731, 0.00049482, 7.27142414, 0.99753306, 0.99869787, 0.49309457],
    3870                                                                                                  [      -6.27223197, -0.00080710, 0.00049469, 7.27142488, 0.99753370, 0.99869821, 0.49309459],
    3871                                                                                                  [      -6.27223250, -0.00080689, 0.00049457, 7.27142561, 0.99753435, 0.99869855, 0.49309463],
    3872                                                                                                  [      -6.27223302, -0.00080668, 0.00049444, 7.27142635, 0.99753499, 0.99869888, 0.49309473],
    3873                                                                                                  [      -6.27223355, -0.00080647, 0.00049431, 7.27142708, 0.99753563, 0.99869922, 0.49309486],
    3874                                                                                                  [      -6.27223407, -0.00080626, 0.00049418, 7.27142781, 0.99753627, 0.99869956, 0.49309496],
    3875                                                                                                  [      -6.27223460, -0.00080605, 0.00049405, 7.27142855, 0.99753692, 0.99869990, 0.49309501],
    3876                                                                                                  [      -6.27223512, -0.00080584, 0.00049392, 7.27142928, 0.99753756, 0.99870024, 0.49309506],
    3877                                                                                                  [      -6.27223564, -0.00080563, 0.00049379, 7.27143001, 0.99753820, 0.99870058, 0.49309510],
    3878                                                                                                  [      -6.27223616, -0.00080542, 0.00049366, 7.27143074, 0.99753884, 0.99870092, 0.49309524],
    3879                                                                                                  [      -6.27223669, -0.00080521, 0.00049354, 7.27143148, 0.99753948, 0.99870125, 0.49309538],
    3880                                                                                                  [      -6.27223721, -0.00080500, 0.00049341, 7.27143221, 0.99754012, 0.99870159, 0.49309541],
    3881                                                                                                  [      -6.27223773, -0.00080479, 0.00049328, 7.27143294, 0.99754076, 0.99870193, 0.49309547],
    3882                                                                                                  [      -6.27223825, -0.00080458, 0.00049315, 7.27143367, 0.99754140, 0.99870227, 0.49309552],
    3883                                                                                                  [      -6.27223877, -0.00080437, 0.00049302, 7.27143440, 0.99754204, 0.99870260, 0.49309562],
    3884                                                                                                  [      -6.27223929, -0.00080416, 0.00049289, 7.27143513, 0.99754268, 0.99870294, 0.49309564],
    3885                                                                                                  [      -6.27223981, -0.00080395, 0.00049277, 7.27143586, 0.99754332, 0.99870328, 0.49309575],
    3886                                                                                                  [      -6.27224033, -0.00080375, 0.00049264, 7.27143658, 0.99754395, 0.99870362, 0.49309585],
    3887                                                                                                  [      -6.27224085, -0.00080354, 0.00049251, 7.27143731, 0.99754459, 0.99870395, 0.49309591],
    3888                                                                                                  [      -6.27224137, -0.00080333, 0.00049238, 7.27143804, 0.99754523, 0.99870429, 0.49309595],
    3889                                                                                                  [      -6.27224189, -0.00080312, 0.00049225, 7.27143877, 0.99754587, 0.99870463, 0.49309610],
    3890                                                                                                  [      -6.27224241, -0.00080291, 0.00049213, 7.27143949, 0.99754650, 0.99870496, 0.49309609],
    3891                                                                                                  [      -6.27224292, -0.00080270, 0.00049200, 7.27144022, 0.99754714, 0.99870530, 0.49309625],
    3892                                                                                                  [      -6.27224344, -0.00080250, 0.00049187, 7.27144094, 0.99754778, 0.99870563, 0.49309625],
    3893                                                                                                  [      -6.27224396, -0.00080229, 0.00049174, 7.27144167, 0.99754841, 0.99870597, 0.49309632],
    3894                                                                                                  [      -6.27224447, -0.00080208, 0.00049162, 7.27144239, 0.99754905, 0.99870630, 0.49309639],
    3895                                                                                                  [      -6.27224499, -0.00080187, 0.00049149, 7.27144312, 0.99754968, 0.99870664, 0.49309648],
    3896                                                                                                  [      -6.27224551, -0.00080166, 0.00049136, 7.27144384, 0.99755032, 0.99870697, 0.49309655],
    3897                                                                                                  [      -6.27224602, -0.00080146, 0.00049123, 7.27144457, 0.99755095, 0.99870731, 0.49309667],
    3898                                                                                                  [      -6.27224654, -0.00080125, 0.00049111, 7.27144529, 0.99755159, 0.99870764, 0.49309666],
    3899                                                                                                  [      -6.27224705, -0.00080104, 0.00049098, 7.27144601, 0.99755222, 0.99870798, 0.49309679],
    3900                                                                                                  [      -6.27224757, -0.00080084, 0.00049085, 7.27144673, 0.99755286, 0.99870831, 0.49309687],
    3901                                                                                                  [      -6.27224808, -0.00080063, 0.00049072, 7.27144746, 0.99755349, 0.99870865, 0.49309695],
    3902                                                                                                  [      -6.27224860, -0.00080042, 0.00049060, 7.27144818, 0.99755412, 0.99870898, 0.49309704],
    3903                                                                                                  [      -6.27224911, -0.00080021, 0.00049047, 7.27144890, 0.99755476, 0.99870932, 0.49309706],
    3904                                                                                                  [      -6.27224962, -0.00080001, 0.00049034, 7.27144962, 0.99755539, 0.99870965, 0.49309713],
    3905                                                                                                  [      -6.27225014, -0.00079980, 0.00049022, 7.27145034, 0.99755602, 0.99870998, 0.49309722],
    3906                                                                                                  [      -6.27225065, -0.00079959, 0.00049009, 7.27145106, 0.99755665, 0.99871032, 0.49309728],
    3907                                                                                                  [      -6.27225116, -0.00079939, 0.00048996, 7.27145178, 0.99755728, 0.99871065, 0.49309738],
    3908                                                                                                  [      -6.27225168, -0.00079918, 0.00048984, 7.27145249, 0.99755791, 0.99871098, 0.49309747],
    3909                                                                                                  [      -6.27225219, -0.00079897, 0.00048971, 7.27145321, 0.99755854, 0.99871131, 0.49309753],
    3910                                                                                                  [      -6.27225270, -0.00079877, 0.00048958, 7.27145393, 0.99755918, 0.99871165, 0.49309771],
    3911                                                                                                  [      -6.27225321, -0.00079856, 0.00048946, 7.27145465, 0.99755981, 0.99871198, 0.49309765],
    3912                                                                                                  [      -6.27225372, -0.00079836, 0.00048933, 7.27145536, 0.99756044, 0.99871231, 0.49309782],
    3913                                                                                                  [      -6.27225423, -0.00079815, 0.00048921, 7.27145608, 0.99756106, 0.99871264, 0.49309784],
    3914                                                                                                  [      -6.27225474, -0.00079795, 0.00048908, 7.27145680, 0.99756169, 0.99871298, 0.49309793],
    3915                                                                                                  [      -6.27225525, -0.00079774, 0.00048895, 7.27145751, 0.99756232, 0.99871331, 0.49309799],
    3916                                                                                                  [      -6.27225576, -0.00079753, 0.00048883, 7.27145823, 0.99756295, 0.99871364, 0.49309812],
    3917                                                                                                  [      -6.27225627, -0.00079733, 0.00048870, 7.27145894, 0.99756358, 0.99871397, 0.49309805],
    3918                                                                                                  [      -6.27225678, -0.00079712, 0.00048857, 7.27145966, 0.99756421, 0.99871430, 0.49309821],
    3919                                                                                                  [      -6.27225729, -0.00079692, 0.00048845, 7.27146037, 0.99756483, 0.99871463, 0.49309831],
    3920                                                                                                  [      -6.27225780, -0.00079671, 0.00048832, 7.27146108, 0.99756546, 0.99871496, 0.49309836],
    3921                                                                                                  [      -6.27225830, -0.00079651, 0.00048820, 7.27146180, 0.99756609, 0.99871529, 0.49309842],
    3922                                                                                                  [      -6.27225881, -0.00079630, 0.00048807, 7.27146251, 0.99756671, 0.99871563, 0.49309856],
    3923                                                                                                  [      -6.27225932, -0.00079610, 0.00048795, 7.27146322, 0.99756734, 0.99871596, 0.49309861],
    3924                                                                                                  [      -6.27225983, -0.00079589, 0.00048782, 7.27146393, 0.99756797, 0.99871629, 0.49309861],
    3925                                                                                                  [      -6.27226033, -0.00079569, 0.00048769, 7.27146464, 0.99756859, 0.99871662, 0.49309873],
    3926                                                                                                  [      -6.27226084, -0.00079548, 0.00048757, 7.27146535, 0.99756922, 0.99871695, 0.49309877],
    3927                                                                                                  [      -6.27226134, -0.00079528, 0.00048744, 7.27146606, 0.99756984, 0.99871728, 0.49309886],
    3928                                                                                                  [      -6.27226185, -0.00079508, 0.00048732, 7.27146677, 0.99757047, 0.99871761, 0.49309893],
    3929                                                                                                  [      -6.27226235, -0.00079487, 0.00048719, 7.27146748, 0.99757109, 0.99871793, 0.49309902],
    3930                                                                                                  [      -6.27226286, -0.00079467, 0.00048707, 7.27146819, 0.99757172, 0.99871826, 0.49309912],
    3931                                                                                                  [      -6.27226336, -0.00079446, 0.00048694, 7.27146890, 0.99757234, 0.99871859, 0.49309921],
    3932                                                                                                  [      -6.27226387, -0.00079426, 0.00048682, 7.27146961, 0.99757296, 0.99871892, 0.49309921],
    3933                                                                                                  [      -6.27226437, -0.00079406, 0.00048669, 7.27147032, 0.99757359, 0.99871925, 0.49309928],
    3934                                                                                                  [      -6.27226488, -0.00079385, 0.00048657, 7.27147102, 0.99757421, 0.99871958, 0.49309939],
    3935                                                                                                  [      -6.27226538, -0.00079365, 0.00048644, 7.27147173, 0.99757483, 0.99871991, 0.49309945],
    3936                                                                                                  [      -6.27226588, -0.00079345, 0.00048632, 7.27147244, 0.99757545, 0.99872024, 0.49309958],
    3937                                                                                                  [      -6.27226639, -0.00079324, 0.00048619, 7.27147314, 0.99757607, 0.99872056, 0.49309958],
    3938                                                                                                  [      -6.27226689, -0.00079304, 0.00048607, 7.27147385, 0.99757670, 0.99872089, 0.49309961],
    3939                                                                                                  [      -6.27226739, -0.00079284, 0.00048594, 7.27147455, 0.99757732, 0.99872122, 0.49309967],
    3940                                                                                                  [      -6.27226789, -0.00079263, 0.00048582, 7.27147526, 0.99757794, 0.99872155, 0.49309986],
    3941                                                                                                  [      -6.27226839, -0.00079243, 0.00048570, 7.27147596, 0.99757856, 0.99872187, 0.49309996],
    3942                                                                                                  [      -6.27226889, -0.00079223, 0.00048557, 7.27147667, 0.99757918, 0.99872220, 0.49309999],
    3943                                                                                                  [      -6.27226939, -0.00079202, 0.00048545, 7.27147737, 0.99757980, 0.99872253, 0.49310010],
    3944                                                                                                  [      -6.27226990, -0.00079182, 0.00048532, 7.27147807, 0.99758042, 0.99872286, 0.49310015],
    3945                                                                                                  [      -6.27227040, -0.00079162, 0.00048520, 7.27147878, 0.99758104, 0.99872318, 0.49310022],
    3946                                                                                                  [      -6.27227090, -0.00079142, 0.00048507, 7.27147948, 0.99758166, 0.99872351, 0.49310023],
    3947                                                                                                  [      -6.27227139, -0.00079121, 0.00048495, 7.27148018, 0.99758227, 0.99872384, 0.49310029],
    3948                                                                                                  [      -6.27227189, -0.00079101, 0.00048483, 7.27148088, 0.99758289, 0.99872416, 0.49310038],
    3949                                                                                                  [      -6.27227239, -0.00079081, 0.00048470, 7.27148158, 0.99758351, 0.99872449, 0.49310046],
    3950                                                                                                  [      -6.27227289, -0.00079061, 0.00048458, 7.27148228, 0.99758413, 0.99872481, 0.49310052],
    3951                                                                                                  [      -6.27227339, -0.00079041, 0.00048445, 7.27148298, 0.99758474, 0.99872514, 0.49310058],
    3952                                                                                                  [      -6.27227389, -0.00079020, 0.00048433, 7.27148368, 0.99758536, 0.99872546, 0.49310064],
    3953                                                                                                  [      -6.27227439, -0.00079000, 0.00048421, 7.27148438, 0.99758598, 0.99872579, 0.49310077],
    3954                                                                                                  [      -6.27227488, -0.00078980, 0.00048408, 7.27148508, 0.99758659, 0.99872612, 0.49310085],
    3955                                                                                                  [      -6.27227538, -0.00078960, 0.00048396, 7.27148578, 0.99758721, 0.99872644, 0.49310092],
    3956                                                                                                  [      -6.27227588, -0.00078940, 0.00048384, 7.27148648, 0.99758783, 0.99872677, 0.49310100],
    3957                                                                                                  [      -6.27227637, -0.00078920, 0.00048371, 7.27148717, 0.99758844, 0.99872709, 0.49310112],
    3958                                                                                                  [      -6.27227687, -0.00078900, 0.00048359, 7.27148787, 0.99758906, 0.99872741, 0.49310113],
    3959                                                                                                  [      -6.27227736, -0.00078880, 0.00048347, 7.27148857, 0.99758967, 0.99872774, 0.49310122],
    3960                                                                                                  [      -6.27227786, -0.00078859, 0.00048334, 7.27148927, 0.99759029, 0.99872806, 0.49310127],
    3961                                                                                                  [      -6.27227836, -0.00078839, 0.00048322, 7.27148996, 0.99759090, 0.99872839, 0.49310130],
    3962                                                                                                  [      -6.27227885, -0.00078819, 0.00048310, 7.27149066, 0.99759151, 0.99872871, 0.49310141],
    3963                                                                                                  [      -6.27227934, -0.00078799, 0.00048297, 7.27149135, 0.99759213, 0.99872903, 0.49310152],
    3964                                                                                                  [      -6.27227984, -0.00078779, 0.00048285, 7.27149205, 0.99759274, 0.99872936, 0.49310152],
    3965                                                                                                  [      -6.27228033, -0.00078759, 0.00048273, 7.27149274, 0.99759335, 0.99872968, 0.49310163],
    3966                                                                                                  [      -6.27228083, -0.00078739, 0.00048260, 7.27149344, 0.99759397, 0.99873001, 0.49310168],
    3967                                                                                                  [      -6.27228132, -0.00078719, 0.00048248, 7.27149413, 0.99759458, 0.99873033, 0.49310178],
    3968                                                                                                  [      -6.27228181, -0.00078699, 0.00048236, 7.27149482, 0.99759519, 0.99873065, 0.49310189],
    3969                                                                                                  [      -6.27228231, -0.00078679, 0.00048224, 7.27149552, 0.99759580, 0.99873097, 0.49310191],
    3970                                                                                                  [      -6.27228280, -0.00078659, 0.00048211, 7.27149621, 0.99759641, 0.99873130, 0.49310203],
    3971                                                                                                  [      -6.27228329, -0.00078639, 0.00048199, 7.27149690, 0.99759702, 0.99873162, 0.49310202],
    3972                                                                                                  [      -6.27228378, -0.00078619, 0.00048187, 7.27149759, 0.99759763, 0.99873194, 0.49310216],
    3973                                                                                                  [      -6.27228427, -0.00078599, 0.00048175, 7.27149828, 0.99759825, 0.99873226, 0.49310220],
    3974                                                                                                  [      -6.27228476, -0.00078579, 0.00048162, 7.27149897, 0.99759886, 0.99873259, 0.49310228],
    3975                                                                                                  [      -6.27228526, -0.00078559, 0.00048150, 7.27149966, 0.99759946, 0.99873291, 0.49310231],
    3976                                                                                                  [      -6.27228575, -0.00078539, 0.00048138, 7.27150035, 0.99760007, 0.99873323, 0.49310245],
    3977                                                                                                  [      -6.27228624, -0.00078519, 0.00048126, 7.27150104, 0.99760068, 0.99873355, 0.49310250],
    3978                                                                                                  [      -6.27228673, -0.00078500, 0.00048113, 7.27150173, 0.99760129, 0.99873387, 0.49310256],
    3979                                                                                                  [      -6.27228722, -0.00078480, 0.00048101, 7.27150242, 0.99760190, 0.99873419, 0.49310269],
    3980                                                                                                  [      -6.27228771, -0.00078460, 0.00048089, 7.27150311, 0.99760251, 0.99873451, 0.49310278],
    3981                                                                                                  [      -6.27228819, -0.00078440, 0.00048077, 7.27150380, 0.99760312, 0.99873483, 0.49310277],
    3982                                                                                                  [      -6.27228868, -0.00078420, 0.00048065, 7.27150448, 0.99760372, 0.99873515, 0.49310291],
    3983                                                                                                  [      -6.27228917, -0.00078400, 0.00048052, 7.27150517, 0.99760433, 0.99873548, 0.49310291],
    3984                                                                                                  [      -6.27228966, -0.00078380, 0.00048040, 7.27150586, 0.99760494, 0.99873580, 0.49310301],
    3985                                                                                                  [      -6.27229015, -0.00078360, 0.00048028, 7.27150654, 0.99760555, 0.99873612, 0.49310307],
    3986                                                                                                  [      -6.27229064, -0.00078341, 0.00048016, 7.27150723, 0.99760615, 0.99873644, 0.49310321],
    3987                                                                                                  [      -6.27229112, -0.00078321, 0.00048004, 7.27150792, 0.99760676, 0.99873676, 0.49310322],
    3988                                                                                                  [      -6.27229161, -0.00078301, 0.00047992, 7.27150860, 0.99760736, 0.99873707, 0.49310330],
    3989                                                                                                  [      -6.27229210, -0.00078281, 0.00047979, 7.27150929, 0.99760797, 0.99873739, 0.49310330],
    3990                                                                                                  [      -6.27229258, -0.00078261, 0.00047967, 7.27150997, 0.99760857, 0.99873771, 0.49310340],
    3991                                                                                                  [      -6.27229307, -0.00078242, 0.00047955, 7.27151065, 0.99760918, 0.99873803, 0.49310344],
    3992                                                                                                  [      -6.27229356, -0.00078222, 0.00047943, 7.27151134, 0.99760978, 0.99873835, 0.49310362],
    3993                                                                                                  [      -6.27229404, -0.00078202, 0.00047931, 7.27151202, 0.99761039, 0.99873867, 0.49310362],
    3994                                                                                                  [      -6.27229453, -0.00078182, 0.00047919, 7.27151270, 0.99761099, 0.99873899, 0.49310369],
    3995                                                                                                  [      -6.27229501, -0.00078163, 0.00047907, 7.27151339, 0.99761160, 0.99873931, 0.49310382],
    3996                                                                                                  [      -6.27229550, -0.00078143, 0.00047895, 7.27151407, 0.99761220, 0.99873963, 0.49310378],
    3997                                                                                                  [      -6.27229598, -0.00078123, 0.00047882, 7.27151475, 0.99761280, 0.99873994, 0.49310395],
    3998                                                                                                  [      -6.27229646, -0.00078103, 0.00047870, 7.27151543, 0.99761340, 0.99874026, 0.49310398],
    3999                                                                                                  [      -6.27229695, -0.00078084, 0.00047858, 7.27151611, 0.99761401, 0.99874058, 0.49310409],
    4000                                                                                                  [      -6.27229743, -0.00078064, 0.00047846, 7.27151679, 0.99761461, 0.99874090, 0.49310410],
    4001                                                                                                  [      -6.27229791, -0.00078044, 0.00047834, 7.27151747, 0.99761521, 0.99874122, 0.49310419],
    4002                                                                                                  [      -6.27229840, -0.00078025, 0.00047822, 7.27151815, 0.99761581, 0.99874153, 0.49310426],
    4003                                                                                                  [      -6.27229888, -0.00078005, 0.00047810, 7.27151883, 0.99761641, 0.99874185, 0.49310431],
    4004                                                                                                  [      -6.27229936, -0.00077985, 0.00047798, 7.27151951, 0.99761701, 0.99874217, 0.49310439],
    4005                                                                                                  [      -6.27229984, -0.00077966, 0.00047786, 7.27152019, 0.99761762, 0.99874248, 0.49310456],
    4006                                                                                                  [      -6.27230033, -0.00077946, 0.00047774, 7.27152087, 0.99761822, 0.99874280, 0.49310453],
    4007                                                                                                  [      -6.27230081, -0.00077926, 0.00047762, 7.27152154, 0.99761882, 0.99874312, 0.49310456],
    4008                                                                                                  [      -6.27230129, -0.00077907, 0.00047750, 7.27152222, 0.99761942, 0.99874343, 0.49310472],
    4009                                                                                                  [      -6.27230177, -0.00077887, 0.00047738, 7.27152290, 0.99762001, 0.99874375, 0.49310478],
    4010                                                                                                  [      -6.27230225, -0.00077868, 0.00047726, 7.27152357, 0.99762061, 0.99874407, 0.49310482],
    4011                                                                                                  [      -6.27230273, -0.00077848, 0.00047714, 7.27152425, 0.99762121, 0.99874438, 0.49310485],
    4012                                                                                                  [      -6.27230321, -0.00077828, 0.00047702, 7.27152493, 0.99762181, 0.99874470, 0.49310496],
    4013                                                                                                  [      -6.27230369, -0.00077809, 0.00047690, 7.27152560, 0.99762241, 0.99874501, 0.49310508],
    4014                                                                                                  [      -6.27230417, -0.00077789, 0.00047678, 7.27152628, 0.99762301, 0.99874533, 0.49310514],
    4015                                                                                                  [      -6.27230465, -0.00077770, 0.00047666, 7.27152695, 0.99762360, 0.99874564, 0.49310512],
    4016                                                                                                  [      -6.27230513, -0.00077750, 0.00047654, 7.27152763, 0.99762420, 0.99874596, 0.49310522],
    4017                                                                                                  [      -6.27230561, -0.00077731, 0.00047642, 7.27152830, 0.99762480, 0.99874627, 0.49310530],
    4018                                                                                                  [      -6.27230609, -0.00077711, 0.00047630, 7.27152897, 0.99762540, 0.99874659, 0.49310543],
    4019                                                                                                  [      -6.27230656, -0.00077692, 0.00047618, 7.27152965, 0.99762599, 0.99874690, 0.49310543],
    4020                                                                                                  [      -6.27230704, -0.00077672, 0.00047606, 7.27153032, 0.99762659, 0.99874722, 0.49310556],
    4021                                                                                                  [      -6.27230752, -0.00077653, 0.00047594, 7.27153099, 0.99762718, 0.99874753, 0.49310555],
    4022                                                                                                  [      -6.27230800, -0.00077633, 0.00047582, 7.27153166, 0.99762778, 0.99874785, 0.49310570],
    4023                                                                                                  [      -6.27230847, -0.00077614, 0.00047570, 7.27153233, 0.99762837, 0.99874816, 0.49310570],
    4024                                                                                                  [      -6.27230895, -0.00077594, 0.00047558, 7.27153301, 0.99762897, 0.99874848, 0.49310582],
    4025                                                                                                  [      -6.27230943, -0.00077575, 0.00047546, 7.27153368, 0.99762956, 0.99874879, 0.49310585],
    4026                                                                                                  [      -6.27230990, -0.00077556, 0.00047534, 7.27153435, 0.99763016, 0.99874910, 0.49310599],
    4027                                                                                                  [      -6.27231038, -0.00077536, 0.00047522, 7.27153502, 0.99763075, 0.99874942, 0.49310605],
    4028                                                                                                  [      -6.27231085, -0.00077517, 0.00047510, 7.27153569, 0.99763135, 0.99874973, 0.49310608],
    4029                                                                                                  [      -6.27231133, -0.00077497, 0.00047498, 7.27153636, 0.99763194, 0.99875004, 0.49310612],
    4030                                                                                                  [      -6.27231180, -0.00077478, 0.00047487, 7.27153702, 0.99763253, 0.99875036, 0.49310624],
    4031                                                                                                  [      -6.27231228, -0.00077458, 0.00047475, 7.27153769, 0.99763312, 0.99875067, 0.49310622],
    4032                                                                                                  [      -6.27231275, -0.00077439, 0.00047463, 7.27153836, 0.99763372, 0.99875098, 0.49310639],
    4033                                                                                                  [      -6.27231323, -0.00077420, 0.00047451, 7.27153903, 0.99763431, 0.99875129, 0.49310643],
    4034                                                                                                  [      -6.27231370, -0.00077400, 0.00047439, 7.27153970, 0.99763490, 0.99875161, 0.49310644],
    4035                                                                                                  [      -6.27231417, -0.00077381, 0.00047427, 7.27154036, 0.99763549, 0.99875192, 0.49310654],
    4036                                                                                                  [      -6.27231465, -0.00077362, 0.00047415, 7.27154103, 0.99763608, 0.99875223, 0.49310665],
    4037                                                                                                  [      -6.27231512, -0.00077342, 0.00047403, 7.27154170, 0.99763668, 0.99875254, 0.49310674],
    4038                                                                                                  [      -6.27231559, -0.00077323, 0.00047392, 7.27154236, 0.99763727, 0.99875285, 0.49310670],
    4039                                                                                                  [      -6.27231607, -0.00077304, 0.00047380, 7.27154303, 0.99763786, 0.99875317, 0.49310684],
    4040                                                                                                  [      -6.27231654, -0.00077284, 0.00047368, 7.27154369, 0.99763845, 0.99875348, 0.49310692],
    4041                                                                                                  [      -6.27231701, -0.00077265, 0.00047356, 7.27154436, 0.99763904, 0.99875379, 0.49310699],
    4042                                                                                                  [      -6.27231748, -0.00077246, 0.00047344, 7.27154502, 0.99763963, 0.99875410, 0.49310700],
    4043                                                                                                  [      -6.27231795, -0.00077227, 0.00047332, 7.27154569, 0.99764021, 0.99875441, 0.49310703],
    4044                                                                                                  [      -6.27231842, -0.00077207, 0.00047321, 7.27154635, 0.99764080, 0.99875472, 0.49310722],
    4045                                                                                                  [      -6.27231889, -0.00077188, 0.00047309, 7.27154701, 0.99764139, 0.99875503, 0.49310725],
    4046                                                                                                  [      -6.27231936, -0.00077169, 0.00047297, 7.27154768, 0.99764198, 0.99875534, 0.49310729],
    4047                                                                                                  [      -6.27231984, -0.00077150, 0.00047285, 7.27154834, 0.99764257, 0.99875565, 0.49310745],
    4048                                                                                                  [      -6.27232031, -0.00077130, 0.00047273, 7.27154900, 0.99764316, 0.99875596, 0.49310751],
    4049                                                                                                  [      -6.27232077, -0.00077111, 0.00047262, 7.27154966, 0.99764374, 0.99875627, 0.49310749],
    4050                                                                                                  [      -6.27232124, -0.00077092, 0.00047250, 7.27155032, 0.99764433, 0.99875658, 0.49310765],
    4051                                                                                                  [      -6.27232171, -0.00077073, 0.00047238, 7.27155099, 0.99764492, 0.99875689, 0.49310767],
    4052                                                                                                  [      -6.27232218, -0.00077054, 0.00047226, 7.27155165, 0.99764550, 0.99875720, 0.49310775],
    4053                                                                                                  [      -6.27232265, -0.00077034, 0.00047215, 7.27155231, 0.99764609, 0.99875751, 0.49310781],
    4054                                                                                                  [      -6.27232312, -0.00077015, 0.00047203, 7.27155297, 0.99764668, 0.99875782, 0.49310787],
    4055                                                                                                  [      -6.27232359, -0.00076996, 0.00047191, 7.27155363, 0.99764726, 0.99875813, 0.49310796],
    4056                                                                                                  [      -6.27232406, -0.00076977, 0.00047179, 7.27155429, 0.99764785, 0.99875844, 0.49310787],
    4057                                                                                                  [      -6.27232452, -0.00076958, 0.00047168, 7.27155494, 0.99764843, 0.99875875, 0.49310807],
    4058                                                                                                  [      -6.27232499, -0.00076939, 0.00047156, 7.27155560, 0.99764902, 0.99875906, 0.49310819],
    4059                                                                                                  [      -6.27232546, -0.00076920, 0.00047144, 7.27155626, 0.99764960, 0.99875936, 0.49310824],
    4060                                                                                                  [      -6.27232592, -0.00076900, 0.00047132, 7.27155692, 0.99765019, 0.99875967, 0.49310831],
    4061                                                                                                  [      -6.27232639, -0.00076881, 0.00047121, 7.27155758, 0.99765077, 0.99875998, 0.49310826],
    4062                                                                                                  [      -6.27232686, -0.00076862, 0.00047109, 7.27155823, 0.99765135, 0.99876029, 0.49310841],
    4063                                                                                                  [      -6.27232732, -0.00076843, 0.00047097, 7.27155889, 0.99765194, 0.99876060, 0.49310851],
    4064                                                                                                  [      -6.27232779, -0.00076824, 0.00047086, 7.27155955, 0.99765252, 0.99876090, 0.49310855],
    4065                                                                                                  [      -6.27232825, -0.00076805, 0.00047074, 7.27156020, 0.99765310, 0.99876121, 0.49310862],
    4066                                                                                                  [      -6.27232872, -0.00076786, 0.00047062, 7.27156086, 0.99765369, 0.99876152, 0.49310868],
    4067                                                                                                  [      -6.27232918, -0.00076767, 0.00047050, 7.27156151, 0.99765427, 0.99876183, 0.49310870],
    4068                                                                                                  [      -6.27232965, -0.00076748, 0.00047039, 7.27156217, 0.99765485, 0.99876213, 0.49310885],
    4069                                                                                                  [      -6.27233011, -0.00076729, 0.00047027, 7.27156282, 0.99765543, 0.99876244, 0.49310881],
    4070                                                                                                  [      -6.27233058, -0.00076710, 0.00047015, 7.27156348, 0.99765601, 0.99876275, 0.49310901],
    4071                                                                                                  [      -6.27233104, -0.00076691, 0.00047004, 7.27156413, 0.99765660, 0.99876305, 0.49310905],
    4072                                                                                                  [      -6.27233150, -0.00076672, 0.00046992, 7.27156478, 0.99765718, 0.99876336, 0.49310906],
    4073                                                                                                  [      -6.27233197, -0.00076653, 0.00046981, 7.27156544, 0.99765776, 0.99876367, 0.49310915],
    4074                                                                                                  [      -6.27233243, -0.00076634, 0.00046969, 7.27156609, 0.99765834, 0.99876397, 0.49310926],
    4075                                                                                                  [      -6.27233289, -0.00076615, 0.00046957, 7.27156674, 0.99765892, 0.99876428, 0.49310922],
    4076                                                                                                  [      -6.27233336, -0.00076596, 0.00046946, 7.27156740, 0.99765950, 0.99876458, 0.49310945],
    4077                                                                                                  [      -6.27233382, -0.00076577, 0.00046934, 7.27156805, 0.99766008, 0.99876489, 0.49310949],
    4078                                                                                                  [      -6.27233428, -0.00076558, 0.00046922, 7.27156870, 0.99766065, 0.99876520, 0.49310955],
    4079                                                                                                  [      -6.27233474, -0.00076539, 0.00046911, 7.27156935, 0.99766123, 0.99876550, 0.49310960],
    4080                                                                                                  [      -6.27233520, -0.00076520, 0.00046899, 7.27157000, 0.99766181, 0.99876581, 0.49310966],
    4081                                                                                                  [      -6.27233566, -0.00076501, 0.00046888, 7.27157065, 0.99766239, 0.99876611, 0.49310976],
    4082                                                                                                  [      -6.27233612, -0.00076482, 0.00046876, 7.27157130, 0.99766297, 0.99876642, 0.49310982],
    4083                                                                                                  [      -6.27233658, -0.00076464, 0.00046864, 7.27157195, 0.99766355, 0.99876672, 0.49310988],
    4084                                                                                                  [      -6.27233705, -0.00076445, 0.00046853, 7.27157260, 0.99766412, 0.99876703, 0.49310995],
    4085                                                                                                  [      -6.27233751, -0.00076426, 0.00046841, 7.27157325, 0.99766470, 0.99876733, 0.49310998],
    4086                                                                                                  [      -6.27233797, -0.00076407, 0.00046830, 7.27157390, 0.99766528, 0.99876763, 0.49311004],
    4087                                                                                                  [      -6.27233843, -0.00076388, 0.00046818, 7.27157454, 0.99766585, 0.99876794, 0.49311017],
    4088                                                                                                  [      -6.27233888, -0.00076369, 0.00046806, 7.27157519, 0.99766643, 0.99876824, 0.49311019],
    4089                                                                                                  [      -6.27233934, -0.00076350, 0.00046795, 7.27157584, 0.99766701, 0.99876855, 0.49311023],
    4090                                                                                                  [      -6.27233980, -0.00076332, 0.00046783, 7.27157649, 0.99766758, 0.99876885, 0.49311028],
    4091                                                                                                  [      -6.27234026, -0.00076313, 0.00046772, 7.27157713, 0.99766816, 0.99876915, 0.49311042],
    4092                                                                                                  [      -6.27234072, -0.00076294, 0.00046760, 7.27157778, 0.99766873, 0.99876946, 0.49311047],
    4093                                                                                                  [      -6.27234118, -0.00076275, 0.00046749, 7.27157843, 0.99766931, 0.99876976, 0.49311045],
    4094                                                                                                  [      -6.27234163, -0.00076256, 0.00046737, 7.27157907, 0.99766988, 0.99877006, 0.49311061],
    4095                                                                                                  [      -6.27234209, -0.00076238, 0.00046726, 7.27157972, 0.99767046, 0.99877037, 0.49311059],
    4096                                                                                                  [      -6.27234255, -0.00076219, 0.00046714, 7.27158036, 0.99767103, 0.99877067, 0.49311072],
    4097                                                                                                  [      -6.27234301, -0.00076200, 0.00046703, 7.27158101, 0.99767160, 0.99877097, 0.49311081],
    4098                                                                                                  [      -6.27234346, -0.00076181, 0.00046691, 7.27158165, 0.99767218, 0.99877128, 0.49311088],
    4099                                                                                                  [      -6.27234392, -0.00076163, 0.00046680, 7.27158229, 0.99767275, 0.99877158, 0.49311099],
    4100                                                                                                  [      -6.27234438, -0.00076144, 0.00046668, 7.27158294, 0.99767332, 0.99877188, 0.49311100],
    4101                                                                                                  [      -6.27234483, -0.00076125, 0.00046657, 7.27158358, 0.99767389, 0.99877218, 0.49311108],
    4102                                                                                                  [      -6.27234529, -0.00076106, 0.00046645, 7.27158422, 0.99767447, 0.99877248, 0.49311114],
    4103                                                                                                  [      -6.27234574, -0.00076088, 0.00046634, 7.27158487, 0.99767504, 0.99877279, 0.49311126],
    4104                                                                                                  [      -6.27234620, -0.00076069, 0.00046622, 7.27158551, 0.99767561, 0.99877309, 0.49311118],
    4105                                                                                                  [      -6.27234665, -0.00076050, 0.00046611, 7.27158615, 0.99767618, 0.99877339, 0.49311132],
    4106                                                                                                  [      -6.27234711, -0.00076032, 0.00046599, 7.27158679, 0.99767675, 0.99877369, 0.49311134],
    4107                                                                                                  [      -6.27234756, -0.00076013, 0.00046588, 7.27158743, 0.99767732, 0.99877399, 0.49311138],
    4108                                                                                                  [      -6.27234802, -0.00075994, 0.00046576, 7.27158807, 0.99767789, 0.99877429, 0.49311158],
    4109                                                                                                  [      -6.27234847, -0.00075976, 0.00046565, 7.27158872, 0.99767846, 0.99877459, 0.49311152],
    4110                                                                                                  [      -6.27234892, -0.00075957, 0.00046554, 7.27158935, 0.99767903, 0.99877489, 0.49311170],
    4111                                                                                                  [      -6.27234938, -0.00075938, 0.00046542, 7.27158999, 0.99767960, 0.99877519, 0.49311176],
    4112                                                                                                  [      -6.27234983, -0.00075920, 0.00046531, 7.27159063, 0.99768017, 0.99877550, 0.49311184],
    4113                                                                                                  [      -6.27235028, -0.00075901, 0.00046519, 7.27159127, 0.99768074, 0.99877580, 0.49311180],
    4114                                                                                                  [      -6.27235074, -0.00075882, 0.00046508, 7.27159191, 0.99768131, 0.99877610, 0.49311187],
    4115                                                                                                  [      -6.27235119, -0.00075864, 0.00046496, 7.27159255, 0.99768188, 0.99877640, 0.49311206],
    4116                                                                                                  [      -6.27235164, -0.00075845, 0.00046485, 7.27159319, 0.99768245, 0.99877670, 0.49311212],
    4117                                                                                                  [      -6.27235209, -0.00075827, 0.00046474, 7.27159383, 0.99768302, 0.99877700, 0.49311212],
    4118                                                                                                  [      -6.27235255, -0.00075808, 0.00046462, 7.27159446, 0.99768358, 0.99877730, 0.49311214],
    4119                                                                                                  [      -6.27235300, -0.00075790, 0.00046451, 7.27159510, 0.99768415, 0.99877759, 0.49311223],
    4120                                                                                                  [      -6.27235345, -0.00075771, 0.00046440, 7.27159574, 0.99768472, 0.99877789, 0.49311231],
    4121                                                                                                  [      -6.27235390, -0.00075753, 0.00046428, 7.27159637, 0.99768529, 0.99877819, 0.49311242],
    4122                                                                                                  [      -6.27235435, -0.00075734, 0.00046417, 7.27159701, 0.99768585, 0.99877849, 0.49311242],
    4123                                                                                                  [      -6.27235480, -0.00075715, 0.00046405, 7.27159765, 0.99768642, 0.99877879, 0.49311257],
    4124                                                                                                  [      -6.27235525, -0.00075697, 0.00046394, 7.27159828, 0.99768699, 0.99877909, 0.49311263],
    4125                                                                                                  [      -6.27235570, -0.00075678, 0.00046383, 7.27159892, 0.99768755, 0.99877939, 0.49311265],
    4126                                                                                                  [      -6.27235615, -0.00075660, 0.00046371, 7.27159955, 0.99768812, 0.99877969, 0.49311271],
    4127                                                                                                  [      -6.27235660, -0.00075641, 0.00046360, 7.27160019, 0.99768868, 0.99877999, 0.49311273],
    4128                                                                                                  [      -6.27235705, -0.00075623, 0.00046349, 7.27160082, 0.99768925, 0.99878028, 0.49311292],
    4129                                                                                                  [      -6.27235750, -0.00075605, 0.00046337, 7.27160145, 0.99768981, 0.99878058, 0.49311290],
    4130                                                                                                  [      -6.27235795, -0.00075586, 0.00046326, 7.27160209, 0.99769038, 0.99878088, 0.49311294],
    4131                                                                                                  [      -6.27235840, -0.00075568, 0.00046315, 7.27160272, 0.99769094, 0.99878118, 0.49311305],
    4132                                                                                                  [      -6.27235884, -0.00075549, 0.00046303, 7.27160335, 0.99769150, 0.99878147, 0.49311309],
    4133                                                                                                  [      -6.27235929, -0.00075531, 0.00046292, 7.27160398, 0.99769207, 0.99878177, 0.49311327],
    4134                                                                                                  [      -6.27235974, -0.00075512, 0.00046281, 7.27160462, 0.99769263, 0.99878207, 0.49311324],
    4135                                                                                                  [      -6.27236019, -0.00075494, 0.00046269, 7.27160525, 0.99769319, 0.99878237, 0.49311327],
    4136                                                                                                  [      -6.27236063, -0.00075475, 0.00046258, 7.27160588, 0.99769376, 0.99878266, 0.49311333],
    4137                                                                                                  [      -6.27236108, -0.00075457, 0.00046247, 7.27160651, 0.99769432, 0.99878296, 0.49311348],
    4138                                                                                                  [      -6.27236153, -0.00075439, 0.00046236, 7.27160714, 0.99769488, 0.99878326, 0.49311361],
    4139                                                                                                  [      -6.27236197, -0.00075420, 0.00046224, 7.27160777, 0.99769544, 0.99878355, 0.49311357],
    4140                                                                                                  [      -6.27236242, -0.00075402, 0.00046213, 7.27160840, 0.99769601, 0.99878385, 0.49311362],
    4141                                                                                                  [      -6.27236287, -0.00075384, 0.00046202, 7.27160903, 0.99769657, 0.99878415, 0.49311367],
    4142                                                                                                  [      -6.27236331, -0.00075365, 0.00046191, 7.27160966, 0.99769713, 0.99878444, 0.49311366],
    4143                                                                                                  [      -6.27236376, -0.00075347, 0.00046179, 7.27161029, 0.99769769, 0.99878474, 0.49311384],
    4144                                                                                                  [      -6.27236420, -0.00075329, 0.00046168, 7.27161092, 0.99769825, 0.99878503, 0.49311393],
    4145                                                                                                  [      -6.27236465, -0.00075310, 0.00046157, 7.27161155, 0.99769881, 0.99878533, 0.49311405],
    4146                                                                                                  [      -6.27236509, -0.00075292, 0.00046146, 7.27161217, 0.99769937, 0.99878563, 0.49311410],
    4147                                                                                                  [      -6.27236554, -0.00075274, 0.00046134, 7.27161280, 0.99769993, 0.99878592, 0.49311401],
    4148                                                                                                  [      -6.27236598, -0.00075255, 0.00046123, 7.27161343, 0.99770049, 0.99878622, 0.49311424],
    4149                                                                                                  [      -6.27236643, -0.00075237, 0.00046112, 7.27161406, 0.99770105, 0.99878651, 0.49311425],
    4150                                                                                                  [      -6.27236687, -0.00075219, 0.00046101, 7.27161468, 0.99770161, 0.99878681, 0.49311423],
    4151                                                                                                  [      -6.27236731, -0.00075200, 0.00046089, 7.27161531, 0.99770217, 0.99878710, 0.49311442],
    4152                                                                                                  [      -6.27236776, -0.00075182, 0.00046078, 7.27161594, 0.99770272, 0.99878740, 0.49311431],
    4153                                                                                                  [      -6.27236820, -0.00075164, 0.00046067, 7.27161656, 0.99770328, 0.99878769, 0.49311449],
    4154                                                                                                  [      -6.27236864, -0.00075146, 0.00046056, 7.27161719, 0.99770384, 0.99878798, 0.49311451],
    4155                                                                                                  [      -6.27236909, -0.00075127, 0.00046045, 7.27161781, 0.99770440, 0.99878828, 0.49311462],
    4156                                                                                                  [      -6.27236953, -0.00075109, 0.00046034, 7.27161844, 0.99770496, 0.99878857, 0.49311465],
    4157                                                                                                  [      -6.27236997, -0.00075091, 0.00046022, 7.27161906, 0.99770551, 0.99878887, 0.49311479],
    4158                                                                                                  [      -6.27237041, -0.00075073, 0.00046011, 7.27161968, 0.99770607, 0.99878916, 0.49311488],
    4159                                                                                                  [      -6.27237085, -0.00075055, 0.00046000, 7.27162031, 0.99770663, 0.99878945, 0.49311489],
    4160                                                                                                  [      -6.27237130, -0.00075036, 0.00045989, 7.27162093, 0.99770718, 0.99878975, 0.49311496],
    4161                                                                                                  [      -6.27237174, -0.00075018, 0.00045978, 7.27162155, 0.99770774, 0.99879004, 0.49311494],
    4162                                                                                                  [      -6.27237218, -0.00075000, 0.00045967, 7.27162218, 0.99770829, 0.99879033, 0.49311510],
    4163                                                                                                  [      -6.27237262, -0.00074982, 0.00045955, 7.27162280, 0.99770885, 0.99879063, 0.49311504],
    4164                                                                                                  [      -6.27237306, -0.00074964, 0.00045944, 7.27162342, 0.99770941, 0.99879092, 0.49311523],
    4165                                                                                                  [      -6.27237350, -0.00074946, 0.00045933, 7.27162404, 0.99770996, 0.99879121, 0.49311526],
    4166                                                                                                  [      -6.27237394, -0.00074927, 0.00045922, 7.27162466, 0.99771051, 0.99879151, 0.49311531],
    4167                                                                                                  [      -6.27237438, -0.00074909, 0.00045911, 7.27162529, 0.99771107, 0.99879180, 0.49311549],
    4168                                                                                                  [      -6.27237482, -0.00074891, 0.00045900, 7.27162591, 0.99771162, 0.99879209, 0.49311546],
    4169                                                                                                  [      -6.27237526, -0.00074873, 0.00045889, 7.27162653, 0.99771218, 0.99879238, 0.49311554],
    4170                                                                                                  [      -6.27237570, -0.00074855, 0.00045878, 7.27162715, 0.99771273, 0.99879268, 0.49311557],
    4171                                                                                                  [      -6.27237614, -0.00074837, 0.00045866, 7.27162777, 0.99771328, 0.99879297, 0.49311573],
    4172                                                                                                  [      -6.27237657, -0.00074819, 0.00045855, 7.27162839, 0.99771384, 0.99879326, 0.49311571],
    4173                                                                                                  [      -6.27237701, -0.00074801, 0.00045844, 7.27162901, 0.99771439, 0.99879355, 0.49311580],
    4174                                                                                                  [      -6.27237745, -0.00074783, 0.00045833, 7.27162962, 0.99771494, 0.99879384, 0.49311585],
    4175                                                                                                  [      -6.27237789, -0.00074765, 0.00045822, 7.27163024, 0.99771549, 0.99879413, 0.49311592],
    4176                                                                                                  [      -6.27237833, -0.00074747, 0.00045811, 7.27163086, 0.99771605, 0.99879442, 0.49311607],
    4177                                                                                                  [      -6.27237876, -0.00074728, 0.00045800, 7.27163148, 0.99771660, 0.99879472, 0.49311608],
    4178                                                                                                  [      -6.27237920, -0.00074710, 0.00045789, 7.27163210, 0.99771715, 0.99879501, 0.49311612],
    4179                                                                                                  [      -6.27237964, -0.00074692, 0.00045778, 7.27163271, 0.99771770, 0.99879530, 0.49311622],
    4180                                                                                                  [      -6.27238007, -0.00074674, 0.00045767, 7.27163333, 0.99771825, 0.99879559, 0.49311623],
    4181                                                                                                  [      -6.27238051, -0.00074656, 0.00045756, 7.27163395, 0.99771880, 0.99879588, 0.49311629],
    4182                                                                                                  [      -6.27238095, -0.00074638, 0.00045745, 7.27163456, 0.99771935, 0.99879617, 0.49311629],
    4183                                                                                                  [      -6.27238138, -0.00074620, 0.00045734, 7.27163518, 0.99771990, 0.99879646, 0.49311644],
    4184                                                                                                  [      -6.27238182, -0.00074602, 0.00045723, 7.27163580, 0.99772045, 0.99879675, 0.49311641],
    4185                                                                                                  [      -6.27238225, -0.00074584, 0.00045712, 7.27163641, 0.99772100, 0.99879704, 0.49311653],
    4186                                                                                                  [      -6.27238269, -0.00074566, 0.00045701, 7.27163703, 0.99772155, 0.99879733, 0.49311671],
    4187                                                                                                  [      -6.27238312, -0.00074548, 0.00045690, 7.27163764, 0.99772210, 0.99879762, 0.49311673],
    4188                                                                                                  [      -6.27238356, -0.00074531, 0.00045679, 7.27163825, 0.99772265, 0.99879791, 0.49311683],
    4189                                                                                                  [      -6.27238399, -0.00074513, 0.00045668, 7.27163887, 0.99772320, 0.99879820, 0.49311676],
    4190                                                                                                  [      -6.27238443, -0.00074495, 0.00045657, 7.27163948, 0.99772375, 0.99879849, 0.49311684],
    4191                                                                                                  [      -6.27238486, -0.00074477, 0.00045646, 7.27164010, 0.99772429, 0.99879878, 0.49311690],
    4192                                                                                                  [      -6.27238530, -0.00074459, 0.00045635, 7.27164071, 0.99772484, 0.99879907, 0.49311703],
    4193                                                                                                  [      -6.27238573, -0.00074441, 0.00045624, 7.27164132, 0.99772539, 0.99879936, 0.49311710],
    4194                                                                                                  [      -6.27238616, -0.00074423, 0.00045613, 7.27164193, 0.99772594, 0.99879964, 0.49311708],
    4195                                                                                                  [      -6.27238660, -0.00074405, 0.00045602, 7.27164255, 0.99772648, 0.99879993, 0.49311725],
    4196                                                                                                  [      -6.27238703, -0.00074387, 0.00045591, 7.27164316, 0.99772703, 0.99880022, 0.49311732],
    4197                                                                                                  [      -6.27238746, -0.00074369, 0.00045580, 7.27164377, 0.99772758, 0.99880051, 0.49311738],
    4198                                                                                                  [      -6.27238790, -0.00074352, 0.00045569, 7.27164438, 0.99772812, 0.99880080, 0.49311739],
    4199                                                                                                  [      -6.27238833, -0.00074334, 0.00045558, 7.27164499, 0.99772867, 0.99880109, 0.49311746],
    4200                                                                                                  [      -6.27238876, -0.00074316, 0.00045547, 7.27164560, 0.99772921, 0.99880137, 0.49311752],
    4201                                                                                                  [      -6.27238919, -0.00074298, 0.00045536, 7.27164621, 0.99772976, 0.99880166, 0.49311758],
    4202                                                                                                  [      -6.27238962, -0.00074280, 0.00045525, 7.27164682, 0.99773030, 0.99880195, 0.49311766],
    4203                                                                                                  [      -6.27239006, -0.00074262, 0.00045514, 7.27164743, 0.99773085, 0.99880224, 0.49311772],
    4204                                                                                                  [      -6.27239049, -0.00074245, 0.00045503, 7.27164804, 0.99773139, 0.99880252, 0.49311777],
    4205                                                                                                  [      -6.27239092, -0.00074227, 0.00045492, 7.27164865, 0.99773194, 0.99880281, 0.49311785],
    4206                                                                                                  [      -6.27239135, -0.00074209, 0.00045481, 7.27164926, 0.99773248, 0.99880310, 0.49311791],
    4207                                                                                                  [      -6.27239178, -0.00074191, 0.00045470, 7.27164987, 0.99773303, 0.99880339, 0.49311797],
    4208                                                                                                  [      -6.27239221, -0.00074173, 0.00045459, 7.27165048, 0.99773357, 0.99880367, 0.49311806],
    4209                                                                                                  [      -6.27239264, -0.00074156, 0.00045449, 7.27165108, 0.99773411, 0.99880396, 0.49311809],
    4210                                                                                                  [      -6.27239307, -0.00074138, 0.00045438, 7.27165169, 0.99773466, 0.99880425, 0.49311816],
    4211                                                                                                  [      -6.27239350, -0.00074120, 0.00045427, 7.27165230, 0.99773520, 0.99880453, 0.49311824],
    4212                                                                                                  [      -6.27239393, -0.00074102, 0.00045416, 7.27165291, 0.99773574, 0.99880482, 0.49311829],
    4213                                                                                                  [      -6.27239436, -0.00074085, 0.00045405, 7.27165351, 0.99773628, 0.99880510, 0.49311835],
    4214                                                                                                  [      -6.27239479, -0.00074067, 0.00045394, 7.27165412, 0.99773683, 0.99880539, 0.49311839],
    4215                                                                                                  [      -6.27239522, -0.00074049, 0.00045383, 7.27165472, 0.99773737, 0.99880568, 0.49311849],
    4216                                                                                                  [      -6.27239564, -0.00074031, 0.00045372, 7.27165533, 0.99773791, 0.99880596, 0.49311853],
    4217                                                                                                  [      -6.27239607, -0.00074014, 0.00045362, 7.27165593, 0.99773845, 0.99880625, 0.49311862],
    4218                                                                                                  [      -6.27239650, -0.00073996, 0.00045351, 7.27165654, 0.99773899, 0.99880653, 0.49311867],
    4219                                                                                                  [      -6.27239693, -0.00073978, 0.00045340, 7.27165714, 0.99773953, 0.99880682, 0.49311873],
    4220                                                                                                  [      -6.27239736, -0.00073961, 0.00045329, 7.27165775, 0.99774007, 0.99880710, 0.49311878],
    4221                                                                                                  [      -6.27239778, -0.00073943, 0.00045318, 7.27165835, 0.99774061, 0.99880739, 0.49311885],
    4222                                                                                                  [      -6.27239821, -0.00073925, 0.00045307, 7.27165896, 0.99774115, 0.99880767, 0.49311891],
    4223                                                                                                  [      -6.27239864, -0.00073908, 0.00045296, 7.27165956, 0.99774169, 0.99880796, 0.49311897],
    4224                                                                                                  [      -6.27239906, -0.00073890, 0.00045286, 7.27166016, 0.99774223, 0.99880824, 0.49311905],
    4225                                                                                                  [      -6.27239949, -0.00073872, 0.00045275, 7.27166077, 0.99774277, 0.99880853, 0.49311912],
    4226                                                                                                  [      -6.27239992, -0.00073855, 0.00045264, 7.27166137, 0.99774331, 0.99880881, 0.49311918],
    4227                                                                                                  [      -6.27240034, -0.00073837, 0.00045253, 7.27166197, 0.99774385, 0.99880910, 0.49311924],
    4228                                                                                                  [      -6.27240077, -0.00073820, 0.00045242, 7.27166257, 0.99774439, 0.99880938, 0.49311929],
    4229                                                                                                  [      -6.27240119, -0.00073802, 0.00045232, 7.27166317, 0.99774492, 0.99880966, 0.49311935],
    4230                                                                                                  [      -6.27240162, -0.00073784, 0.00045221, 7.27166378, 0.99774546, 0.99880995, 0.49311941],
    4231                                                                                                  [      -6.27240205, -0.00073767, 0.00045210, 7.27166438, 0.99774600, 0.99881023, 0.49311949],
    4232                                                                                                  [      -6.27240247, -0.00073749, 0.00045199, 7.27166498, 0.99774654, 0.99881051, 0.49311956],
    4233                                                                                                  [      -6.27240289, -0.00073732, 0.00045188, 7.27166558, 0.99774707, 0.99881080, 0.49311961],
    4234                                                                                                  [      -6.27240332, -0.00073714, 0.00045178, 7.27166618, 0.99774761, 0.99881108, 0.49311968],
    4235                                                                                                  [      -6.27240374, -0.00073697, 0.00045167, 7.27166678, 0.99774815, 0.99881136, 0.49311975],
    4236                                                                                                  [      -6.27240417, -0.00073679, 0.00045156, 7.27166738, 0.99774868, 0.99881165, 0.49311980],
    4237                                                                                                  [      -6.27240459, -0.00073662, 0.00045145, 7.27166798, 0.99774922, 0.99881193, 0.49311987],
    4238                                                                                                  [      -6.27240502, -0.00073644, 0.00045135, 7.27166858, 0.99774976, 0.99881221, 0.49311992],
    4239                                                                                                  [      -6.27240544, -0.00073626, 0.00045124, 7.27166917, 0.99775029, 0.99881250, 0.49312000],
    4240                                                                                                  [      -6.27240586, -0.00073609, 0.00045113, 7.27166977, 0.99775083, 0.99881278, 0.49312006],
    4241                                                                                                  [      -6.27240628, -0.00073591, 0.00045102, 7.27167037, 0.99775136, 0.99881306, 0.49312011],
    4242                                                                                                  [      -6.27240671, -0.00073574, 0.00045092, 7.27167097, 0.99775190, 0.99881334, 0.49312017],
    4243                                                                                                  [      -6.27240713, -0.00073556, 0.00045081, 7.27167157, 0.99775243, 0.99881362, 0.49312022],
    4244                                                                                                  [      -6.27240755, -0.00073539, 0.00045070, 7.27167216, 0.99775297, 0.99881391, 0.49312031],
    4245                                                                                                  [      -6.27240797, -0.00073522, 0.00045060, 7.27167276, 0.99775350, 0.99881419, 0.49312033],
    4246                                                                                                  [      -6.27240840, -0.00073504, 0.00045049, 7.27167336, 0.99775403, 0.99881447, 0.49312043],
    4247                                                                                                  [      -6.27240882, -0.00073487, 0.00045038, 7.27167395, 0.99775457, 0.99881475, 0.49312049],
    4248                                                                                                  [      -6.27240924, -0.00073469, 0.00045027, 7.27167455, 0.99775510, 0.99881503, 0.49312054],
    4249                                                                                                  [      -6.27240966, -0.00073452, 0.00045017, 7.27167514, 0.99775563, 0.99881531, 0.49312061],
    4250                                                                                                  [      -6.27241008, -0.00073434, 0.00045006, 7.27167574, 0.99775617, 0.99881560, 0.49312068],
    4251                                                                                                  [      -6.27241050, -0.00073417, 0.00044995, 7.27167633, 0.99775670, 0.99881588, 0.49312074],
    4252                                                                                                  [      -6.27241092, -0.00073400, 0.00044985, 7.27167693, 0.99775723, 0.99881616, 0.49312080],
    4253                                                                                                  [      -6.27241134, -0.00073382, 0.00044974, 7.27167752, 0.99775776, 0.99881644, 0.49312087],
    4254                                                                                                  [      -6.27241176, -0.00073365, 0.00044963, 7.27167812, 0.99775829, 0.99881672, 0.49312093],
    4255                                                                                                  [      -6.27241218, -0.00073347, 0.00044953, 7.27167871, 0.99775883, 0.99881700, 0.49312099],
    4256                                                                                                  [      -6.27241260, -0.00073330, 0.00044942, 7.27167930, 0.99775936, 0.99881728, 0.49312106],
    4257                                                                                                  [      -6.27241302, -0.00073313, 0.00044931, 7.27167990, 0.99775989, 0.99881756, 0.49312110],
    4258                                                                                                  [      -6.27241344, -0.00073295, 0.00044921, 7.27168049, 0.99776042, 0.99881784, 0.49312117],
    4259                                                                                                  [      -6.27241386, -0.00073278, 0.00044910, 7.27168108, 0.99776095, 0.99881812, 0.49312124],
    4260                                                                                                  [      -6.27241428, -0.00073261, 0.00044899, 7.27168167, 0.99776148, 0.99881840, 0.49312129],
    4261                                                                                                  [      -6.27241470, -0.00073243, 0.00044889, 7.27168227, 0.99776201, 0.99881868, 0.49312137],
    4262                                                                                                  [      -6.27241512, -0.00073226, 0.00044878, 7.27168286, 0.99776254, 0.99881896, 0.49312141],
    4263                                                                                                  [      -6.27241554, -0.00073209, 0.00044868, 7.27168345, 0.99776307, 0.99881924, 0.49312147],
    4264                                                                                                  [      -6.27241595, -0.00073191, 0.00044857, 7.27168404, 0.99776360, 0.99881952, 0.49312156],
    4265                                                                                                  [      -6.27241637, -0.00073174, 0.00044846, 7.27168463, 0.99776413, 0.99881980, 0.49312161],
    4266                                                                                                  [      -6.27241679, -0.00073157, 0.00044836, 7.27168522, 0.99776466, 0.99882008, 0.49312166],
    4267                                                                                                  [      -6.27241721, -0.00073139, 0.00044825, 7.27168581, 0.99776518, 0.99882035, 0.49312172],
    4268                                                                                                  [      -6.27241762, -0.00073122, 0.00044815, 7.27168640, 0.99776571, 0.99882063, 0.49312178],
    4269                                                                                                  [      -6.27241804, -0.00073105, 0.00044804, 7.27168699, 0.99776624, 0.99882091, 0.49312185],
    4270                                                                                                  [      -6.27241846, -0.00073088, 0.00044793, 7.27168758, 0.99776677, 0.99882119, 0.49312193],
    4271                                                                                                  [      -6.27241887, -0.00073070, 0.00044783, 7.27168817, 0.99776730, 0.99882147, 0.49312197],
    4272                                                                                                  [      -6.27241929, -0.00073053, 0.00044772, 7.27168876, 0.99776782, 0.99882175, 0.49312203],
    4273                                                                                                  [      -6.27241971, -0.00073036, 0.00044762, 7.27168935, 0.99776835, 0.99882202, 0.49312211],
    4274                                                                                                  [      -6.27242012, -0.00073019, 0.00044751, 7.27168994, 0.99776888, 0.99882230, 0.49312215],
    4275                                                                                                  [      -6.27242054, -0.00073001, 0.00044741, 7.27169052, 0.99776940, 0.99882258, 0.49312222],
    4276                                                                                                  [      -6.27242095, -0.00072984, 0.00044730, 7.27169111, 0.99776993, 0.99882286, 0.49312230],
    4277                                                                                                  [      -6.27242137, -0.00072967, 0.00044719, 7.27169170, 0.99777045, 0.99882314, 0.49312233],
    4278                                                                                                  [      -6.27242178, -0.00072950, 0.00044709, 7.27169229, 0.99777098, 0.99882341, 0.49312241],
    4279                                                                                                  [      -6.27242220, -0.00072933, 0.00044698, 7.27169287, 0.99777151, 0.99882369, 0.49312246],
    4280                                                                                                  [      -6.27242261, -0.00072915, 0.00044688, 7.27169346, 0.99777203, 0.99882397, 0.49312253],
    4281                                                                                                  [      -6.27242303, -0.00072898, 0.00044677, 7.27169405, 0.99777256, 0.99882424, 0.49312260],
    4282                                                                                                  [      -6.27242344, -0.00072881, 0.00044667, 7.27169463, 0.99777308, 0.99882452, 0.49312265],
    4283                                                                                                  [      -6.27242386, -0.00072864, 0.00044656, 7.27169522, 0.99777361, 0.99882480, 0.49312272],
    4284                                                                                                  [      -6.27242427, -0.00072847, 0.00044646, 7.27169580, 0.99777413, 0.99882508, 0.49312276],
    4285                                                                                                  [      -6.27242468, -0.00072830, 0.00044635, 7.27169639, 0.99777465, 0.99882535, 0.49312285],
    4286                                                                                                  [      -6.27242510, -0.00072813, 0.00044625, 7.27169697, 0.99777518, 0.99882563, 0.49312291],
    4287                                                                                                  [      -6.27242551, -0.00072795, 0.00044614, 7.27169756, 0.99777570, 0.99882590, 0.49312295],
    4288                                                                                                  [      -6.27242592, -0.00072778, 0.00044604, 7.27169814, 0.99777622, 0.99882618, 0.49312303],
    4289                                                                                                  [      -6.27242634, -0.00072761, 0.00044593, 7.27169872, 0.99777675, 0.99882646, 0.49312307],
    4290                                                                                                  [      -6.27242675, -0.00072744, 0.00044583, 7.27169931, 0.99777727, 0.99882673, 0.49312312],
    4291                                                                                                  [      -6.27242716, -0.00072727, 0.00044572, 7.27169989, 0.99777779, 0.99882701, 0.49312319],
    4292                                                                                                  [      -6.27242757, -0.00072710, 0.00044562, 7.27170047, 0.99777831, 0.99882728, 0.49312326],
    4293                                                                                                  [      -6.27242798, -0.00072693, 0.00044551, 7.27170106, 0.99777884, 0.99882756, 0.49312335],
    4294                                                                                                  [      -6.27242840, -0.00072676, 0.00044541, 7.27170164, 0.99777936, 0.99882783, 0.49312338],
    4295                                                                                                  [      -6.27242881, -0.00072659, 0.00044530, 7.27170222, 0.99777988, 0.99882811, 0.49312345],
    4296                                                                                                  [      -6.27242922, -0.00072642, 0.00044520, 7.27170280, 0.99778040, 0.99882838, 0.49312349],
    4297                                                                                                  [      -6.27242963, -0.00072625, 0.00044509, 7.27170338, 0.99778092, 0.99882866, 0.49312358],
    4298                                                                                                  [      -6.27243004, -0.00072608, 0.00044499, 7.27170397, 0.99778144, 0.99882893, 0.49312364],
    4299                                                                                                  [      -6.27243045, -0.00072591, 0.00044488, 7.27170455, 0.99778196, 0.99882921, 0.49312368],
    4300                                                                                                  [      -6.27243086, -0.00072574, 0.00044478, 7.27170513, 0.99778248, 0.99882948, 0.49312376],
    4301                                                                                                  [      -6.27243127, -0.00072557, 0.00044468, 7.27170571, 0.99778300, 0.99882976, 0.49312381],
    4302                                                                                                  [      -6.27243168, -0.00072540, 0.00044457, 7.27170629, 0.99778352, 0.99883003, 0.49312388],
    4303                                                                                                  [      -6.27243209, -0.00072523, 0.00044447, 7.27170687, 0.99778404, 0.99883031, 0.49312394],
    4304                                                                                                  [      -6.27243250, -0.00072506, 0.00044436, 7.27170745, 0.99778456, 0.99883058, 0.49312397],
    4305                                                                                                  [      -6.27243291, -0.00072489, 0.00044426, 7.27170803, 0.99778508, 0.99883086, 0.49312405],
    4306                                                                                                  [      -6.27243332, -0.00072472, 0.00044416, 7.27170860, 0.99778560, 0.99883113, 0.49312410],
    4307                                                                                                  [      -6.27243373, -0.00072455, 0.00044405, 7.27170918, 0.99778612, 0.99883140, 0.49312419],
    4308                                                                                                  [      -6.27243414, -0.00072438, 0.00044395, 7.27170976, 0.99778664, 0.99883168, 0.49312424],
    4309                                                                                                  [      -6.27243455, -0.00072421, 0.00044384, 7.27171034, 0.99778716, 0.99883195, 0.49312429],
    4310                                                                                                  [      -6.27243496, -0.00072404, 0.00044374, 7.27171092, 0.99778767, 0.99883222, 0.49312436],
    4311                                                                                                  [      -6.27243536, -0.00072387, 0.00044364, 7.27171150, 0.99778819, 0.99883250, 0.49312441],
    4312                                                                                                  [      -6.27243577, -0.00072370, 0.00044353, 7.27171207, 0.99778871, 0.99883277, 0.49312447],
    4313                                                                                                  [      -6.27243618, -0.00072353, 0.00044343, 7.27171265, 0.99778923, 0.99883304, 0.49312454],
    4314                                                                                                  [      -6.27243659, -0.00072336, 0.00044332, 7.27171323, 0.99778974, 0.99883331, 0.49312460],
    4315                                                                                                  [      -6.27243700, -0.00072319, 0.00044322, 7.27171380, 0.99779026, 0.99883359, 0.49312464],
    4316                                                                                                  [      -6.27243740, -0.00072302, 0.00044312, 7.27171438, 0.99779078, 0.99883386, 0.49312471],
    4317                                                                                                  [      -6.27243781, -0.00072285, 0.00044301, 7.27171495, 0.99779129, 0.99883413, 0.49312476],
    4318                                                                                                  [      -6.27243822, -0.00072269, 0.00044291, 7.27171553, 0.99779181, 0.99883440, 0.49312483],
    4319                                                                                                  [      -6.27243862, -0.00072252, 0.00044281, 7.27171611, 0.99779232, 0.99883468, 0.49312489],
    4320                                                                                                  [      -6.27243903, -0.00072235, 0.00044270, 7.27171668, 0.99779284, 0.99883495, 0.49312495],
    4321                                                                                                  [      -6.27243944, -0.00072218, 0.00044260, 7.27171726, 0.99779336, 0.99883522, 0.49312500],
    4322                                                                                                  [      -6.27243984, -0.00072201, 0.00044250, 7.27171783, 0.99779387, 0.99883549, 0.49312508],
    4323                                                                                                  [      -6.27244025, -0.00072184, 0.00044239, 7.27171840, 0.99779438, 0.99883576, 0.49312514],
    4324                                                                                                  [      -6.27244065, -0.00072167, 0.00044229, 7.27171898, 0.99779490, 0.99883604, 0.49312518],
    4325                                                                                                  [      -6.27244106, -0.00072151, 0.00044219, 7.27171955, 0.99779541, 0.99883631, 0.49312525],
    4326                                                                                                  [      -6.27244146, -0.00072134, 0.00044208, 7.27172012, 0.99779593, 0.99883658, 0.49312531],
    4327                                                                                                  [      -6.27244187, -0.00072117, 0.00044198, 7.27172070, 0.99779644, 0.99883685, 0.49312537],
    4328                                                                                                  [      -6.27244227, -0.00072100, 0.00044188, 7.27172127, 0.99779696, 0.99883712, 0.49312544],
    4329                                                                                                  [      -6.27244268, -0.00072083, 0.00044177, 7.27172184, 0.99779747, 0.99883739, 0.49312550],
    4330                                                                                                  [      -6.27244308, -0.00072067, 0.00044167, 7.27172242, 0.99779798, 0.99883766, 0.49312555],
    4331                                                                                                  [      -6.27244349, -0.00072050, 0.00044157, 7.27172299, 0.99779849, 0.99883793, 0.49312563],
    4332                                                                                                  [      -6.27244389, -0.00072033, 0.00044147, 7.27172356, 0.99779901, 0.99883820, 0.49312567],
    4333                                                                                                  [      -6.27244429, -0.00072016, 0.00044136, 7.27172413, 0.99779952, 0.99883847, 0.49312573],
    4334                                                                                                  [      -6.27244470, -0.00072000, 0.00044126, 7.27172470, 0.99780003, 0.99883874, 0.49312578],
    4335                                                                                                  [      -6.27244510, -0.00071983, 0.00044116, 7.27172527, 0.99780054, 0.99883901, 0.49312585],
    4336                                                                                                  [      -6.27244550, -0.00071966, 0.00044105, 7.27172584, 0.99780105, 0.99883928, 0.49312592],
    4337                                                                                                  [      -6.27244591, -0.00071949, 0.00044095, 7.27172641, 0.99780157, 0.99883955, 0.49312598],
    4338                                                                                                  [      -6.27244631, -0.00071933, 0.00044085, 7.27172698, 0.99780208, 0.99883982, 0.49312604],
    4339                                                                                                  [      -6.27244671, -0.00071916, 0.00044075, 7.27172755, 0.99780259, 0.99884009, 0.49312608],
    4340                                                                                                  [      -6.27244712, -0.00071899, 0.00044064, 7.27172812, 0.99780310, 0.99884036, 0.49312614],
    4341                                                                                                  [      -6.27244752, -0.00071883, 0.00044054, 7.27172869, 0.99780361, 0.99884063, 0.49312622],
    4342                                                                                                  [      -6.27244792, -0.00071866, 0.00044044, 7.27172926, 0.99780412, 0.99884090, 0.49312626],
    4343                                                                                                  [      -6.27244832, -0.00071849, 0.00044034, 7.27172983, 0.99780463, 0.99884117, 0.49312632],
    4344                                                                                                  [      -6.27244872, -0.00071833, 0.00044024, 7.27173040, 0.99780514, 0.99884144, 0.49312638],
    4345                                                                                                  [      -6.27244912, -0.00071816, 0.00044013, 7.27173097, 0.99780565, 0.99884171, 0.49312645],
    4346                                                                                                  [      -6.27244953, -0.00071799, 0.00044003, 7.27173153, 0.99780616, 0.99884198, 0.49312649],
    4347                                                                                                  [      -6.27244993, -0.00071783, 0.00043993, 7.27173210, 0.99780667, 0.99884225, 0.49312657],
    4348                                                                                                  [      -6.27245033, -0.00071766, 0.00043983, 7.27173267, 0.99780718, 0.99884251, 0.49312664],
    4349                                                                                                  [      -6.27245073, -0.00071749, 0.00043972, 7.27173323, 0.99780768, 0.99884278, 0.49312669],
    4350                                                                                                  [      -6.27245113, -0.00071733, 0.00043962, 7.27173380, 0.99780819, 0.99884305, 0.49312674],
    4351                                                                                                  [      -6.27245153, -0.00071716, 0.00043952, 7.27173437, 0.99780870, 0.99884332, 0.49312680],
    4352                                                                                                  [      -6.27245193, -0.00071699, 0.00043942, 7.27173493, 0.99780921, 0.99884359, 0.49312685],
    4353                                                                                                  [      -6.27245233, -0.00071683, 0.00043932, 7.27173550, 0.99780972, 0.99884385, 0.49312691],
    4354                                                                                                  [      -6.27245273, -0.00071666, 0.00043922, 7.27173607, 0.99781022, 0.99884412, 0.49312701],
    4355                                                                                                  [      -6.27245313, -0.00071650, 0.00043911, 7.27173663, 0.99781073, 0.99884439, 0.49312703],
    4356                                                                                                  [      -6.27245353, -0.00071633, 0.00043901, 7.27173720, 0.99781124, 0.99884466, 0.49312710],
    4357                                                                                                  [      -6.27245393, -0.00071617, 0.00043891, 7.27173776, 0.99781174, 0.99884492, 0.49312716],
    4358                                                                                                  [      -6.27245432, -0.00071600, 0.00043881, 7.27173833, 0.99781225, 0.99884519, 0.49312722],
    4359                                                                                                  [      -6.27245472, -0.00071583, 0.00043871, 7.27173889, 0.99781276, 0.99884546, 0.49312728],
    4360                                                                                                  [      -6.27245512, -0.00071567, 0.00043861, 7.27173945, 0.99781326, 0.99884573, 0.49312736],
    4361                                                                                                  [      -6.27245552, -0.00071550, 0.00043850, 7.27174002, 0.99781377, 0.99884599, 0.49312741],
    4362                                                                                                  [      -6.27245592, -0.00071534, 0.00043840, 7.27174058, 0.99781427, 0.99884626, 0.49312745],
    4363                                                                                                  [      -6.27245632, -0.00071517, 0.00043830, 7.27174114, 0.99781478, 0.99884653, 0.49312752],
    4364                                                                                                  [      -6.27245671, -0.00071501, 0.00043820, 7.27174171, 0.99781528, 0.99884679, 0.49312756],
    4365                                                                                                  [      -6.27245711, -0.00071484, 0.00043810, 7.27174227, 0.99781579, 0.99884706, 0.49312763],
    4366                                                                                                  [      -6.27245751, -0.00071468, 0.00043800, 7.27174283, 0.99781629, 0.99884733, 0.49312770],
    4367                                                                                                  [      -6.27245791, -0.00071451, 0.00043790, 7.27174339, 0.99781680, 0.99884759, 0.49312773],
    4368                                                                                                  [      -6.27245830, -0.00071435, 0.00043779, 7.27174396, 0.99781730, 0.99884786, 0.49312781],
    4369                                                                                                  [      -6.27245870, -0.00071418, 0.00043769, 7.27174452, 0.99781781, 0.99884812, 0.49312788],
    4370                                                                                                  [      -6.27245910, -0.00071402, 0.00043759, 7.27174508, 0.99781831, 0.99884839, 0.49312794],
    4371                                                                                                  [      -6.27245949, -0.00071385, 0.00043749, 7.27174564, 0.99781881, 0.99884866, 0.49312798],
    4372                                                                                                  [      -6.27245989, -0.00071369, 0.00043739, 7.27174620, 0.99781932, 0.99884892, 0.49312802],
    4373                                                                                                  [      -6.27246028, -0.00071352, 0.00043729, 7.27174676, 0.99781982, 0.99884919, 0.49312810],
    4374                                                                                                  [      -6.27246068, -0.00071336, 0.00043719, 7.27174732, 0.99782032, 0.99884945, 0.49312816],
    4375                                                                                                  [      -6.27246108, -0.00071320, 0.00043709, 7.27174788, 0.99782083, 0.99884972, 0.49312820],
    4376                                                                                                  [      -6.27246147, -0.00071303, 0.00043699, 7.27174844, 0.99782133, 0.99884998, 0.49312828],
    4377                                                                                                  [      -6.27246187, -0.00071287, 0.00043689, 7.27174900, 0.99782183, 0.99885025, 0.49312834],
    4378                                                                                                  [      -6.27246226, -0.00071270, 0.00043679, 7.27174956, 0.99782233, 0.99885051, 0.49312839],
    4379                                                                                                  [      -6.27246266, -0.00071254, 0.00043669, 7.27175012, 0.99782283, 0.99885078, 0.49312847],
    4380                                                                                                  [      -6.27246305, -0.00071237, 0.00043658, 7.27175068, 0.99782333, 0.99885104, 0.49312849],
    4381                                                                                                  [      -6.27246345, -0.00071221, 0.00043648, 7.27175123, 0.99782384, 0.99885131, 0.49312857],
    4382                                                                                                  [      -6.27246384, -0.00071205, 0.00043638, 7.27175179, 0.99782434, 0.99885157, 0.49312862],
    4383                                                                                                  [      -6.27246423, -0.00071188, 0.00043628, 7.27175235, 0.99782484, 0.99885183, 0.49312870],
    4384                                                                                                  [      -6.27246463, -0.00071172, 0.00043618, 7.27175291, 0.99782534, 0.99885210, 0.49312875],
    4385                                                                                                  [      -6.27246502, -0.00071156, 0.00043608, 7.27175347, 0.99782584, 0.99885236, 0.49312878],
    4386                                                                                                  [      -6.27246541, -0.00071139, 0.00043598, 7.27175402, 0.99782634, 0.99885263, 0.49312886],
    4387                                                                                                  [      -6.27246581, -0.00071123, 0.00043588, 7.27175458, 0.99782684, 0.99885289, 0.49312892],
    4388                                                                                                  [      -6.27246620, -0.00071107, 0.00043578, 7.27175514, 0.99782734, 0.99885315, 0.49312899],
    4389                                                                                                  [      -6.27246659, -0.00071090, 0.00043568, 7.27175569, 0.99782784, 0.99885342, 0.49312906],
    4390                                                                                                  [      -6.27246699, -0.00071074, 0.00043558, 7.27175625, 0.99782833, 0.99885368, 0.49312908],
    4391                                                                                                  [      -6.27246738, -0.00071058, 0.00043548, 7.27175680, 0.99782883, 0.99885394, 0.49312914],
    4392                                                                                                  [      -6.27246777, -0.00071041, 0.00043538, 7.27175736, 0.99782933, 0.99885421, 0.49312922],
    4393                                                                                                  [      -6.27246816, -0.00071025, 0.00043528, 7.27175791, 0.99782983, 0.99885447, 0.49312926],
    4394                                                                                                  [      -6.27246856, -0.00071009, 0.00043518, 7.27175847, 0.99783033, 0.99885473, 0.49312934],
    4395                                                                                                  [      -6.27246895, -0.00070992, 0.00043508, 7.27175902, 0.99783083, 0.99885499, 0.49312938],
    4396                                                                                                  [      -6.27246934, -0.00070976, 0.00043498, 7.27175958, 0.99783132, 0.99885526, 0.49312944],
    4397                                                                                                  [      -6.27246973, -0.00070960, 0.00043488, 7.27176013, 0.99783182, 0.99885552, 0.49312948],
    4398                                                                                                  [      -6.27247012, -0.00070944, 0.00043478, 7.27176069, 0.99783232, 0.99885578, 0.49312957],
    4399                                                                                                  [      -6.27247051, -0.00070927, 0.00043468, 7.27176124, 0.99783282, 0.99885604, 0.49312962],
    4400                                                                                                  [      -6.27247090, -0.00070911, 0.00043458, 7.27176179, 0.99783331, 0.99885631, 0.49312968],
    4401                                                                                                  [      -6.27247129, -0.00070895, 0.00043448, 7.27176235, 0.99783381, 0.99885657, 0.49312972],
    4402                                                                                                  [      -6.27247168, -0.00070879, 0.00043438, 7.27176290, 0.99783431, 0.99885683, 0.49312980],
    4403                                                                                                  [      -6.27247207, -0.00070862, 0.00043428, 7.27176345, 0.99783480, 0.99885709, 0.49312985],
    4404                                                                                                  [      -6.27247246, -0.00070846, 0.00043418, 7.27176400, 0.99783530, 0.99885735, 0.49312992],
    4405                                                                                                  [      -6.27247285, -0.00070830, 0.00043409, 7.27176456, 0.99783579, 0.99885762, 0.49312999],
    4406                                                                                                  [      -6.27247324, -0.00070814, 0.00043399, 7.27176511, 0.99783629, 0.99885788, 0.49313003],
    4407                                                                                                  [      -6.27247363, -0.00070798, 0.00043389, 7.27176566, 0.99783678, 0.99885814, 0.49313009],
    4408                                                                                                  [      -6.27247402, -0.00070781, 0.00043379, 7.27176621, 0.99783728, 0.99885840, 0.49313014],
    4409                                                                                                  [      -6.27247441, -0.00070765, 0.00043369, 7.27176676, 0.99783777, 0.99885866, 0.49313021],
    4410                                                                                                  [      -6.27247480, -0.00070749, 0.00043359, 7.27176731, 0.99783827, 0.99885892, 0.49313025],
    4411                                                                                                  [      -6.27247519, -0.00070733, 0.00043349, 7.27176786, 0.99783876, 0.99885918, 0.49313031],
    4412                                                                                                  [      -6.27247558, -0.00070717, 0.00043339, 7.27176841, 0.99783926, 0.99885944, 0.49313036],
    4413                                                                                                  [      -6.27247597, -0.00070701, 0.00043329, 7.27176896, 0.99783975, 0.99885970, 0.49313043],
    4414                                                                                                  [      -6.27247636, -0.00070684, 0.00043319, 7.27176951, 0.99784024, 0.99885996, 0.49313047],
    4415                                                                                                  [      -6.27247674, -0.00070668, 0.00043309, 7.27177006, 0.99784074, 0.99886022, 0.49313056],
    4416                                                                                                  [      -6.27247713, -0.00070652, 0.00043299, 7.27177061, 0.99784123, 0.99886048, 0.49313062],
    4417                                                                                                  [      -6.27247752, -0.00070636, 0.00043290, 7.27177116, 0.99784172, 0.99886074, 0.49313067],
    4418                                                                                                  [      -6.27247791, -0.00070620, 0.00043280, 7.27177171, 0.99784222, 0.99886100, 0.49313072],
    4419                                                                                                  [      -6.27247829, -0.00070604, 0.00043270, 7.27177226, 0.99784271, 0.99886126, 0.49313077],
    4420                                                                                                  [      -6.27247868, -0.00070588, 0.00043260, 7.27177280, 0.99784320, 0.99886152, 0.49313084],
    4421                                                                                                  [      -6.27247907, -0.00070572, 0.00043250, 7.27177335, 0.99784369, 0.99886178, 0.49313089],
    4422                                                                                                  [      -6.27247945, -0.00070556, 0.00043240, 7.27177390, 0.99784418, 0.99886204, 0.49313094],
    4423                                                                                                  [      -6.27247984, -0.00070539, 0.00043230, 7.27177445, 0.99784468, 0.99886230, 0.49313101],
    4424                                                                                                  [      -6.27248023, -0.00070523, 0.00043220, 7.27177499, 0.99784517, 0.99886256, 0.49313105],
    4425                                                                                                  [      -6.27248061, -0.00070507, 0.00043211, 7.27177554, 0.99784566, 0.99886282, 0.49313111],
    4426                                                                                                  [      -6.27248100, -0.00070491, 0.00043201, 7.27177609, 0.99784615, 0.99886308, 0.49313117],
    4427                                                                                                  [      -6.27248139, -0.00070475, 0.00043191, 7.27177663, 0.99784664, 0.99886334, 0.49313123],
    4428                                                                                                  [      -6.27248177, -0.00070459, 0.00043181, 7.27177718, 0.99784713, 0.99886360, 0.49313129],
    4429                                                                                                  [      -6.27248216, -0.00070443, 0.00043171, 7.27177773, 0.99784762, 0.99886386, 0.49313133],
    4430                                                                                                  [      -6.27248254, -0.00070427, 0.00043161, 7.27177827, 0.99784811, 0.99886411, 0.49313142],
    4431                                                                                                  [      -6.27248293, -0.00070411, 0.00043152, 7.27177882, 0.99784860, 0.99886437, 0.49313147],
    4432                                                                                                  [      -6.27248331, -0.00070395, 0.00043142, 7.27177936, 0.99784909, 0.99886463, 0.49313152],
    4433                                                                                                  [      -6.27248370, -0.00070379, 0.00043132, 7.27177991, 0.99784958, 0.99886489, 0.49313157],
    4434                                                                                                  [      -6.27248408, -0.00070363, 0.00043122, 7.27178045, 0.99785007, 0.99886515, 0.49313161],
    4435                                                                                                  [      -6.27248447, -0.00070347, 0.00043112, 7.27178099, 0.99785056, 0.99886541, 0.49313168],
    4436                                                                                                  [      -6.27248485, -0.00070331, 0.00043103, 7.27178154, 0.99785104, 0.99886566, 0.49313174],
    4437                                                                                                  [      -6.27248523, -0.00070315, 0.00043093, 7.27178208, 0.99785153, 0.99886592, 0.49313183],
    4438                                                                                                  [      -6.27248562, -0.00070299, 0.00043083, 7.27178263, 0.99785202, 0.99886618, 0.49313186],
    4439                                                                                                  [      -6.27248600, -0.00070283, 0.00043073, 7.27178317, 0.99785251, 0.99886644, 0.49313191],
    4440                                                                                                  [      -6.27248638, -0.00070267, 0.00043063, 7.27178371, 0.99785300, 0.99886669, 0.49313198],
    4441                                                                                                  [      -6.27248677, -0.00070251, 0.00043054, 7.27178425, 0.99785348, 0.99886695, 0.49313204],
    4442                                                                                                  [      -6.27248715, -0.00070235, 0.00043044, 7.27178480, 0.99785397, 0.99886721, 0.49313208],
    4443                                                                                                  [      -6.27248753, -0.00070219, 0.00043034, 7.27178534, 0.99785446, 0.99886747, 0.49313214],
    4444                                                                                                  [      -6.27248792, -0.00070203, 0.00043024, 7.27178588, 0.99785495, 0.99886772, 0.49313220],
    4445                                                                                                  [      -6.27248830, -0.00070188, 0.00043014, 7.27178642, 0.99785543, 0.99886798, 0.49313224],
    4446                                                                                                  [      -6.27248868, -0.00070172, 0.00043005, 7.27178696, 0.99785592, 0.99886824, 0.49313233],
    4447                                                                                                  [      -6.27248906, -0.00070156, 0.00042995, 7.27178751, 0.99785641, 0.99886849, 0.49313235],
    4448                                                                                                  [      -6.27248945, -0.00070140, 0.00042985, 7.27178805, 0.99785689, 0.99886875, 0.49313243],
    4449                                                                                                  [      -6.27248983, -0.00070124, 0.00042975, 7.27178859, 0.99785738, 0.99886901, 0.49313250],
    4450                                                                                                  [      -6.27249021, -0.00070108, 0.00042966, 7.27178913, 0.99785786, 0.99886926, 0.49313254],
    4451                                                                                                  [      -6.27249059, -0.00070092, 0.00042956, 7.27178967, 0.99785835, 0.99886952, 0.49313259],
    4452                                                                                                  [      -6.27249097, -0.00070076, 0.00042946, 7.27179021, 0.99785883, 0.99886977, 0.49313265],
    4453                                                                                                  [      -6.27249135, -0.00070060, 0.00042937, 7.27179075, 0.99785932, 0.99887003, 0.49313270],
    4454                                                                                                  [      -6.27249173, -0.00070045, 0.00042927, 7.27179129, 0.99785980, 0.99887029, 0.49313277],
    4455                                                                                                  [      -6.27249211, -0.00070029, 0.00042917, 7.27179183, 0.99786029, 0.99887054, 0.49313282],
    4456                                                                                                  [      -6.27249250, -0.00070013, 0.00042907, 7.27179237, 0.99786077, 0.99887080, 0.49313289],
    4457                                                                                                  [      -6.27249288, -0.00069997, 0.00042898, 7.27179290, 0.99786126, 0.99887105, 0.49313291],
    4458                                                                                                  [      -6.27249326, -0.00069981, 0.00042888, 7.27179344, 0.99786174, 0.99887131, 0.49313301],
    4459                                                                                                  [      -6.27249364, -0.00069965, 0.00042878, 7.27179398, 0.99786222, 0.99887156, 0.49313305],
    4460                                                                                                  [      -6.27249402, -0.00069950, 0.00042869, 7.27179452, 0.99786271, 0.99887182, 0.49313311],
    4461                                                                                                  [      -6.27249440, -0.00069934, 0.00042859, 7.27179506, 0.99786319, 0.99887207, 0.49313316],
    4462                                                                                                  [      -6.27249477, -0.00069918, 0.00042849, 7.27179559, 0.99786367, 0.99887233, 0.49313322],
    4463                                                                                                  [      -6.27249515, -0.00069902, 0.00042840, 7.27179613, 0.99786415, 0.99887258, 0.49313329],
    4464                                                                                                  [      -6.27249553, -0.00069887, 0.00042830, 7.27179667, 0.99786464, 0.99887284, 0.49313333],
    4465                                                                                                  [      -6.27249591, -0.00069871, 0.00042820, 7.27179720, 0.99786512, 0.99887309, 0.49313340],
    4466                                                                                                  [      -6.27249629, -0.00069855, 0.00042810, 7.27179774, 0.99786560, 0.99887335, 0.49313343],
    4467                                                                                                  [      -6.27249667, -0.00069839, 0.00042801, 7.27179828, 0.99786608, 0.99887360, 0.49313349],
    4468                                                                                                  [      -6.27249705, -0.00069823, 0.00042791, 7.27179881, 0.99786656, 0.99887385, 0.49313355],
    4469                                                                                                  [      -6.27249743, -0.00069808, 0.00042781, 7.27179935, 0.99786705, 0.99887411, 0.49313361],
    4470                                                                                                  [      -6.27249780, -0.00069792, 0.00042772, 7.27179988, 0.99786753, 0.99887436, 0.49313365],
    4471                                                                                                  [      -6.27249818, -0.00069776, 0.00042762, 7.27180042, 0.99786801, 0.99887462, 0.49313373],
    4472                                                                                                  [      -6.27249856, -0.00069761, 0.00042753, 7.27180095, 0.99786849, 0.99887487, 0.49313378],
    4473                                                                                                  [      -6.27249894, -0.00069745, 0.00042743, 7.27180149, 0.99786897, 0.99887512, 0.49313382],
    4474                                                                                                  [      -6.27249931, -0.00069729, 0.00042733, 7.27180202, 0.99786945, 0.99887538, 0.49313387],
    4475                                                                                                  [      -6.27249969, -0.00069713, 0.00042724, 7.27180256, 0.99786993, 0.99887563, 0.49313395],
    4476                                                                                                  [      -6.27250007, -0.00069698, 0.00042714, 7.27180309, 0.99787041, 0.99887588, 0.49313401],
    4477                                                                                                  [      -6.27250045, -0.00069682, 0.00042704, 7.27180363, 0.99787089, 0.99887614, 0.49313405],
    4478                                                                                                  [      -6.27250082, -0.00069666, 0.00042695, 7.27180416, 0.99787137, 0.99887639, 0.49313411],
    4479                                                                                                  [      -6.27250120, -0.00069651, 0.00042685, 7.27180469, 0.99787185, 0.99887664, 0.49313417],
    4480                                                                                                  [      -6.27250158, -0.00069635, 0.00042676, 7.27180523, 0.99787233, 0.99887689, 0.49313425],
    4481                                                                                                  [      -6.27250195, -0.00069619, 0.00042666, 7.27180576, 0.99787281, 0.99887715, 0.49313428],
    4482                                                                                                  [      -6.27250233, -0.00069604, 0.00042656, 7.27180629, 0.99787328, 0.99887740, 0.49313433],
    4483                                                                                                  [      -6.27250270, -0.00069588, 0.00042647, 7.27180682, 0.99787376, 0.99887765, 0.49313436],
    4484                                                                                                  [      -6.27250308, -0.00069572, 0.00042637, 7.27180736, 0.99787424, 0.99887790, 0.49313447],
    4485                                                                                                  [      -6.27250345, -0.00069557, 0.00042628, 7.27180789, 0.99787472, 0.99887816, 0.49313453],
    4486                                                                                                  [      -6.27250383, -0.00069541, 0.00042618, 7.27180842, 0.99787520, 0.99887841, 0.49313456],
    4487                                                                                                  [      -6.27250420, -0.00069525, 0.00042608, 7.27180895, 0.99787567, 0.99887866, 0.49313463],
    4488                                                                                                  [      -6.27250458, -0.00069510, 0.00042599, 7.27180948, 0.99787615, 0.99887891, 0.49313466],
    4489                                                                                                  [      -6.27250495, -0.00069494, 0.00042589, 7.27181001, 0.99787663, 0.99887916, 0.49313471],
    4490                                                                                                  [      -6.27250533, -0.00069479, 0.00042580, 7.27181054, 0.99787711, 0.99887942, 0.49313478],
    4491                                                                                                  [      -6.27250570, -0.00069463, 0.00042570, 7.27181107, 0.99787758, 0.99887967, 0.49313484],
    4492                                                                                                  [      -6.27250608, -0.00069447, 0.00042561, 7.27181160, 0.99787806, 0.99887992, 0.49313489],
    4493                                                                                                  [      -6.27250645, -0.00069432, 0.00042551, 7.27181213, 0.99787854, 0.99888017, 0.49313499],
    4494                                                                                                  [      -6.27250683, -0.00069416, 0.00042541, 7.27181266, 0.99787901, 0.99888042, 0.49313500],
    4495                                                                                                  [      -6.27250720, -0.00069401, 0.00042532, 7.27181319, 0.99787949, 0.99888067, 0.49313506],
    4496                                                                                                  [      -6.27250757, -0.00069385, 0.00042522, 7.27181372, 0.99787996, 0.99888092, 0.49313510],
    4497                                                                                                  [      -6.27250795, -0.00069370, 0.00042513, 7.27181425, 0.99788044, 0.99888117, 0.49313518],
    4498                                                                                                  [      -6.27250832, -0.00069354, 0.00042503, 7.27181478, 0.99788091, 0.99888143, 0.49313523],
    4499                                                                                                  [      -6.27250869, -0.00069339, 0.00042494, 7.27181531, 0.99788139, 0.99888168, 0.49313528],
    4500                                                                                                  [      -6.27250906, -0.00069323, 0.00042484, 7.27181583, 0.99788186, 0.99888193, 0.49313532],
    4501                                                                                                  [      -6.27250944, -0.00069308, 0.00042475, 7.27181636, 0.99788234, 0.99888218, 0.49313537],
    4502                                                                                                  [      -6.27250981, -0.00069292, 0.00042465, 7.27181689, 0.99788281, 0.99888243, 0.49313545],
    4503                                                                                                  [      -6.27251018, -0.00069277, 0.00042456, 7.27181742, 0.99788329, 0.99888268, 0.49313551],
    4504                                                                                                  [      -6.27251055, -0.00069261, 0.00042446, 7.27181794, 0.99788376, 0.99888293, 0.49313557],
    4505                                                                                                  [      -6.27251093, -0.00069246, 0.00042437, 7.27181847, 0.99788423, 0.99888318, 0.49313560],
    4506                                                                                                  [      -6.27251130, -0.00069230, 0.00042427, 7.27181900, 0.99788471, 0.99888343, 0.49313566],
    4507                                                                                                  [      -6.27251167, -0.00069215, 0.00042418, 7.27181952, 0.99788518, 0.99888368, 0.49313574],
    4508                                                                                                  [      -6.27251204, -0.00069199, 0.00042408, 7.27182005, 0.99788565, 0.99888393, 0.49313579],
    4509                                                                                                  [      -6.27251241, -0.00069184, 0.00042399, 7.27182058, 0.99788613, 0.99888418, 0.49313583],
    4510                                                                                                  [      -6.27251278, -0.00069168, 0.00042389, 7.27182110, 0.99788660, 0.99888443, 0.49313587],
    4511                                                                                                  [      -6.27251315, -0.00069153, 0.00042380, 7.27182163, 0.99788707, 0.99888468, 0.49313593],
    4512                                                                                                  [      -6.27251353, -0.00069137, 0.00042370, 7.27182215, 0.99788754, 0.99888492, 0.49313600],
    4513                                                                                                  [      -6.27251390, -0.00069122, 0.00042361, 7.27182268, 0.99788801, 0.99888517, 0.49313604],
    4514                                                                                                  [      -6.27251427, -0.00069106, 0.00042351, 7.27182320, 0.99788849, 0.99888542, 0.49313613],
    4515                                                                                                  [      -6.27251464, -0.00069091, 0.00042342, 7.27182373, 0.99788896, 0.99888567, 0.49313616],
    4516                                                                                                  [      -6.27251501, -0.00069076, 0.00042332, 7.27182425, 0.99788943, 0.99888592, 0.49313621],
    4517                                                                                                  [      -6.27251538, -0.00069060, 0.00042323, 7.27182478, 0.99788990, 0.99888617, 0.49313628],
    4518                                                                                                  [      -6.27251575, -0.00069045, 0.00042314, 7.27182530, 0.99789037, 0.99888642, 0.49313634],
    4519                                                                                                  [      -6.27251612, -0.00069029, 0.00042304, 7.27182582, 0.99789084, 0.99888667, 0.49313637],
    4520                                                                                                  [      -6.27251649, -0.00069014, 0.00042295, 7.27182635, 0.99789131, 0.99888691, 0.49313644],
    4521                                                                                                  [      -6.27251685, -0.00068999, 0.00042285, 7.27182687, 0.99789178, 0.99888716, 0.49313651],
    4522                                                                                                  [      -6.27251722, -0.00068983, 0.00042276, 7.27182739, 0.99789225, 0.99888741, 0.49313656],
    4523                                                                                                  [      -6.27251759, -0.00068968, 0.00042266, 7.27182791, 0.99789272, 0.99888766, 0.49313664],
    4524                                                                                                  [      -6.27251796, -0.00068952, 0.00042257, 7.27182844, 0.99789319, 0.99888791, 0.49313666],
    4525                                                                                                  [      -6.27251833, -0.00068937, 0.00042248, 7.27182896, 0.99789366, 0.99888815, 0.49313670],
    4526                                                                                                  [      -6.27251870, -0.00068922, 0.00042238, 7.27182948, 0.99789413, 0.99888840, 0.49313677],
    4527                                                                                                  [      -6.27251907, -0.00068906, 0.00042229, 7.27183000, 0.99789460, 0.99888865, 0.49313683],
    4528                                                                                                  [      -6.27251943, -0.00068891, 0.00042219, 7.27183052, 0.99789507, 0.99888890, 0.49313687],
    4529                                                                                                  [      -6.27251980, -0.00068876, 0.00042210, 7.27183104, 0.99789554, 0.99888914, 0.49313691],
    4530                                                                                                  [      -6.27252017, -0.00068860, 0.00042200, 7.27183157, 0.99789601, 0.99888939, 0.49313700],
    4531                                                                                                  [      -6.27252054, -0.00068845, 0.00042191, 7.27183209, 0.99789647, 0.99888964, 0.49313706],
    4532                                                                                                  [      -6.27252091, -0.00068830, 0.00042182, 7.27183261, 0.99789694, 0.99888988, 0.49313707],
    4533                                                                                                  [      -6.27252127, -0.00068815, 0.00042172, 7.27183313, 0.99789741, 0.99889013, 0.49313711],
    4534                                                                                                  [      -6.27252164, -0.00068799, 0.00042163, 7.27183365, 0.99789788, 0.99889038, 0.49313720],
    4535                                                                                                  [      -6.27252201, -0.00068784, 0.00042154, 7.27183417, 0.99789835, 0.99889062, 0.49313727],
    4536                                                                                                  [      -6.27252237, -0.00068769, 0.00042144, 7.27183469, 0.99789881, 0.99889087, 0.49313733],
    4537                                                                                                  [      -6.27252274, -0.00068753, 0.00042135, 7.27183521, 0.99789928, 0.99889112, 0.49313737],
    4538                                                                                                  [      -6.27252311, -0.00068738, 0.00042125, 7.27183572, 0.99789975, 0.99889136, 0.49313744],
    4539                                                                                                  [      -6.27252347, -0.00068723, 0.00042116, 7.27183624, 0.99790021, 0.99889161, 0.49313749],
    4540                                                                                                  [      -6.27252384, -0.00068708, 0.00042107, 7.27183676, 0.99790068, 0.99889186, 0.49313754],
    4541                                                                                                  [      -6.27252420, -0.00068692, 0.00042097, 7.27183728, 0.99790115, 0.99889210, 0.49313760],
    4542                                                                                                  [      -6.27252457, -0.00068677, 0.00042088, 7.27183780, 0.99790161, 0.99889235, 0.49313767],
    4543                                                                                                  [      -6.27252494, -0.00068662, 0.00042079, 7.27183832, 0.99790208, 0.99889259, 0.49313771],
    4544                                                                                                  [      -6.27252530, -0.00068647, 0.00042069, 7.27183883, 0.99790254, 0.99889284, 0.49313775],
    4545                                                                                                  [      -6.27252567, -0.00068631, 0.00042060, 7.27183935, 0.99790301, 0.99889309, 0.49313782],
    4546                                                                                                  [      -6.27252603, -0.00068616, 0.00042051, 7.27183987, 0.99790347, 0.99889333, 0.49313786],
    4547                                                                                                  [      -6.27252640, -0.00068601, 0.00042041, 7.27184039, 0.99790394, 0.99889358, 0.49313791],
    4548                                                                                                  [      -6.27252676, -0.00068586, 0.00042032, 7.27184090, 0.99790440, 0.99889382, 0.49313797],
    4549                                                                                                  [      -6.27252712, -0.00068571, 0.00042023, 7.27184142, 0.99790487, 0.99889407, 0.49313801],
    4550                                                                                                  [      -6.27252749, -0.00068555, 0.00042013, 7.27184193, 0.99790533, 0.99889431, 0.49313810],
    4551                                                                                                  [      -6.27252785, -0.00068540, 0.00042004, 7.27184245, 0.99790579, 0.99889456, 0.49313815],
    4552                                                                                                  [      -6.27252822, -0.00068525, 0.00041995, 7.27184297, 0.99790626, 0.99889480, 0.49313818],
    4553                                                                                                  [      -6.27252858, -0.00068510, 0.00041985, 7.27184348, 0.99790672, 0.99889505, 0.49313824],
    4554                                                                                                  [      -6.27252895, -0.00068495, 0.00041976, 7.27184400, 0.99790719, 0.99889529, 0.49313828],
    4555                                                                                                  [      -6.27252931, -0.00068480, 0.00041967, 7.27184451, 0.99790765, 0.99889553, 0.49313835],
    4556                                                                                                  [      -6.27252967, -0.00068464, 0.00041958, 7.27184503, 0.99790811, 0.99889578, 0.49313842],
    4557                                                                                                  [      -6.27253004, -0.00068449, 0.00041948, 7.27184554, 0.99790857, 0.99889602, 0.49313845],
    4558                                                                                                  [      -6.27253040, -0.00068434, 0.00041939, 7.27184606, 0.99790904, 0.99889627, 0.49313853],
    4559                                                                                                  [      -6.27253076, -0.00068419, 0.00041930, 7.27184657, 0.99790950, 0.99889651, 0.49313854],
    4560                                                                                                  [      -6.27253112, -0.00068404, 0.00041920, 7.27184708, 0.99790996, 0.99889676, 0.49313861],
    4561                                                                                                  [      -6.27253149, -0.00068389, 0.00041911, 7.27184760, 0.99791042, 0.99889700, 0.49313867],
    4562                                                                                                  [      -6.27253185, -0.00068374, 0.00041902, 7.27184811, 0.99791089, 0.99889724, 0.49313874],
    4563                                                                                                  [      -6.27253221, -0.00068359, 0.00041893, 7.27184862, 0.99791135, 0.99889749, 0.49313876],
    4564                                                                                                  [      -6.27253257, -0.00068344, 0.00041883, 7.27184914, 0.99791181, 0.99889773, 0.49313881],
    4565                                                                                                  [      -6.27253293, -0.00068328, 0.00041874, 7.27184965, 0.99791227, 0.99889797, 0.49313886],
    4566                                                                                                  [      -6.27253330, -0.00068313, 0.00041865, 7.27185016, 0.99791273, 0.99889822, 0.49313893],
    4567                                                                                                  [      -6.27253366, -0.00068298, 0.00041856, 7.27185068, 0.99791319, 0.99889846, 0.49313897],
    4568                                                                                                  [      -6.27253402, -0.00068283, 0.00041846, 7.27185119, 0.99791365, 0.99889870, 0.49313904],
    4569                                                                                                  [      -6.27253438, -0.00068268, 0.00041837, 7.27185170, 0.99791411, 0.99889895, 0.49313909],
    4570                                                                                                  [      -6.27253474, -0.00068253, 0.00041828, 7.27185221, 0.99791457, 0.99889919, 0.49313915],
    4571                                                                                                  [      -6.27253510, -0.00068238, 0.00041819, 7.27185272, 0.99791503, 0.99889943, 0.49313920],
    4572                                                                                                  [      -6.27253546, -0.00068223, 0.00041810, 7.27185323, 0.99791549, 0.99889967, 0.49313924],
    4573                                                                                                  [      -6.27253582, -0.00068208, 0.00041800, 7.27185374, 0.99791595, 0.99889992, 0.49313932],
    4574                                                                                                  [      -6.27253618, -0.00068193, 0.00041791, 7.27185425, 0.99791641, 0.99890016, 0.49313937],
    4575                                                                                                  [      -6.27253654, -0.00068178, 0.00041782, 7.27185477, 0.99791687, 0.99890040, 0.49313944],
    4576                                                                                                  [      -6.27253690, -0.00068163, 0.00041773, 7.27185528, 0.99791733, 0.99890064, 0.49313947],
    4577                                                                                                  [      -6.27253726, -0.00068148, 0.00041763, 7.27185579, 0.99791779, 0.99890089, 0.49313953],
    4578                                                                                                  [      -6.27253762, -0.00068133, 0.00041754, 7.27185630, 0.99791825, 0.99890113, 0.49313960],
    4579                                                                                                  [      -6.27253798, -0.00068118, 0.00041745, 7.27185680, 0.99791871, 0.99890137, 0.49313964],
    4580                                                                                                  [      -6.27253834, -0.00068103, 0.00041736, 7.27185731, 0.99791916, 0.99890161, 0.49313969],
    4581                                                                                                  [      -6.27253870, -0.00068088, 0.00041727, 7.27185782, 0.99791962, 0.99890185, 0.49313973],
    4582                                                                                                  [      -6.27253906, -0.00068073, 0.00041718, 7.27185833, 0.99792008, 0.99890209, 0.49313978],
    4583                                                                                                  [      -6.27253942, -0.00068058, 0.00041708, 7.27185884, 0.99792054, 0.99890234, 0.49313983],
    4584                                                                                                  [      -6.27253978, -0.00068043, 0.00041699, 7.27185935, 0.99792099, 0.99890258, 0.49313991],
    4585                                                                                                  [      -6.27254014, -0.00068028, 0.00041690, 7.27185986, 0.99792145, 0.99890282, 0.49313998],
    4586                                                                                                  [      -6.27254050, -0.00068013, 0.00041681, 7.27186036, 0.99792191, 0.99890306, 0.49314002],
    4587                                                                                                  [      -6.27254086, -0.00067998, 0.00041672, 7.27186087, 0.99792237, 0.99890330, 0.49314008],
    4588                                                                                                  [      -6.27254121, -0.00067983, 0.00041662, 7.27186138, 0.99792282, 0.99890354, 0.49314012],
    4589                                                                                                  [      -6.27254157, -0.00067968, 0.00041653, 7.27186189, 0.99792328, 0.99890378, 0.49314018],
    4590                                                                                                  [      -6.27254193, -0.00067953, 0.00041644, 7.27186239, 0.99792373, 0.99890402, 0.49314019],
    4591                                                                                                  [      -6.27254229, -0.00067939, 0.00041635, 7.27186290, 0.99792419, 0.99890426, 0.49314025],
    4592                                                                                                  [      -6.27254264, -0.00067924, 0.00041626, 7.27186341, 0.99792465, 0.99890450, 0.49314034],
    4593                                                                                                  [      -6.27254300, -0.00067909, 0.00041617, 7.27186391, 0.99792510, 0.99890474, 0.49314040],
    4594                                                                                                  [      -6.27254336, -0.00067894, 0.00041608, 7.27186442, 0.99792556, 0.99890499, 0.49314044],
    4595                                                                                                  [      -6.27254372, -0.00067879, 0.00041598, 7.27186493, 0.99792601, 0.99890523, 0.49314049],
    4596                                                                                                  [      -6.27254407, -0.00067864, 0.00041589, 7.27186543, 0.99792647, 0.99890547, 0.49314054],
    4597                                                                                                  [      -6.27254443, -0.00067849, 0.00041580, 7.27186594, 0.99792692, 0.99890571, 0.49314058],
    4598                                                                                                  [      -6.27254479, -0.00067834, 0.00041571, 7.27186644, 0.99792738, 0.99890595, 0.49314062],
    4599                                                                                                  [      -6.27254514, -0.00067819, 0.00041562, 7.27186695, 0.99792783, 0.99890618, 0.49314070],
    4600                                                                                                  [      -6.27254550, -0.00067805, 0.00041553, 7.27186745, 0.99792828, 0.99890642, 0.49314075],
    4601                                                                                                  [      -6.27254585, -0.00067790, 0.00041544, 7.27186796, 0.99792874, 0.99890666, 0.49314079],
    4602                                                                                                  [      -6.27254621, -0.00067775, 0.00041535, 7.27186846, 0.99792919, 0.99890690, 0.49314085],
    4603                                                                                                  [      -6.27254657, -0.00067760, 0.00041526, 7.27186897, 0.99792965, 0.99890714, 0.49314090],
    4604                                                                                                  [      -6.27254692, -0.00067745, 0.00041516, 7.27186947, 0.99793010, 0.99890738, 0.49314094],
    4605                                                                                                  [      -6.27254728, -0.00067730, 0.00041507, 7.27186997, 0.99793055, 0.99890762, 0.49314100],
    4606                                                                                                  [      -6.27254763, -0.00067716, 0.00041498, 7.27187048, 0.99793101, 0.99890786, 0.49314106],
    4607                                                                                                  [      -6.27254799, -0.00067701, 0.00041489, 7.27187098, 0.99793146, 0.99890810, 0.49314111],
    4608                                                                                                  [      -6.27254834, -0.00067686, 0.00041480, 7.27187148, 0.99793191, 0.99890834, 0.49314118],
    4609                                                                                                  [      -6.27254870, -0.00067671, 0.00041471, 7.27187199, 0.99793236, 0.99890858, 0.49314123],
    4610                                                                                                  [      -6.27254905, -0.00067656, 0.00041462, 7.27187249, 0.99793282, 0.99890882, 0.49314127],
    4611                                                                                                  [      -6.27254941, -0.00067642, 0.00041453, 7.27187299, 0.99793327, 0.99890905, 0.49314132],
    4612                                                                                                  [      -6.27254976, -0.00067627, 0.00041444, 7.27187349, 0.99793372, 0.99890929, 0.49314138],
    4613                                                                                                  [      -6.27255012, -0.00067612, 0.00041435, 7.27187399, 0.99793417, 0.99890953, 0.49314144],
    4614                                                                                                  [      -6.27255047, -0.00067597, 0.00041426, 7.27187450, 0.99793462, 0.99890977, 0.49314149],
    4615                                                                                                  [      -6.27255082, -0.00067583, 0.00041417, 7.27187500, 0.99793507, 0.99891001, 0.49314155],
    4616                                                                                                  [      -6.27255118, -0.00067568, 0.00041408, 7.27187550, 0.99793552, 0.99891025, 0.49314159],
    4617                                                                                                  [      -6.27255153, -0.00067553, 0.00041399, 7.27187600, 0.99793597, 0.99891048, 0.49314164],
    4618                                                                                                  [      -6.27255188, -0.00067538, 0.00041390, 7.27187650, 0.99793643, 0.99891072, 0.49314169],
    4619                                                                                                  [      -6.27255224, -0.00067524, 0.00041381, 7.27187700, 0.99793688, 0.99891096, 0.49314176],
    4620                                                                                                  [      -6.27255259, -0.00067509, 0.00041372, 7.27187750, 0.99793733, 0.99891120, 0.49314181],
    4621                                                                                                  [      -6.27255294, -0.00067494, 0.00041362, 7.27187800, 0.99793778, 0.99891143, 0.49314185],
    4622                                                                                                  [      -6.27255330, -0.00067479, 0.00041353, 7.27187850, 0.99793823, 0.99891167, 0.49314190],
    4623                                                                                                  [      -6.27255365, -0.00067465, 0.00041344, 7.27187900, 0.99793868, 0.99891191, 0.49314197],
    4624                                                                                                  [      -6.27255400, -0.00067450, 0.00041335, 7.27187950, 0.99793912, 0.99891215, 0.49314200],
    4625                                                                                                  [      -6.27255435, -0.00067435, 0.00041326, 7.27188000, 0.99793957, 0.99891238, 0.49314208],
    4626                                                                                                  [      -6.27255470, -0.00067421, 0.00041317, 7.27188050, 0.99794002, 0.99891262, 0.49314213],
    4627                                                                                                  [      -6.27255506, -0.00067406, 0.00041308, 7.27188100, 0.99794047, 0.99891286, 0.49314217],
    4628                                                                                                  [      -6.27255541, -0.00067391, 0.00041299, 7.27188150, 0.99794092, 0.99891309, 0.49314220],
    4629                                                                                                  [      -6.27255576, -0.00067377, 0.00041290, 7.27188199, 0.99794137, 0.99891333, 0.49314225],
    4630                                                                                                  [      -6.27255611, -0.00067362, 0.00041281, 7.27188249, 0.99794182, 0.99891357, 0.49314232],
    4631                                                                                                  [      -6.27255646, -0.00067347, 0.00041272, 7.27188299, 0.99794227, 0.99891380, 0.49314238],
    4632                                                                                                  [      -6.27255681, -0.00067333, 0.00041263, 7.27188349, 0.99794271, 0.99891404, 0.49314241],
    4633                                                                                                  [      -6.27255717, -0.00067318, 0.00041254, 7.27188398, 0.99794316, 0.99891428, 0.49314247],
    4634                                                                                                  [      -6.27255752, -0.00067303, 0.00041245, 7.27188448, 0.99794361, 0.99891451, 0.49314253],
    4635                                                                                                  [      -6.27255787, -0.00067289, 0.00041236, 7.27188498, 0.99794406, 0.99891475, 0.49314258],
    4636                                                                                                  [      -6.27255822, -0.00067274, 0.00041228, 7.27188548, 0.99794450, 0.99891498, 0.49314263],
    4637                                                                                                  [      -6.27255857, -0.00067260, 0.00041219, 7.27188597, 0.99794495, 0.99891522, 0.49314268],
    4638                                                                                                  [      -6.27255892, -0.00067245, 0.00041210, 7.27188647, 0.99794540, 0.99891545, 0.49314274],
    4639                                                                                                  [      -6.27255927, -0.00067230, 0.00041201, 7.27188696, 0.99794584, 0.99891569, 0.49314280],
    4640                                                                                                  [      -6.27255962, -0.00067216, 0.00041192, 7.27188746, 0.99794629, 0.99891593, 0.49314284],
    4641                                                                                                  [      -6.27255997, -0.00067201, 0.00041183, 7.27188796, 0.99794673, 0.99891616, 0.49314287],
    4642                                                                                                  [      -6.27256032, -0.00067187, 0.00041174, 7.27188845, 0.99794718, 0.99891640, 0.49314297],
    4643                                                                                                  [      -6.27256067, -0.00067172, 0.00041165, 7.27188895, 0.99794763, 0.99891663, 0.49314303],
    4644                                                                                                  [      -6.27256102, -0.00067157, 0.00041156, 7.27188944, 0.99794807, 0.99891687, 0.49314307],
    4645                                                                                                  [      -6.27256137, -0.00067143, 0.00041147, 7.27188994, 0.99794852, 0.99891710, 0.49314312],
    4646                                                                                                  [      -6.27256171, -0.00067128, 0.00041138, 7.27189043, 0.99794896, 0.99891734, 0.49314315],
    4647                                                                                                  [      -6.27256206, -0.00067114, 0.00041129, 7.27189093, 0.99794941, 0.99891757, 0.49314322],
    4648                                                                                                  [      -6.27256241, -0.00067099, 0.00041120, 7.27189142, 0.99794985, 0.99891781, 0.49314325],
    4649                                                                                                  [      -6.27256276, -0.00067085, 0.00041111, 7.27189191, 0.99795030, 0.99891804, 0.49314333],
    4650                                                                                                  [      -6.27256311, -0.00067070, 0.00041102, 7.27189241, 0.99795074, 0.99891828, 0.49314337],
    4651                                                                                                  [      -6.27256346, -0.00067056, 0.00041093, 7.27189290, 0.99795119, 0.99891851, 0.49314340],
    4652                                                                                                  [      -6.27256381, -0.00067041, 0.00041085, 7.27189339, 0.99795163, 0.99891874, 0.49314348],
    4653                                                                                                  [      -6.27256415, -0.00067027, 0.00041076, 7.27189389, 0.99795207, 0.99891898, 0.49314353],
    4654                                                                                                  [      -6.27256450, -0.00067012, 0.00041067, 7.27189438, 0.99795252, 0.99891921, 0.49314358],
    4655                                                                                                  [      -6.27256485, -0.00066998, 0.00041058, 7.27189487, 0.99795296, 0.99891945, 0.49314365],
    4656                                                                                                  [      -6.27256520, -0.00066983, 0.00041049, 7.27189537, 0.99795340, 0.99891968, 0.49314368],
    4657                                                                                                  [      -6.27256554, -0.00066969, 0.00041040, 7.27189586, 0.99795385, 0.99891991, 0.49314376],
    4658                                                                                                  [      -6.27256589, -0.00066954, 0.00041031, 7.27189635, 0.99795429, 0.99892015, 0.49314379],
    4659                                                                                                  [      -6.27256624, -0.00066940, 0.00041022, 7.27189684, 0.99795473, 0.99892038, 0.49314383],
    4660                                                                                                  [      -6.27256658, -0.00066925, 0.00041013, 7.27189733, 0.99795517, 0.99892061, 0.49314389],
    4661                                                                                                  [      -6.27256693, -0.00066911, 0.00041005, 7.27189782, 0.99795562, 0.99892085, 0.49314395],
    4662                                                                                                  [      -6.27256728, -0.00066896, 0.00040996, 7.27189832, 0.99795606, 0.99892108, 0.49314398],
    4663                                                                                                  [      -6.27256762, -0.00066882, 0.00040987, 7.27189881, 0.99795650, 0.99892131, 0.49314403],
    4664                                                                                                  [      -6.27256797, -0.00066867, 0.00040978, 7.27189930, 0.99795694, 0.99892155, 0.49314409],
    4665                                                                                                  [      -6.27256832, -0.00066853, 0.00040969, 7.27189979, 0.99795738, 0.99892178, 0.49314415],
    4666                                                                                                  [      -6.27256866, -0.00066838, 0.00040960, 7.27190028, 0.99795782, 0.99892201, 0.49314419],
    4667                                                                                                  [      -6.27256901, -0.00066824, 0.00040951, 7.27190077, 0.99795827, 0.99892225, 0.49314425],
    4668                                                                                                  [      -6.27256935, -0.00066810, 0.00040943, 7.27190126, 0.99795871, 0.99892248, 0.49314428],
    4669                                                                                                  [      -6.27256970, -0.00066795, 0.00040934, 7.27190175, 0.99795915, 0.99892271, 0.49314436],
    4670                                                                                                  [      -6.27257004, -0.00066781, 0.00040925, 7.27190224, 0.99795959, 0.99892294, 0.49314439],
    4671                                                                                                  [      -6.27257039, -0.00066766, 0.00040916, 7.27190273, 0.99796003, 0.99892318, 0.49314446],
    4672                                                                                                  [      -6.27257073, -0.00066752, 0.00040907, 7.27190322, 0.99796047, 0.99892341, 0.49314452],
    4673                                                                                                  [      -6.27257108, -0.00066738, 0.00040898, 7.27190370, 0.99796091, 0.99892364, 0.49314453],
    4674                                                                                                  [      -6.27257142, -0.00066723, 0.00040890, 7.27190419, 0.99796135, 0.99892387, 0.49314460],
    4675                                                                                                  [      -6.27257177, -0.00066709, 0.00040881, 7.27190468, 0.99796179, 0.99892410, 0.49314466],
    4676                                                                                                  [      -6.27257211, -0.00066694, 0.00040872, 7.27190517, 0.99796223, 0.99892434, 0.49314470],
    4677                                                                                                  [      -6.27257246, -0.00066680, 0.00040863, 7.27190566, 0.99796267, 0.99892457, 0.49314476],
    4678                                                                                                  [      -6.27257280, -0.00066666, 0.00040854, 7.27190615, 0.99796311, 0.99892480, 0.49314482],
    4679                                                                                                  [      -6.27257315, -0.00066651, 0.00040846, 7.27190663, 0.99796354, 0.99892503, 0.49314486],
    4680                                                                                                  [      -6.27257349, -0.00066637, 0.00040837, 7.27190712, 0.99796398, 0.99892526, 0.49314490],
    4681                                                                                                  [      -6.27257383, -0.00066623, 0.00040828, 7.27190761, 0.99796442, 0.99892549, 0.49314498],
    4682                                                                                                  [      -6.27257418, -0.00066608, 0.00040819, 7.27190809, 0.99796486, 0.99892573, 0.49314501],
    4683                                                                                                  [      -6.27257452, -0.00066594, 0.00040810, 7.27190858, 0.99796530, 0.99892596, 0.49314505],
    4684                                                                                                  [      -6.27257486, -0.00066580, 0.00040802, 7.27190907, 0.99796574, 0.99892619, 0.49314512],
    4685                                                                                                  [      -6.27257521, -0.00066565, 0.00040793, 7.27190955, 0.99796617, 0.99892642, 0.49314515],
    4686                                                                                                  [      -6.27257555, -0.00066551, 0.00040784, 7.27191004, 0.99796661, 0.99892665, 0.49314521],
    4687                                                                                                  [      -6.27257589, -0.00066537, 0.00040775, 7.27191053, 0.99796705, 0.99892688, 0.49314528],
    4688                                                                                                  [      -6.27257623, -0.00066522, 0.00040766, 7.27191101, 0.99796748, 0.99892711, 0.49314532],
    4689                                                                                                  [      -6.27257658, -0.00066508, 0.00040758, 7.27191150, 0.99796792, 0.99892734, 0.49314537],
    4690                                                                                                  [      -6.27257692, -0.00066494, 0.00040749, 7.27191198, 0.99796836, 0.99892757, 0.49314541],
    4691                                                                                                  [      -6.27257726, -0.00066480, 0.00040740, 7.27191247, 0.99796880, 0.99892780, 0.49314547],
    4692                                                                                                  [      -6.27257760, -0.00066465, 0.00040731, 7.27191295, 0.99796923, 0.99892803, 0.49314555],
    4693                                                                                                  [      -6.27257795, -0.00066451, 0.00040723, 7.27191344, 0.99796967, 0.99892826, 0.49314558],
    4694                                                                                                  [      -6.27257829, -0.00066437, 0.00040714, 7.27191392, 0.99797010, 0.99892849, 0.49314564],
    4695                                                                                                  [      -6.27257863, -0.00066422, 0.00040705, 7.27191440, 0.99797054, 0.99892872, 0.49314568],
    4696                                                                                                  [      -6.27257897, -0.00066408, 0.00040696, 7.27191489, 0.99797098, 0.99892895, 0.49314573],
    4697                                                                                                  [      -6.27257931, -0.00066394, 0.00040688, 7.27191537, 0.99797141, 0.99892918, 0.49314579],
    4698                                                                                                  [      -6.27257965, -0.00066380, 0.00040679, 7.27191586, 0.99797185, 0.99892941, 0.49314582],
    4699                                                                                                  [      -6.27257999, -0.00066366, 0.00040670, 7.27191634, 0.99797228, 0.99892964, 0.49314588],
    4700                                                                                                  [      -6.27258033, -0.00066351, 0.00040662, 7.27191682, 0.99797272, 0.99892987, 0.49314593],
    4701                                                                                                  [      -6.27258068, -0.00066337, 0.00040653, 7.27191730, 0.99797315, 0.99893010, 0.49314598],
    4702                                                                                                  [      -6.27258102, -0.00066323, 0.00040644, 7.27191779, 0.99797358, 0.99893033, 0.49314603],
    4703                                                                                                  [      -6.27258136, -0.00066309, 0.00040635, 7.27191827, 0.99797402, 0.99893056, 0.49314608],
    4704                                                                                                  [      -6.27258170, -0.00066294, 0.00040627, 7.27191875, 0.99797445, 0.99893079, 0.49314611],
    4705                                                                                                  [      -6.27258204, -0.00066280, 0.00040618, 7.27191923, 0.99797489, 0.99893102, 0.49314621],
    4706                                                                                                  [      -6.27258238, -0.00066266, 0.00040609, 7.27191972, 0.99797532, 0.99893125, 0.49314623],
    4707                                                                                                  [      -6.27258272, -0.00066252, 0.00040601, 7.27192020, 0.99797575, 0.99893148, 0.49314626],
    4708                                                                                                  [      -6.27258306, -0.00066238, 0.00040592, 7.27192068, 0.99797619, 0.99893170, 0.49314635],
    4709                                                                                                  [      -6.27258340, -0.00066224, 0.00040583, 7.27192116, 0.99797662, 0.99893193, 0.49314639],
    4710                                                                                                  [      -6.27258373, -0.00066209, 0.00040574, 7.27192164, 0.99797705, 0.99893216, 0.49314644],
    4711                                                                                                  [      -6.27258407, -0.00066195, 0.00040566, 7.27192212, 0.99797749, 0.99893239, 0.49314649],
    4712                                                                                                  [      -6.27258441, -0.00066181, 0.00040557, 7.27192260, 0.99797792, 0.99893262, 0.49314651],
    4713                                                                                                  [      -6.27258475, -0.00066167, 0.00040548, 7.27192308, 0.99797835, 0.99893285, 0.49314660],
    4714                                                                                                  [      -6.27258509, -0.00066153, 0.00040540, 7.27192356, 0.99797878, 0.99893307, 0.49314663],
    4715                                                                                                  [      -6.27258543, -0.00066139, 0.00040531, 7.27192404, 0.99797922, 0.99893330, 0.49314669],
    4716                                                                                                  [      -6.27258577, -0.00066125, 0.00040522, 7.27192452, 0.99797965, 0.99893353, 0.49314673],
    4717                                                                                                  [      -6.27258611, -0.00066110, 0.00040514, 7.27192500, 0.99798008, 0.99893376, 0.49314679],
    4718                                                                                                  [      -6.27258644, -0.00066096, 0.00040505, 7.27192548, 0.99798051, 0.99893399, 0.49314686],
    4719                                                                                                  [      -6.27258678, -0.00066082, 0.00040496, 7.27192596, 0.99798094, 0.99893421, 0.49314689],
    4720                                                                                                  [      -6.27258712, -0.00066068, 0.00040488, 7.27192644, 0.99798137, 0.99893444, 0.49314694],
    4721                                                                                                  [      -6.27258746, -0.00066054, 0.00040479, 7.27192692, 0.99798181, 0.99893467, 0.49314700],
    4722                                                                                                  [      -6.27258780, -0.00066040, 0.00040471, 7.27192740, 0.99798224, 0.99893490, 0.49314705],
    4723                                                                                                  [      -6.27258813, -0.00066026, 0.00040462, 7.27192788, 0.99798267, 0.99893512, 0.49314708],
    4724                                                                                                  [      -6.27258847, -0.00066012, 0.00040453, 7.27192835, 0.99798310, 0.99893535, 0.49314712],
    4725                                                                                                  [      -6.27258881, -0.00065998, 0.00040445, 7.27192883, 0.99798353, 0.99893558, 0.49314719],
    4726                                                                                                  [      -6.27258914, -0.00065984, 0.00040436, 7.27192931, 0.99798396, 0.99893580, 0.49314727],
    4727                                                                                                  [      -6.27258948, -0.00065970, 0.00040427, 7.27192979, 0.99798439, 0.99893603, 0.49314727],
    4728                                                                                                  [      -6.27258982, -0.00065955, 0.00040419, 7.27193026, 0.99798482, 0.99893626, 0.49314731],
    4729                                                                                                  [      -6.27259015, -0.00065941, 0.00040410, 7.27193074, 0.99798525, 0.99893648, 0.49314740],
    4730                                                                                                  [      -6.27259049, -0.00065927, 0.00040401, 7.27193122, 0.99798568, 0.99893671, 0.49314745],
    4731                                                                                                  [      -6.27259083, -0.00065913, 0.00040393, 7.27193169, 0.99798610, 0.99893694, 0.49314746],
    4732                                                                                                  [      -6.27259116, -0.00065899, 0.00040384, 7.27193217, 0.99798653, 0.99893716, 0.49314754],
    4733                                                                                                  [      -6.27259150, -0.00065885, 0.00040376, 7.27193265, 0.99798696, 0.99893739, 0.49314761],
    4734                                                                                                  [      -6.27259184, -0.00065871, 0.00040367, 7.27193312, 0.99798739, 0.99893762, 0.49314766],
    4735                                                                                                  [      -6.27259217, -0.00065857, 0.00040358, 7.27193360, 0.99798782, 0.99893784, 0.49314769],
    4736                                                                                                  [      -6.27259251, -0.00065843, 0.00040350, 7.27193407, 0.99798825, 0.99893807, 0.49314775],
    4737                                                                                                  [      -6.27259284, -0.00065829, 0.00040341, 7.27193455, 0.99798868, 0.99893829, 0.49314778],
    4738                                                                                                  [      -6.27259318, -0.00065815, 0.00040333, 7.27193502, 0.99798910, 0.99893852, 0.49314784],
    4739                                                                                                  [      -6.27259351, -0.00065801, 0.00040324, 7.27193550, 0.99798953, 0.99893875, 0.49314788],
    4740                                                                                                  [      -6.27259385, -0.00065787, 0.00040316, 7.27193597, 0.99798996, 0.99893897, 0.49314794],
    4741                                                                                                  [      -6.27259418, -0.00065773, 0.00040307, 7.27193645, 0.99799039, 0.99893920, 0.49314799],
    4742                                                                                                  [      -6.27259452, -0.00065759, 0.00040298, 7.27193692, 0.99799081, 0.99893942, 0.49314805],
    4743                                                                                                  [      -6.27259485, -0.00065745, 0.00040290, 7.27193740, 0.99799124, 0.99893965, 0.49314807],
    4744                                                                                                  [      -6.27259519, -0.00065731, 0.00040281, 7.27193787, 0.99799167, 0.99893987, 0.49314813],
    4745                                                                                                  [      -6.27259552, -0.00065717, 0.00040273, 7.27193835, 0.99799209, 0.99894010, 0.49314822],
    4746                                                                                                  [      -6.27259585, -0.00065703, 0.00040264, 7.27193882, 0.99799252, 0.99894032, 0.49314825],
    4747                                                                                                  [      -6.27259619, -0.00065690, 0.00040256, 7.27193929, 0.99799295, 0.99894055, 0.49314830],
    4748                                                                                                  [      -6.27259652, -0.00065676, 0.00040247, 7.27193977, 0.99799337, 0.99894077, 0.49314836],
    4749                                                                                                  [      -6.27259686, -0.00065662, 0.00040239, 7.27194024, 0.99799380, 0.99894100, 0.49314839],
    4750                                                                                                  [      -6.27259719, -0.00065648, 0.00040230, 7.27194071, 0.99799422, 0.99894122, 0.49314844],
    4751                                                                                                  [      -6.27259752, -0.00065634, 0.00040221, 7.27194118, 0.99799465, 0.99894145, 0.49314848],
    4752                                                                                                  [      -6.27259786, -0.00065620, 0.00040213, 7.27194166, 0.99799507, 0.99894167, 0.49314852],
    4753                                                                                                  [      -6.27259819, -0.00065606, 0.00040204, 7.27194213, 0.99799550, 0.99894190, 0.49314858],
    4754                                                                                                  [      -6.27259852, -0.00065592, 0.00040196, 7.27194260, 0.99799593, 0.99894212, 0.49314864],
    4755                                                                                                  [      -6.27259885, -0.00065578, 0.00040187, 7.27194307, 0.99799635, 0.99894234, 0.49314867],
    4756                                                                                                  [      -6.27259919, -0.00065564, 0.00040179, 7.27194354, 0.99799677, 0.99894257, 0.49314872],
    4757                                                                                                  [      -6.27259952, -0.00065550, 0.00040170, 7.27194402, 0.99799720, 0.99894279, 0.49314880],
    4758                                                                                                  [      -6.27259985, -0.00065537, 0.00040162, 7.27194449, 0.99799762, 0.99894302, 0.49314880],
    4759                                                                                                  [      -6.27260018, -0.00065523, 0.00040153, 7.27194496, 0.99799805, 0.99894324, 0.49314888],
    4760                                                                                                  [      -6.27260052, -0.00065509, 0.00040145, 7.27194543, 0.99799847, 0.99894346, 0.49314897],
    4761                                                                                                  [      -6.27260085, -0.00065495, 0.00040136, 7.27194590, 0.99799889, 0.99894369, 0.49314899],
    4762                                                                                                  [      -6.27260118, -0.00065481, 0.00040128, 7.27194637, 0.99799932, 0.99894391, 0.49314902],
    4763                                                                                                  [      -6.27260151, -0.00065467, 0.00040119, 7.27194684, 0.99799974, 0.99894413, 0.49314908],
    4764                                                                                                  [      -6.27260184, -0.00065453, 0.00040111, 7.27194731, 0.99800016, 0.99894436, 0.49314911],
    4765                                                                                                  [      -6.27260217, -0.00065440, 0.00040102, 7.27194778, 0.99800059, 0.99894458, 0.49314920],
    4766                                                                                                  [      -6.27260251, -0.00065426, 0.00040094, 7.27194825, 0.99800101, 0.99894480, 0.49314922],
    4767                                                                                                  [      -6.27260284, -0.00065412, 0.00040085, 7.27194872, 0.99800143, 0.99894503, 0.49314928],
    4768                                                                                                  [      -6.27260317, -0.00065398, 0.00040077, 7.27194919, 0.99800186, 0.99894525, 0.49314931],
    4769                                                                                                  [      -6.27260350, -0.00065384, 0.00040068, 7.27194966, 0.99800228, 0.99894547, 0.49314937],
    4770                                                                                                  [      -6.27260383, -0.00065370, 0.00040060, 7.27195013, 0.99800270, 0.99894570, 0.49314942],
    4771                                                                                                  [      -6.27260416, -0.00065357, 0.00040051, 7.27195059, 0.99800312, 0.99894592, 0.49314947],
    4772                                                                                                  [      -6.27260449, -0.00065343, 0.00040043, 7.27195106, 0.99800354, 0.99894614, 0.49314952],
    4773                                                                                                  [      -6.27260482, -0.00065329, 0.00040035, 7.27195153, 0.99800397, 0.99894636, 0.49314960],
    4774                                                                                                  [      -6.27260515, -0.00065315, 0.00040026, 7.27195200, 0.99800439, 0.99894659, 0.49314963],
    4775                                                                                                  [      -6.27260548, -0.00065302, 0.00040018, 7.27195247, 0.99800481, 0.99894681, 0.49314965],
    4776                                                                                                  [      -6.27260581, -0.00065288, 0.00040009, 7.27195293, 0.99800523, 0.99894703, 0.49314972],
    4777                                                                                                  [      -6.27260614, -0.00065274, 0.00040001, 7.27195340, 0.99800565, 0.99894725, 0.49314975],
    4778                                                                                                  [      -6.27260647, -0.00065260, 0.00039992, 7.27195387, 0.99800607, 0.99894747, 0.49314983],
    4779                                                                                                  [      -6.27260680, -0.00065246, 0.00039984, 7.27195434, 0.99800649, 0.99894770, 0.49314987],
    4780                                                                                                  [      -6.27260713, -0.00065233, 0.00039975, 7.27195480, 0.99800691, 0.99894792, 0.49314994],
    4781                                                                                                  [      -6.27260746, -0.00065219, 0.00039967, 7.27195527, 0.99800733, 0.99894814, 0.49314996],
    4782                                                                                                  [      -6.27260779, -0.00065205, 0.00039959, 7.27195573, 0.99800775, 0.99894836, 0.49314998],
    4783                                                                                                  [      -6.27260812, -0.00065192, 0.00039950, 7.27195620, 0.99800817, 0.99894858, 0.49315004],
    4784                                                                                                  [      -6.27260844, -0.00065178, 0.00039942, 7.27195667, 0.99800859, 0.99894880, 0.49315011],
    4785                                                                                                  [      -6.27260877, -0.00065164, 0.00039933, 7.27195713, 0.99800901, 0.99894903, 0.49315016],
    4786                                                                                                  [      -6.27260910, -0.00065150, 0.00039925, 7.27195760, 0.99800943, 0.99894925, 0.49315020],
    4787                                                                                                  [      -6.27260943, -0.00065137, 0.00039917, 7.27195806, 0.99800985, 0.99894947, 0.49315028],
    4788                                                                                                  [      -6.27260976, -0.00065123, 0.00039908, 7.27195853, 0.99801027, 0.99894969, 0.49315027],
    4789                                                                                                  [      -6.27261009, -0.00065109, 0.00039900, 7.27195899, 0.99801069, 0.99894991, 0.49315035],
    4790                                                                                                  [      -6.27261041, -0.00065096, 0.00039891, 7.27195946, 0.99801110, 0.99895013, 0.49315041],
    4791                                                                                                  [      -6.27261074, -0.00065082, 0.00039883, 7.27195992, 0.99801152, 0.99895035, 0.49315047],
    4792                                                                                                  [      -6.27261107, -0.00065068, 0.00039875, 7.27196039, 0.99801194, 0.99895057, 0.49315053],
    4793                                                                                                  [      -6.27261140, -0.00065055, 0.00039866, 7.27196085, 0.99801236, 0.99895079, 0.49315055],
    4794                                                                                                  [      -6.27261172, -0.00065041, 0.00039858, 7.27196132, 0.99801278, 0.99895101, 0.49315059],
    4795                                                                                                  [      -6.27261205, -0.00065027, 0.00039849, 7.27196178, 0.99801320, 0.99895123, 0.49315063],
    4796                                                                                                  [      -6.27261238, -0.00065014, 0.00039841, 7.27196224, 0.99801361, 0.99895145, 0.49315070],
    4797                                                                                                  [      -6.27261271, -0.00065000, 0.00039833, 7.27196271, 0.99801403, 0.99895167, 0.49315074],
    4798                                                                                                  [      -6.27261303, -0.00064986, 0.00039824, 7.27196317, 0.99801445, 0.99895189, 0.49315081],
    4799                                                                                                  [      -6.27261336, -0.00064973, 0.00039816, 7.27196363, 0.99801486, 0.99895212, 0.49315083],
    4800                                                                                                  [      -6.27261369, -0.00064959, 0.00039808, 7.27196410, 0.99801528, 0.99895233, 0.49315088],
    4801                                                                                                  [      -6.27261401, -0.00064945, 0.00039799, 7.27196456, 0.99801570, 0.99895255, 0.49315095],
    4802                                                                                                  [      -6.27261434, -0.00064932, 0.00039791, 7.27196502, 0.99801611, 0.99895277, 0.49315102],
    4803                                                                                                  [      -6.27261466, -0.00064918, 0.00039782, 7.27196548, 0.99801653, 0.99895299, 0.49315101],
    4804                                                                                                  [      -6.27261499, -0.00064904, 0.00039774, 7.27196595, 0.99801695, 0.99895321, 0.49315109],
    4805                                                                                                  [      -6.27261532, -0.00064891, 0.00039766, 7.27196641, 0.99801736, 0.99895343, 0.49315112],
    4806                                                                                                  [      -6.27261564, -0.00064877, 0.00039757, 7.27196687, 0.99801778, 0.99895365, 0.49315120],
    4807                                                                                                  [      -6.27261597, -0.00064864, 0.00039749, 7.27196733, 0.99801819, 0.99895387, 0.49315122],
    4808                                                                                                  [      -6.27261629, -0.00064850, 0.00039741, 7.27196779, 0.99801861, 0.99895409, 0.49315129],
    4809                                                                                                  [      -6.27261662, -0.00064836, 0.00039732, 7.27196825, 0.99801902, 0.99895431, 0.49315134],
    4810                                                                                                  [      -6.27261694, -0.00064823, 0.00039724, 7.27196871, 0.99801944, 0.99895453, 0.49315136],
    4811                                                                                                  [      -6.27261727, -0.00064809, 0.00039716, 7.27196917, 0.99801985, 0.99895475, 0.49315141],
    4812                                                                                                  [      -6.27261759, -0.00064796, 0.00039707, 7.27196963, 0.99802027, 0.99895497, 0.49315149],
    4813                                                                                                  [      -6.27261792, -0.00064782, 0.00039699, 7.27197009, 0.99802068, 0.99895519, 0.49315153],
    4814                                                                                                  [      -6.27261824, -0.00064769, 0.00039691, 7.27197056, 0.99802110, 0.99895540, 0.49315156],
    4815                                                                                                  [      -6.27261857, -0.00064755, 0.00039683, 7.27197101, 0.99802151, 0.99895562, 0.49315162],
    4816                                                                                                  [      -6.27261889, -0.00064742, 0.00039674, 7.27197147, 0.99802193, 0.99895584, 0.49315167],
    4817                                                                                                  [      -6.27261921, -0.00064728, 0.00039666, 7.27197193, 0.99802234, 0.99895606, 0.49315173],
    4818                                                                                                  [      -6.27261954, -0.00064715, 0.00039658, 7.27197239, 0.99802275, 0.99895628, 0.49315176],
    4819                                                                                                  [      -6.27261986, -0.00064701, 0.00039649, 7.27197285, 0.99802317, 0.99895650, 0.49315180],
    4820                                                                                                  [      -6.27262019, -0.00064687, 0.00039641, 7.27197331, 0.99802358, 0.99895671, 0.49315186],
    4821                                                                                                  [      -6.27262051, -0.00064674, 0.00039633, 7.27197377, 0.99802399, 0.99895693, 0.49315191],
    4822                                                                                                  [      -6.27262083, -0.00064660, 0.00039624, 7.27197423, 0.99802441, 0.99895715, 0.49315198],
    4823                                                                                                  [      -6.27262116, -0.00064647, 0.00039616, 7.27197469, 0.99802482, 0.99895737, 0.49315200],
    4824                                                                                                  [      -6.27262148, -0.00064633, 0.00039608, 7.27197515, 0.99802523, 0.99895759, 0.49315204],
    4825                                                                                                  [      -6.27262180, -0.00064620, 0.00039600, 7.27197560, 0.99802564, 0.99895780, 0.49315211],
    4826                                                                                                  [      -6.27262213, -0.00064606, 0.00039591, 7.27197606, 0.99802606, 0.99895802, 0.49315216],
    4827                                                                                                  [      -6.27262245, -0.00064593, 0.00039583, 7.27197652, 0.99802647, 0.99895824, 0.49315219],
    4828                                                                                                  [      -6.27262277, -0.00064579, 0.00039575, 7.27197698, 0.99802688, 0.99895846, 0.49315225],
    4829                                                                                                  [      -6.27262309, -0.00064566, 0.00039567, 7.27197743, 0.99802729, 0.99895867, 0.49315226],
    4830                                                                                                  [      -6.27262342, -0.00064553, 0.00039558, 7.27197789, 0.99802770, 0.99895889, 0.49315233],
    4831                                                                                                  [      -6.27262374, -0.00064539, 0.00039550, 7.27197835, 0.99802812, 0.99895911, 0.49315238],
    4832                                                                                                  [      -6.27262406, -0.00064526, 0.00039542, 7.27197880, 0.99802853, 0.99895933, 0.49315244],
    4833                                                                                                  [      -6.27262438, -0.00064512, 0.00039534, 7.27197926, 0.99802894, 0.99895954, 0.49315248],
    4834                                                                                                  [      -6.27262470, -0.00064499, 0.00039525, 7.27197972, 0.99802935, 0.99895976, 0.49315254],
    4835                                                                                                  [      -6.27262503, -0.00064485, 0.00039517, 7.27198017, 0.99802976, 0.99895998, 0.49315255],
    4836                                                                                                  [      -6.27262535, -0.00064472, 0.00039509, 7.27198063, 0.99803017, 0.99896019, 0.49315260],
    4837                                                                                                  [      -6.27262567, -0.00064458, 0.00039501, 7.27198108, 0.99803058, 0.99896041, 0.49315266],
    4838                                                                                                  [      -6.27262599, -0.00064445, 0.00039492, 7.27198154, 0.99803099, 0.99896063, 0.49315272],
    4839                                                                                                  [      -6.27262631, -0.00064432, 0.00039484, 7.27198199, 0.99803140, 0.99896084, 0.49315276],
    4840                                                                                                  [      -6.27262663, -0.00064418, 0.00039476, 7.27198245, 0.99803181, 0.99896106, 0.49315283],
    4841                                                                                                  [      -6.27262695, -0.00064405, 0.00039468, 7.27198290, 0.99803222, 0.99896127, 0.49315287],
    4842                                                                                                  [      -6.27262727, -0.00064391, 0.00039460, 7.27198336, 0.99803263, 0.99896149, 0.49315291],
    4843                                                                                                  [      -6.27262759, -0.00064378, 0.00039451, 7.27198381, 0.99803304, 0.99896171, 0.49315298],
    4844                                                                                                  [      -6.27262792, -0.00064365, 0.00039443, 7.27198427, 0.99803345, 0.99896192, 0.49315301],
    4845                                                                                                  [      -6.27262824, -0.00064351, 0.00039435, 7.27198472, 0.99803386, 0.99896214, 0.49315305],
    4846                                                                                                  [      -6.27262856, -0.00064338, 0.00039427, 7.27198518, 0.99803427, 0.99896235, 0.49315310],
    4847                                                                                                  [      -6.27262888, -0.00064325, 0.00039418, 7.27198563, 0.99803468, 0.99896257, 0.49315315],
    4848                                                                                                  [      -6.27262920, -0.00064311, 0.00039410, 7.27198608, 0.99803508, 0.99896279, 0.49315320],
    4849                                                                                                  [      -6.27262952, -0.00064298, 0.00039402, 7.27198654, 0.99803549, 0.99896300, 0.49315324],
    4850                                                                                                  [      -6.27262984, -0.00064284, 0.00039394, 7.27198699, 0.99803590, 0.99896322, 0.49315329],
    4851                                                                                                  [      -6.27263015, -0.00064271, 0.00039386, 7.27198744, 0.99803631, 0.99896343, 0.49315335],
    4852                                                                                                  [      -6.27263047, -0.00064258, 0.00039378, 7.27198790, 0.99803672, 0.99896365, 0.49315341],
    4853                                                                                                  [      -6.27263079, -0.00064244, 0.00039369, 7.27198835, 0.99803712, 0.99896386, 0.49315341],
    4854                                                                                                  [      -6.27263111, -0.00064231, 0.00039361, 7.27198880, 0.99803753, 0.99896408, 0.49315348],
    4855                                                                                                  [      -6.27263143, -0.00064218, 0.00039353, 7.27198925, 0.99803794, 0.99896429, 0.49315355],
    4856                                                                                                  [      -6.27263175, -0.00064204, 0.00039345, 7.27198971, 0.99803835, 0.99896451, 0.49315360],
    4857                                                                                                  [      -6.27263207, -0.00064191, 0.00039337, 7.27199016, 0.99803875, 0.99896472, 0.49315362],
    4858                                                                                                  [      -6.27263239, -0.00064178, 0.00039329, 7.27199061, 0.99803916, 0.99896494, 0.49315366],
    4859                                                                                                  [      -6.27263271, -0.00064165, 0.00039320, 7.27199106, 0.99803957, 0.99896515, 0.49315370],
    4860                                                                                                  [      -6.27263302, -0.00064151, 0.00039312, 7.27199151, 0.99803997, 0.99896537, 0.49315378],
    4861                                                                                                  [      -6.27263334, -0.00064138, 0.00039304, 7.27199196, 0.99804038, 0.99896558, 0.49315382],
    4862                                                                                                  [      -6.27263366, -0.00064125, 0.00039296, 7.27199241, 0.99804079, 0.99896579, 0.49315384],
    4863                                                                                                  [      -6.27263398, -0.00064111, 0.00039288, 7.27199287, 0.99804119, 0.99896601, 0.49315390],
    4864                                                                                                  [      -6.27263430, -0.00064098, 0.00039280, 7.27199332, 0.99804160, 0.99896622, 0.49315398],
    4865                                                                                                  [      -6.27263461, -0.00064085, 0.00039271, 7.27199377, 0.99804200, 0.99896644, 0.49315398],
    4866                                                                                                  [      -6.27263493, -0.00064072, 0.00039263, 7.27199422, 0.99804241, 0.99896665, 0.49315402],
    4867                                                                                                  [      -6.27263525, -0.00064058, 0.00039255, 7.27199467, 0.99804281, 0.99896686, 0.49315410],
    4868                                                                                                  [      -6.27263557, -0.00064045, 0.00039247, 7.27199512, 0.99804322, 0.99896708, 0.49315415],
    4869                                                                                                  [      -6.27263588, -0.00064032, 0.00039239, 7.27199557, 0.99804362, 0.99896729, 0.49315420],
    4870                                                                                                  [      -6.27263620, -0.00064019, 0.00039231, 7.27199602, 0.99804403, 0.99896751, 0.49315423],
    4871                                                                                                  [      -6.27263652, -0.00064005, 0.00039223, 7.27199646, 0.99804443, 0.99896772, 0.49315429],
    4872                                                                                                  [      -6.27263683, -0.00063992, 0.00039215, 7.27199691, 0.99804484, 0.99896793, 0.49315433],
    4873                                                                                                  [      -6.27263715, -0.00063979, 0.00039206, 7.27199736, 0.99804524, 0.99896815, 0.49315438],
    4874                                                                                                  [      -6.27263747, -0.00063966, 0.00039198, 7.27199781, 0.99804565, 0.99896836, 0.49315441],
    4875                                                                                                  [      -6.27263778, -0.00063952, 0.00039190, 7.27199826, 0.99804605, 0.99896857, 0.49315445],
    4876                                                                                                  [      -6.27263810, -0.00063939, 0.00039182, 7.27199871, 0.99804645, 0.99896879, 0.49315452],
    4877                                                                                                  [      -6.27263842, -0.00063926, 0.00039174, 7.27199916, 0.99804686, 0.99896900, 0.49315453],
    4878                                                                                                  [      -6.27263873, -0.00063913, 0.00039166, 7.27199960, 0.99804726, 0.99896921, 0.49315461],
    4879                                                                                                  [      -6.27263905, -0.00063900, 0.00039158, 7.27200005, 0.99804766, 0.99896942, 0.49315465],
    4880                                                                                                  [      -6.27263936, -0.00063886, 0.00039150, 7.27200050, 0.99804807, 0.99896964, 0.49315471],
    4881                                                                                                  [      -6.27263968, -0.00063873, 0.00039142, 7.27200095, 0.99804847, 0.99896985, 0.49315476],
    4882                                                                                                  [      -6.27263999, -0.00063860, 0.00039134, 7.27200139, 0.99804887, 0.99897006, 0.49315480],
    4883                                                                                                  [      -6.27264031, -0.00063847, 0.00039126, 7.27200184, 0.99804928, 0.99897028, 0.49315486],
    4884                                                                                                  [      -6.27264063, -0.00063834, 0.00039117, 7.27200229, 0.99804968, 0.99897049, 0.49315489],
    4885                                                                                                  [      -6.27264094, -0.00063821, 0.00039109, 7.27200273, 0.99805008, 0.99897070, 0.49315491],
    4886                                                                                                  [      -6.27264126, -0.00063807, 0.00039101, 7.27200318, 0.99805048, 0.99897091, 0.49315503],
    4887                                                                                                  [      -6.27264157, -0.00063794, 0.00039093, 7.27200363, 0.99805088, 0.99897112, 0.49315504],
    4888                                                                                                  [      -6.27264188, -0.00063781, 0.00039085, 7.27200407, 0.99805129, 0.99897134, 0.49315507],
    4889                                                                                                  [      -6.27264220, -0.00063768, 0.00039077, 7.27200452, 0.99805169, 0.99897155, 0.49315512],
    4890                                                                                                  [      -6.27264251, -0.00063755, 0.00039069, 7.27200496, 0.99805209, 0.99897176, 0.49315517],
    4891                                                                                                  [      -6.27264283, -0.00063742, 0.00039061, 7.27200541, 0.99805249, 0.99897197, 0.49315521],
    4892                                                                                                  [      -6.27264314, -0.00063729, 0.00039053, 7.27200586, 0.99805289, 0.99897218, 0.49315529],
    4893                                                                                                  [      -6.27264346, -0.00063716, 0.00039045, 7.27200630, 0.99805329, 0.99897240, 0.49315533],
    4894                                                                                                  [      -6.27264377, -0.00063702, 0.00039037, 7.27200675, 0.99805369, 0.99897261, 0.49315538],
    4895                                                                                                  [      -6.27264408, -0.00063689, 0.00039029, 7.27200719, 0.99805409, 0.99897282, 0.49315540],
    4896                                                                                                  [      -6.27264440, -0.00063676, 0.00039021, 7.27200764, 0.99805450, 0.99897303, 0.49315545],
    4897                                                                                                  [      -6.27264471, -0.00063663, 0.00039013, 7.27200808, 0.99805490, 0.99897324, 0.49315550],
    4898                                                                                                  [      -6.27264502, -0.00063650, 0.00039005, 7.27200852, 0.99805530, 0.99897345, 0.49315556],
    4899                                                                                                  [      -6.27264534, -0.00063637, 0.00038997, 7.27200897, 0.99805570, 0.99897366, 0.49315563],
    4900                                                                                                  [      -6.27264565, -0.00063624, 0.00038989, 7.27200941, 0.99805610, 0.99897387, 0.49315563],
    4901                                                                                                  [      -6.27264596, -0.00063611, 0.00038981, 7.27200986, 0.99805649, 0.99897409, 0.49315568],
    4902                                                                                                  [      -6.27264628, -0.00063598, 0.00038973, 7.27201030, 0.99805689, 0.99897430, 0.49315572],
    4903                                                                                                  [      -6.27264659, -0.00063585, 0.00038965, 7.27201074, 0.99805729, 0.99897451, 0.49315579],
    4904                                                                                                  [      -6.27264690, -0.00063572, 0.00038957, 7.27201119, 0.99805769, 0.99897472, 0.49315582],
    4905                                                                                                  [      -6.27264721, -0.00063559, 0.00038949, 7.27201163, 0.99805809, 0.99897493, 0.49315589],
    4906                                                                                                  [      -6.27264753, -0.00063545, 0.00038941, 7.27201207, 0.99805849, 0.99897514, 0.49315595],
    4907                                                                                                  [      -6.27264784, -0.00063532, 0.00038933, 7.27201251, 0.99805889, 0.99897535, 0.49315600],
    4908                                                                                                  [      -6.27264815, -0.00063519, 0.00038925, 7.27201296, 0.99805929, 0.99897556, 0.49315603],
    4909                                                                                                  [      -6.27264846, -0.00063506, 0.00038917, 7.27201340, 0.99805969, 0.99897577, 0.49315606],
    4910                                                                                                  [      -6.27264877, -0.00063493, 0.00038909, 7.27201384, 0.99806008, 0.99897598, 0.49315609],
    4911                                                                                                  [      -6.27264909, -0.00063480, 0.00038901, 7.27201428, 0.99806048, 0.99897619, 0.49315614],
    4912                                                                                                  [      -6.27264940, -0.00063467, 0.00038893, 7.27201472, 0.99806088, 0.99897640, 0.49315621],
    4913                                                                                                  [      -6.27264971, -0.00063454, 0.00038885, 7.27201517, 0.99806128, 0.99897661, 0.49315622],
    4914                                                                                                  [      -6.27265002, -0.00063441, 0.00038877, 7.27201561, 0.99806168, 0.99897682, 0.49315632],
    4915                                                                                                  [      -6.27265033, -0.00063428, 0.00038869, 7.27201605, 0.99806207, 0.99897703, 0.49315636],
    4916                                                                                                  [      -6.27265064, -0.00063415, 0.00038861, 7.27201649, 0.99806247, 0.99897724, 0.49315639],
    4917                                                                                                  [      -6.27265095, -0.00063402, 0.00038853, 7.27201693, 0.99806287, 0.99897745, 0.49315644],
    4918                                                                                                  [      -6.27265126, -0.00063389, 0.00038845, 7.27201737, 0.99806326, 0.99897766, 0.49315648],
    4919                                                                                                  [      -6.27265157, -0.00063376, 0.00038837, 7.27201781, 0.99806366, 0.99897787, 0.49315654],
    4920                                                                                                  [      -6.27265189, -0.00063363, 0.00038829, 7.27201825, 0.99806406, 0.99897808, 0.49315656],
    4921                                                                                                  [      -6.27265220, -0.00063350, 0.00038821, 7.27201869, 0.99806445, 0.99897829, 0.49315663],
    4922                                                                                                  [      -6.27265251, -0.00063337, 0.00038813, 7.27201913, 0.99806485, 0.99897849, 0.49315664],
    4923                                                                                                  [      -6.27265282, -0.00063324, 0.00038805, 7.27201957, 0.99806525, 0.99897870, 0.49315672],
    4924                                                                                                  [      -6.27265313, -0.00063312, 0.00038797, 7.27202001, 0.99806564, 0.99897891, 0.49315678],
    4925                                                                                                  [      -6.27265344, -0.00063299, 0.00038789, 7.27202045, 0.99806604, 0.99897912, 0.49315679],
    4926                                                                                                  [      -6.27265375, -0.00063286, 0.00038781, 7.27202089, 0.99806643, 0.99897933, 0.49315682],
    4927                                                                                                  [      -6.27265406, -0.00063273, 0.00038773, 7.27202133, 0.99806683, 0.99897954, 0.49315688],
    4928                                                                                                  [      -6.27265436, -0.00063260, 0.00038765, 7.27202177, 0.99806722, 0.99897975, 0.49315697],
    4929                                                                                                  [      -6.27265467, -0.00063247, 0.00038758, 7.27202221, 0.99806762, 0.99897996, 0.49315698],
    4930                                                                                                  [      -6.27265498, -0.00063234, 0.00038750, 7.27202264, 0.99806801, 0.99898016, 0.49315705],
    4931                                                                                                  [      -6.27265529, -0.00063221, 0.00038742, 7.27202308, 0.99806841, 0.99898037, 0.49315710],
    4932                                                                                                  [      -6.27265560, -0.00063208, 0.00038734, 7.27202352, 0.99806880, 0.99898058, 0.49315714],
    4933                                                                                                  [      -6.27265591, -0.00063195, 0.00038726, 7.27202396, 0.99806920, 0.99898079, 0.49315716],
    4934                                                                                                  [      -6.27265622, -0.00063182, 0.00038718, 7.27202440, 0.99806959, 0.99898100, 0.49315722],
    4935                                                                                                  [      -6.27265653, -0.00063169, 0.00038710, 7.27202483, 0.99806999, 0.99898121, 0.49315726],
    4936                                                                                                  [      -6.27265684, -0.00063157, 0.00038702, 7.27202527, 0.99807038, 0.99898141, 0.49315731],
    4937                                                                                                  [      -6.27265714, -0.00063144, 0.00038694, 7.27202571, 0.99807077, 0.99898162, 0.49315737],
    4938                                                                                                  [      -6.27265745, -0.00063131, 0.00038686, 7.27202614, 0.99807117, 0.99898183, 0.49315740],
    4939                                                                                                  [      -6.27265776, -0.00063118, 0.00038678, 7.27202658, 0.99807156, 0.99898204, 0.49315744],
    4940                                                                                                  [      -6.27265807, -0.00063105, 0.00038671, 7.27202702, 0.99807195, 0.99898224, 0.49315747],
    4941                                                                                                  [      -6.27265838, -0.00063092, 0.00038663, 7.27202745, 0.99807235, 0.99898245, 0.49315751],
    4942                                                                                                  [      -6.27265868, -0.00063079, 0.00038655, 7.27202789, 0.99807274, 0.99898266, 0.49315758],
    4943                                                                                                  [      -6.27265899, -0.00063066, 0.00038647, 7.27202833, 0.99807313, 0.99898287, 0.49315760],
    4944                                                                                                  [      -6.27265930, -0.00063054, 0.00038639, 7.27202876, 0.99807353, 0.99898307, 0.49315770],
    4945                                                                                                  [      -6.27265961, -0.00063041, 0.00038631, 7.27202920, 0.99807392, 0.99898328, 0.49315771],
    4946                                                                                                  [      -6.27265991, -0.00063028, 0.00038623, 7.27202963, 0.99807431, 0.99898349, 0.49315780],
    4947                                                                                                  [      -6.27266022, -0.00063015, 0.00038615, 7.27203007, 0.99807470, 0.99898369, 0.49315780],
    4948                                                                                                  [      -6.27266053, -0.00063002, 0.00038608, 7.27203051, 0.99807510, 0.99898390, 0.49315786],
    4949                                                                                                  [      -6.27266083, -0.00062989, 0.00038600, 7.27203094, 0.99807549, 0.99898411, 0.49315792],
    4950                                                                                                  [      -6.27266114, -0.00062977, 0.00038592, 7.27203138, 0.99807588, 0.99898432, 0.49315794],
    4951                                                                                                  [      -6.27266145, -0.00062964, 0.00038584, 7.27203181, 0.99807627, 0.99898452, 0.49315802],
    4952                                                                                                  [      -6.27266175, -0.00062951, 0.00038576, 7.27203224, 0.99807666, 0.99898473, 0.49315805],
    4953                                                                                                  [      -6.27266206, -0.00062938, 0.00038568, 7.27203268, 0.99807705, 0.99898493, 0.49315808],
    4954                                                                                                  [      -6.27266237, -0.00062925, 0.00038560, 7.27203311, 0.99807744, 0.99898514, 0.49315812],
    4955                                                                                                  [      -6.27266267, -0.00062913, 0.00038553, 7.27203355, 0.99807784, 0.99898535, 0.49315818],
    4956                                                                                                  [      -6.27266298, -0.00062900, 0.00038545, 7.27203398, 0.99807823, 0.99898555, 0.49315821],
    4957                                                                                                  [      -6.27266329, -0.00062887, 0.00038537, 7.27203441, 0.99807862, 0.99898576, 0.49315828],
    4958                                                                                                  [      -6.27266359, -0.00062874, 0.00038529, 7.27203485, 0.99807901, 0.99898597, 0.49315830],
    4959                                                                                                  [      -6.27266390, -0.00062862, 0.00038521, 7.27203528, 0.99807940, 0.99898617, 0.49315836],
    4960                                                                                                  [      -6.27266420, -0.00062849, 0.00038513, 7.27203571, 0.99807979, 0.99898638, 0.49315841],
    4961                                                                                                  [      -6.27266451, -0.00062836, 0.00038506, 7.27203615, 0.99808018, 0.99898658, 0.49315847],
    4962                                                                                                  [      -6.27266481, -0.00062823, 0.00038498, 7.27203658, 0.99808057, 0.99898679, 0.49315850],
    4963                                                                                                  [      -6.27266512, -0.00062811, 0.00038490, 7.27203701, 0.99808096, 0.99898700, 0.49315856],
    4964                                                                                                  [      -6.27266542, -0.00062798, 0.00038482, 7.27203744, 0.99808135, 0.99898720, 0.49315859],
    4965                                                                                                  [      -6.27266573, -0.00062785, 0.00038474, 7.27203788, 0.99808174, 0.99898741, 0.49315862],
    4966                                                                                                  [      -6.27266603, -0.00062772, 0.00038467, 7.27203831, 0.99808213, 0.99898761, 0.49315867],
    4967                                                                                                  [      -6.27266634, -0.00062760, 0.00038459, 7.27203874, 0.99808251, 0.99898782, 0.49315875],
    4968                                                                                                  [      -6.27266664, -0.00062747, 0.00038451, 7.27203917, 0.99808290, 0.99898802, 0.49315880],
    4969                                                                                                  [      -6.27266695, -0.00062734, 0.00038443, 7.27203960, 0.99808329, 0.99898823, 0.49315883],
    4970                                                                                                  [      -6.27266725, -0.00062721, 0.00038435, 7.27204004, 0.99808368, 0.99898843, 0.49315887],
    4971                                                                                                  [      -6.27266755, -0.00062709, 0.00038428, 7.27204047, 0.99808407, 0.99898864, 0.49315892],
    4972                                                                                                  [      -6.27266786, -0.00062696, 0.00038420, 7.27204090, 0.99808446, 0.99898884, 0.49315895],
    4973                                                                                                  [      -6.27266816, -0.00062683, 0.00038412, 7.27204133, 0.99808485, 0.99898905, 0.49315899],
    4974                                                                                                  [      -6.27266847, -0.00062671, 0.00038404, 7.27204176, 0.99808523, 0.99898925, 0.49315906],
    4975                                                                                                  [      -6.27266877, -0.00062658, 0.00038396, 7.27204219, 0.99808562, 0.99898946, 0.49315910],
    4976                                                                                                  [      -6.27266907, -0.00062645, 0.00038389, 7.27204262, 0.99808601, 0.99898966, 0.49315911],
    4977                                                                                                  [      -6.27266938, -0.00062633, 0.00038381, 7.27204305, 0.99808640, 0.99898987, 0.49315917],
    4978                                                                                                  [      -6.27266968, -0.00062620, 0.00038373, 7.27204348, 0.99808678, 0.99899007, 0.49315922],
    4979                                                                                                  [      -6.27266998, -0.00062607, 0.00038365, 7.27204391, 0.99808717, 0.99899027, 0.49315926],
    4980                                                                                                  [      -6.27267028, -0.00062595, 0.00038358, 7.27204434, 0.99808756, 0.99899048, 0.49315930],
    4981                                                                                                  [      -6.27267059, -0.00062582, 0.00038350, 7.27204477, 0.99808794, 0.99899068, 0.49315934],
    4982                                                                                                  [      -6.27267089, -0.00062569, 0.00038342, 7.27204520, 0.99808833, 0.99899089, 0.49315940],
    4983                                                                                                  [      -6.27267119, -0.00062557, 0.00038334, 7.27204563, 0.99808872, 0.99899109, 0.49315945],
    4984                                                                                                  [      -6.27267150, -0.00062544, 0.00038327, 7.27204606, 0.99808910, 0.99899129, 0.49315950],
    4985                                                                                                  [      -6.27267180, -0.00062531, 0.00038319, 7.27204648, 0.99808949, 0.99899150, 0.49315953],
    4986                                                                                                  [      -6.27267210, -0.00062519, 0.00038311, 7.27204691, 0.99808988, 0.99899170, 0.49315956],
    4987                                                                                                  [      -6.27267240, -0.00062506, 0.00038303, 7.27204734, 0.99809026, 0.99899191, 0.49315961],
    4988                                                                                                  [      -6.27267270, -0.00062494, 0.00038296, 7.27204777, 0.99809065, 0.99899211, 0.49315968],
    4989                                                                                                  [      -6.27267301, -0.00062481, 0.00038288, 7.27204820, 0.99809103, 0.99899231, 0.49315973],
    4990                                                                                                  [      -6.27267331, -0.00062468, 0.00038280, 7.27204863, 0.99809142, 0.99899252, 0.49315977],
    4991                                                                                                  [      -6.27267361, -0.00062456, 0.00038272, 7.27204905, 0.99809180, 0.99899272, 0.49315980],
    4992                                                                                                  [      -6.27267391, -0.00062443, 0.00038265, 7.27204948, 0.99809219, 0.99899292, 0.49315984],
    4993                                                                                                  [      -6.27267421, -0.00062431, 0.00038257, 7.27204991, 0.99809257, 0.99899313, 0.49315989],
    4994                                                                                                  [      -6.27267451, -0.00062418, 0.00038249, 7.27205033, 0.99809296, 0.99899333, 0.49315993],
    4995                                                                                                  [      -6.27267481, -0.00062405, 0.00038241, 7.27205076, 0.99809334, 0.99899353, 0.49315999],
    4996                                                                                                  [      -6.27267512, -0.00062393, 0.00038234, 7.27205119, 0.99809373, 0.99899373, 0.49316004],
    4997                                                                                                  [      -6.27267542, -0.00062380, 0.00038226, 7.27205162, 0.99809411, 0.99899394, 0.49316007],
    4998                                                                                                  [      -6.27267572, -0.00062368, 0.00038218, 7.27205204, 0.99809450, 0.99899414, 0.49316011],
    4999                                                                                                  [      -6.27267602, -0.00062355, 0.00038211, 7.27205247, 0.99809488, 0.99899434, 0.49316016],
    5000                                                                                                  [      -6.27267632, -0.00062342, 0.00038203, 7.27205289, 0.99809527, 0.99899455, 0.49316020],
    5001                                                                                                  [      -6.27267662, -0.00062330, 0.00038195, 7.27205332, 0.99809565, 0.99899475, 0.49316023],
    5002                                                                                                  [      -6.27267692, -0.00062317, 0.00038188, 7.27205375, 0.99809603, 0.99899495, 0.49316033],
    5003                                                                                                  [      -6.27267722, -0.00062305, 0.00038180, 7.27205417, 0.99809642, 0.99899515, 0.49316032],
    5004                                                                                                  [      -6.27267752, -0.00062292, 0.00038172, 7.27205460, 0.99809680, 0.99899536, 0.49316037],
    5005                                                                                                  [      -6.27267782, -0.00062280, 0.00038164, 7.27205502, 0.99809718, 0.99899556, 0.49316043],
    5006                                                                                                  [      -6.27267812, -0.00062267, 0.00038157, 7.27205545, 0.99809757, 0.99899576, 0.49316049],
    5007                                                                                                  [      -6.27267842, -0.00062255, 0.00038149, 7.27205587, 0.99809795, 0.99899596, 0.49316053],
    5008                                                                                                  [      -6.27267872, -0.00062242, 0.00038141, 7.27205630, 0.99809833, 0.99899616, 0.49316060],
    5009                                                                                                  [      -6.27267902, -0.00062230, 0.00038134, 7.27205672, 0.99809871, 0.99899637, 0.49316061],
    5010                                                                                                  [      -6.27267932, -0.00062217, 0.00038126, 7.27205715, 0.99809910, 0.99899657, 0.49316068],
    5011                                                                                                  [      -6.27267962, -0.00062205, 0.00038118, 7.27205757, 0.99809948, 0.99899677, 0.49316072],
    5012                                                                                                  [      -6.27267992, -0.00062192, 0.00038111, 7.27205799, 0.99809986, 0.99899697, 0.49316074],
    5013                                                                                                  [      -6.27268021, -0.00062180, 0.00038103, 7.27205842, 0.99810024, 0.99899717, 0.49316079],
    5014                                                                                                  [      -6.27268051, -0.00062167, 0.00038095, 7.27205884, 0.99810062, 0.99899737, 0.49316083],
    5015                                                                                                  [      -6.27268081, -0.00062155, 0.00038088, 7.27205927, 0.99810100, 0.99899757, 0.49316088],
    5016                                                                                                  [      -6.27268111, -0.00062142, 0.00038080, 7.27205969, 0.99810139, 0.99899778, 0.49316090],
    5017                                                                                                  [      -6.27268141, -0.00062130, 0.00038072, 7.27206011, 0.99810177, 0.99899798, 0.49316099],
    5018                                                                                                  [      -6.27268171, -0.00062117, 0.00038065, 7.27206053, 0.99810215, 0.99899818, 0.49316102],
    5019                                                                                                  [      -6.27268201, -0.00062105, 0.00038057, 7.27206096, 0.99810253, 0.99899838, 0.49316107],
    5020                                                                                                  [      -6.27268230, -0.00062092, 0.00038050, 7.27206138, 0.99810291, 0.99899858, 0.49316107],
    5021                                                                                                  [      -6.27268260, -0.00062080, 0.00038042, 7.27206180, 0.99810329, 0.99899878, 0.49316112],
    5022                                                                                                  [      -6.27268290, -0.00062067, 0.00038034, 7.27206223, 0.99810367, 0.99899898, 0.49316121],
    5023                                                                                                  [      -6.27268320, -0.00062055, 0.00038027, 7.27206265, 0.99810405, 0.99899918, 0.49316122],
    5024                                                                                                  [      -6.27268350, -0.00062043, 0.00038019, 7.27206307, 0.99810443, 0.99899938, 0.49316127],
    5025                                                                                                  [      -6.27268379, -0.00062030, 0.00038011, 7.27206349, 0.99810481, 0.99899958, 0.49316133],
    5026                                                                                                  [      -6.27268409, -0.00062018, 0.00038004, 7.27206391, 0.99810519, 0.99899978, 0.49316137],
    5027                                                                                                  [      -6.27268439, -0.00062005, 0.00037996, 7.27206433, 0.99810557, 0.99899999, 0.49316141],
    5028                                                                                                  [      -6.27268468, -0.00061993, 0.00037989, 7.27206476, 0.99810595, 0.99900019, 0.49316145],
    5029                                                                                                  [      -6.27268498, -0.00061980, 0.00037981, 7.27206518, 0.99810633, 0.99900039, 0.49316150],
    5030                                                                                                  [      -6.27268528, -0.00061968, 0.00037973, 7.27206560, 0.99810671, 0.99900059, 0.49316152],
    5031                                                                                                  [      -6.27268558, -0.00061956, 0.00037966, 7.27206602, 0.99810709, 0.99900079, 0.49316158],
    5032                                                                                                  [      -6.27268587, -0.00061943, 0.00037958, 7.27206644, 0.99810747, 0.99900099, 0.49316160],
    5033                                                                                                  [      -6.27268617, -0.00061931, 0.00037951, 7.27206686, 0.99810785, 0.99900119, 0.49316174],
    5034                                                                                                  [      -6.27268647, -0.00061919, 0.00037943, 7.27206728, 0.99810823, 0.99900139, 0.49316174],
    5035                                                                                                  [      -6.27268676, -0.00061906, 0.00037935, 7.27206770, 0.99810860, 0.99900159, 0.49316173],
    5036                                                                                                  [      -6.27268706, -0.00061894, 0.00037928, 7.27206812, 0.99810898, 0.99900179, 0.49316182],
    5037                                                                                                  [      -6.27268735, -0.00061881, 0.00037920, 7.27206854, 0.99810936, 0.99900198, 0.49316185],
    5038                                                                                                  [      -6.27268765, -0.00061869, 0.00037913, 7.27206896, 0.99810974, 0.99900218, 0.49316190],
    5039                                                                                                  [      -6.27268795, -0.00061857, 0.00037905, 7.27206938, 0.99811012, 0.99900238, 0.49316194],
    5040                                                                                                  [      -6.27268824, -0.00061844, 0.00037897, 7.27206980, 0.99811049, 0.99900258, 0.49316199],
    5041                                                                                                  [      -6.27268854, -0.00061832, 0.00037890, 7.27207022, 0.99811087, 0.99900278, 0.49316201],
    5042                                                                                                  [      -6.27268883, -0.00061820, 0.00037882, 7.27207064, 0.99811125, 0.99900298, 0.49316207],
    5043                                                                                                  [      -6.27268913, -0.00061807, 0.00037875, 7.27207106, 0.99811163, 0.99900318, 0.49316215],
    5044                                                                                                  [      -6.27268942, -0.00061795, 0.00037867, 7.27207147, 0.99811200, 0.99900338, 0.49316215],
    5045                                                                                                  [      -6.27268972, -0.00061783, 0.00037860, 7.27207189, 0.99811238, 0.99900358, 0.49316222],
    5046                                                                                                  [      -6.27269001, -0.00061770, 0.00037852, 7.27207231, 0.99811276, 0.99900378, 0.49316225],
    5047                                                                                                  [      -6.27269031, -0.00061758, 0.00037844, 7.27207273, 0.99811313, 0.99900398, 0.49316226],
    5048                                                                                                  [      -6.27269060, -0.00061746, 0.00037837, 7.27207315, 0.99811351, 0.99900418, 0.49316232],
    5049                                                                                                  [      -6.27269090, -0.00061733, 0.00037829, 7.27207356, 0.99811389, 0.99900437, 0.49316241],
    5050                                                                                                  [      -6.27269119, -0.00061721, 0.00037822, 7.27207398, 0.99811426, 0.99900457, 0.49316240],
    5051                                                                                                  [      -6.27269149, -0.00061709, 0.00037814, 7.27207440, 0.99811464, 0.99900477, 0.49316244],
    5052                                                                                                  [      -6.27269178, -0.00061696, 0.00037807, 7.27207482, 0.99811502, 0.99900497, 0.49316250],
    5053                                                                                                  [      -6.27269208, -0.00061684, 0.00037799, 7.27207523, 0.99811539, 0.99900517, 0.49316255],
    5054                                                                                                  [      -6.27269237, -0.00061672, 0.00037792, 7.27207565, 0.99811577, 0.99900537, 0.49316260],
    5055                                                                                                  [      -6.27269266, -0.00061660, 0.00037784, 7.27207607, 0.99811614, 0.99900556, 0.49316268],
    5056                                                                                                  [      -6.27269296, -0.00061647, 0.00037777, 7.27207648, 0.99811652, 0.99900576, 0.49316264],
    5057                                                                                                  [      -6.27269325, -0.00061635, 0.00037769, 7.27207690, 0.99811689, 0.99900596, 0.49316274],
    5058                                                                                                  [      -6.27269354, -0.00061623, 0.00037762, 7.27207732, 0.99811727, 0.99900616, 0.49316275],
    5059                                                                                                  [      -6.27269384, -0.00061610, 0.00037754, 7.27207773, 0.99811764, 0.99900636, 0.49316280],
    5060                                                                                                  [      -6.27269413, -0.00061598, 0.00037746, 7.27207815, 0.99811802, 0.99900655, 0.49316280],
    5061                                                                                                  [      -6.27269442, -0.00061586, 0.00037739, 7.27207857, 0.99811839, 0.99900675, 0.49316288],
    5062                                                                                                  [      -6.27269472, -0.00061574, 0.00037731, 7.27207898, 0.99811877, 0.99900695, 0.49316293],
    5063                                                                                                  [      -6.27269501, -0.00061561, 0.00037724, 7.27207940, 0.99811914, 0.99900715, 0.49316299],
    5064                                                                                                  [      -6.27269530, -0.00061549, 0.00037716, 7.27207981, 0.99811952, 0.99900734, 0.49316305],
    5065                                                                                                  [      -6.27269560, -0.00061537, 0.00037709, 7.27208023, 0.99811989, 0.99900754, 0.49316305],
    5066                                                                                                  [      -6.27269589, -0.00061525, 0.00037701, 7.27208064, 0.99812026, 0.99900774, 0.49316309],
    5067                                                                                                  [      -6.27269618, -0.00061512, 0.00037694, 7.27208106, 0.99812064, 0.99900794, 0.49316319],
    5068                                                                                                  [      -6.27269647, -0.00061500, 0.00037686, 7.27208147, 0.99812101, 0.99900813, 0.49316320],
    5069                                                                                                  [      -6.27269677, -0.00061488, 0.00037679, 7.27208189, 0.99812138, 0.99900833, 0.49316326],
    5070                                                                                                  [      -6.27269706, -0.00061476, 0.00037671, 7.27208230, 0.99812176, 0.99900853, 0.49316331],
    5071                                                                                                  [      -6.27269735, -0.00061464, 0.00037664, 7.27208271, 0.99812213, 0.99900872, 0.49316334],
    5072                                                                                                  [      -6.27269764, -0.00061451, 0.00037656, 7.27208313, 0.99812250, 0.99900892, 0.49316337],
    5073                                                                                                  [      -6.27269793, -0.00061439, 0.00037649, 7.27208354, 0.99812288, 0.99900912, 0.49316343],
    5074                                                                                                  [      -6.27269823, -0.00061427, 0.00037642, 7.27208396, 0.99812325, 0.99900931, 0.49316350],
    5075                                                                                                  [      -6.27269852, -0.00061415, 0.00037634, 7.27208437, 0.99812362, 0.99900951, 0.49316348],
    5076                                                                                                  [      -6.27269881, -0.00061403, 0.00037627, 7.27208478, 0.99812399, 0.99900971, 0.49316356],
    5077                                                                                                  [      -6.27269910, -0.00061390, 0.00037619, 7.27208520, 0.99812437, 0.99900990, 0.49316359],
    5078                                                                                                  [      -6.27269939, -0.00061378, 0.00037612, 7.27208561, 0.99812474, 0.99901010, 0.49316364],
    5079                                                                                                  [      -6.27269968, -0.00061366, 0.00037604, 7.27208602, 0.99812511, 0.99901030, 0.49316368],
    5080                                                                                                  [      -6.27269997, -0.00061354, 0.00037597, 7.27208643, 0.99812548, 0.99901049, 0.49316372],
    5081                                                                                                  [      -6.27270027, -0.00061342, 0.00037589, 7.27208685, 0.99812585, 0.99901069, 0.49316379],
    5082                                                                                                  [      -6.27270056, -0.00061330, 0.00037582, 7.27208726, 0.99812623, 0.99901089, 0.49316380],
    5083                                                                                                  [      -6.27270085, -0.00061318, 0.00037574, 7.27208767, 0.99812660, 0.99901108, 0.49316383],
    5084                                                                                                  [      -6.27270114, -0.00061305, 0.00037567, 7.27208808, 0.99812697, 0.99901128, 0.49316392],
    5085                                                                                                  [      -6.27270143, -0.00061293, 0.00037559, 7.27208850, 0.99812734, 0.99901147, 0.49316393],
    5086                                                                                                  [      -6.27270172, -0.00061281, 0.00037552, 7.27208891, 0.99812771, 0.99901167, 0.49316398],
    5087                                                                                                  [      -6.27270201, -0.00061269, 0.00037545, 7.27208932, 0.99812808, 0.99901186, 0.49316403],
    5088                                                                                                  [      -6.27270230, -0.00061257, 0.00037537, 7.27208973, 0.99812845, 0.99901206, 0.49316407],
    5089                                                                                                  [      -6.27270259, -0.00061245, 0.00037530, 7.27209014, 0.99812882, 0.99901226, 0.49316411],
    5090                                                                                                  [      -6.27270288, -0.00061233, 0.00037522, 7.27209055, 0.99812919, 0.99901245, 0.49316419],
    5091                                                                                                  [      -6.27270317, -0.00061221, 0.00037515, 7.27209096, 0.99812956, 0.99901265, 0.49316420],
    5092                                                                                                  [      -6.27270346, -0.00061208, 0.00037507, 7.27209137, 0.99812993, 0.99901284, 0.49316424],
    5093                                                                                                  [      -6.27270375, -0.00061196, 0.00037500, 7.27209178, 0.99813030, 0.99901304, 0.49316431],
    5094                                                                                                  [      -6.27270404, -0.00061184, 0.00037493, 7.27209219, 0.99813067, 0.99901323, 0.49316432],
    5095                                                                                                  [      -6.27270433, -0.00061172, 0.00037485, 7.27209260, 0.99813104, 0.99901343, 0.49316435],
    5096                                                                                                  [      -6.27270462, -0.00061160, 0.00037478, 7.27209301, 0.99813141, 0.99901362, 0.49316437],
    5097                                                                                                  [      -6.27270490, -0.00061148, 0.00037470, 7.27209342, 0.99813178, 0.99901382, 0.49316447],
    5098                                                                                                  [      -6.27270519, -0.00061136, 0.00037463, 7.27209383, 0.99813215, 0.99901401, 0.49316452],
    5099                                                                                                  [      -6.27270548, -0.00061124, 0.00037456, 7.27209424, 0.99813252, 0.99901421, 0.49316453],
    5100                                                                                                  [      -6.27270577, -0.00061112, 0.00037448, 7.27209465, 0.99813289, 0.99901440, 0.49316460],
    5101                                                                                                  [      -6.27270606, -0.00061100, 0.00037441, 7.27209506, 0.99813326, 0.99901460, 0.49316462],
    5102                                                                                                  [      -6.27270635, -0.00061088, 0.00037433, 7.27209547, 0.99813362, 0.99901479, 0.49316468],
    5103                                                                                                  [      -6.27270664, -0.00061076, 0.00037426, 7.27209588, 0.99813399, 0.99901498, 0.49316472],
    5104                                                                                                  [      -6.27270692, -0.00061064, 0.00037419, 7.27209629, 0.99813436, 0.99901518, 0.49316476],
    5105                                                                                                  [      -6.27270721, -0.00061051, 0.00037411, 7.27209670, 0.99813473, 0.99901537, 0.49316483],
    5106                                                                                                  [      -6.27270750, -0.00061039, 0.00037404, 7.27209711, 0.99813510, 0.99901557, 0.49316482],
    5107                                                                                                  [      -6.27270779, -0.00061027, 0.00037396, 7.27209751, 0.99813547, 0.99901576, 0.49316493],
    5108                                                                                                  [      -6.27270808, -0.00061015, 0.00037389, 7.27209792, 0.99813583, 0.99901596, 0.49316495],
    5109                                                                                                  [      -6.27270836, -0.00061003, 0.00037382, 7.27209833, 0.99813620, 0.99901615, 0.49316498],
    5110                                                                                                  [      -6.27270865, -0.00060991, 0.00037374, 7.27209874, 0.99813657, 0.99901634, 0.49316501],
    5111                                                                                                  [      -6.27270894, -0.00060979, 0.00037367, 7.27209915, 0.99813694, 0.99901654, 0.49316504],
    5112                                                                                                  [      -6.27270923, -0.00060967, 0.00037360, 7.27209955, 0.99813730, 0.99901673, 0.49316509],
    5113                                                                                                  [      -6.27270951, -0.00060955, 0.00037352, 7.27209996, 0.99813767, 0.99901692, 0.49316516],
    5114                                                                                                  [      -6.27270980, -0.00060943, 0.00037345, 7.27210037, 0.99813804, 0.99901712, 0.49316521],
    5115                                                                                                  [      -6.27271009, -0.00060931, 0.00037338, 7.27210078, 0.99813840, 0.99901731, 0.49316522],
    5116                                                                                                  [      -6.27271038, -0.00060919, 0.00037330, 7.27210118, 0.99813877, 0.99901751, 0.49316529],
    5117                                                                                                  [      -6.27271066, -0.00060907, 0.00037323, 7.27210159, 0.99813914, 0.99901770, 0.49316533],
    5118                                                                                                  [      -6.27271095, -0.00060895, 0.00037315, 7.27210200, 0.99813950, 0.99901789, 0.49316538],
    5119                                                                                                  [      -6.27271124, -0.00060883, 0.00037308, 7.27210240, 0.99813987, 0.99901808, 0.49316545],
    5120                                                                                                  [      -6.27271152, -0.00060871, 0.00037301, 7.27210281, 0.99814023, 0.99901828, 0.49316550],
    5121                                                                                                  [      -6.27271181, -0.00060859, 0.00037293, 7.27210321, 0.99814060, 0.99901847, 0.49316550],
    5122                                                                                                  [      -6.27271209, -0.00060847, 0.00037286, 7.27210362, 0.99814097, 0.99901866, 0.49316554],
    5123                                                                                                  [      -6.27271238, -0.00060836, 0.00037279, 7.27210403, 0.99814133, 0.99901886, 0.49316555],
    5124                                                                                                  [      -6.27271267, -0.00060824, 0.00037271, 7.27210443, 0.99814170, 0.99901905, 0.49316564],
    5125                                                                                                  [      -6.27271295, -0.00060812, 0.00037264, 7.27210484, 0.99814206, 0.99901924, 0.49316569],
    5126                                                                                                  [      -6.27271324, -0.00060800, 0.00037257, 7.27210524, 0.99814243, 0.99901944, 0.49316569],
    5127                                                                                                  [      -6.27271352, -0.00060788, 0.00037249, 7.27210565, 0.99814279, 0.99901963, 0.49316572],
    5128                                                                                                  [      -6.27271381, -0.00060776, 0.00037242, 7.27210605, 0.99814316, 0.99901982, 0.49316582],
    5129                                                                                                  [      -6.27271410, -0.00060764, 0.00037235, 7.27210646, 0.99814352, 0.99902001, 0.49316585],
    5130                                                                                                  [      -6.27271438, -0.00060752, 0.00037228, 7.27210686, 0.99814389, 0.99902021, 0.49316587],
    5131                                                                                                  [      -6.27271467, -0.00060740, 0.00037220, 7.27210727, 0.99814425, 0.99902040, 0.49316592],
    5132                                                                                                  [      -6.27271495, -0.00060728, 0.00037213, 7.27210767, 0.99814461, 0.99902059, 0.49316598],
    5133                                                                                                  [      -6.27271524, -0.00060716, 0.00037206, 7.27210807, 0.99814498, 0.99902078, 0.49316599],
    5134                                                                                                  [      -6.27271552, -0.00060704, 0.00037198, 7.27210848, 0.99814534, 0.99902097, 0.49316604],
    5135                                                                                                  [      -6.27271581, -0.00060692, 0.00037191, 7.27210888, 0.99814571, 0.99902117, 0.49316608],
    5136                                                                                                  [      -6.27271609, -0.00060680, 0.00037184, 7.27210929, 0.99814607, 0.99902136, 0.49316611],
    5137                                                                                                  [      -6.27271637, -0.00060669, 0.00037176, 7.27210969, 0.99814643, 0.99902155, 0.49316616],
    5138                                                                                                  [      -6.27271666, -0.00060657, 0.00037169, 7.27211009, 0.99814680, 0.99902174, 0.49316618],
    5139                                                                                                  [      -6.27271694, -0.00060645, 0.00037162, 7.27211050, 0.99814716, 0.99902193, 0.49316624],
    5140                                                                                                  [      -6.27271723, -0.00060633, 0.00037155, 7.27211090, 0.99814752, 0.99902213, 0.49316630],
    5141                                                                                                  [      -6.27271751, -0.00060621, 0.00037147, 7.27211130, 0.99814789, 0.99902232, 0.49316633],
    5142                                                                                                  [      -6.27271780, -0.00060609, 0.00037140, 7.27211170, 0.99814825, 0.99902251, 0.49316640],
    5143                                                                                                  [      -6.27271808, -0.00060597, 0.00037133, 7.27211211, 0.99814861, 0.99902270, 0.49316642],
    5144                                                                                                  [      -6.27271836, -0.00060585, 0.00037125, 7.27211251, 0.99814897, 0.99902289, 0.49316649],
    5145                                                                                                  [      -6.27271865, -0.00060574, 0.00037118, 7.27211291, 0.99814934, 0.99902308, 0.49316653],
    5146                                                                                                  [      -6.27271893, -0.00060562, 0.00037111, 7.27211331, 0.99814970, 0.99902327, 0.49316657],
    5147                                                                                                  [      -6.27271921, -0.00060550, 0.00037104, 7.27211371, 0.99815006, 0.99902346, 0.49316659],
    5148                                                                                                  [      -6.27271950, -0.00060538, 0.00037096, 7.27211412, 0.99815042, 0.99902366, 0.49316664],
    5149                                                                                                  [      -6.27271978, -0.00060526, 0.00037089, 7.27211452, 0.99815079, 0.99902385, 0.49316670],
    5150                                                                                                  [      -6.27272006, -0.00060514, 0.00037082, 7.27211492, 0.99815115, 0.99902404, 0.49316670],
    5151                                                                                                  [      -6.27272035, -0.00060503, 0.00037075, 7.27211532, 0.99815151, 0.99902423, 0.49316673],
    5152                                                                                                  [      -6.27272063, -0.00060491, 0.00037067, 7.27211572, 0.99815187, 0.99902442, 0.49316679],
    5153                                                                                                  [      -6.27272091, -0.00060479, 0.00037060, 7.27211612, 0.99815223, 0.99902461, 0.49316685],
    5154                                                                                                  [      -6.27272120, -0.00060467, 0.00037053, 7.27211652, 0.99815259, 0.99902480, 0.49316688],
    5155                                                                                                  [      -6.27272148, -0.00060455, 0.00037046, 7.27211692, 0.99815295, 0.99902499, 0.49316692],
    5156                                                                                                  [      -6.27272176, -0.00060444, 0.00037038, 7.27211732, 0.99815331, 0.99902518, 0.49316699],
    5157                                                                                                  [      -6.27272204, -0.00060432, 0.00037031, 7.27211773, 0.99815367, 0.99902537, 0.49316698],
    5158                                                                                                  [      -6.27272232, -0.00060420, 0.00037024, 7.27211813, 0.99815404, 0.99902556, 0.49316707],
    5159                                                                                                  [      -6.27272261, -0.00060408, 0.00037017, 7.27211853, 0.99815440, 0.99902575, 0.49316710],
    5160                                                                                                  [      -6.27272289, -0.00060396, 0.00037009, 7.27211893, 0.99815476, 0.99902594, 0.49316715],
    5161                                                                                                  [      -6.27272317, -0.00060385, 0.00037002, 7.27211933, 0.99815512, 0.99902613, 0.49316718],
    5162                                                                                                  [      -6.27272345, -0.00060373, 0.00036995, 7.27211972, 0.99815548, 0.99902632, 0.49316722],
    5163                                                                                                  [      -6.27272373, -0.00060361, 0.00036988, 7.27212012, 0.99815584, 0.99902651, 0.49316726],
    5164                                                                                                  [      -6.27272402, -0.00060349, 0.00036981, 7.27212052, 0.99815620, 0.99902670, 0.49316729],
    5165                                                                                                  [      -6.27272430, -0.00060337, 0.00036973, 7.27212092, 0.99815656, 0.99902689, 0.49316735],
    5166                                                                                                  [      -6.27272458, -0.00060326, 0.00036966, 7.27212132, 0.99815691, 0.99902708, 0.49316741],
    5167                                                                                                  [      -6.27272486, -0.00060314, 0.00036959, 7.27212172, 0.99815727, 0.99902727, 0.49316741],
    5168                                                                                                  [      -6.27272514, -0.00060302, 0.00036952, 7.27212212, 0.99815763, 0.99902746, 0.49316748],
    5169                                                                                                  [      -6.27272542, -0.00060290, 0.00036945, 7.27212252, 0.99815799, 0.99902765, 0.49316753],
    5170                                                                                                  [      -6.27272570, -0.00060279, 0.00036937, 7.27212292, 0.99815835, 0.99902784, 0.49316756],
    5171                                                                                                  [      -6.27272598, -0.00060267, 0.00036930, 7.27212331, 0.99815871, 0.99902803, 0.49316761],
    5172                                                                                                  [      -6.27272626, -0.00060255, 0.00036923, 7.27212371, 0.99815907, 0.99902822, 0.49316767],
    5173                                                                                                  [      -6.27272654, -0.00060244, 0.00036916, 7.27212411, 0.99815943, 0.99902841, 0.49316768],
    5174                                                                                                  [      -6.27272683, -0.00060232, 0.00036909, 7.27212451, 0.99815978, 0.99902860, 0.49316772],
    5175                                                                                                  [      -6.27272711, -0.00060220, 0.00036901, 7.27212490, 0.99816014, 0.99902879, 0.49316778],
    5176                                                                                                  [      -6.27272739, -0.00060208, 0.00036894, 7.27212530, 0.99816050, 0.99902897, 0.49316778],
    5177                                                                                                  [      -6.27272767, -0.00060197, 0.00036887, 7.27212570, 0.99816086, 0.99902916, 0.49316783],
    5178                                                                                                  [      -6.27272795, -0.00060185, 0.00036880, 7.27212610, 0.99816122, 0.99902935, 0.49316788],
    5179                                                                                                  [      -6.27272823, -0.00060173, 0.00036873, 7.27212649, 0.99816157, 0.99902954, 0.49316787],
    5180                                                                                                  [      -6.27272851, -0.00060162, 0.00036865, 7.27212689, 0.99816193, 0.99902973, 0.49316799],
    5181                                                                                                  [      -6.27272879, -0.00060150, 0.00036858, 7.27212729, 0.99816229, 0.99902992, 0.49316801],
    5182                                                                                                  [      -6.27272907, -0.00060138, 0.00036851, 7.27212768, 0.99816265, 0.99903011, 0.49316805],
    5183                                                                                                  [      -6.27272934, -0.00060127, 0.00036844, 7.27212808, 0.99816300, 0.99903029, 0.49316810],
    5184                                                                                                  [      -6.27272962, -0.00060115, 0.00036837, 7.27212848, 0.99816336, 0.99903048, 0.49316812],
    5185                                                                                                  [      -6.27272990, -0.00060103, 0.00036830, 7.27212887, 0.99816372, 0.99903067, 0.49316815],
    5186                                                                                                  [      -6.27273018, -0.00060092, 0.00036823, 7.27212927, 0.99816407, 0.99903086, 0.49316824],
    5187                                                                                                  [      -6.27273046, -0.00060080, 0.00036815, 7.27212966, 0.99816443, 0.99903105, 0.49316825],
    5188                                                                                                  [      -6.27273074, -0.00060068, 0.00036808, 7.27213006, 0.99816479, 0.99903124, 0.49316832],
    5189                                                                                                  [      -6.27273102, -0.00060057, 0.00036801, 7.27213045, 0.99816514, 0.99903142, 0.49316835],
    5190                                                                                                  [      -6.27273130, -0.00060045, 0.00036794, 7.27213085, 0.99816550, 0.99903161, 0.49316839],
    5191                                                                                                  [      -6.27273158, -0.00060033, 0.00036787, 7.27213124, 0.99816585, 0.99903180, 0.49316844],
    5192                                                                                                  [      -6.27273186, -0.00060022, 0.00036780, 7.27213164, 0.99816621, 0.99903199, 0.49316848],
    5193                                                                                                  [      -6.27273213, -0.00060010, 0.00036773, 7.27213203, 0.99816657, 0.99903218, 0.49316850],
    5194                                                                                                  [      -6.27273241, -0.00059998, 0.00036765, 7.27213243, 0.99816692, 0.99903236, 0.49316856],
    5195                                                                                                  [      -6.27273269, -0.00059987, 0.00036758, 7.27213282, 0.99816728, 0.99903255, 0.49316861],
    5196                                                                                                  [      -6.27273297, -0.00059975, 0.00036751, 7.27213322, 0.99816763, 0.99903274, 0.49316864],
    5197                                                                                                  [      -6.27273325, -0.00059963, 0.00036744, 7.27213361, 0.99816799, 0.99903293, 0.49316869],
    5198                                                                                                  [      -6.27273352, -0.00059952, 0.00036737, 7.27213401, 0.99816834, 0.99903311, 0.49316872],
    5199                                                                                                  [      -6.27273380, -0.00059940, 0.00036730, 7.27213440, 0.99816870, 0.99903330, 0.49316876],
    5200                                                                                                  [      -6.27273408, -0.00059929, 0.00036723, 7.27213479, 0.99816905, 0.99903349, 0.49316877],
    5201                                                                                                  [      -6.27273436, -0.00059917, 0.00036716, 7.27213519, 0.99816941, 0.99903367, 0.49316887],
    5202                                                                                                  [      -6.27273463, -0.00059905, 0.00036708, 7.27213558, 0.99816976, 0.99903386, 0.49316888],
    5203                                                                                                  [      -6.27273491, -0.00059894, 0.00036701, 7.27213597, 0.99817012, 0.99903405, 0.49316895],
    5204                                                                                                  [      -6.27273519, -0.00059882, 0.00036694, 7.27213637, 0.99817047, 0.99903424, 0.49316897],
    5205                                                                                                  [      -6.27273547, -0.00059871, 0.00036687, 7.27213676, 0.99817082, 0.99903442, 0.49316901],
    5206                                                                                                  [      -6.27273574, -0.00059859, 0.00036680, 7.27213715, 0.99817118, 0.99903461, 0.49316906],
    5207                                                                                                  [      -6.27273602, -0.00059848, 0.00036673, 7.27213754, 0.99817153, 0.99903480, 0.49316911],
    5208                                                                                                  [      -6.27273630, -0.00059836, 0.00036666, 7.27213794, 0.99817189, 0.99903498, 0.49316913],
    5209                                                                                                  [      -6.27273657, -0.00059824, 0.00036659, 7.27213833, 0.99817224, 0.99903517, 0.49316914],
    5210                                                                                                  [      -6.27273685, -0.00059813, 0.00036652, 7.27213872, 0.99817259, 0.99903535, 0.49316924],
    5211                                                                                                  [      -6.27273713, -0.00059801, 0.00036645, 7.27213911, 0.99817295, 0.99903554, 0.49316926],
    5212                                                                                                  [      -6.27273740, -0.00059790, 0.00036637, 7.27213951, 0.99817330, 0.99903573, 0.49316930],
    5213                                                                                                  [      -6.27273768, -0.00059778, 0.00036630, 7.27213990, 0.99817365, 0.99903591, 0.49316938],
    5214                                                                                                  [      -6.27273796, -0.00059767, 0.00036623, 7.27214029, 0.99817400, 0.99903610, 0.49316938],
    5215                                                                                                  [      -6.27273823, -0.00059755, 0.00036616, 7.27214068, 0.99817436, 0.99903629, 0.49316938],
    5216                                                                                                  [      -6.27273851, -0.00059744, 0.00036609, 7.27214107, 0.99817471, 0.99903647, 0.49316946],
    5217                                                                                                  [      -6.27273878, -0.00059732, 0.00036602, 7.27214146, 0.99817506, 0.99903666, 0.49316948],
    5218                                                                                                  [      -6.27273906, -0.00059721, 0.00036595, 7.27214185, 0.99817541, 0.99903684, 0.49316954],
    5219                                                                                                  [      -6.27273933, -0.00059709, 0.00036588, 7.27214224, 0.99817577, 0.99903703, 0.49316961],
    5220                                                                                                  [      -6.27273961, -0.00059698, 0.00036581, 7.27214263, 0.99817612, 0.99903722, 0.49316964],
    5221                                                                                                  [      -6.27273989, -0.00059686, 0.00036574, 7.27214303, 0.99817647, 0.99903740, 0.49316966],
    5222                                                                                                  [      -6.27274016, -0.00059674, 0.00036567, 7.27214342, 0.99817682, 0.99903759, 0.49316973],
    5223                                                                                                  [      -6.27274044, -0.00059663, 0.00036560, 7.27214381, 0.99817717, 0.99903777, 0.49316976],
    5224                                                                                                  [      -6.27274071, -0.00059651, 0.00036553, 7.27214420, 0.99817752, 0.99903796, 0.49316978],
    5225                                                                                                  [      -6.27274099, -0.00059640, 0.00036546, 7.27214459, 0.99817788, 0.99903814, 0.49316985],
    5226                                                                                                  [      -6.27274126, -0.00059629, 0.00036539, 7.27214498, 0.99817823, 0.99903833, 0.49316985],
    5227                                                                                                  [      -6.27274154, -0.00059617, 0.00036532, 7.27214537, 0.99817858, 0.99903851, 0.49316990],
    5228                                                                                                  [      -6.27274181, -0.00059606, 0.00036525, 7.27214575, 0.99817893, 0.99903870, 0.49316996],
    5229                                                                                                  [      -6.27274208, -0.00059594, 0.00036517, 7.27214614, 0.99817928, 0.99903888, 0.49317001],
    5230                                                                                                  [      -6.27274236, -0.00059583, 0.00036510, 7.27214653, 0.99817963, 0.99903907, 0.49317000],
    5231                                                                                                  [      -6.27274263, -0.00059571, 0.00036503, 7.27214692, 0.99817998, 0.99903925, 0.49317004],
    5232                                                                                                  [      -6.27274291, -0.00059560, 0.00036496, 7.27214731, 0.99818033, 0.99903944, 0.49317008],
    5233                                                                                                  [      -6.27274318, -0.00059548, 0.00036489, 7.27214770, 0.99818068, 0.99903962, 0.49317014],
    5234                                                                                                  [      -6.27274346, -0.00059537, 0.00036482, 7.27214809, 0.99818103, 0.99903981, 0.49317022],
    5235                                                                                                  [      -6.27274373, -0.00059525, 0.00036475, 7.27214848, 0.99818138, 0.99903999, 0.49317024],
    5236                                                                                                  [      -6.27274400, -0.00059514, 0.00036468, 7.27214886, 0.99818173, 0.99904018, 0.49317029],
    5237                                                                                                  [      -6.27274428, -0.00059502, 0.00036461, 7.27214925, 0.99818208, 0.99904036, 0.49317032],
    5238                                                                                                  [      -6.27274455, -0.00059491, 0.00036454, 7.27214964, 0.99818243, 0.99904055, 0.49317037],
    5239                                                                                                  [      -6.27274482, -0.00059480, 0.00036447, 7.27215003, 0.99818278, 0.99904073, 0.49317042],
    5240                                                                                                  [      -6.27274510, -0.00059468, 0.00036440, 7.27215042, 0.99818313, 0.99904092, 0.49317048],
    5241                                                                                                  [      -6.27274537, -0.00059457, 0.00036433, 7.27215080, 0.99818348, 0.99904110, 0.49317047],
    5242                                                                                                  [      -6.27274564, -0.00059445, 0.00036426, 7.27215119, 0.99818383, 0.99904128, 0.49317056],
    5243                                                                                                  [      -6.27274592, -0.00059434, 0.00036419, 7.27215158, 0.99818418, 0.99904147, 0.49317055],
    5244                                                                                                  [      -6.27274619, -0.00059422, 0.00036412, 7.27215197, 0.99818452, 0.99904165, 0.49317062],
    5245                                                                                                  [      -6.27274646, -0.00059411, 0.00036405, 7.27215235, 0.99818487, 0.99904184, 0.49317064],
    5246                                                                                                  [      -6.27274674, -0.00059400, 0.00036398, 7.27215274, 0.99818522, 0.99904202, 0.49317066],
    5247                                                                                                  [      -6.27274701, -0.00059388, 0.00036391, 7.27215313, 0.99818557, 0.99904220, 0.49317073],
    5248                                                                                                  [      -6.27274728, -0.00059377, 0.00036384, 7.27215351, 0.99818592, 0.99904239, 0.49317076],
    5249                                                                                                  [      -6.27274755, -0.00059365, 0.00036377, 7.27215390, 0.99818627, 0.99904257, 0.49317082],
    5250                                                                                                  [      -6.27274783, -0.00059354, 0.00036370, 7.27215428, 0.99818661, 0.99904276, 0.49317086],
    5251                                                                                                  [      -6.27274810, -0.00059343, 0.00036363, 7.27215467, 0.99818696, 0.99904294, 0.49317091],
    5252                                                                                                  [      -6.27274837, -0.00059331, 0.00036356, 7.27215506, 0.99818731, 0.99904312, 0.49317096],
    5253                                                                                                  [      -6.27274864, -0.00059320, 0.00036349, 7.27215544, 0.99818766, 0.99904331, 0.49317092],
    5254                                                                                                  [      -6.27274891, -0.00059309, 0.00036342, 7.27215583, 0.99818800, 0.99904349, 0.49317097],
    5255                                                                                                  [      -6.27274919, -0.00059297, 0.00036335, 7.27215621, 0.99818835, 0.99904367, 0.49317108],
    5256                                                                                                  [      -6.27274946, -0.00059286, 0.00036329, 7.27215660, 0.99818870, 0.99904386, 0.49317108],
    5257                                                                                                  [      -6.27274973, -0.00059275, 0.00036322, 7.27215698, 0.99818905, 0.99904404, 0.49317113],
    5258                                                                                                  [      -6.27275000, -0.00059263, 0.00036315, 7.27215737, 0.99818939, 0.99904422, 0.49317119],
    5259                                                                                                  [      -6.27275027, -0.00059252, 0.00036308, 7.27215775, 0.99818974, 0.99904440, 0.49317125],
    5260                                                                                                  [      -6.27275054, -0.00059241, 0.00036301, 7.27215814, 0.99819009, 0.99904459, 0.49317124],
    5261                                                                                                  [      -6.27275081, -0.00059229, 0.00036294, 7.27215852, 0.99819043, 0.99904477, 0.49317130],
    5262                                                                                                  [      -6.27275109, -0.00059218, 0.00036287, 7.27215891, 0.99819078, 0.99904495, 0.49317131],
    5263                                                                                                  [      -6.27275136, -0.00059207, 0.00036280, 7.27215929, 0.99819113, 0.99904514, 0.49317136],
    5264                                                                                                  [      -6.27275163, -0.00059195, 0.00036273, 7.27215968, 0.99819147, 0.99904532, 0.49317137],
    5265                                                                                                  [      -6.27275190, -0.00059184, 0.00036266, 7.27216006, 0.99819182, 0.99904550, 0.49317148],
    5266                                                                                                  [      -6.27275217, -0.00059173, 0.00036259, 7.27216044, 0.99819216, 0.99904568, 0.49317152],
    5267                                                                                                  [      -6.27275244, -0.00059161, 0.00036252, 7.27216083, 0.99819251, 0.99904587, 0.49317157],
    5268                                                                                                  [      -6.27275271, -0.00059150, 0.00036245, 7.27216121, 0.99819285, 0.99904605, 0.49317157],
    5269                                                                                                  [      -6.27275298, -0.00059139, 0.00036238, 7.27216159, 0.99819320, 0.99904623, 0.49317163],
    5270                                                                                                  [      -6.27275325, -0.00059127, 0.00036231, 7.27216198, 0.99819355, 0.99904641, 0.49317168],
    5271                                                                                                  [      -6.27275352, -0.00059116, 0.00036224, 7.27216236, 0.99819389, 0.99904660, 0.49317166],
    5272                                                                                                  [      -6.27275379, -0.00059105, 0.00036217, 7.27216274, 0.99819424, 0.99904678, 0.49317177],
    5273                                                                                                  [      -6.27275406, -0.00059094, 0.00036211, 7.27216313, 0.99819458, 0.99904696, 0.49317179],
    5274                                                                                                  [      -6.27275433, -0.00059082, 0.00036204, 7.27216351, 0.99819493, 0.99904714, 0.49317185],
    5275                                                                                                  [      -6.27275460, -0.00059071, 0.00036197, 7.27216389, 0.99819527, 0.99904732, 0.49317189],
    5276                                                                                                  [      -6.27275487, -0.00059060, 0.00036190, 7.27216427, 0.99819561, 0.99904751, 0.49317188],
    5277                                                                                                  [      -6.27275514, -0.00059048, 0.00036183, 7.27216466, 0.99819596, 0.99904769, 0.49317197],
    5278                                                                                                  [      -6.27275541, -0.00059037, 0.00036176, 7.27216504, 0.99819630, 0.99904787, 0.49317199],
    5279                                                                                                  [      -6.27275568, -0.00059026, 0.00036169, 7.27216542, 0.99819665, 0.99904805, 0.49317206],
    5280                                                                                                  [      -6.27275595, -0.00059015, 0.00036162, 7.27216580, 0.99819699, 0.99904823, 0.49317206],
    5281                                                                                                  [      -6.27275622, -0.00059003, 0.00036155, 7.27216618, 0.99819733, 0.99904841, 0.49317210],
    5282                                                                                                  [      -6.27275649, -0.00058992, 0.00036148, 7.27216656, 0.99819768, 0.99904859, 0.49317215],
    5283                                                                                                  [      -6.27275675, -0.00058981, 0.00036141, 7.27216695, 0.99819802, 0.99904878, 0.49317218],
    5284                                                                                                  [      -6.27275702, -0.00058970, 0.00036135, 7.27216733, 0.99819837, 0.99904896, 0.49317220],
    5285                                                                                                  [      -6.27275729, -0.00058958, 0.00036128, 7.27216771, 0.99819871, 0.99904914, 0.49317224],
    5286                                                                                                  [      -6.27275756, -0.00058947, 0.00036121, 7.27216809, 0.99819905, 0.99904932, 0.49317231],
    5287                                                                                                  [      -6.27275783, -0.00058936, 0.00036114, 7.27216847, 0.99819939, 0.99904950, 0.49317228],
    5288                                                                                                  [      -6.27275810, -0.00058925, 0.00036107, 7.27216885, 0.99819974, 0.99904968, 0.49317238],
    5289                                                                                                  [      -6.27275837, -0.00058914, 0.00036100, 7.27216923, 0.99820008, 0.99904986, 0.49317241],
    5290                                                                                                  [      -6.27275863, -0.00058902, 0.00036093, 7.27216961, 0.99820042, 0.99905004, 0.49317245],
    5291                                                                                                  [      -6.27275890, -0.00058891, 0.00036086, 7.27216999, 0.99820077, 0.99905022, 0.49317253],
    5292                                                                                                  [      -6.27275917, -0.00058880, 0.00036080, 7.27217037, 0.99820111, 0.99905040, 0.49317256],
    5293                                                                                                  [      -6.27275944, -0.00058869, 0.00036073, 7.27217075, 0.99820145, 0.99905059, 0.49317260],
    5294                                                                                                  [      -6.27275971, -0.00058858, 0.00036066, 7.27217113, 0.99820179, 0.99905077, 0.49317263],
    5295                                                                                                  [      -6.27275997, -0.00058846, 0.00036059, 7.27217151, 0.99820213, 0.99905095, 0.49317270],
    5296                                                                                                  [      -6.27276024, -0.00058835, 0.00036052, 7.27217189, 0.99820248, 0.99905113, 0.49317272],
    5297                                                                                                  [      -6.27276051, -0.00058824, 0.00036045, 7.27217227, 0.99820282, 0.99905131, 0.49317275],
    5298                                                                                                  [      -6.27276078, -0.00058813, 0.00036038, 7.27217265, 0.99820316, 0.99905149, 0.49317277],
    5299                                                                                                  [      -6.27276104, -0.00058802, 0.00036032, 7.27217303, 0.99820350, 0.99905167, 0.49317281],
    5300                                                                                                  [      -6.27276131, -0.00058790, 0.00036025, 7.27217341, 0.99820384, 0.99905185, 0.49317287],
    5301                                                                                                  [      -6.27276158, -0.00058779, 0.00036018, 7.27217378, 0.99820418, 0.99905203, 0.49317289],
    5302                                                                                                  [      -6.27276184, -0.00058768, 0.00036011, 7.27217416, 0.99820453, 0.99905221, 0.49317299],
    5303                                                                                                  [      -6.27276211, -0.00058757, 0.00036004, 7.27217454, 0.99820487, 0.99905239, 0.49317296],
    5304                                                                                                  [      -6.27276238, -0.00058746, 0.00035997, 7.27217492, 0.99820521, 0.99905257, 0.49317302],
    5305                                                                                                  [      -6.27276265, -0.00058735, 0.00035991, 7.27217530, 0.99820555, 0.99905275, 0.49317307],
    5306                                                                                                  [      -6.27276291, -0.00058724, 0.00035984, 7.27217568, 0.99820589, 0.99905293, 0.49317310],
    5307                                                                                                  [      -6.27276318, -0.00058712, 0.00035977, 7.27217605, 0.99820623, 0.99905311, 0.49317316],
    5308                                                                                                  [      -6.27276344, -0.00058701, 0.00035970, 7.27217643, 0.99820657, 0.99905329, 0.49317319],
    5309                                                                                                  [      -6.27276371, -0.00058690, 0.00035963, 7.27217681, 0.99820691, 0.99905347, 0.49317321],
    5310                                                                                                  [      -6.27276398, -0.00058679, 0.00035956, 7.27217719, 0.99820725, 0.99905365, 0.49317328],
    5311                                                                                                  [      -6.27276424, -0.00058668, 0.00035950, 7.27217756, 0.99820759, 0.99905383, 0.49317329],
    5312                                                                                                  [      -6.27276451, -0.00058657, 0.00035943, 7.27217794, 0.99820793, 0.99905400, 0.49317335],
    5313                                                                                                  [      -6.27276478, -0.00058646, 0.00035936, 7.27217832, 0.99820827, 0.99905418, 0.49317337],
    5314                                                                                                  [      -6.27276504, -0.00058635, 0.00035929, 7.27217870, 0.99820861, 0.99905436, 0.49317339],
    5315                                                                                                  [      -6.27276531, -0.00058623, 0.00035922, 7.27217907, 0.99820895, 0.99905454, 0.49317346],
    5316                                                                                                  [      -6.27276557, -0.00058612, 0.00035916, 7.27217945, 0.99820929, 0.99905472, 0.49317350],
    5317                                                                                                  [      -6.27276584, -0.00058601, 0.00035909, 7.27217982, 0.99820963, 0.99905490, 0.49317354],
    5318                                                                                                  [      -6.27276610, -0.00058590, 0.00035902, 7.27218020, 0.99820997, 0.99905508, 0.49317358],
    5319                                                                                                  [      -6.27276637, -0.00058579, 0.00035895, 7.27218058, 0.99821030, 0.99905526, 0.49317361],
    5320                                                                                                  [      -6.27276663, -0.00058568, 0.00035888, 7.27218095, 0.99821064, 0.99905544, 0.49317361],
    5321                                                                                                  [      -6.27276690, -0.00058557, 0.00035882, 7.27218133, 0.99821098, 0.99905562, 0.49317370],
    5322                                                                                                  [      -6.27276716, -0.00058546, 0.00035875, 7.27218170, 0.99821132, 0.99905579, 0.49317372],
    5323                                                                                                  [      -6.27276743, -0.00058535, 0.00035868, 7.27218208, 0.99821166, 0.99905597, 0.49317378],
    5324                                                                                                  [      -6.27276769, -0.00058524, 0.00035861, 7.27218246, 0.99821200, 0.99905615, 0.49317376],
    5325                                                                                                  [      -6.27276796, -0.00058513, 0.00035854, 7.27218283, 0.99821233, 0.99905633, 0.49317387],
    5326                                                                                                  [      -6.27276822, -0.00058502, 0.00035848, 7.27218321, 0.99821267, 0.99905651, 0.49317387],
    5327                                                                                                  [      -6.27276849, -0.00058491, 0.00035841, 7.27218358, 0.99821301, 0.99905669, 0.49317394],
    5328                                                                                                  [      -6.27276875, -0.00058480, 0.00035834, 7.27218396, 0.99821335, 0.99905686, 0.49317397],
    5329                                                                                                  [      -6.27276902, -0.00058468, 0.00035827, 7.27218433, 0.99821369, 0.99905704, 0.49317398],
    5330                                                                                                  [      -6.27276928, -0.00058457, 0.00035820, 7.27218471, 0.99821402, 0.99905722, 0.49317402],
    5331                                                                                                  [      -6.27276954, -0.00058446, 0.00035814, 7.27218508, 0.99821436, 0.99905740, 0.49317408],
    5332                                                                                                  [      -6.27276981, -0.00058435, 0.00035807, 7.27218545, 0.99821470, 0.99905758, 0.49317410],
    5333                                                                                                  [      -6.27277007, -0.00058424, 0.00035800, 7.27218583, 0.99821504, 0.99905775, 0.49317417],
    5334                                                                                                  [      -6.27277034, -0.00058413, 0.00035793, 7.27218620, 0.99821537, 0.99905793, 0.49317422],
    5335                                                                                                  [      -6.27277060, -0.00058402, 0.00035787, 7.27218658, 0.99821571, 0.99905811, 0.49317425],
    5336                                                                                                  [      -6.27277086, -0.00058391, 0.00035780, 7.27218695, 0.99821605, 0.99905829, 0.49317429],
    5337                                                                                                  [      -6.27277113, -0.00058380, 0.00035773, 7.27218732, 0.99821638, 0.99905847, 0.49317428],
    5338                                                                                                  [      -6.27277139, -0.00058369, 0.00035766, 7.27218770, 0.99821672, 0.99905864, 0.49317437],
    5339                                                                                                  [      -6.27277165, -0.00058358, 0.00035760, 7.27218807, 0.99821706, 0.99905882, 0.49317446],
    5340                                                                                                  [      -6.27277192, -0.00058347, 0.00035753, 7.27218844, 0.99821739, 0.99905900, 0.49317445],
    5341                                                                                                  [      -6.27277218, -0.00058336, 0.00035746, 7.27218882, 0.99821773, 0.99905918, 0.49317449],
    5342                                                                                                  [      -6.27277244, -0.00058325, 0.00035739, 7.27218919, 0.99821806, 0.99905935, 0.49317453],
    5343                                                                                                  [      -6.27277270, -0.00058314, 0.00035733, 7.27218956, 0.99821840, 0.99905953, 0.49317457],
    5344                                                                                                  [      -6.27277297, -0.00058303, 0.00035726, 7.27218993, 0.99821874, 0.99905971, 0.49317458],
    5345                                                                                                  [      -6.27277323, -0.00058292, 0.00035719, 7.27219031, 0.99821907, 0.99905988, 0.49317467],
    5346                                                                                                  [      -6.27277349, -0.00058281, 0.00035712, 7.27219068, 0.99821941, 0.99906006, 0.49317464],
    5347                                                                                                  [      -6.27277376, -0.00058270, 0.00035706, 7.27219105, 0.99821974, 0.99906024, 0.49317472],
    5348                                                                                                  [      -6.27277402, -0.00058259, 0.00035699, 7.27219142, 0.99822008, 0.99906042, 0.49317476],
    5349                                                                                                  [      -6.27277428, -0.00058248, 0.00035692, 7.27219180, 0.99822041, 0.99906059, 0.49317478],
    5350                                                                                                  [      -6.27277454, -0.00058237, 0.00035686, 7.27219217, 0.99822075, 0.99906077, 0.49317481],
    5351                                                                                                  [      -6.27277480, -0.00058227, 0.00035679, 7.27219254, 0.99822108, 0.99906095, 0.49317486],
    5352                                                                                                  [      -6.27277507, -0.00058216, 0.00035672, 7.27219291, 0.99822142, 0.99906112, 0.49317492],
    5353                                                                                                  [      -6.27277533, -0.00058205, 0.00035665, 7.27219328, 0.99822175, 0.99906130, 0.49317497],
    5354                                                                                                  [      -6.27277559, -0.00058194, 0.00035659, 7.27219365, 0.99822209, 0.99906148, 0.49317500],
    5355                                                                                                  [      -6.27277585, -0.00058183, 0.00035652, 7.27219402, 0.99822242, 0.99906165, 0.49317504],
    5356                                                                                                  [      -6.27277611, -0.00058172, 0.00035645, 7.27219440, 0.99822275, 0.99906183, 0.49317502],
    5357                                                                                                  [      -6.27277637, -0.00058161, 0.00035639, 7.27219477, 0.99822309, 0.99906200, 0.49317510],
    5358                                                                                                  [      -6.27277664, -0.00058150, 0.00035632, 7.27219514, 0.99822342, 0.99906218, 0.49317515],
    5359                                                                                                  [      -6.27277690, -0.00058139, 0.00035625, 7.27219551, 0.99822376, 0.99906236, 0.49317515],
    5360                                                                                                  [      -6.27277716, -0.00058128, 0.00035619, 7.27219588, 0.99822409, 0.99906253, 0.49317527],
    5361                                                                                                  [      -6.27277742, -0.00058117, 0.00035612, 7.27219625, 0.99822442, 0.99906271, 0.49317521],
    5362                                                                                                  [      -6.27277768, -0.00058106, 0.00035605, 7.27219662, 0.99822476, 0.99906289, 0.49317533],
    5363                                                                                                  [      -6.27277794, -0.00058095, 0.00035598, 7.27219699, 0.99822509, 0.99906306, 0.49317536],
    5364                                                                                                  [      -6.27277820, -0.00058084, 0.00035592, 7.27219736, 0.99822542, 0.99906324, 0.49317532],
    5365                                                                                                  [      -6.27277846, -0.00058074, 0.00035585, 7.27219773, 0.99822576, 0.99906341, 0.49317542],
    5366                                                                                                  [      -6.27277872, -0.00058063, 0.00035578, 7.27219810, 0.99822609, 0.99906359, 0.49317544],
    5367                                                                                                  [      -6.27277898, -0.00058052, 0.00035572, 7.27219847, 0.99822642, 0.99906376, 0.49317549],
    5368                                                                                                  [      -6.27277924, -0.00058041, 0.00035565, 7.27219884, 0.99822675, 0.99906394, 0.49317552],
    5369                                                                                                  [      -6.27277950, -0.00058030, 0.00035558, 7.27219920, 0.99822709, 0.99906412, 0.49317558],
    5370                                                                                                  [      -6.27277977, -0.00058019, 0.00035552, 7.27219957, 0.99822742, 0.99906429, 0.49317562],
    5371                                                                                                  [      -6.27278003, -0.00058008, 0.00035545, 7.27219994, 0.99822775, 0.99906447, 0.49317566],
    5372                                                                                                  [      -6.27278029, -0.00057997, 0.00035538, 7.27220031, 0.99822808, 0.99906464, 0.49317568],
    5373                                                                                                  [      -6.27278055, -0.00057987, 0.00035532, 7.27220068, 0.99822842, 0.99906482, 0.49317573],
    5374                                                                                                  [      -6.27278080, -0.00057976, 0.00035525, 7.27220105, 0.99822875, 0.99906499, 0.49317574],
    5375                                                                                                  [      -6.27278106, -0.00057965, 0.00035518, 7.27220142, 0.99822908, 0.99906517, 0.49317581],
    5376                                                                                                  [      -6.27278132, -0.00057954, 0.00035512, 7.27220178, 0.99822941, 0.99906534, 0.49317584],
    5377                                                                                                  [      -6.27278158, -0.00057943, 0.00035505, 7.27220215, 0.99822974, 0.99906552, 0.49317591],
    5378                                                                                                  [      -6.27278184, -0.00057932, 0.00035498, 7.27220252, 0.99823008, 0.99906569, 0.49317591],
    5379                                                                                                  [      -6.27278210, -0.00057921, 0.00035492, 7.27220289, 0.99823041, 0.99906587, 0.49317595],
    5380                                                                                                  [      -6.27278236, -0.00057911, 0.00035485, 7.27220326, 0.99823074, 0.99906604, 0.49317597],
    5381                                                                                                  [      -6.27278262, -0.00057900, 0.00035479, 7.27220362, 0.99823107, 0.99906622, 0.49317601],
    5382                                                                                                  [      -6.27278288, -0.00057889, 0.00035472, 7.27220399, 0.99823140, 0.99906639, 0.49317609],
    5383                                                                                                  [      -6.27278314, -0.00057878, 0.00035465, 7.27220436, 0.99823173, 0.99906657, 0.49317610],
    5384                                                                                                  [      -6.27278340, -0.00057867, 0.00035459, 7.27220472, 0.99823206, 0.99906674, 0.49317615],
    5385                                                                                                  [      -6.27278366, -0.00057857, 0.00035452, 7.27220509, 0.99823239, 0.99906691, 0.49317621],
    5386                                                                                                  [      -6.27278392, -0.00057846, 0.00035445, 7.27220546, 0.99823272, 0.99906709, 0.49317622],
    5387                                                                                                  [      -6.27278417, -0.00057835, 0.00035439, 7.27220582, 0.99823305, 0.99906726, 0.49317632],
    5388                                                                                                  [      -6.27278443, -0.00057824, 0.00035432, 7.27220619, 0.99823338, 0.99906744, 0.49317629],
    5389                                                                                                  [      -6.27278469, -0.00057813, 0.00035425, 7.27220656, 0.99823371, 0.99906761, 0.49317636],
    5390                                                                                                  [      -6.27278495, -0.00057802, 0.00035419, 7.27220692, 0.99823404, 0.99906779, 0.49317638],
    5391                                                                                                  [      -6.27278521, -0.00057792, 0.00035412, 7.27220729, 0.99823437, 0.99906796, 0.49317641],
    5392                                                                                                  [      -6.27278547, -0.00057781, 0.00035406, 7.27220766, 0.99823470, 0.99906813, 0.49317644],
    5393                                                                                                  [      -6.27278572, -0.00057770, 0.00035399, 7.27220802, 0.99823503, 0.99906831, 0.49317646],
    5394                                                                                                  [      -6.27278598, -0.00057759, 0.00035392, 7.27220839, 0.99823536, 0.99906848, 0.49317651],
    5395                                                                                                  [      -6.27278624, -0.00057749, 0.00035386, 7.27220875, 0.99823569, 0.99906866, 0.49317654],
    5396                                                                                                  [      -6.27278650, -0.00057738, 0.00035379, 7.27220912, 0.99823602, 0.99906883, 0.49317660],
    5397                                                                                                  [      -6.27278675, -0.00057727, 0.00035373, 7.27220948, 0.99823635, 0.99906900, 0.49317666],
    5398                                                                                                  [      -6.27278701, -0.00057716, 0.00035366, 7.27220985, 0.99823668, 0.99906918, 0.49317668],
    5399                                                                                                  [      -6.27278727, -0.00057706, 0.00035359, 7.27221021, 0.99823701, 0.99906935, 0.49317676],
    5400                                                                                                  [      -6.27278753, -0.00057695, 0.00035353, 7.27221058, 0.99823734, 0.99906952, 0.49317676],
    5401                                                                                                  [      -6.27278778, -0.00057684, 0.00035346, 7.27221094, 0.99823766, 0.99906970, 0.49317678],
    5402                                                                                                  [      -6.27278804, -0.00057673, 0.00035340, 7.27221131, 0.99823799, 0.99906987, 0.49317683],
    5403                                                                                                  [      -6.27278830, -0.00057663, 0.00035333, 7.27221167, 0.99823832, 0.99907004, 0.49317687],
    5404                                                                                                  [      -6.27278855, -0.00057652, 0.00035326, 7.27221204, 0.99823865, 0.99907022, 0.49317691],
    5405                                                                                                  [      -6.27278881, -0.00057641, 0.00035320, 7.27221240, 0.99823898, 0.99907039, 0.49317697],
    5406                                                                                                  [      -6.27278907, -0.00057630, 0.00035313, 7.27221277, 0.99823931, 0.99907056, 0.49317699],
    5407                                                                                                  [      -6.27278933, -0.00057620, 0.00035307, 7.27221313, 0.99823963, 0.99907074, 0.49317702],
    5408                                                                                                  [      -6.27278958, -0.00057609, 0.00035300, 7.27221349, 0.99823996, 0.99907091, 0.49317708],
    5409                                                                                                  [      -6.27278984, -0.00057598, 0.00035294, 7.27221386, 0.99824029, 0.99907108, 0.49317710],
    5410                                                                                                  [      -6.27279009, -0.00057587, 0.00035287, 7.27221422, 0.99824062, 0.99907126, 0.49317717],
    5411                                                                                                  [      -6.27279035, -0.00057577, 0.00035280, 7.27221458, 0.99824094, 0.99907143, 0.49317720],
    5412                                                                                                  [      -6.27279061, -0.00057566, 0.00035274, 7.27221495, 0.99824127, 0.99907160, 0.49317720],
    5413                                                                                                  [      -6.27279086, -0.00057555, 0.00035267, 7.27221531, 0.99824160, 0.99907177, 0.49317727],
    5414                                                                                                  [      -6.27279112, -0.00057545, 0.00035261, 7.27221567, 0.99824193, 0.99907195, 0.49317735],
    5415                                                                                                  [      -6.27279137, -0.00057534, 0.00035254, 7.27221604, 0.99824225, 0.99907212, 0.49317732],
    5416                                                                                                  [      -6.27279163, -0.00057523, 0.00035248, 7.27221640, 0.99824258, 0.99907229, 0.49317739],
    5417                                                                                                  [      -6.27279189, -0.00057513, 0.00035241, 7.27221676, 0.99824291, 0.99907246, 0.49317738],
    5418                                                                                                  [      -6.27279214, -0.00057502, 0.00035235, 7.27221712, 0.99824323, 0.99907264, 0.49317745],
    5419                                                                                                  [      -6.27279240, -0.00057491, 0.00035228, 7.27221749, 0.99824356, 0.99907281, 0.49317748],
    5420                                                                                                  [      -6.27279265, -0.00057480, 0.00035221, 7.27221785, 0.99824389, 0.99907298, 0.49317752],
    5421                                                                                                  [      -6.27279291, -0.00057470, 0.00035215, 7.27221821, 0.99824421, 0.99907315, 0.49317757],
    5422                                                                                                  [      -6.27279316, -0.00057459, 0.00035208, 7.27221857, 0.99824454, 0.99907332, 0.49317760],
    5423                                                                                                  [      -6.27279342, -0.00057448, 0.00035202, 7.27221893, 0.99824486, 0.99907350, 0.49317764],
    5424                                                                                                  [      -6.27279367, -0.00057438, 0.00035195, 7.27221930, 0.99824519, 0.99907367, 0.49317766],
    5425                                                                                                  [      -6.27279393, -0.00057427, 0.00035189, 7.27221966, 0.99824551, 0.99907384, 0.49317770],
    5426                                                                                                  [      -6.27279418, -0.00057417, 0.00035182, 7.27222002, 0.99824584, 0.99907401, 0.49317777],
    5427                                                                                                  [      -6.27279444, -0.00057406, 0.00035176, 7.27222038, 0.99824617, 0.99907418, 0.49317774],
    5428                                                                                                  [      -6.27279469, -0.00057395, 0.00035169, 7.27222074, 0.99824649, 0.99907436, 0.49317781],
    5429                                                                                                  [      -6.27279495, -0.00057385, 0.00035163, 7.27222110, 0.99824682, 0.99907453, 0.49317792],
    5430                                                                                                  [      -6.27279520, -0.00057374, 0.00035156, 7.27222146, 0.99824714, 0.99907470, 0.49317788],
    5431                                                                                                  [      -6.27279546, -0.00057363, 0.00035150, 7.27222182, 0.99824747, 0.99907487, 0.49317793],
    5432                                                                                                  [      -6.27279571, -0.00057353, 0.00035143, 7.27222218, 0.99824779, 0.99907504, 0.49317800],
    5433                                                                                                  [      -6.27279596, -0.00057342, 0.00035137, 7.27222254, 0.99824812, 0.99907521, 0.49317798],
    5434                                                                                                  [      -6.27279622, -0.00057331, 0.00035130, 7.27222290, 0.99824844, 0.99907538, 0.49317810],
    5435                                                                                                  [      -6.27279647, -0.00057321, 0.00035124, 7.27222326, 0.99824877, 0.99907556, 0.49317811],
    5436                                                                                                  [      -6.27279673, -0.00057310, 0.00035117, 7.27222362, 0.99824909, 0.99907573, 0.49317808],
    5437                                                                                                  [      -6.27279698, -0.00057300, 0.00035111, 7.27222398, 0.99824941, 0.99907590, 0.49317818],
    5438                                                                                                  [      -6.27279723, -0.00057289, 0.00035104, 7.27222434, 0.99824974, 0.99907607, 0.49317820],
    5439                                                                                                  [      -6.27279749, -0.00057278, 0.00035098, 7.27222470, 0.99825006, 0.99907624, 0.49317824],
    5440                                                                                                  [      -6.27279774, -0.00057268, 0.00035091, 7.27222506, 0.99825039, 0.99907641, 0.49317828],
    5441                                                                                                  [      -6.27279799, -0.00057257, 0.00035085, 7.27222542, 0.99825071, 0.99907658, 0.49317828],
    5442                                                                                                  [      -6.27279825, -0.00057247, 0.00035078, 7.27222578, 0.99825103, 0.99907675, 0.49317836],
    5443                                                                                                  [      -6.27279850, -0.00057236, 0.00035072, 7.27222614, 0.99825136, 0.99907692, 0.49317841],
    5444                                                                                                  [      -6.27279875, -0.00057225, 0.00035065, 7.27222650, 0.99825168, 0.99907709, 0.49317844],
    5445                                                                                                  [      -6.27279901, -0.00057215, 0.00035059, 7.27222686, 0.99825200, 0.99907727, 0.49317846],
    5446                                                                                                  [      -6.27279926, -0.00057204, 0.00035052, 7.27222722, 0.99825233, 0.99907744, 0.49317853],
    5447                                                                                                  [      -6.27279951, -0.00057194, 0.00035046, 7.27222758, 0.99825265, 0.99907761, 0.49317855],
    5448                                                                                                  [      -6.27279977, -0.00057183, 0.00035039, 7.27222793, 0.99825297, 0.99907778, 0.49317862],
    5449                                                                                                  [      -6.27280002, -0.00057173, 0.00035033, 7.27222829, 0.99825330, 0.99907795, 0.49317862],
    5450                                                                                                  [      -6.27280027, -0.00057162, 0.00035026, 7.27222865, 0.99825362, 0.99907812, 0.49317865],
    5451                                                                                                  [      -6.27280052, -0.00057152, 0.00035020, 7.27222901, 0.99825394, 0.99907829, 0.49317872],
    5452                                                                                                  [      -6.27280078, -0.00057141, 0.00035013, 7.27222937, 0.99825426, 0.99907846, 0.49317874],
    5453                                                                                                  [      -6.27280103, -0.00057130, 0.00035007, 7.27222972, 0.99825459, 0.99907863, 0.49317875],
    5454                                                                                                  [      -6.27280128, -0.00057120, 0.00035000, 7.27223008, 0.99825491, 0.99907880, 0.49317879],
    5455                                                                                                  [      -6.27280153, -0.00057109, 0.00034994, 7.27223044, 0.99825523, 0.99907897, 0.49317885],
    5456                                                                                                  [      -6.27280178, -0.00057099, 0.00034987, 7.27223080, 0.99825555, 0.99907914, 0.49317886],
    5457                                                                                                  [      -6.27280204, -0.00057088, 0.00034981, 7.27223115, 0.99825587, 0.99907931, 0.49317891],
    5458                                                                                                  [      -6.27280229, -0.00057078, 0.00034974, 7.27223151, 0.99825620, 0.99907948, 0.49317896],
    5459                                                                                                  [      -6.27280254, -0.00057067, 0.00034968, 7.27223187, 0.99825652, 0.99907965, 0.49317901],
    5460                                                                                                  [      -6.27280279, -0.00057057, 0.00034962, 7.27223222, 0.99825684, 0.99907982, 0.49317904],
    5461                                                                                                  [      -6.27280304, -0.00057046, 0.00034955, 7.27223258, 0.99825716, 0.99907999, 0.49317904],
    5462                                                                                                  [      -6.27280329, -0.00057036, 0.00034949, 7.27223294, 0.99825748, 0.99908016, 0.49317910],
    5463                                                                                                  [      -6.27280355, -0.00057025, 0.00034942, 7.27223329, 0.99825780, 0.99908033, 0.49317919],
    5464                                                                                                  [      -6.27280380, -0.00057015, 0.00034936, 7.27223365, 0.99825812, 0.99908050, 0.49317919],
    5465                                                                                                  [      -6.27280405, -0.00057004, 0.00034929, 7.27223401, 0.99825844, 0.99908066, 0.49317919],
    5466                                                                                                  [      -6.27280430, -0.00056994, 0.00034923, 7.27223436, 0.99825877, 0.99908083, 0.49317929],
    5467                                                                                                  [      -6.27280455, -0.00056983, 0.00034916, 7.27223472, 0.99825909, 0.99908100, 0.49317932],
    5468                                                                                                  [      -6.27280480, -0.00056973, 0.00034910, 7.27223507, 0.99825941, 0.99908117, 0.49317933],
    5469                                                                                                  [      -6.27280505, -0.00056962, 0.00034904, 7.27223543, 0.99825973, 0.99908134, 0.49317936],
    5470                                                                                                  [      -6.27280530, -0.00056952, 0.00034897, 7.27223579, 0.99826005, 0.99908151, 0.49317942],
    5471                                                                                                  [      -6.27280555, -0.00056941, 0.00034891, 7.27223614, 0.99826037, 0.99908168, 0.49317941],
    5472                                                                                                  [      -6.27280580, -0.00056931, 0.00034884, 7.27223650, 0.99826069, 0.99908185, 0.49317944],
    5473                                                                                                  [      -6.27280606, -0.00056920, 0.00034878, 7.27223685, 0.99826101, 0.99908202, 0.49317951],
    5474                                                                                                  [      -6.27280631, -0.00056910, 0.00034872, 7.27223721, 0.99826133, 0.99908219, 0.49317958],
    5475                                                                                                  [      -6.27280656, -0.00056899, 0.00034865, 7.27223756, 0.99826165, 0.99908235, 0.49317962],
    5476                                                                                                  [      -6.27280681, -0.00056889, 0.00034859, 7.27223792, 0.99826197, 0.99908252, 0.49317961],
    5477                                                                                                  [      -6.27280706, -0.00056878, 0.00034852, 7.27223827, 0.99826229, 0.99908269, 0.49317963],
    5478                                                                                                  [      -6.27280731, -0.00056868, 0.00034846, 7.27223863, 0.99826261, 0.99908286, 0.49317970],
    5479                                                                                                  [      -6.27280756, -0.00056858, 0.00034839, 7.27223898, 0.99826293, 0.99908303, 0.49317974],
    5480                                                                                                  [      -6.27280781, -0.00056847, 0.00034833, 7.27223933, 0.99826324, 0.99908320, 0.49317978],
    5481                                                                                                  [      -6.27280806, -0.00056837, 0.00034827, 7.27223969, 0.99826356, 0.99908337, 0.49317977],
    5482                                                                                                  [      -6.27280830, -0.00056826, 0.00034820, 7.27224004, 0.99826388, 0.99908353, 0.49317984],
    5483                                                                                                  [      -6.27280855, -0.00056816, 0.00034814, 7.27224040, 0.99826420, 0.99908370, 0.49317991],
    5484                                                                                                  [      -6.27280880, -0.00056805, 0.00034807, 7.27224075, 0.99826452, 0.99908387, 0.49317993],
    5485                                                                                                  [      -6.27280905, -0.00056795, 0.00034801, 7.27224110, 0.99826484, 0.99908404, 0.49317997],
    5486                                                                                                  [      -6.27280930, -0.00056785, 0.00034795, 7.27224146, 0.99826516, 0.99908421, 0.49317999],
    5487                                                                                                  [      -6.27280955, -0.00056774, 0.00034788, 7.27224181, 0.99826547, 0.99908438, 0.49318004],
    5488                                                                                                  [      -6.27280980, -0.00056764, 0.00034782, 7.27224216, 0.99826579, 0.99908454, 0.49318009],
    5489                                                                                                  [      -6.27281005, -0.00056753, 0.00034776, 7.27224252, 0.99826611, 0.99908471, 0.49318013],
    5490                                                                                                  [      -6.27281030, -0.00056743, 0.00034769, 7.27224287, 0.99826643, 0.99908488, 0.49318014],
    5491                                                                                                  [      -6.27281055, -0.00056733, 0.00034763, 7.27224322, 0.99826675, 0.99908505, 0.49318020],
    5492                                                                                                  [      -6.27281080, -0.00056722, 0.00034756, 7.27224357, 0.99826706, 0.99908521, 0.49318023],
    5493                                                                                                  [      -6.27281104, -0.00056712, 0.00034750, 7.27224393, 0.99826738, 0.99908538, 0.49318021],
    5494                                                                                                  [      -6.27281129, -0.00056701, 0.00034744, 7.27224428, 0.99826770, 0.99908555, 0.49318033],
    5495                                                                                                  [      -6.27281154, -0.00056691, 0.00034737, 7.27224463, 0.99826802, 0.99908572, 0.49318033],
    5496                                                                                                  [      -6.27281179, -0.00056681, 0.00034731, 7.27224498, 0.99826833, 0.99908588, 0.49318036],
    5497                                                                                                  [      -6.27281204, -0.00056670, 0.00034725, 7.27224534, 0.99826865, 0.99908605, 0.49318042],
    5498                                                                                                  [      -6.27281229, -0.00056660, 0.00034718, 7.27224569, 0.99826897, 0.99908622, 0.49318046],
    5499                                                                                                  [      -6.27281253, -0.00056649, 0.00034712, 7.27224604, 0.99826929, 0.99908639, 0.49318048],
    5500                                                                                                  [      -6.27281278, -0.00056639, 0.00034706, 7.27224639, 0.99826960, 0.99908655, 0.49318053],
    5501                                                                                                  [      -6.27281303, -0.00056629, 0.00034699, 7.27224674, 0.99826992, 0.99908672, 0.49318056],
    5502                                                                                                  [      -6.27281328, -0.00056618, 0.00034693, 7.27224709, 0.99827024, 0.99908689, 0.49318059],
    5503                                                                                                  [      -6.27281353, -0.00056608, 0.00034686, 7.27224745, 0.99827055, 0.99908705, 0.49318066],
    5504                                                                                                  [      -6.27281377, -0.00056598, 0.00034680, 7.27224780, 0.99827087, 0.99908722, 0.49318067],
    5505                                                                                                  [      -6.27281402, -0.00056587, 0.00034674, 7.27224815, 0.99827119, 0.99908739, 0.49318073],
    5506                                                                                                  [      -6.27281427, -0.00056577, 0.00034667, 7.27224850, 0.99827150, 0.99908756, 0.49318072],
    5507                                                                                                  [      -6.27281452, -0.00056567, 0.00034661, 7.27224885, 0.99827182, 0.99908772, 0.49318077],
    5508                                                                                                  [      -6.27281476, -0.00056556, 0.00034655, 7.27224920, 0.99827213, 0.99908789, 0.49318079],
    5509                                                                                                  [      -6.27281501, -0.00056546, 0.00034648, 7.27224955, 0.99827245, 0.99908806, 0.49318086],
    5510                                                                                                  [      -6.27281526, -0.00056536, 0.00034642, 7.27224990, 0.99827276, 0.99908822, 0.49318086],
    5511                                                                                                  [      -6.27281550, -0.00056525, 0.00034636, 7.27225025, 0.99827308, 0.99908839, 0.49318091],
    5512                                                                                                  [      -6.27281575, -0.00056515, 0.00034629, 7.27225060, 0.99827340, 0.99908856, 0.49318093],
    5513                                                                                                  [      -6.27281600, -0.00056505, 0.00034623, 7.27225095, 0.99827371, 0.99908872, 0.49318097],
    5514                                                                                                  [      -6.27281624, -0.00056494, 0.00034617, 7.27225130, 0.99827403, 0.99908889, 0.49318102],
    5515                                                                                                  [      -6.27281649, -0.00056484, 0.00034610, 7.27225165, 0.99827434, 0.99908905, 0.49318109],
    5516                                                                                                  [      -6.27281674, -0.00056474, 0.00034604, 7.27225200, 0.99827466, 0.99908922, 0.49318111],
    5517                                                                                                  [      -6.27281698, -0.00056463, 0.00034598, 7.27225235, 0.99827497, 0.99908939, 0.49318114],
    5518                                                                                                  [      -6.27281723, -0.00056453, 0.00034592, 7.27225270, 0.99827529, 0.99908955, 0.49318118],
    5519                                                                                                  [      -6.27281748, -0.00056443, 0.00034585, 7.27225305, 0.99827560, 0.99908972, 0.49318122],
    5520                                                                                                  [      -6.27281772, -0.00056433, 0.00034579, 7.27225340, 0.99827591, 0.99908988, 0.49318124],
    5521                                                                                                  [      -6.27281797, -0.00056422, 0.00034573, 7.27225375, 0.99827623, 0.99909005, 0.49318128],
    5522                                                                                                  [      -6.27281822, -0.00056412, 0.00034566, 7.27225409, 0.99827654, 0.99909022, 0.49318131],
    5523                                                                                                  [      -6.27281846, -0.00056402, 0.00034560, 7.27225444, 0.99827686, 0.99909038, 0.49318135],
    5524                                                                                                  [      -6.27281871, -0.00056391, 0.00034554, 7.27225479, 0.99827717, 0.99909055, 0.49318140],
    5525                                                                                                  [      -6.27281895, -0.00056381, 0.00034547, 7.27225514, 0.99827749, 0.99909071, 0.49318139],
    5526                                                                                                  [      -6.27281920, -0.00056371, 0.00034541, 7.27225549, 0.99827780, 0.99909088, 0.49318148],
    5527                                                                                                  [      -6.27281944, -0.00056361, 0.00034535, 7.27225584, 0.99827811, 0.99909105, 0.49318152],
    5528                                                                                                  [      -6.27281969, -0.00056350, 0.00034528, 7.27225619, 0.99827843, 0.99909121, 0.49318156],
    5529                                                                                                  [      -6.27281993, -0.00056340, 0.00034522, 7.27225653, 0.99827874, 0.99909138, 0.49318159],
    5530                                                                                                  [      -6.27282018, -0.00056330, 0.00034516, 7.27225688, 0.99827905, 0.99909154, 0.49318163],
    5531                                                                                                  [      -6.27282043, -0.00056320, 0.00034510, 7.27225723, 0.99827937, 0.99909171, 0.49318166],
    5532                                                                                                  [      -6.27282067, -0.00056309, 0.00034503, 7.27225758, 0.99827968, 0.99909187, 0.49318168],
    5533                                                                                                  [      -6.27282092, -0.00056299, 0.00034497, 7.27225792, 0.99827999, 0.99909204, 0.49318179],
    5534                                                                                                  [      -6.27282116, -0.00056289, 0.00034491, 7.27225827, 0.99828031, 0.99909220, 0.49318171],
    5535                                                                                                  [      -6.27282141, -0.00056279, 0.00034485, 7.27225862, 0.99828062, 0.99909237, 0.49318177],
    5536                                                                                                  [      -6.27282165, -0.00056268, 0.00034478, 7.27225897, 0.99828093, 0.99909253, 0.49318188],
    5537                                                                                                  [      -6.27282189, -0.00056258, 0.00034472, 7.27225931, 0.99828124, 0.99909270, 0.49318185],
    5538                                                                                                  [      -6.27282214, -0.00056248, 0.00034466, 7.27225966, 0.99828156, 0.99909286, 0.49318190],
    5539                                                                                                  [      -6.27282238, -0.00056238, 0.00034459, 7.27226001, 0.99828187, 0.99909303, 0.49318196],
    5540                                                                                                  [      -6.27282263, -0.00056228, 0.00034453, 7.27226035, 0.99828218, 0.99909319, 0.49318197],
    5541                                                                                                  [      -6.27282287, -0.00056217, 0.00034447, 7.27226070, 0.99828249, 0.99909336, 0.49318203],
    5542                                                                                                  [      -6.27282312, -0.00056207, 0.00034441, 7.27226104, 0.99828281, 0.99909352, 0.49318204],
    5543                                                                                                  [      -6.27282336, -0.00056197, 0.00034434, 7.27226139, 0.99828312, 0.99909369, 0.49318210],
    5544                                                                                                  [      -6.27282360, -0.00056187, 0.00034428, 7.27226174, 0.99828343, 0.99909385, 0.49318213],
    5545                                                                                                  [      -6.27282385, -0.00056177, 0.00034422, 7.27226208, 0.99828374, 0.99909402, 0.49318217],
    5546                                                                                                  [      -6.27282409, -0.00056166, 0.00034416, 7.27226243, 0.99828405, 0.99909418, 0.49318219],
    5547                                                                                                  [      -6.27282434, -0.00056156, 0.00034409, 7.27226277, 0.99828436, 0.99909434, 0.49318217],
    5548                                                                                                  [      -6.27282458, -0.00056146, 0.00034403, 7.27226312, 0.99828467, 0.99909451, 0.49318229],
    5549                                                                                                  [      -6.27282482, -0.00056136, 0.00034397, 7.27226347, 0.99828499, 0.99909467, 0.49318235],
    5550                                                                                                  [      -6.27282507, -0.00056126, 0.00034391, 7.27226381, 0.99828530, 0.99909484, 0.49318234],
    5551                                                                                                  [      -6.27282531, -0.00056115, 0.00034384, 7.27226416, 0.99828561, 0.99909500, 0.49318238],
    5552                                                                                                  [      -6.27282555, -0.00056105, 0.00034378, 7.27226450, 0.99828592, 0.99909516, 0.49318244],
    5553                                                                                                  [      -6.27282580, -0.00056095, 0.00034372, 7.27226485, 0.99828623, 0.99909533, 0.49318245],
    5554                                                                                                  [      -6.27282604, -0.00056085, 0.00034366, 7.27226519, 0.99828654, 0.99909549, 0.49318251],
    5555                                                                                                  [      -6.27282628, -0.00056075, 0.00034360, 7.27226554, 0.99828685, 0.99909566, 0.49318249],
    5556                                                                                                  [      -6.27282653, -0.00056065, 0.00034353, 7.27226588, 0.99828716, 0.99909582, 0.49318260],
    5557                                                                                                  [      -6.27282677, -0.00056055, 0.00034347, 7.27226622, 0.99828747, 0.99909598, 0.49318256],
    5558                                                                                                  [      -6.27282701, -0.00056044, 0.00034341, 7.27226657, 0.99828778, 0.99909615, 0.49318268],
    5559                                                                                                  [      -6.27282725, -0.00056034, 0.00034335, 7.27226691, 0.99828809, 0.99909631, 0.49318269],
    5560                                                                                                  [      -6.27282750, -0.00056024, 0.00034328, 7.27226726, 0.99828840, 0.99909648, 0.49318273],
    5561                                                                                                  [      -6.27282774, -0.00056014, 0.00034322, 7.27226760, 0.99828871, 0.99909664, 0.49318276],
    5562                                                                                                  [      -6.27282798, -0.00056004, 0.00034316, 7.27226794, 0.99828902, 0.99909680, 0.49318278],
    5563                                                                                                  [      -6.27282822, -0.00055994, 0.00034310, 7.27226829, 0.99828933, 0.99909697, 0.49318281],
    5564                                                                                                  [      -6.27282847, -0.00055984, 0.00034304, 7.27226863, 0.99828964, 0.99909713, 0.49318285],
    5565                                                                                                  [      -6.27282871, -0.00055973, 0.00034297, 7.27226898, 0.99828995, 0.99909729, 0.49318289],
    5566                                                                                                  [      -6.27282895, -0.00055963, 0.00034291, 7.27226932, 0.99829026, 0.99909746, 0.49318294],
    5567                                                                                                  [      -6.27282919, -0.00055953, 0.00034285, 7.27226966, 0.99829057, 0.99909762, 0.49318296],
    5568                                                                                                  [      -6.27282944, -0.00055943, 0.00034279, 7.27227000, 0.99829088, 0.99909778, 0.49318295],
    5569                                                                                                  [      -6.27282968, -0.00055933, 0.00034273, 7.27227035, 0.99829119, 0.99909794, 0.49318302],
    5570                                                                                                  [      -6.27282992, -0.00055923, 0.00034266, 7.27227069, 0.99829150, 0.99909811, 0.49318310],
    5571                                                                                                  [      -6.27283016, -0.00055913, 0.00034260, 7.27227103, 0.99829180, 0.99909827, 0.49318311],
    5572                                                                                                  [      -6.27283040, -0.00055903, 0.00034254, 7.27227138, 0.99829211, 0.99909843, 0.49318314],
    5573                                                                                                  [      -6.27283064, -0.00055893, 0.00034248, 7.27227172, 0.99829242, 0.99909860, 0.49318318],
    5574                                                                                                  [      -6.27283089, -0.00055882, 0.00034242, 7.27227206, 0.99829273, 0.99909876, 0.49318320],
    5575                                                                                                  [      -6.27283113, -0.00055872, 0.00034235, 7.27227240, 0.99829304, 0.99909892, 0.49318320],
    5576                                                                                                  [      -6.27283137, -0.00055862, 0.00034229, 7.27227274, 0.99829335, 0.99909908, 0.49318327],
    5577                                                                                                  [      -6.27283161, -0.00055852, 0.00034223, 7.27227309, 0.99829365, 0.99909925, 0.49318333],
    5578                                                                                                  [      -6.27283185, -0.00055842, 0.00034217, 7.27227343, 0.99829396, 0.99909941, 0.49318333],
    5579                                                                                                  [      -6.27283209, -0.00055832, 0.00034211, 7.27227377, 0.99829427, 0.99909957, 0.49318336],
    5580                                                                                                  [      -6.27283233, -0.00055822, 0.00034204, 7.27227411, 0.99829458, 0.99909973, 0.49318343],
    5581                                                                                                  [      -6.27283257, -0.00055812, 0.00034198, 7.27227445, 0.99829489, 0.99909990, 0.49318344],
    5582                                                                                                  [      -6.27283281, -0.00055802, 0.00034192, 7.27227479, 0.99829519, 0.99910006, 0.49318351],
    5583                                                                                                  [      -6.27283305, -0.00055792, 0.00034186, 7.27227514, 0.99829550, 0.99910022, 0.49318353],
    5584                                                                                                  [      -6.27283329, -0.00055782, 0.00034180, 7.27227548, 0.99829581, 0.99910038, 0.49318358],
    5585                                                                                                  [      -6.27283353, -0.00055772, 0.00034174, 7.27227582, 0.99829611, 0.99910055, 0.49318362],
    5586                                                                                                  [      -6.27283378, -0.00055762, 0.00034168, 7.27227616, 0.99829642, 0.99910071, 0.49318360],
    5587                                                                                                  [      -6.27283402, -0.00055752, 0.00034161, 7.27227650, 0.99829673, 0.99910087, 0.49318367],
    5588                                                                                                  [      -6.27283426, -0.00055742, 0.00034155, 7.27227684, 0.99829704, 0.99910103, 0.49318371],
    5589                                                                                                  [      -6.27283450, -0.00055732, 0.00034149, 7.27227718, 0.99829734, 0.99910119, 0.49318374],
    5590                                                                                                  [      -6.27283474, -0.00055722, 0.00034143, 7.27227752, 0.99829765, 0.99910136, 0.49318380],
    5591                                                                                                  [      -6.27283498, -0.00055712, 0.00034137, 7.27227786, 0.99829796, 0.99910152, 0.49318376],
    5592                                                                                                  [      -6.27283522, -0.00055701, 0.00034131, 7.27227820, 0.99829826, 0.99910168, 0.49318386],
    5593                                                                                                  [      -6.27283546, -0.00055691, 0.00034124, 7.27227854, 0.99829857, 0.99910184, 0.49318389],
    5594                                                                                                  [      -6.27283570, -0.00055681, 0.00034118, 7.27227888, 0.99829887, 0.99910200, 0.49318390],
    5595                                                                                                  [      -6.27283593, -0.00055671, 0.00034112, 7.27227922, 0.99829918, 0.99910216, 0.49318396],
    5596                                                                                                  [      -6.27283617, -0.00055661, 0.00034106, 7.27227956, 0.99829949, 0.99910233, 0.49318401],
    5597                                                                                                  [      -6.27283641, -0.00055651, 0.00034100, 7.27227990, 0.99829979, 0.99910249, 0.49318410],
    5598                                                                                                  [      -6.27283665, -0.00055641, 0.00034094, 7.27228024, 0.99830010, 0.99910265, 0.49318407],
    5599                                                                                                  [      -6.27283689, -0.00055631, 0.00034088, 7.27228058, 0.99830040, 0.99910281, 0.49318407],
    5600                                                                                                  [      -6.27283713, -0.00055621, 0.00034081, 7.27228092, 0.99830071, 0.99910297, 0.49318414],
    5601                                                                                                  [      -6.27283737, -0.00055611, 0.00034075, 7.27228126, 0.99830101, 0.99910313, 0.49318415],
    5602                                                                                                  [      -6.27283761, -0.00055601, 0.00034069, 7.27228159, 0.99830132, 0.99910329, 0.49318423],
    5603                                                                                                  [      -6.27283785, -0.00055591, 0.00034063, 7.27228193, 0.99830163, 0.99910345, 0.49318423],
    5604                                                                                                  [      -6.27283809, -0.00055581, 0.00034057, 7.27228227, 0.99830193, 0.99910362, 0.49318427],
    5605                                                                                                  [      -6.27283833, -0.00055571, 0.00034051, 7.27228261, 0.99830224, 0.99910378, 0.49318428],
    5606                                                                                                  [      -6.27283856, -0.00055562, 0.00034045, 7.27228295, 0.99830254, 0.99910394, 0.49318433],
    5607                                                                                                  [      -6.27283880, -0.00055552, 0.00034039, 7.27228329, 0.99830285, 0.99910410, 0.49318443],
    5608                                                                                                  [      -6.27283904, -0.00055542, 0.00034033, 7.27228363, 0.99830315, 0.99910426, 0.49318443],
    5609                                                                                                  [      -6.27283928, -0.00055532, 0.00034026, 7.27228396, 0.99830345, 0.99910442, 0.49318449],
    5610                                                                                                  [      -6.27283952, -0.00055522, 0.00034020, 7.27228430, 0.99830376, 0.99910458, 0.49318449],
    5611                                                                                                  [      -6.27283976, -0.00055512, 0.00034014, 7.27228464, 0.99830406, 0.99910474, 0.49318454],
    5612                                                                                                  [      -6.27283999, -0.00055502, 0.00034008, 7.27228498, 0.99830437, 0.99910490, 0.49318457],
    5613                                                                                                  [      -6.27284023, -0.00055492, 0.00034002, 7.27228531, 0.99830467, 0.99910506, 0.49318459],
    5614                                                                                                  [      -6.27284047, -0.00055482, 0.00033996, 7.27228565, 0.99830498, 0.99910522, 0.49318460],
    5615                                                                                                  [      -6.27284071, -0.00055472, 0.00033990, 7.27228599, 0.99830528, 0.99910538, 0.49318465],
    5616                                                                                                  [      -6.27284095, -0.00055462, 0.00033984, 7.27228633, 0.99830558, 0.99910554, 0.49318472],
    5617                                                                                                  [      -6.27284118, -0.00055452, 0.00033978, 7.27228666, 0.99830589, 0.99910570, 0.49318477],
    5618                                                                                                  [      -6.27284142, -0.00055442, 0.00033972, 7.27228700, 0.99830619, 0.99910586, 0.49318479],
    5619                                                                                                  [      -6.27284166, -0.00055432, 0.00033965, 7.27228734, 0.99830649, 0.99910602, 0.49318483],
    5620                                                                                                  [      -6.27284190, -0.00055422, 0.00033959, 7.27228767, 0.99830680, 0.99910618, 0.49318487],
    5621                                                                                                  [      -6.27284213, -0.00055412, 0.00033953, 7.27228801, 0.99830710, 0.99910634, 0.49318489],
    5622                                                                                                  [      -6.27284237, -0.00055402, 0.00033947, 7.27228835, 0.99830740, 0.99910650, 0.49318490],
    5623                                                                                                  [      -6.27284261, -0.00055393, 0.00033941, 7.27228868, 0.99830771, 0.99910666, 0.49318496],
    5624                                                                                                  [      -6.27284285, -0.00055383, 0.00033935, 7.27228902, 0.99830801, 0.99910682, 0.49318499],
    5625                                                                                                  [      -6.27284308, -0.00055373, 0.00033929, 7.27228936, 0.99830831, 0.99910698, 0.49318499],
    5626                                                                                                  [      -6.27284332, -0.00055363, 0.00033923, 7.27228969, 0.99830861, 0.99910714, 0.49318509],
    5627                                                                                                  [      -6.27284356, -0.00055353, 0.00033917, 7.27229003, 0.99830892, 0.99910730, 0.49318511],
    5628                                                                                                  [      -6.27284379, -0.00055343, 0.00033911, 7.27229036, 0.99830922, 0.99910746, 0.49318515],
    5629                                                                                                  [      -6.27284403, -0.00055333, 0.00033905, 7.27229070, 0.99830952, 0.99910762, 0.49318516],
    5630                                                                                                  [      -6.27284427, -0.00055323, 0.00033899, 7.27229103, 0.99830982, 0.99910778, 0.49318524],
    5631                                                                                                  [      -6.27284450, -0.00055313, 0.00033893, 7.27229137, 0.99831013, 0.99910794, 0.49318524],
    5632                                                                                                  [      -6.27284474, -0.00055303, 0.00033887, 7.27229170, 0.99831043, 0.99910810, 0.49318528],
    5633                                                                                                  [      -6.27284498, -0.00055294, 0.00033880, 7.27229204, 0.99831073, 0.99910826, 0.49318529],
    5634                                                                                                  [      -6.27284521, -0.00055284, 0.00033874, 7.27229237, 0.99831103, 0.99910842, 0.49318533],
    5635                                                                                                  [      -6.27284545, -0.00055274, 0.00033868, 7.27229271, 0.99831133, 0.99910858, 0.49318539],
    5636                                                                                                  [      -6.27284568, -0.00055264, 0.00033862, 7.27229304, 0.99831164, 0.99910874, 0.49318542],
    5637                                                                                                  [      -6.27284592, -0.00055254, 0.00033856, 7.27229338, 0.99831194, 0.99910890, 0.49318543],
    5638                                                                                                  [      -6.27284616, -0.00055244, 0.00033850, 7.27229371, 0.99831224, 0.99910906, 0.49318547],
    5639                                                                                                  [      -6.27284639, -0.00055234, 0.00033844, 7.27229405, 0.99831254, 0.99910921, 0.49318555],
    5640                                                                                                  [      -6.27284663, -0.00055225, 0.00033838, 7.27229438, 0.99831284, 0.99910937, 0.49318557],
    5641                                                                                                  [      -6.27284686, -0.00055215, 0.00033832, 7.27229472, 0.99831314, 0.99910953, 0.49318561],
    5642                                                                                                  [      -6.27284710, -0.00055205, 0.00033826, 7.27229505, 0.99831344, 0.99910969, 0.49318565],
    5643                                                                                                  [      -6.27284733, -0.00055195, 0.00033820, 7.27229538, 0.99831374, 0.99910985, 0.49318570],
    5644                                                                                                  [      -6.27284757, -0.00055185, 0.00033814, 7.27229572, 0.99831404, 0.99911001, 0.49318569],
    5645                                                                                                  [      -6.27284781, -0.00055175, 0.00033808, 7.27229605, 0.99831435, 0.99911017, 0.49318574],
    5646                                                                                                  [      -6.27284804, -0.00055165, 0.00033802, 7.27229639, 0.99831465, 0.99911033, 0.49318575],
    5647                                                                                                  [      -6.27284828, -0.00055156, 0.00033796, 7.27229672, 0.99831495, 0.99911048, 0.49318581],
    5648                                                                                                  [      -6.27284851, -0.00055146, 0.00033790, 7.27229705, 0.99831525, 0.99911064, 0.49318582],
    5649                                                                                                  [      -6.27284875, -0.00055136, 0.00033784, 7.27229739, 0.99831555, 0.99911080, 0.49318586],
    5650                                                                                                  [      -6.27284898, -0.00055126, 0.00033778, 7.27229772, 0.99831585, 0.99911096, 0.49318588],
    5651                                                                                                  [      -6.27284922, -0.00055116, 0.00033772, 7.27229805, 0.99831615, 0.99911112, 0.49318595],
    5652                                                                                                  [      -6.27284945, -0.00055107, 0.00033766, 7.27229838, 0.99831645, 0.99911128, 0.49318599],
    5653                                                                                                  [      -6.27284968, -0.00055097, 0.00033760, 7.27229872, 0.99831675, 0.99911143, 0.49318604],
    5654                                                                                                  [      -6.27284992, -0.00055087, 0.00033754, 7.27229905, 0.99831705, 0.99911159, 0.49318604],
    5655                                                                                                  [      -6.27285015, -0.00055077, 0.00033748, 7.27229938, 0.99831735, 0.99911175, 0.49318612],
    5656                                                                                                  [      -6.27285039, -0.00055067, 0.00033742, 7.27229971, 0.99831765, 0.99911191, 0.49318613],
    5657                                                                                                  [      -6.27285062, -0.00055058, 0.00033736, 7.27230005, 0.99831794, 0.99911207, 0.49318622],
    5658                                                                                                  [      -6.27285086, -0.00055048, 0.00033730, 7.27230038, 0.99831824, 0.99911223, 0.49318623],
    5659                                                                                                  [      -6.27285109, -0.00055038, 0.00033724, 7.27230071, 0.99831854, 0.99911238, 0.49318626],
    5660                                                                                                  [      -6.27285133, -0.00055028, 0.00033718, 7.27230104, 0.99831884, 0.99911254, 0.49318626],
    5661                                                                                                  [      -6.27285156, -0.00055018, 0.00033712, 7.27230138, 0.99831914, 0.99911270, 0.49318628],
    5662                                                                                                  [      -6.27285179, -0.00055009, 0.00033706, 7.27230171, 0.99831944, 0.99911286, 0.49318633],
    5663                                                                                                  [      -6.27285203, -0.00054999, 0.00033700, 7.27230204, 0.99831974, 0.99911301, 0.49318637],
    5664                                                                                                  [      -6.27285226, -0.00054989, 0.00033694, 7.27230237, 0.99832004, 0.99911317, 0.49318637],
    5665                                                                                                  [      -6.27285249, -0.00054979, 0.00033688, 7.27230270, 0.99832034, 0.99911333, 0.49318644],
    5666                                                                                                  [      -6.27285273, -0.00054970, 0.00033682, 7.27230303, 0.99832063, 0.99911349, 0.49318645],
    5667                                                                                                  [      -6.27285296, -0.00054960, 0.00033676, 7.27230336, 0.99832093, 0.99911364, 0.49318646],
    5668                                                                                                  [      -6.27285319, -0.00054950, 0.00033670, 7.27230369, 0.99832123, 0.99911380, 0.49318651],
    5669                                                                                                  [      -6.27285343, -0.00054940, 0.00033664, 7.27230403, 0.99832153, 0.99911396, 0.49318650],
    5670                                                                                                  [      -6.27285366, -0.00054931, 0.00033658, 7.27230436, 0.99832183, 0.99911412, 0.49318659],
    5671                                                                                                  [      -6.27285389, -0.00054921, 0.00033652, 7.27230469, 0.99832212, 0.99911427, 0.49318666],
    5672                                                                                                  [      -6.27285413, -0.00054911, 0.00033646, 7.27230502, 0.99832242, 0.99911443, 0.49318665],
    5673                                                                                                  [      -6.27285436, -0.00054901, 0.00033640, 7.27230535, 0.99832272, 0.99911459, 0.49318670],
    5674                                                                                                  [      -6.27285459, -0.00054892, 0.00033634, 7.27230568, 0.99832302, 0.99911474, 0.49318673],
    5675                                                                                                  [      -6.27285483, -0.00054882, 0.00033628, 7.27230601, 0.99832332, 0.99911490, 0.49318677],
    5676                                                                                                  [      -6.27285506, -0.00054872, 0.00033622, 7.27230634, 0.99832361, 0.99911506, 0.49318685],
    5677                                                                                                  [      -6.27285529, -0.00054862, 0.00033616, 7.27230667, 0.99832391, 0.99911522, 0.49318683],
    5678                                                                                                  [      -6.27285552, -0.00054853, 0.00033610, 7.27230700, 0.99832421, 0.99911537, 0.49318692],
    5679                                                                                                  [      -6.27285576, -0.00054843, 0.00033604, 7.27230733, 0.99832450, 0.99911553, 0.49318690],
    5680                                                                                                  [      -6.27285599, -0.00054833, 0.00033598, 7.27230766, 0.99832480, 0.99911569, 0.49318694],
    5681                                                                                                  [      -6.27285622, -0.00054824, 0.00033592, 7.27230799, 0.99832510, 0.99911584, 0.49318700],
    5682                                                                                                  [      -6.27285645, -0.00054814, 0.00033586, 7.27230832, 0.99832539, 0.99911600, 0.49318701],
    5683                                                                                                  [      -6.27285669, -0.00054804, 0.00033580, 7.27230865, 0.99832569, 0.99911616, 0.49318705],
    5684                                                                                                  [      -6.27285692, -0.00054794, 0.00033574, 7.27230897, 0.99832599, 0.99911631, 0.49318711],
    5685                                                                                                  [      -6.27285715, -0.00054785, 0.00033568, 7.27230930, 0.99832628, 0.99911647, 0.49318708],
    5686                                                                                                  [      -6.27285738, -0.00054775, 0.00033563, 7.27230963, 0.99832658, 0.99911662, 0.49318719],
    5687                                                                                                  [      -6.27285761, -0.00054765, 0.00033557, 7.27230996, 0.99832688, 0.99911678, 0.49318717],
    5688                                                                                                  [      -6.27285785, -0.00054756, 0.00033551, 7.27231029, 0.99832717, 0.99911694, 0.49318724],
    5689                                                                                                  [      -6.27285808, -0.00054746, 0.00033545, 7.27231062, 0.99832747, 0.99911709, 0.49318723],
    5690                                                                                                  [      -6.27285831, -0.00054736, 0.00033539, 7.27231095, 0.99832776, 0.99911725, 0.49318729],
    5691                                                                                                  [      -6.27285854, -0.00054727, 0.00033533, 7.27231127, 0.99832806, 0.99911741, 0.49318737],
    5692                                                                                                  [      -6.27285877, -0.00054717, 0.00033527, 7.27231160, 0.99832836, 0.99911756, 0.49318736],
    5693                                                                                                  [      -6.27285900, -0.00054707, 0.00033521, 7.27231193, 0.99832865, 0.99911772, 0.49318737],
    5694                                                                                                  [      -6.27285923, -0.00054698, 0.00033515, 7.27231226, 0.99832895, 0.99911787, 0.49318744],
    5695                                                                                                  [      -6.27285947, -0.00054688, 0.00033509, 7.27231259, 0.99832924, 0.99911803, 0.49318747],
    5696                                                                                                  [      -6.27285970, -0.00054678, 0.00033503, 7.27231291, 0.99832954, 0.99911819, 0.49318750],
    5697                                                                                                  [      -6.27285993, -0.00054669, 0.00033497, 7.27231324, 0.99832983, 0.99911834, 0.49318752],
    5698                                                                                                  [      -6.27286016, -0.00054659, 0.00033491, 7.27231357, 0.99833013, 0.99911850, 0.49318756],
    5699                                                                                                  [      -6.27286039, -0.00054649, 0.00033485, 7.27231390, 0.99833042, 0.99911865, 0.49318760],
    5700                                                                                                  [      -6.27286062, -0.00054640, 0.00033480, 7.27231422, 0.99833072, 0.99911881, 0.49318765],
    5701                                                                                                  [      -6.27286085, -0.00054630, 0.00033474, 7.27231455, 0.99833101, 0.99911896, 0.49318766],
    5702                                                                                                  [      -6.27286108, -0.00054620, 0.00033468, 7.27231488, 0.99833131, 0.99911912, 0.49318767],
    5703                                                                                                  [      -6.27286131, -0.00054611, 0.00033462, 7.27231521, 0.99833160, 0.99911927, 0.49318769],
    5704                                                                                                  [      -6.27286154, -0.00054601, 0.00033456, 7.27231553, 0.99833190, 0.99911943, 0.49318777],
    5705                                                                                                  [      -6.27286177, -0.00054591, 0.00033450, 7.27231586, 0.99833219, 0.99911959, 0.49318778],
    5706                                                                                                  [      -6.27286200, -0.00054582, 0.00033444, 7.27231619, 0.99833248, 0.99911974, 0.49318783],
    5707                                                                                                  [      -6.27286223, -0.00054572, 0.00033438, 7.27231651, 0.99833278, 0.99911990, 0.49318785],
    5708                                                                                                  [      -6.27286246, -0.00054563, 0.00033432, 7.27231684, 0.99833307, 0.99912005, 0.49318790],
    5709                                                                                                  [      -6.27286269, -0.00054553, 0.00033426, 7.27231716, 0.99833337, 0.99912021, 0.49318796],
    5710                                                                                                  [      -6.27286292, -0.00054543, 0.00033420, 7.27231749, 0.99833366, 0.99912036, 0.49318798],
    5711                                                                                                  [      -6.27286315, -0.00054534, 0.00033415, 7.27231782, 0.99833395, 0.99912052, 0.49318802],
    5712                                                                                                  [      -6.27286338, -0.00054524, 0.00033409, 7.27231814, 0.99833425, 0.99912067, 0.49318801],
    5713                                                                                                  [      -6.27286361, -0.00054515, 0.00033403, 7.27231847, 0.99833454, 0.99912083, 0.49318810],
    5714                                                                                                  [      -6.27286384, -0.00054505, 0.00033397, 7.27231879, 0.99833483, 0.99912098, 0.49318815],
    5715                                                                                                  [      -6.27286407, -0.00054495, 0.00033391, 7.27231912, 0.99833513, 0.99912114, 0.49318815],
    5716                                                                                                  [      -6.27286430, -0.00054486, 0.00033385, 7.27231944, 0.99833542, 0.99912129, 0.49318821],
    5717                                                                                                  [      -6.27286453, -0.00054476, 0.00033379, 7.27231977, 0.99833571, 0.99912145, 0.49318820],
    5718                                                                                                  [      -6.27286476, -0.00054467, 0.00033373, 7.27232010, 0.99833601, 0.99912160, 0.49318828],
    5719                                                                                                  [      -6.27286499, -0.00054457, 0.00033368, 7.27232042, 0.99833630, 0.99912175, 0.49318827],
    5720                                                                                                  [      -6.27286522, -0.00054447, 0.00033362, 7.27232075, 0.99833659, 0.99912191, 0.49318830],
    5721                                                                                                  [      -6.27286545, -0.00054438, 0.00033356, 7.27232107, 0.99833689, 0.99912206, 0.49318834],
    5722                                                                                                  [      -6.27286568, -0.00054428, 0.00033350, 7.27232139, 0.99833718, 0.99912222, 0.49318840],
    5723                                                                                                  [      -6.27286591, -0.00054419, 0.00033344, 7.27232172, 0.99833747, 0.99912237, 0.49318849],
    5724                                                                                                  [      -6.27286614, -0.00054409, 0.00033338, 7.27232204, 0.99833776, 0.99912253, 0.49318845],
    5725                                                                                                  [      -6.27286636, -0.00054400, 0.00033332, 7.27232237, 0.99833805, 0.99912268, 0.49318852],
    5726                                                                                                  [      -6.27286659, -0.00054390, 0.00033326, 7.27232269, 0.99833835, 0.99912283, 0.49318851],
    5727                                                                                                  [      -6.27286682, -0.00054380, 0.00033321, 7.27232302, 0.99833864, 0.99912299, 0.49318855],
    5728                                                                                                  [      -6.27286705, -0.00054371, 0.00033315, 7.27232334, 0.99833893, 0.99912314, 0.49318857],
    5729                                                                                                  [      -6.27286728, -0.00054361, 0.00033309, 7.27232366, 0.99833922, 0.99912330, 0.49318863],
    5730                                                                                                  [      -6.27286751, -0.00054352, 0.00033303, 7.27232399, 0.99833951, 0.99912345, 0.49318865],
    5731                                                                                                  [      -6.27286774, -0.00054342, 0.00033297, 7.27232431, 0.99833981, 0.99912360, 0.49318871],
    5732                                                                                                  [      -6.27286796, -0.00054333, 0.00033291, 7.27232464, 0.99834010, 0.99912376, 0.49318871],
    5733                                                                                                  [      -6.27286819, -0.00054323, 0.00033286, 7.27232496, 0.99834039, 0.99912391, 0.49318882],
    5734                                                                                                  [      -6.27286842, -0.00054314, 0.00033280, 7.27232528, 0.99834068, 0.99912407, 0.49318885],
    5735                                                                                                  [      -6.27286865, -0.00054304, 0.00033274, 7.27232561, 0.99834097, 0.99912422, 0.49318882],
    5736                                                                                                  [      -6.27286888, -0.00054295, 0.00033268, 7.27232593, 0.99834126, 0.99912437, 0.49318888],
    5737                                                                                                  [      -6.27286910, -0.00054285, 0.00033262, 7.27232625, 0.99834155, 0.99912453, 0.49318890],
    5738                                                                                                  [      -6.27286933, -0.00054276, 0.00033256, 7.27232657, 0.99834184, 0.99912468, 0.49318892],
    5739                                                                                                  [      -6.27286956, -0.00054266, 0.00033250, 7.27232690, 0.99834214, 0.99912483, 0.49318896],
    5740                                                                                                  [      -6.27286979, -0.00054257, 0.00033245, 7.27232722, 0.99834243, 0.99912499, 0.49318900],
    5741                                                                                                  [      -6.27287001, -0.00054247, 0.00033239, 7.27232754, 0.99834272, 0.99912514, 0.49318899],
    5742                                                                                                  [      -6.27287024, -0.00054238, 0.00033233, 7.27232787, 0.99834301, 0.99912529, 0.49318908],
    5743                                                                                                  [      -6.27287047, -0.00054228, 0.00033227, 7.27232819, 0.99834330, 0.99912545, 0.49318910],
    5744                                                                                                  [      -6.27287070, -0.00054219, 0.00033221, 7.27232851, 0.99834359, 0.99912560, 0.49318913],
    5745                                                                                                  [      -6.27287092, -0.00054209, 0.00033216, 7.27232883, 0.99834388, 0.99912575, 0.49318913],
    5746                                                                                                  [      -6.27287115, -0.00054200, 0.00033210, 7.27232915, 0.99834417, 0.99912591, 0.49318919],
    5747                                                                                                  [      -6.27287138, -0.00054190, 0.00033204, 7.27232948, 0.99834446, 0.99912606, 0.49318918],
    5748                                                                                                  [      -6.27287160, -0.00054181, 0.00033198, 7.27232980, 0.99834475, 0.99912621, 0.49318924],
    5749                                                                                                  [      -6.27287183, -0.00054171, 0.00033192, 7.27233012, 0.99834504, 0.99912637, 0.49318928],
    5750                                                                                                  [      -6.27287206, -0.00054162, 0.00033186, 7.27233044, 0.99834533, 0.99912652, 0.49318937],
    5751                                                                                                  [      -6.27287228, -0.00054152, 0.00033181, 7.27233076, 0.99834562, 0.99912667, 0.49318939],
    5752                                                                                                  [      -6.27287251, -0.00054143, 0.00033175, 7.27233108, 0.99834591, 0.99912682, 0.49318942],
    5753                                                                                                  [      -6.27287274, -0.00054133, 0.00033169, 7.27233140, 0.99834620, 0.99912698, 0.49318944],
    5754                                                                                                  [      -6.27287296, -0.00054124, 0.00033163, 7.27233173, 0.99834649, 0.99912713, 0.49318945],
    5755                                                                                                  [      -6.27287319, -0.00054114, 0.00033157, 7.27233205, 0.99834677, 0.99912728, 0.49318948],
    5756                                                                                                  [      -6.27287342, -0.00054105, 0.00033152, 7.27233237, 0.99834706, 0.99912744, 0.49318948],
    5757                                                                                                  [      -6.27287364, -0.00054095, 0.00033146, 7.27233269, 0.99834735, 0.99912759, 0.49318960],
    5758                                                                                                  [      -6.27287387, -0.00054086, 0.00033140, 7.27233301, 0.99834764, 0.99912774, 0.49318965],
    5759                                                                                                  [      -6.27287409, -0.00054076, 0.00033134, 7.27233333, 0.99834793, 0.99912789, 0.49318963],
    5760                                                                                                  [      -6.27287432, -0.00054067, 0.00033128, 7.27233365, 0.99834822, 0.99912805, 0.49318967],
    5761                                                                                                  [      -6.27287455, -0.00054058, 0.00033123, 7.27233397, 0.99834851, 0.99912820, 0.49318974],
    5762                                                                                                  [      -6.27287477, -0.00054048, 0.00033117, 7.27233429, 0.99834880, 0.99912835, 0.49318975],
    5763                                                                                                  [      -6.27287500, -0.00054039, 0.00033111, 7.27233461, 0.99834908, 0.99912850, 0.49318982],
    5764                                                                                                  [      -6.27287522, -0.00054029, 0.00033105, 7.27233493, 0.99834937, 0.99912865, 0.49318976],
    5765                                                                                                  [      -6.27287545, -0.00054020, 0.00033100, 7.27233525, 0.99834966, 0.99912881, 0.49318982],
    5766                                                                                                  [      -6.27287568, -0.00054010, 0.00033094, 7.27233557, 0.99834995, 0.99912896, 0.49318990],
    5767                                                                                                  [      -6.27287590, -0.00054001, 0.00033088, 7.27233589, 0.99835024, 0.99912911, 0.49318991],
    5768                                                                                                  [      -6.27287613, -0.00053992, 0.00033082, 7.27233621, 0.99835052, 0.99912926, 0.49318988],
    5769                                                                                                  [      -6.27287635, -0.00053982, 0.00033076, 7.27233653, 0.99835081, 0.99912941, 0.49319001],
    5770                                                                                                  [      -6.27287658, -0.00053973, 0.00033071, 7.27233685, 0.99835110, 0.99912957, 0.49318998],
    5771                                                                                                  [      -6.27287680, -0.00053963, 0.00033065, 7.27233717, 0.99835139, 0.99912972, 0.49319007],
    5772                                                                                                  [      -6.27287703, -0.00053954, 0.00033059, 7.27233749, 0.99835168, 0.99912987, 0.49319009],
    5773                                                                                                  [      -6.27287725, -0.00053945, 0.00033053, 7.27233781, 0.99835196, 0.99913002, 0.49319013],
    5774                                                                                                  [      -6.27287748, -0.00053935, 0.00033048, 7.27233812, 0.99835225, 0.99913017, 0.49319012],
    5775                                                                                                  [      -6.27287770, -0.00053926, 0.00033042, 7.27233844, 0.99835254, 0.99913032, 0.49319022],
    5776                                                                                                  [      -6.27287793, -0.00053916, 0.00033036, 7.27233876, 0.99835282, 0.99913048, 0.49319019],
    5777                                                                                                  [      -6.27287815, -0.00053907, 0.00033030, 7.27233908, 0.99835311, 0.99913063, 0.49319021],
    5778                                                                                                  [      -6.27287838, -0.00053898, 0.00033025, 7.27233940, 0.99835340, 0.99913078, 0.49319029],
    5779                                                                                                  [      -6.27287860, -0.00053888, 0.00033019, 7.27233972, 0.99835368, 0.99913093, 0.49319029],
    5780                                                                                                  [      -6.27287882, -0.00053879, 0.00033013, 7.27234004, 0.99835397, 0.99913108, 0.49319033],
    5781                                                                                                  [      -6.27287905, -0.00053869, 0.00033007, 7.27234035, 0.99835426, 0.99913123, 0.49319038],
    5782                                                                                                  [      -6.27287927, -0.00053860, 0.00033002, 7.27234067, 0.99835454, 0.99913138, 0.49319044],
    5783                                                                                                  [      -6.27287950, -0.00053851, 0.00032996, 7.27234099, 0.99835483, 0.99913153, 0.49319044],
    5784                                                                                                  [      -6.27287972, -0.00053841, 0.00032990, 7.27234131, 0.99835512, 0.99913169, 0.49319052],
    5785                                                                                                  [      -6.27287994, -0.00053832, 0.00032984, 7.27234162, 0.99835540, 0.99913184, 0.49319053],
    5786                                                                                                  [      -6.27288017, -0.00053823, 0.00032979, 7.27234194, 0.99835569, 0.99913199, 0.49319055],
    5787                                                                                                  [      -6.27288039, -0.00053813, 0.00032973, 7.27234226, 0.99835598, 0.99913214, 0.49319059],
    5788                                                                                                  [      -6.27288062, -0.00053804, 0.00032967, 7.27234258, 0.99835626, 0.99913229, 0.49319064],
    5789                                                                                                  [      -6.27288084, -0.00053795, 0.00032961, 7.27234289, 0.99835655, 0.99913244, 0.49319065],
    5790                                                                                                  [      -6.27288106, -0.00053785, 0.00032956, 7.27234321, 0.99835683, 0.99913259, 0.49319063],
    5791                                                                                                  [      -6.27288129, -0.00053776, 0.00032950, 7.27234353, 0.99835712, 0.99913274, 0.49319073],
    5792                                                                                                  [      -6.27288151, -0.00053767, 0.00032944, 7.27234385, 0.99835740, 0.99913289, 0.49319071],
    5793                                                                                                  [      -6.27288173, -0.00053757, 0.00032938, 7.27234416, 0.99835769, 0.99913304, 0.49319080],
    5794                                                                                                  [      -6.27288196, -0.00053748, 0.00032933, 7.27234448, 0.99835797, 0.99913319, 0.49319079],
    5795                                                                                                  [      -6.27288218, -0.00053739, 0.00032927, 7.27234480, 0.99835826, 0.99913334, 0.49319084],
    5796                                                                                                  [      -6.27288240, -0.00053729, 0.00032921, 7.27234511, 0.99835854, 0.99913349, 0.49319094],
    5797                                                                                                  [      -6.27288263, -0.00053720, 0.00032916, 7.27234543, 0.99835883, 0.99913365, 0.49319090],
    5798                                                                                                  [      -6.27288285, -0.00053711, 0.00032910, 7.27234574, 0.99835911, 0.99913380, 0.49319093],
    5799                                                                                                  [      -6.27288307, -0.00053701, 0.00032904, 7.27234606, 0.99835940, 0.99913395, 0.49319095],
    5800                                                                                                  [      -6.27288330, -0.00053692, 0.00032898, 7.27234638, 0.99835968, 0.99913410, 0.49319102],
    5801                                                                                                  [      -6.27288352, -0.00053683, 0.00032893, 7.27234669, 0.99835997, 0.99913425, 0.49319110],
    5802                                                                                                  [      -6.27288374, -0.00053673, 0.00032887, 7.27234701, 0.99836025, 0.99913440, 0.49319107],
    5803                                                                                                  [      -6.27288396, -0.00053664, 0.00032881, 7.27234732, 0.99836054, 0.99913455, 0.49319115],
    5804                                                                                                  [      -6.27288419, -0.00053655, 0.00032876, 7.27234764, 0.99836082, 0.99913470, 0.49319113],
    5805                                                                                                  [      -6.27288441, -0.00053645, 0.00032870, 7.27234795, 0.99836111, 0.99913485, 0.49319119],
    5806                                                                                                  [      -6.27288463, -0.00053636, 0.00032864, 7.27234827, 0.99836139, 0.99913500, 0.49319119],
    5807                                                                                                  [      -6.27288485, -0.00053627, 0.00032859, 7.27234859, 0.99836167, 0.99913515, 0.49319124],
    5808                                                                                                  [      -6.27288508, -0.00053618, 0.00032853, 7.27234890, 0.99836196, 0.99913530, 0.49319131],
    5809                                                                                                  [      -6.27288530, -0.00053608, 0.00032847, 7.27234922, 0.99836224, 0.99913545, 0.49319132],
    5810                                                                                                  [      -6.27288552, -0.00053599, 0.00032841, 7.27234953, 0.99836253, 0.99913560, 0.49319134],
    5811                                                                                                  [      -6.27288574, -0.00053590, 0.00032836, 7.27234985, 0.99836281, 0.99913575, 0.49319141],
    5812                                                                                                  [      -6.27288596, -0.00053580, 0.00032830, 7.27235016, 0.99836309, 0.99913590, 0.49319142],
    5813                                                                                                  [      -6.27288619, -0.00053571, 0.00032824, 7.27235047, 0.99836338, 0.99913604, 0.49319138],
    5814                                                                                                  [      -6.27288641, -0.00053562, 0.00032819, 7.27235079, 0.99836366, 0.99913619, 0.49319145],
    5815                                                                                                  [      -6.27288663, -0.00053553, 0.00032813, 7.27235110, 0.99836394, 0.99913634, 0.49319149],
    5816                                                                                                  [      -6.27288685, -0.00053543, 0.00032807, 7.27235142, 0.99836423, 0.99913649, 0.49319155],
    5817                                                                                                  [      -6.27288707, -0.00053534, 0.00032802, 7.27235173, 0.99836451, 0.99913664, 0.49319156],
    5818                                                                                                  [      -6.27288729, -0.00053525, 0.00032796, 7.27235205, 0.99836479, 0.99913679, 0.49319156],
    5819                                                                                                  [      -6.27288752, -0.00053516, 0.00032790, 7.27235236, 0.99836507, 0.99913694, 0.49319162],
    5820                                                                                                  [      -6.27288774, -0.00053506, 0.00032785, 7.27235267, 0.99836536, 0.99913709, 0.49319169],
    5821                                                                                                  [      -6.27288796, -0.00053497, 0.00032779, 7.27235299, 0.99836564, 0.99913724, 0.49319169],
    5822                                                                                                  [      -6.27288818, -0.00053488, 0.00032773, 7.27235330, 0.99836592, 0.99913739, 0.49319176],
    5823                                                                                                  [      -6.27288840, -0.00053479, 0.00032768, 7.27235361, 0.99836620, 0.99913754, 0.49319177],
    5824                                                                                                  [      -6.27288862, -0.00053469, 0.00032762, 7.27235393, 0.99836649, 0.99913769, 0.49319182],
    5825                                                                                                  [      -6.27288884, -0.00053460, 0.00032756, 7.27235424, 0.99836677, 0.99913784, 0.49319183],
    5826                                                                                                  [      -6.27288906, -0.00053451, 0.00032751, 7.27235455, 0.99836705, 0.99913798, 0.49319186],
    5827                                                                                                  [      -6.27288928, -0.00053442, 0.00032745, 7.27235487, 0.99836733, 0.99913813, 0.49319195],
    5828                                                                                                  [      -6.27288950, -0.00053432, 0.00032739, 7.27235518, 0.99836762, 0.99913828, 0.49319191],
    5829                                                                                                  [      -6.27288973, -0.00053423, 0.00032734, 7.27235549, 0.99836790, 0.99913843, 0.49319195],
    5830                                                                                                  [      -6.27288995, -0.00053414, 0.00032728, 7.27235581, 0.99836818, 0.99913858, 0.49319198],
    5831                                                                                                  [      -6.27289017, -0.00053405, 0.00032722, 7.27235612, 0.99836846, 0.99913873, 0.49319204],
    5832                                                                                                  [      -6.27289039, -0.00053396, 0.00032717, 7.27235643, 0.99836874, 0.99913888, 0.49319208],
    5833                                                                                                  [      -6.27289061, -0.00053386, 0.00032711, 7.27235674, 0.99836902, 0.99913903, 0.49319213],
    5834                                                                                                  [      -6.27289083, -0.00053377, 0.00032705, 7.27235706, 0.99836931, 0.99913917, 0.49319212],
    5835                                                                                                  [      -6.27289105, -0.00053368, 0.00032700, 7.27235737, 0.99836959, 0.99913932, 0.49319218],
    5836                                                                                                  [      -6.27289127, -0.00053359, 0.00032694, 7.27235768, 0.99836987, 0.99913947, 0.49319222],
    5837                                                                                                  [      -6.27289149, -0.00053350, 0.00032689, 7.27235799, 0.99837015, 0.99913962, 0.49319223],
    5838                                                                                                  [      -6.27289171, -0.00053340, 0.00032683, 7.27235830, 0.99837043, 0.99913977, 0.49319229],
    5839                                                                                                  [      -6.27289193, -0.00053331, 0.00032677, 7.27235862, 0.99837071, 0.99913992, 0.49319228],
    5840                                                                                                  [      -6.27289215, -0.00053322, 0.00032672, 7.27235893, 0.99837099, 0.99914006, 0.49319230],
    5841                                                                                                  [      -6.27289237, -0.00053313, 0.00032666, 7.27235924, 0.99837127, 0.99914021, 0.49319236],
    5842                                                                                                  [      -6.27289259, -0.00053304, 0.00032660, 7.27235955, 0.99837155, 0.99914036, 0.49319240],
    5843                                                                                                  [      -6.27289281, -0.00053294, 0.00032655, 7.27235986, 0.99837183, 0.99914051, 0.49319244],
    5844                                                                                                  [      -6.27289303, -0.00053285, 0.00032649, 7.27236017, 0.99837211, 0.99914066, 0.49319243],
    5845                                                                                                  [      -6.27289325, -0.00053276, 0.00032643, 7.27236048, 0.99837239, 0.99914080, 0.49319249],
    5846                                                                                                  [      -6.27289346, -0.00053267, 0.00032638, 7.27236080, 0.99837267, 0.99914095, 0.49319257],
    5847                                                                                                  [      -6.27289368, -0.00053258, 0.00032632, 7.27236111, 0.99837295, 0.99914110, 0.49319253],
    5848                                                                                                  [      -6.27289390, -0.00053249, 0.00032627, 7.27236142, 0.99837323, 0.99914125, 0.49319261],
    5849                                                                                                  [      -6.27289412, -0.00053239, 0.00032621, 7.27236173, 0.99837351, 0.99914140, 0.49319263],
    5850                                                                                                  [      -6.27289434, -0.00053230, 0.00032615, 7.27236204, 0.99837379, 0.99914154, 0.49319267],
    5851                                                                                                  [      -6.27289456, -0.00053221, 0.00032610, 7.27236235, 0.99837407, 0.99914169, 0.49319271],
    5852                                                                                                  [      -6.27289478, -0.00053212, 0.00032604, 7.27236266, 0.99837435, 0.99914184, 0.49319271],
    5853                                                                                                  [      -6.27289500, -0.00053203, 0.00032599, 7.27236297, 0.99837463, 0.99914199, 0.49319270],
    5854                                                                                                  [      -6.27289522, -0.00053194, 0.00032593, 7.27236328, 0.99837491, 0.99914213, 0.49319278],
    5855                                                                                                  [      -6.27289544, -0.00053185, 0.00032587, 7.27236359, 0.99837519, 0.99914228, 0.49319281],
    5856                                                                                                  [      -6.27289565, -0.00053175, 0.00032582, 7.27236390, 0.99837547, 0.99914243, 0.49319284],
    5857                                                                                                  [      -6.27289587, -0.00053166, 0.00032576, 7.27236421, 0.99837575, 0.99914258, 0.49319286],
    5858                                                                                                  [      -6.27289609, -0.00053157, 0.00032571, 7.27236452, 0.99837603, 0.99914272, 0.49319287],
    5859                                                                                                  [      -6.27289631, -0.00053148, 0.00032565, 7.27236483, 0.99837631, 0.99914287, 0.49319297],
    5860                                                                                                  [      -6.27289653, -0.00053139, 0.00032559, 7.27236514, 0.99837659, 0.99914302, 0.49319300],
    5861                                                                                                  [      -6.27289675, -0.00053130, 0.00032554, 7.27236545, 0.99837687, 0.99914316, 0.49319302],
    5862                                                                                                  [      -6.27289696, -0.00053121, 0.00032548, 7.27236576, 0.99837714, 0.99914331, 0.49319305],
    5863                                                                                                  [      -6.27289718, -0.00053112, 0.00032543, 7.27236607, 0.99837742, 0.99914346, 0.49319306],
    5864                                                                                                  [      -6.27289740, -0.00053102, 0.00032537, 7.27236638, 0.99837770, 0.99914361, 0.49319318],
    5865                                                                                                  [      -6.27289762, -0.00053093, 0.00032531, 7.27236668, 0.99837798, 0.99914375, 0.49319313],
    5866                                                                                                  [      -6.27289784, -0.00053084, 0.00032526, 7.27236699, 0.99837826, 0.99914390, 0.49319318],
    5867                                                                                                  [      -6.27289805, -0.00053075, 0.00032520, 7.27236730, 0.99837854, 0.99914405, 0.49319320],
    5868                                                                                                  [      -6.27289827, -0.00053066, 0.00032515, 7.27236761, 0.99837881, 0.99914419, 0.49319315],
    5869                                                                                                  [      -6.27289849, -0.00053057, 0.00032509, 7.27236792, 0.99837909, 0.99914434, 0.49319329],
    5870                                                                                                  [      -6.27289871, -0.00053048, 0.00032504, 7.27236823, 0.99837937, 0.99914449, 0.49319329],
    5871                                                                                                  [      -6.27289892, -0.00053039, 0.00032498, 7.27236854, 0.99837965, 0.99914463, 0.49319336],
    5872                                                                                                  [      -6.27289914, -0.00053030, 0.00032492, 7.27236884, 0.99837993, 0.99914478, 0.49319338],
    5873                                                                                                  [      -6.27289936, -0.00053021, 0.00032487, 7.27236915, 0.99838020, 0.99914493, 0.49319340],
    5874                                                                                                  [      -6.27289958, -0.00053012, 0.00032481, 7.27236946, 0.99838048, 0.99914507, 0.49319339],
    5875                                                                                                  [      -6.27289979, -0.00053002, 0.00032476, 7.27236977, 0.99838076, 0.99914522, 0.49319350],
    5876                                                                                                  [      -6.27290001, -0.00052993, 0.00032470, 7.27237008, 0.99838104, 0.99914536, 0.49319352],
    5877                                                                                                  [      -6.27290023, -0.00052984, 0.00032465, 7.27237038, 0.99838131, 0.99914551, 0.49319359],
    5878                                                                                                  [      -6.27290044, -0.00052975, 0.00032459, 7.27237069, 0.99838159, 0.99914566, 0.49319354],
    5879                                                                                                  [      -6.27290066, -0.00052966, 0.00032453, 7.27237100, 0.99838187, 0.99914580, 0.49319355],
    5880                                                                                                  [      -6.27290088, -0.00052957, 0.00032448, 7.27237131, 0.99838214, 0.99914595, 0.49319365],
    5881                                                                                                  [      -6.27290109, -0.00052948, 0.00032442, 7.27237161, 0.99838242, 0.99914610, 0.49319372],
    5882                                                                                                  [      -6.27290131, -0.00052939, 0.00032437, 7.27237192, 0.99838270, 0.99914624, 0.49319371],
    5883                                                                                                  [      -6.27290153, -0.00052930, 0.00032431, 7.27237223, 0.99838297, 0.99914639, 0.49319369],
    5884                                                                                                  [      -6.27290174, -0.00052921, 0.00032426, 7.27237254, 0.99838325, 0.99914653, 0.49319379],
    5885                                                                                                  [      -6.27290196, -0.00052912, 0.00032420, 7.27237284, 0.99838353, 0.99914668, 0.49319379],
    5886                                                                                                  [      -6.27290218, -0.00052903, 0.00032415, 7.27237315, 0.99838380, 0.99914683, 0.49319387],
    5887                                                                                                  [      -6.27290239, -0.00052894, 0.00032409, 7.27237346, 0.99838408, 0.99914697, 0.49319384],
    5888                                                                                                  [      -6.27290261, -0.00052885, 0.00032404, 7.27237376, 0.99838436, 0.99914712, 0.49319390],
    5889                                                                                                  [      -6.27290283, -0.00052876, 0.00032398, 7.27237407, 0.99838463, 0.99914726, 0.49319391],
    5890                                                                                                  [      -6.27290304, -0.00052867, 0.00032392, 7.27237438, 0.99838491, 0.99914741, 0.49319397],
    5891                                                                                                  [      -6.27290326, -0.00052858, 0.00032387, 7.27237468, 0.99838518, 0.99914755, 0.49319399],
    5892                                                                                                  [      -6.27290347, -0.00052849, 0.00032381, 7.27237499, 0.99838546, 0.99914770, 0.49319399],
    5893                                                                                                  [      -6.27290369, -0.00052840, 0.00032376, 7.27237529, 0.99838574, 0.99914785, 0.49319402],
    5894                                                                                                  [      -6.27290391, -0.00052831, 0.00032370, 7.27237560, 0.99838601, 0.99914799, 0.49319410],
    5895                                                                                                  [      -6.27290412, -0.00052822, 0.00032365, 7.27237591, 0.99838629, 0.99914814, 0.49319411],
    5896                                                                                                  [      -6.27290434, -0.00052813, 0.00032359, 7.27237621, 0.99838656, 0.99914828, 0.49319417],
    5897                                                                                                  [      -6.27290455, -0.00052804, 0.00032354, 7.27237652, 0.99838684, 0.99914843, 0.49319421],
    5898                                                                                                  [      -6.27290477, -0.00052795, 0.00032348, 7.27237682, 0.99838711, 0.99914857, 0.49319423],
    5899                                                                                                  [      -6.27290498, -0.00052786, 0.00032343, 7.27237713, 0.99838739, 0.99914872, 0.49319424],
    5900                                                                                                  [      -6.27290520, -0.00052777, 0.00032337, 7.27237743, 0.99838766, 0.99914886, 0.49319429],
    5901                                                                                                  [      -6.27290541, -0.00052768, 0.00032332, 7.27237774, 0.99838794, 0.99914901, 0.49319426],
    5902                                                                                                  [      -6.27290563, -0.00052759, 0.00032326, 7.27237804, 0.99838821, 0.99914915, 0.49319434],
    5903                                                                                                  [      -6.27290584, -0.00052750, 0.00032321, 7.27237835, 0.99838849, 0.99914930, 0.49319436],
    5904                                                                                                  [      -6.27290606, -0.00052741, 0.00032315, 7.27237865, 0.99838876, 0.99914944, 0.49319441],
    5905                                                                                                  [      -6.27290627, -0.00052732, 0.00032310, 7.27237896, 0.99838904, 0.99914959, 0.49319443],
    5906                                                                                                  [      -6.27290649, -0.00052723, 0.00032304, 7.27237926, 0.99838931, 0.99914973, 0.49319450],
    5907                                                                                                  [      -6.27290670, -0.00052714, 0.00032299, 7.27237957, 0.99838959, 0.99914988, 0.49319447],
    5908                                                                                                  [      -6.27290692, -0.00052705, 0.00032293, 7.27237987, 0.99838986, 0.99915002, 0.49319454],
    5909                                                                                                  [      -6.27290713, -0.00052696, 0.00032288, 7.27238018, 0.99839013, 0.99915017, 0.49319453],
    5910                                                                                                  [      -6.27290735, -0.00052687, 0.00032282, 7.27238048, 0.99839041, 0.99915031, 0.49319457],
    5911                                                                                                  [      -6.27290756, -0.00052678, 0.00032277, 7.27238078, 0.99839068, 0.99915046, 0.49319463],
    5912                                                                                                  [      -6.27290778, -0.00052669, 0.00032271, 7.27238109, 0.99839096, 0.99915060, 0.49319468],
    5913                                                                                                  [      -6.27290799, -0.00052660, 0.00032266, 7.27238139, 0.99839123, 0.99915075, 0.49319471],
    5914                                                                                                  [      -6.27290821, -0.00052651, 0.00032260, 7.27238170, 0.99839150, 0.99915089, 0.49319472],
    5915                                                                                                  [      -6.27290842, -0.00052642, 0.00032255, 7.27238200, 0.99839178, 0.99915103, 0.49319477],
    5916                                                                                                  [      -6.27290863, -0.00052633, 0.00032249, 7.27238230, 0.99839205, 0.99915118, 0.49319479],
    5917                                                                                                  [      -6.27290885, -0.00052624, 0.00032244, 7.27238261, 0.99839232, 0.99915132, 0.49319479],
    5918                                                                                                  [      -6.27290906, -0.00052615, 0.00032238, 7.27238291, 0.99839260, 0.99915147, 0.49319486],
    5919                                                                                                  [      -6.27290928, -0.00052606, 0.00032233, 7.27238321, 0.99839287, 0.99915161, 0.49319496],
    5920                                                                                                  [      -6.27290949, -0.00052597, 0.00032227, 7.27238352, 0.99839314, 0.99915176, 0.49319494],
    5921                                                                                                  [      -6.27290970, -0.00052588, 0.00032222, 7.27238382, 0.99839342, 0.99915190, 0.49319490],
    5922                                                                                                  [      -6.27290992, -0.00052579, 0.00032216, 7.27238412, 0.99839369, 0.99915204, 0.49319495],
    5923                                                                                                  [      -6.27291013, -0.00052570, 0.00032211, 7.27238443, 0.99839396, 0.99915219, 0.49319503],
    5924                                                                                                  [      -6.27291034, -0.00052561, 0.00032205, 7.27238473, 0.99839424, 0.99915233, 0.49319499],
    5925                                                                                                  [      -6.27291056, -0.00052553, 0.00032200, 7.27238503, 0.99839451, 0.99915248, 0.49319506],
    5926                                                                                                  [      -6.27291077, -0.00052544, 0.00032194, 7.27238534, 0.99839478, 0.99915262, 0.49319516],
    5927                                                                                                  [      -6.27291098, -0.00052535, 0.00032189, 7.27238564, 0.99839505, 0.99915276, 0.49319515],
    5928                                                                                                  [      -6.27291120, -0.00052526, 0.00032183, 7.27238594, 0.99839533, 0.99915291, 0.49319519],
    5929                                                                                                  [      -6.27291141, -0.00052517, 0.00032178, 7.27238624, 0.99839560, 0.99915305, 0.49319519],
    5930                                                                                                  [      -6.27291162, -0.00052508, 0.00032173, 7.27238654, 0.99839587, 0.99915320, 0.49319522],
    5931                                                                                                  [      -6.27291184, -0.00052499, 0.00032167, 7.27238685, 0.99839614, 0.99915334, 0.49319528],
    5932                                                                                                  [      -6.27291205, -0.00052490, 0.00032162, 7.27238715, 0.99839642, 0.99915348, 0.49319533],
    5933                                                                                                  [      -6.27291226, -0.00052481, 0.00032156, 7.27238745, 0.99839669, 0.99915363, 0.49319536],
    5934                                                                                                  [      -6.27291248, -0.00052472, 0.00032151, 7.27238775, 0.99839696, 0.99915377, 0.49319537],
    5935                                                                                                  [      -6.27291269, -0.00052463, 0.00032145, 7.27238805, 0.99839723, 0.99915391, 0.49319544],
    5936                                                                                                  [      -6.27291290, -0.00052455, 0.00032140, 7.27238836, 0.99839750, 0.99915406, 0.49319545],
    5937                                                                                                  [      -6.27291311, -0.00052446, 0.00032134, 7.27238866, 0.99839777, 0.99915420, 0.49319547],
    5938                                                                                                  [      -6.27291333, -0.00052437, 0.00032129, 7.27238896, 0.99839805, 0.99915434, 0.49319547],
    5939                                                                                                  [      -6.27291354, -0.00052428, 0.00032123, 7.27238926, 0.99839832, 0.99915449, 0.49319552],
    5940                                                                                                  [      -6.27291375, -0.00052419, 0.00032118, 7.27238956, 0.99839859, 0.99915463, 0.49319555],
    5941                                                                                                  [      -6.27291396, -0.00052410, 0.00032113, 7.27238986, 0.99839886, 0.99915477, 0.49319555],
    5942                                                                                                  [      -6.27291418, -0.00052401, 0.00032107, 7.27239016, 0.99839913, 0.99915492, 0.49319565],
    5943                                                                                                  [      -6.27291439, -0.00052392, 0.00032102, 7.27239046, 0.99839940, 0.99915506, 0.49319563],
    5944                                                                                                  [      -6.27291460, -0.00052384, 0.00032096, 7.27239077, 0.99839967, 0.99915520, 0.49319565],
    5945                                                                                                  [      -6.27291481, -0.00052375, 0.00032091, 7.27239107, 0.99839994, 0.99915534, 0.49319571],
    5946                                                                                                  [      -6.27291503, -0.00052366, 0.00032085, 7.27239137, 0.99840021, 0.99915549, 0.49319576],
    5947                                                                                                  [      -6.27291524, -0.00052357, 0.00032080, 7.27239167, 0.99840049, 0.99915563, 0.49319577],
    5948                                                                                                  [      -6.27291545, -0.00052348, 0.00032075, 7.27239197, 0.99840076, 0.99915577, 0.49319579],
    5949                                                                                                  [      -6.27291566, -0.00052339, 0.00032069, 7.27239227, 0.99840103, 0.99915592, 0.49319582],
    5950                                                                                                  [      -6.27291587, -0.00052330, 0.00032064, 7.27239257, 0.99840130, 0.99915606, 0.49319587],
    5951                                                                                                  [      -6.27291608, -0.00052322, 0.00032058, 7.27239287, 0.99840157, 0.99915620, 0.49319592],
    5952                                                                                                  [      -6.27291630, -0.00052313, 0.00032053, 7.27239317, 0.99840184, 0.99915634, 0.49319593],
    5953                                                                                                  [      -6.27291651, -0.00052304, 0.00032047, 7.27239347, 0.99840211, 0.99915649, 0.49319594],
    5954                                                                                                  [      -6.27291672, -0.00052295, 0.00032042, 7.27239377, 0.99840238, 0.99915663, 0.49319596],
    5955                                                                                                  [      -6.27291693, -0.00052286, 0.00032037, 7.27239407, 0.99840265, 0.99915677, 0.49319602],
    5956                                                                                                  [      -6.27291714, -0.00052277, 0.00032031, 7.27239437, 0.99840292, 0.99915691, 0.49319607],
    5957                                                                                                  [      -6.27291735, -0.00052269, 0.00032026, 7.27239467, 0.99840319, 0.99915706, 0.49319609],
    5958                                                                                                  [      -6.27291756, -0.00052260, 0.00032020, 7.27239497, 0.99840346, 0.99915720, 0.49319609],
    5959                                                                                                  [      -6.27291777, -0.00052251, 0.00032015, 7.27239526, 0.99840373, 0.99915734, 0.49319619],
    5960                                                                                                  [      -6.27291799, -0.00052242, 0.00032010, 7.27239556, 0.99840400, 0.99915748, 0.49319624],
    5961                                                                                                  [      -6.27291820, -0.00052233, 0.00032004, 7.27239586, 0.99840427, 0.99915763, 0.49319616],
    5962                                                                                                  [      -6.27291841, -0.00052225, 0.00031999, 7.27239616, 0.99840453, 0.99915777, 0.49319625],
    5963                                                                                                  [      -6.27291862, -0.00052216, 0.00031993, 7.27239646, 0.99840480, 0.99915791, 0.49319632],
    5964                                                                                                  [      -6.27291883, -0.00052207, 0.00031988, 7.27239676, 0.99840507, 0.99915805, 0.49319625],
    5965                                                                                                  [      -6.27291904, -0.00052198, 0.00031983, 7.27239706, 0.99840534, 0.99915819, 0.49319634],
    5966                                                                                                  [      -6.27291925, -0.00052189, 0.00031977, 7.27239736, 0.99840561, 0.99915834, 0.49319638],
    5967                                                                                                  [      -6.27291946, -0.00052180, 0.00031972, 7.27239766, 0.99840588, 0.99915848, 0.49319640],
    5968                                                                                                  [      -6.27291967, -0.00052172, 0.00031966, 7.27239795, 0.99840615, 0.99915862, 0.49319643],
    5969                                                                                                  [      -6.27291988, -0.00052163, 0.00031961, 7.27239825, 0.99840642, 0.99915876, 0.49319646],
    5970                                                                                                  [      -6.27292009, -0.00052154, 0.00031956, 7.27239855, 0.99840669, 0.99915890, 0.49319643],
    5971                                                                                                  [      -6.27292030, -0.00052145, 0.00031950, 7.27239885, 0.99840695, 0.99915904, 0.49319651],
    5972                                                                                                  [      -6.27292051, -0.00052137, 0.00031945, 7.27239915, 0.99840722, 0.99915919, 0.49319652],
    5973                                                                                                  [      -6.27292072, -0.00052128, 0.00031939, 7.27239944, 0.99840749, 0.99915933, 0.49319657],
    5974                                                                                                  [      -6.27292093, -0.00052119, 0.00031934, 7.27239974, 0.99840776, 0.99915947, 0.49319663],
    5975                                                                                                  [      -6.27292114, -0.00052110, 0.00031929, 7.27240004, 0.99840803, 0.99915961, 0.49319665],
    5976                                                                                                  [      -6.27292135, -0.00052101, 0.00031923, 7.27240034, 0.99840830, 0.99915975, 0.49319671],
    5977                                                                                                  [      -6.27292156, -0.00052093, 0.00031918, 7.27240063, 0.99840856, 0.99915989, 0.49319676],
    5978                                                                                                  [      -6.27292177, -0.00052084, 0.00031913, 7.27240093, 0.99840883, 0.99916004, 0.49319677],
    5979                                                                                                  [      -6.27292198, -0.00052075, 0.00031907, 7.27240123, 0.99840910, 0.99916018, 0.49319672],
    5980                                                                                                  [      -6.27292219, -0.00052066, 0.00031902, 7.27240153, 0.99840937, 0.99916032, 0.49319676],
    5981                                                                                                  [      -6.27292240, -0.00052058, 0.00031896, 7.27240182, 0.99840964, 0.99916046, 0.49319684],
    5982                                                                                                  [      -6.27292261, -0.00052049, 0.00031891, 7.27240212, 0.99840990, 0.99916060, 0.49319683],
    5983                                                                                                  [      -6.27292282, -0.00052040, 0.00031886, 7.27240242, 0.99841017, 0.99916074, 0.49319688],
    5984                                                                                                  [      -6.27292303, -0.00052031, 0.00031880, 7.27240271, 0.99841044, 0.99916088, 0.49319696],
    5985                                                                                                  [      -6.27292324, -0.00052023, 0.00031875, 7.27240301, 0.99841070, 0.99916102, 0.49319696],
    5986                                                                                                  [      -6.27292345, -0.00052014, 0.00031870, 7.27240331, 0.99841097, 0.99916117, 0.49319698],
    5987                                                                                                  [      -6.27292366, -0.00052005, 0.00031864, 7.27240360, 0.99841124, 0.99916131, 0.49319702],
    5988                                                                                                  [      -6.27292386, -0.00051996, 0.00031859, 7.27240390, 0.99841151, 0.99916145, 0.49319705],
    5989                                                                                                  [      -6.27292407, -0.00051988, 0.00031854, 7.27240420, 0.99841177, 0.99916159, 0.49319708],
    5990                                                                                                  [      -6.27292428, -0.00051979, 0.00031848, 7.27240449, 0.99841204, 0.99916173, 0.49319705],
    5991                                                                                                  [      -6.27292449, -0.00051970, 0.00031843, 7.27240479, 0.99841231, 0.99916187, 0.49319715],
    5992                                                                                                  [      -6.27292470, -0.00051962, 0.00031837, 7.27240508, 0.99841257, 0.99916201, 0.49319716],
    5993                                                                                                  [      -6.27292491, -0.00051953, 0.00031832, 7.27240538, 0.99841284, 0.99916215, 0.49319722],
    5994                                                                                                  [      -6.27292512, -0.00051944, 0.00031827, 7.27240568, 0.99841311, 0.99916229, 0.49319725],
    5995                                                                                                  [      -6.27292533, -0.00051935, 0.00031821, 7.27240597, 0.99841337, 0.99916243, 0.49319725],
    5996                                                                                                  [      -6.27292553, -0.00051927, 0.00031816, 7.27240627, 0.99841364, 0.99916257, 0.49319734],
    5997                                                                                                  [      -6.27292574, -0.00051918, 0.00031811, 7.27240656, 0.99841390, 0.99916271, 0.49319744],
    5998                                                                                                  [      -6.27292595, -0.00051909, 0.00031805, 7.27240686, 0.99841417, 0.99916285, 0.49319739],
    5999                                                                                                  [      -6.27292616, -0.00051901, 0.00031800, 7.27240715, 0.99841444, 0.99916299, 0.49319736],
    6000                                                                                                  [      -6.27292637, -0.00051892, 0.00031795, 7.27240745, 0.99841470, 0.99916313, 0.49319748],
    6001                                                                                                  [      -6.27292658, -0.00051883, 0.00031789, 7.27240774, 0.99841497, 0.99916327, 0.49319747],
    6002                                                                                                  [      -6.27292678, -0.00051874, 0.00031784, 7.27240804, 0.99841523, 0.99916341, 0.49319748],
    6003                                                                                                  [      -6.27292699, -0.00051866, 0.00031779, 7.27240833, 0.99841550, 0.99916355, 0.49319753],
    6004                                                                                                  [      -6.27292720, -0.00051857, 0.00031773, 7.27240863, 0.99841577, 0.99916369, 0.49319759],
    6005                                                                                                  [      -6.27292741, -0.00051848, 0.00031768, 7.27240892, 0.99841603, 0.99916384, 0.49319759],
    6006                                                                                                  [      -6.27292762, -0.00051840, 0.00031763, 7.27240922, 0.99841630, 0.99916398, 0.49319759],
    6007                                                                                                  [      -6.27292782, -0.00051831, 0.00031757, 7.27240951, 0.99841656, 0.99916412, 0.49319764],
    6008                                                                                                  [      -6.27292803, -0.00051822, 0.00031752, 7.27240981, 0.99841683, 0.99916426, 0.49319769],
    6009                                                                                                  [      -6.27292824, -0.00051814, 0.00031747, 7.27241010, 0.99841709, 0.99916440, 0.49319768],
    6010                                                                                                  [      -6.27292845, -0.00051805, 0.00031742, 7.27241040, 0.99841736, 0.99916453, 0.49319773],
    6011                                                                                                  [      -6.27292865, -0.00051796, 0.00031736, 7.27241069, 0.99841762, 0.99916467, 0.49319777],
    6012                                                                                                  [      -6.27292886, -0.00051788, 0.00031731, 7.27241098, 0.99841789, 0.99916481, 0.49319789],
    6013                                                                                                  [      -6.27292907, -0.00051779, 0.00031726, 7.27241128, 0.99841815, 0.99916495, 0.49319781],
    6014                                                                                                  [      -6.27292927, -0.00051770, 0.00031720, 7.27241157, 0.99841842, 0.99916509, 0.49319785],
    6015                                                                                                  [      -6.27292948, -0.00051762, 0.00031715, 7.27241186, 0.99841868, 0.99916523, 0.49319784],
    6016                                                                                                  [      -6.27292969, -0.00051753, 0.00031710, 7.27241216, 0.99841895, 0.99916537, 0.49319795],
    6017                                                                                                  [      -6.27292990, -0.00051744, 0.00031704, 7.27241245, 0.99841921, 0.99916551, 0.49319794],
    6018                                                                                                  [      -6.27293010, -0.00051736, 0.00031699, 7.27241275, 0.99841947, 0.99916565, 0.49319797],
    6019                                                                                                  [      -6.27293031, -0.00051727, 0.00031694, 7.27241304, 0.99841974, 0.99916579, 0.49319807],
    6020                                                                                                  [      -6.27293052, -0.00051718, 0.00031688, 7.27241333, 0.99842000, 0.99916593, 0.49319800],
    6021                                                                                                  [      -6.27293072, -0.00051710, 0.00031683, 7.27241363, 0.99842027, 0.99916607, 0.49319809],
    6022                                                                                                  [      -6.27293093, -0.00051701, 0.00031678, 7.27241392, 0.99842053, 0.99916621, 0.49319811],
    6023                                                                                                  [      -6.27293114, -0.00051693, 0.00031673, 7.27241421, 0.99842079, 0.99916635, 0.49319811],
    6024                                                                                                  [      -6.27293134, -0.00051684, 0.00031667, 7.27241450, 0.99842106, 0.99916649, 0.49319817],
    6025                                                                                                  [      -6.27293155, -0.00051675, 0.00031662, 7.27241480, 0.99842132, 0.99916663, 0.49319820],
    6026                                                                                                  [      -6.27293176, -0.00051667, 0.00031657, 7.27241509, 0.99842159, 0.99916677, 0.49319821],
    6027                                                                                                  [      -6.27293196, -0.00051658, 0.00031651, 7.27241538, 0.99842185, 0.99916691, 0.49319833],
    6028                                                                                                  [      -6.27293217, -0.00051649, 0.00031646, 7.27241567, 0.99842211, 0.99916704, 0.49319829],
    6029                                                                                                  [      -6.27293237, -0.00051641, 0.00031641, 7.27241597, 0.99842238, 0.99916718, 0.49319831],
    6030                                                                                                  [      -6.27293258, -0.00051632, 0.00031636, 7.27241626, 0.99842264, 0.99916732, 0.49319838],
    6031                                                                                                  [      -6.27293279, -0.00051624, 0.00031630, 7.27241655, 0.99842290, 0.99916746, 0.49319843],
    6032                                                                                                  [      -6.27293299, -0.00051615, 0.00031625, 7.27241684, 0.99842316, 0.99916760, 0.49319840],
    6033                                                                                                  [      -6.27293320, -0.00051606, 0.00031620, 7.27241713, 0.99842343, 0.99916774, 0.49319841],
    6034                                                                                                  [      -6.27293340, -0.00051598, 0.00031614, 7.27241743, 0.99842369, 0.99916788, 0.49319849],
    6035                                                                                                  [      -6.27293361, -0.00051589, 0.00031609, 7.27241772, 0.99842395, 0.99916802, 0.49319850],
    6036                                                                                                  [      -6.27293382, -0.00051581, 0.00031604, 7.27241801, 0.99842422, 0.99916816, 0.49319856],
    6037                                                                                                  [      -6.27293402, -0.00051572, 0.00031599, 7.27241830, 0.99842448, 0.99916829, 0.49319860],
    6038                                                                                                  [      -6.27293423, -0.00051563, 0.00031593, 7.27241859, 0.99842474, 0.99916843, 0.49319855],
    6039                                                                                                  [      -6.27293443, -0.00051555, 0.00031588, 7.27241888, 0.99842500, 0.99916857, 0.49319861],
    6040                                                                                                  [      -6.27293464, -0.00051546, 0.00031583, 7.27241918, 0.99842527, 0.99916871, 0.49319870],
    6041                                                                                                  [      -6.27293484, -0.00051538, 0.00031578, 7.27241947, 0.99842553, 0.99916885, 0.49319866],
    6042                                                                                                  [      -6.27293505, -0.00051529, 0.00031572, 7.27241976, 0.99842579, 0.99916899, 0.49319873],
    6043                                                                                                  [      -6.27293525, -0.00051520, 0.00031567, 7.27242005, 0.99842605, 0.99916912, 0.49319872],
    6044                                                                                                  [      -6.27293546, -0.00051512, 0.00031562, 7.27242034, 0.99842632, 0.99916926, 0.49319875],
    6045                                                                                                  [      -6.27293566, -0.00051503, 0.00031557, 7.27242063, 0.99842658, 0.99916940, 0.49319885],
    6046                                                                                                  [      -6.27293587, -0.00051495, 0.00031551, 7.27242092, 0.99842684, 0.99916954, 0.49319881],
    6047                                                                                                  [      -6.27293607, -0.00051486, 0.00031546, 7.27242121, 0.99842710, 0.99916968, 0.49319885],
    6048                                                                                                  [      -6.27293628, -0.00051478, 0.00031541, 7.27242150, 0.99842736, 0.99916982, 0.49319897],
    6049                                                                                                  [      -6.27293648, -0.00051469, 0.00031536, 7.27242179, 0.99842762, 0.99916995, 0.49319898],
    6050                                                                                                  [      -6.27293669, -0.00051461, 0.00031530, 7.27242208, 0.99842789, 0.99917009, 0.49319895],
    6051                                                                                                  [      -6.27293689, -0.00051452, 0.00031525, 7.27242237, 0.99842815, 0.99917023, 0.49319902],
    6052                                                                                                  [      -6.27293710, -0.00051443, 0.00031520, 7.27242266, 0.99842841, 0.99917037, 0.49319899],
    6053                                                                                                  [      -6.27293730, -0.00051435, 0.00031515, 7.27242295, 0.99842867, 0.99917051, 0.49319907],
    6054                                                                                                  [      -6.27293751, -0.00051426, 0.00031509, 7.27242324, 0.99842893, 0.99917064, 0.49319910],
    6055                                                                                                  [      -6.27293771, -0.00051418, 0.00031504, 7.27242353, 0.99842919, 0.99917078, 0.49319911],
    6056                                                                                                  [      -6.27293792, -0.00051409, 0.00031499, 7.27242382, 0.99842945, 0.99917092, 0.49319911],
    6057                                                                                                  [      -6.27293812, -0.00051401, 0.00031494, 7.27242411, 0.99842971, 0.99917106, 0.49319918],
    6058                                                                                                  [      -6.27293832, -0.00051392, 0.00031488, 7.27242440, 0.99842997, 0.99917119, 0.49319923],
    6059                                                                                                  [      -6.27293853, -0.00051384, 0.00031483, 7.27242469, 0.99843024, 0.99917133, 0.49319919],
    6060                                                                                                  [      -6.27293873, -0.00051375, 0.00031478, 7.27242498, 0.99843050, 0.99917147, 0.49319924],
    6061                                                                                                  [      -6.27293894, -0.00051367, 0.00031473, 7.27242527, 0.99843076, 0.99917161, 0.49319925],
    6062                                                                                                  [      -6.27293914, -0.00051358, 0.00031467, 7.27242556, 0.99843102, 0.99917174, 0.49319934],
    6063                                                                                                  [      -6.27293934, -0.00051350, 0.00031462, 7.27242585, 0.99843128, 0.99917188, 0.49319932],
    6064                                                                                                  [      -6.27293955, -0.00051341, 0.00031457, 7.27242614, 0.99843154, 0.99917202, 0.49319938],
    6065                                                                                                  [      -6.27293975, -0.00051333, 0.00031452, 7.27242643, 0.99843180, 0.99917216, 0.49319942],
    6066                                                                                                  [      -6.27293995, -0.00051324, 0.00031447, 7.27242671, 0.99843206, 0.99917229, 0.49319947],
    6067                                                                                                  [      -6.27294016, -0.00051315, 0.00031441, 7.27242700, 0.99843232, 0.99917243, 0.49319948],
    6068                                                                                                  [      -6.27294036, -0.00051307, 0.00031436, 7.27242729, 0.99843258, 0.99917257, 0.49319954],
    6069                                                                                                  [      -6.27294057, -0.00051298, 0.00031431, 7.27242758, 0.99843284, 0.99917271, 0.49319956],
    6070                                                                                                  [      -6.27294077, -0.00051290, 0.00031426, 7.27242787, 0.99843310, 0.99917284, 0.49319957],
    6071                                                                                                  [      -6.27294097, -0.00051281, 0.00031421, 7.27242816, 0.99843336, 0.99917298, 0.49319962],
    6072                                                                                                  [      -6.27294118, -0.00051273, 0.00031415, 7.27242845, 0.99843362, 0.99917312, 0.49319969],
    6073                                                                                                  [      -6.27294138, -0.00051265, 0.00031410, 7.27242873, 0.99843388, 0.99917325, 0.49319972],
    6074                                                                                                  [      -6.27294158, -0.00051256, 0.00031405, 7.27242902, 0.99843414, 0.99917339, 0.49319967],
    6075                                                                                                  [      -6.27294178, -0.00051248, 0.00031400, 7.27242931, 0.99843439, 0.99917353, 0.49319971],
    6076                                                                                                  [      -6.27294199, -0.00051239, 0.00031395, 7.27242960, 0.99843465, 0.99917366, 0.49319975],
    6077                                                                                                  [      -6.27294219, -0.00051231, 0.00031389, 7.27242988, 0.99843491, 0.99917380, 0.49319976],
    6078                                                                                                  [      -6.27294239, -0.00051222, 0.00031384, 7.27243017, 0.99843517, 0.99917394, 0.49319985],
    6079                                                                                                  [      -6.27294260, -0.00051214, 0.00031379, 7.27243046, 0.99843543, 0.99917407, 0.49319980],
    6080                                                                                                  [      -6.27294280, -0.00051205, 0.00031374, 7.27243075, 0.99843569, 0.99917421, 0.49319987],
    6081                                                                                                  [      -6.27294300, -0.00051197, 0.00031369, 7.27243103, 0.99843595, 0.99917435, 0.49319991],
    6082                                                                                                  [      -6.27294320, -0.00051188, 0.00031363, 7.27243132, 0.99843621, 0.99917448, 0.49319996],
    6083                                                                                                  [      -6.27294341, -0.00051180, 0.00031358, 7.27243161, 0.99843647, 0.99917462, 0.49320001],
    6084                                                                                                  [      -6.27294361, -0.00051171, 0.00031353, 7.27243190, 0.99843673, 0.99917476, 0.49319998],
    6085                                                                                                  [      -6.27294381, -0.00051163, 0.00031348, 7.27243218, 0.99843698, 0.99917489, 0.49320000],
    6086                                                                                                  [      -6.27294401, -0.00051154, 0.00031343, 7.27243247, 0.99843724, 0.99917503, 0.49320003],
    6087                                                                                                  [      -6.27294422, -0.00051146, 0.00031337, 7.27243276, 0.99843750, 0.99917517, 0.49320007],
    6088                                                                                                  [      -6.27294442, -0.00051137, 0.00031332, 7.27243304, 0.99843776, 0.99917530, 0.49320006],
    6089                                                                                                  [      -6.27294462, -0.00051129, 0.00031327, 7.27243333, 0.99843802, 0.99917544, 0.49320012],
    6090                                                                                                  [      -6.27294482, -0.00051121, 0.00031322, 7.27243362, 0.99843827, 0.99917558, 0.49320018],
    6091                                                                                                  [      -6.27294502, -0.00051112, 0.00031317, 7.27243390, 0.99843853, 0.99917571, 0.49320018],
    6092                                                                                                  [      -6.27294523, -0.00051104, 0.00031312, 7.27243419, 0.99843879, 0.99917585, 0.49320017],
    6093                                                                                                  [      -6.27294543, -0.00051095, 0.00031306, 7.27243448, 0.99843905, 0.99917598, 0.49320022],
    6094                                                                                                  [      -6.27294563, -0.00051087, 0.00031301, 7.27243476, 0.99843931, 0.99917612, 0.49320033],
    6095                                                                                                  [      -6.27294583, -0.00051078, 0.00031296, 7.27243505, 0.99843956, 0.99917626, 0.49320035],
    6096                                                                                                  [      -6.27294603, -0.00051070, 0.00031291, 7.27243533, 0.99843982, 0.99917639, 0.49320035],
    6097                                                                                                  [      -6.27294623, -0.00051062, 0.00031286, 7.27243562, 0.99844008, 0.99917653, 0.49320037],
    6098                                                                                                  [      -6.27294644, -0.00051053, 0.00031281, 7.27243590, 0.99844034, 0.99917666, 0.49320040],
    6099                                                                                                  [      -6.27294664, -0.00051045, 0.00031275, 7.27243619, 0.99844059, 0.99917680, 0.49320046],
    6100                                                                                                  [      -6.27294684, -0.00051036, 0.00031270, 7.27243648, 0.99844085, 0.99917693, 0.49320050],
    6101                                                                                                  [      -6.27294704, -0.00051028, 0.00031265, 7.27243676, 0.99844111, 0.99917707, 0.49320049],
    6102                                                                                                  [      -6.27294724, -0.00051019, 0.00031260, 7.27243705, 0.99844136, 0.99917721, 0.49320054],
    6103                                                                                                  [      -6.27294744, -0.00051011, 0.00031255, 7.27243733, 0.99844162, 0.99917734, 0.49320055],
    6104                                                                                                  [      -6.27294764, -0.00051003, 0.00031250, 7.27243762, 0.99844188, 0.99917748, 0.49320064],
    6105                                                                                                  [      -6.27294784, -0.00050994, 0.00031244, 7.27243790, 0.99844214, 0.99917761, 0.49320065],
    6106                                                                                                  [      -6.27294805, -0.00050986, 0.00031239, 7.27243819, 0.99844239, 0.99917775, 0.49320067],
    6107                                                                                                  [      -6.27294825, -0.00050977, 0.00031234, 7.27243847, 0.99844265, 0.99917788, 0.49320073],
    6108                                                                                                  [      -6.27294845, -0.00050969, 0.00031229, 7.27243876, 0.99844291, 0.99917802, 0.49320072],
    6109                                                                                                  [      -6.27294865, -0.00050961, 0.00031224, 7.27243904, 0.99844316, 0.99917815, 0.49320076],
    6110                                                                                                  [      -6.27294885, -0.00050952, 0.00031219, 7.27243933, 0.99844342, 0.99917829, 0.49320077],
    6111                                                                                                  [      -6.27294905, -0.00050944, 0.00031214, 7.27243961, 0.99844367, 0.99917843, 0.49320076],
    6112                                                                                                  [      -6.27294925, -0.00050936, 0.00031208, 7.27243989, 0.99844393, 0.99917856, 0.49320084],
    6113                                                                                                  [      -6.27294945, -0.00050927, 0.00031203, 7.27244018, 0.99844419, 0.99917870, 0.49320087],
    6114                                                                                                  [      -6.27294965, -0.00050919, 0.00031198, 7.27244046, 0.99844444, 0.99917883, 0.49320088],
    6115                                                                                                  [      -6.27294985, -0.00050910, 0.00031193, 7.27244075, 0.99844470, 0.99917897, 0.49320097],
    6116                                                                                                  [      -6.27295005, -0.00050902, 0.00031188, 7.27244103, 0.99844495, 0.99917910, 0.49320091],
    6117                                                                                                  [      -6.27295025, -0.00050894, 0.00031183, 7.27244132, 0.99844521, 0.99917924, 0.49320097],
    6118                                                                                                  [      -6.27295045, -0.00050885, 0.00031178, 7.27244160, 0.99844547, 0.99917937, 0.49320101],
    6119                                                                                                  [      -6.27295065, -0.00050877, 0.00031173, 7.27244188, 0.99844572, 0.99917951, 0.49320102],
    6120                                                                                                  [      -6.27295085, -0.00050869, 0.00031167, 7.27244217, 0.99844598, 0.99917964, 0.49320101],
    6121                                                                                                  [      -6.27295105, -0.00050860, 0.00031162, 7.27244245, 0.99844623, 0.99917978, 0.49320112],
    6122                                                                                                  [      -6.27295125, -0.00050852, 0.00031157, 7.27244273, 0.99844649, 0.99917991, 0.49320117],
    6123                                                                                                  [      -6.27295145, -0.00050844, 0.00031152, 7.27244302, 0.99844674, 0.99918004, 0.49320117],
    6124                                                                                                  [      -6.27295165, -0.00050835, 0.00031147, 7.27244330, 0.99844700, 0.99918018, 0.49320119],
    6125                                                                                                  [      -6.27295185, -0.00050827, 0.00031142, 7.27244358, 0.99844725, 0.99918031, 0.49320122],
    6126                                                                                                  [      -6.27295205, -0.00050818, 0.00031137, 7.27244387, 0.99844751, 0.99918045, 0.49320128],
    6127                                                                                                  [      -6.27295225, -0.00050810, 0.00031132, 7.27244415, 0.99844776, 0.99918058, 0.49320130],
    6128                                                                                                  [      -6.27295245, -0.00050802, 0.00031126, 7.27244443, 0.99844802, 0.99918072, 0.49320132],
    6129                                                                                                  [      -6.27295265, -0.00050793, 0.00031121, 7.27244472, 0.99844827, 0.99918085, 0.49320130],
    6130                                                                                                  [      -6.27295285, -0.00050785, 0.00031116, 7.27244500, 0.99844853, 0.99918099, 0.49320137],
    6131                                                                                                  [      -6.27295305, -0.00050777, 0.00031111, 7.27244528, 0.99844878, 0.99918112, 0.49320141],
    6132                                                                                                  [      -6.27295325, -0.00050768, 0.00031106, 7.27244556, 0.99844904, 0.99918126, 0.49320145],
    6133                                                                                                  [      -6.27295345, -0.00050760, 0.00031101, 7.27244585, 0.99844929, 0.99918139, 0.49320144],
    6134                                                                                                  [      -6.27295365, -0.00050752, 0.00031096, 7.27244613, 0.99844955, 0.99918152, 0.49320149],
    6135                                                                                                  [      -6.27295385, -0.00050743, 0.00031091, 7.27244641, 0.99844980, 0.99918166, 0.49320154],
    6136                                                                                                  [      -6.27295404, -0.00050735, 0.00031086, 7.27244669, 0.99845005, 0.99918179, 0.49320156],
    6137                                                                                                  [      -6.27295424, -0.00050727, 0.00031081, 7.27244697, 0.99845031, 0.99918193, 0.49320161],
    6138                                                                                                  [      -6.27295444, -0.00050719, 0.00031075, 7.27244726, 0.99845056, 0.99918206, 0.49320163],
    6139                                                                                                  [      -6.27295464, -0.00050710, 0.00031070, 7.27244754, 0.99845082, 0.99918219, 0.49320168],
    6140                                                                                                  [      -6.27295484, -0.00050702, 0.00031065, 7.27244782, 0.99845107, 0.99918233, 0.49320163],
    6141                                                                                                  [      -6.27295504, -0.00050694, 0.00031060, 7.27244810, 0.99845132, 0.99918246, 0.49320171],
    6142                                                                                                  [      -6.27295524, -0.00050685, 0.00031055, 7.27244838, 0.99845158, 0.99918260, 0.49320174],
    6143                                                                                                  [      -6.27295544, -0.00050677, 0.00031050, 7.27244867, 0.99845183, 0.99918273, 0.49320177],
    6144                                                                                                  [      -6.27295563, -0.00050669, 0.00031045, 7.27244895, 0.99845208, 0.99918286, 0.49320176],
    6145                                                                                                  [      -6.27295583, -0.00050660, 0.00031040, 7.27244923, 0.99845234, 0.99918300, 0.49320182],
    6146                                                                                                  [      -6.27295603, -0.00050652, 0.00031035, 7.27244951, 0.99845259, 0.99918313, 0.49320186],
    6147                                                                                                  [      -6.27295623, -0.00050644, 0.00031030, 7.27244979, 0.99845284, 0.99918327, 0.49320185],
    6148                                                                                                  [      -6.27295643, -0.00050636, 0.00031025, 7.27245007, 0.99845310, 0.99918340, 0.49320186],
    6149                                                                                                  [      -6.27295663, -0.00050627, 0.00031019, 7.27245035, 0.99845335, 0.99918353, 0.49320197],
    6150                                                                                                  [      -6.27295682, -0.00050619, 0.00031014, 7.27245063, 0.99845360, 0.99918367, 0.49320197],
    6151                                                                                                  [      -6.27295702, -0.00050611, 0.00031009, 7.27245091, 0.99845386, 0.99918380, 0.49320194],
    6152                                                                                                  [      -6.27295722, -0.00050602, 0.00031004, 7.27245120, 0.99845411, 0.99918393, 0.49320202],
    6153                                                                                                  [      -6.27295742, -0.00050594, 0.00030999, 7.27245148, 0.99845436, 0.99918407, 0.49320205],
    6154                                                                                                  [      -6.27295762, -0.00050586, 0.00030994, 7.27245176, 0.99845462, 0.99918420, 0.49320207],
    6155                                                                                                  [      -6.27295781, -0.00050578, 0.00030989, 7.27245204, 0.99845487, 0.99918433, 0.49320207],
    6156                                                                                                  [      -6.27295801, -0.00050569, 0.00030984, 7.27245232, 0.99845512, 0.99918447, 0.49320217],
    6157                                                                                                  [      -6.27295821, -0.00050561, 0.00030979, 7.27245260, 0.99845537, 0.99918460, 0.49320221],
    6158                                                                                                  [      -6.27295841, -0.00050553, 0.00030974, 7.27245288, 0.99845563, 0.99918473, 0.49320219],
    6159                                                                                                  [      -6.27295860, -0.00050545, 0.00030969, 7.27245316, 0.99845588, 0.99918487, 0.49320222],
    6160                                                                                                  [      -6.27295880, -0.00050536, 0.00030964, 7.27245344, 0.99845613, 0.99918500, 0.49320228],
    6161                                                                                                  [      -6.27295900, -0.00050528, 0.00030959, 7.27245372, 0.99845638, 0.99918513, 0.49320230],
    6162                                                                                                  [      -6.27295920, -0.00050520, 0.00030954, 7.27245400, 0.99845663, 0.99918526, 0.49320235],
    6163                                                                                                  [      -6.27295939, -0.00050512, 0.00030949, 7.27245428, 0.99845689, 0.99918540, 0.49320231],
    6164                                                                                                  [      -6.27295959, -0.00050503, 0.00030944, 7.27245456, 0.99845714, 0.99918553, 0.49320239],
    6165                                                                                                  [      -6.27295979, -0.00050495, 0.00030938, 7.27245484, 0.99845739, 0.99918566, 0.49320239],
    6166                                                                                                  [      -6.27295998, -0.00050487, 0.00030933, 7.27245512, 0.99845764, 0.99918580, 0.49320243],
    6167                                                                                                  [      -6.27296018, -0.00050479, 0.00030928, 7.27245539, 0.99845789, 0.99918593, 0.49320240],
    6168                                                                                                  [      -6.27296038, -0.00050470, 0.00030923, 7.27245567, 0.99845814, 0.99918606, 0.49320248],
    6169                                                                                                  [      -6.27296058, -0.00050462, 0.00030918, 7.27245595, 0.99845840, 0.99918619, 0.49320254],
    6170                                                                                                  [      -6.27296077, -0.00050454, 0.00030913, 7.27245623, 0.99845865, 0.99918633, 0.49320254],
    6171                                                                                                  [      -6.27296097, -0.00050446, 0.00030908, 7.27245651, 0.99845890, 0.99918646, 0.49320257],
    6172                                                                                                  [      -6.27296117, -0.00050438, 0.00030903, 7.27245679, 0.99845915, 0.99918659, 0.49320260],
    6173                                                                                                  [      -6.27296136, -0.00050429, 0.00030898, 7.27245707, 0.99845940, 0.99918673, 0.49320260],
    6174                                                                                                  [      -6.27296156, -0.00050421, 0.00030893, 7.27245735, 0.99845965, 0.99918686, 0.49320264],
    6175                                                                                                  [      -6.27296176, -0.00050413, 0.00030888, 7.27245763, 0.99845990, 0.99918699, 0.49320270],
    6176                                                                                                  [      -6.27296195, -0.00050405, 0.00030883, 7.27245790, 0.99846015, 0.99918712, 0.49320271],
    6177                                                                                                  [      -6.27296215, -0.00050397, 0.00030878, 7.27245818, 0.99846040, 0.99918726, 0.49320271],
    6178                                                                                                  [      -6.27296234, -0.00050388, 0.00030873, 7.27245846, 0.99846066, 0.99918739, 0.49320279],
    6179                                                                                                  [      -6.27296254, -0.00050380, 0.00030868, 7.27245874, 0.99846091, 0.99918752, 0.49320285],
    6180                                                                                                  [      -6.27296274, -0.00050372, 0.00030863, 7.27245902, 0.99846116, 0.99918765, 0.49320278],
    6181                                                                                                  [      -6.27296293, -0.00050364, 0.00030858, 7.27245930, 0.99846141, 0.99918778, 0.49320286],
    6182                                                                                                  [      -6.27296313, -0.00050356, 0.00030853, 7.27245957, 0.99846166, 0.99918792, 0.49320284],
    6183                                                                                                  [      -6.27296332, -0.00050347, 0.00030848, 7.27245985, 0.99846191, 0.99918805, 0.49320294],
    6184                                                                                                  [      -6.27296352, -0.00050339, 0.00030843, 7.27246013, 0.99846216, 0.99918818, 0.49320297],
    6185                                                                                                  [      -6.27296372, -0.00050331, 0.00030838, 7.27246041, 0.99846241, 0.99918831, 0.49320295],
    6186                                                                                                  [      -6.27296391, -0.00050323, 0.00030833, 7.27246068, 0.99846266, 0.99918844, 0.49320301],
    6187                                                                                                  [      -6.27296411, -0.00050315, 0.00030828, 7.27246096, 0.99846291, 0.99918858, 0.49320303],
    6188                                                                                                  [      -6.27296430, -0.00050306, 0.00030823, 7.27246124, 0.99846316, 0.99918871, 0.49320305],
    6189                                                                                                  [      -6.27296450, -0.00050298, 0.00030818, 7.27246152, 0.99846341, 0.99918884, 0.49320310],
    6190                                                                                                  [      -6.27296469, -0.00050290, 0.00030813, 7.27246179, 0.99846366, 0.99918897, 0.49320314],
    6191                                                                                                  [      -6.27296489, -0.00050282, 0.00030808, 7.27246207, 0.99846391, 0.99918910, 0.49320318],
    6192                                                                                                  [      -6.27296509, -0.00050274, 0.00030803, 7.27246235, 0.99846416, 0.99918924, 0.49320319],
    6193                                                                                                  [      -6.27296528, -0.00050266, 0.00030798, 7.27246263, 0.99846441, 0.99918937, 0.49320326],
    6194                                                                                                  [      -6.27296548, -0.00050257, 0.00030793, 7.27246290, 0.99846466, 0.99918950, 0.49320325],
    6195                                                                                                  [      -6.27296567, -0.00050249, 0.00030788, 7.27246318, 0.99846490, 0.99918963, 0.49320329],
    6196                                                                                                  [      -6.27296587, -0.00050241, 0.00030783, 7.27246346, 0.99846515, 0.99918976, 0.49320330],
    6197                                                                                                  [      -6.27296606, -0.00050233, 0.00030778, 7.27246373, 0.99846540, 0.99918989, 0.49320333],
    6198                                                                                                  [      -6.27296626, -0.00050225, 0.00030773, 7.27246401, 0.99846565, 0.99919002, 0.49320339],
    6199                                                                                                  [      -6.27296645, -0.00050217, 0.00030768, 7.27246429, 0.99846590, 0.99919016, 0.49320339],
    6200                                                                                                  [      -6.27296665, -0.00050209, 0.00030763, 7.27246456, 0.99846615, 0.99919029, 0.49320338],
    6201                                                                                                  [      -6.27296684, -0.00050200, 0.00030758, 7.27246484, 0.99846640, 0.99919042, 0.49320344],
    6202                                                                                                  [      -6.27296704, -0.00050192, 0.00030753, 7.27246511, 0.99846665, 0.99919055, 0.49320353],
    6203                                                                                                  [      -6.27296723, -0.00050184, 0.00030748, 7.27246539, 0.99846690, 0.99919068, 0.49320349],
    6204                                                                                                  [      -6.27296743, -0.00050176, 0.00030743, 7.27246567, 0.99846715, 0.99919081, 0.49320357],
    6205                                                                                                  [      -6.27296762, -0.00050168, 0.00030738, 7.27246594, 0.99846739, 0.99919094, 0.49320354],
    6206                                                                                                  [      -6.27296781, -0.00050160, 0.00030733, 7.27246622, 0.99846764, 0.99919108, 0.49320360],
    6207                                                                                                  [      -6.27296801, -0.00050152, 0.00030728, 7.27246649, 0.99846789, 0.99919121, 0.49320366],
    6208                                                                                                  [      -6.27296820, -0.00050143, 0.00030723, 7.27246677, 0.99846814, 0.99919134, 0.49320363],
    6209                                                                                                  [      -6.27296840, -0.00050135, 0.00030718, 7.27246704, 0.99846839, 0.99919147, 0.49320369],
    6210                                                                                                  [      -6.27296859, -0.00050127, 0.00030713, 7.27246732, 0.99846864, 0.99919160, 0.49320376],
    6211                                                                                                  [      -6.27296879, -0.00050119, 0.00030708, 7.27246760, 0.99846888, 0.99919173, 0.49320377],
    6212                                                                                                  [      -6.27296898, -0.00050111, 0.00030703, 7.27246787, 0.99846913, 0.99919186, 0.49320381],
    6213                                                                                                  [      -6.27296917, -0.00050103, 0.00030698, 7.27246815, 0.99846938, 0.99919199, 0.49320377],
    6214                                                                                                  [      -6.27296937, -0.00050095, 0.00030693, 7.27246842, 0.99846963, 0.99919212, 0.49320384],
    6215                                                                                                  [      -6.27296956, -0.00050087, 0.00030688, 7.27246870, 0.99846987, 0.99919225, 0.49320380],
    6216                                                                                                  [      -6.27296976, -0.00050079, 0.00030683, 7.27246897, 0.99847012, 0.99919238, 0.49320387],
    6217                                                                                                  [      -6.27296995, -0.00050070, 0.00030678, 7.27246925, 0.99847037, 0.99919251, 0.49320387],
    6218                                                                                                  [      -6.27297014, -0.00050062, 0.00030673, 7.27246952, 0.99847062, 0.99919265, 0.49320397],
    6219                                                                                                  [      -6.27297034, -0.00050054, 0.00030668, 7.27246980, 0.99847086, 0.99919278, 0.49320397],
    6220                                                                                                  [      -6.27297053, -0.00050046, 0.00030663, 7.27247007, 0.99847111, 0.99919291, 0.49320399],
    6221                                                                                                  [      -6.27297073, -0.00050038, 0.00030658, 7.27247034, 0.99847136, 0.99919304, 0.49320405],
    6222                                                                                                  [      -6.27297092, -0.00050030, 0.00030653, 7.27247062, 0.99847161, 0.99919317, 0.49320409],
    6223                                                                                                  [      -6.27297111, -0.00050022, 0.00030648, 7.27247089, 0.99847185, 0.99919330, 0.49320412],
    6224                                                                                                  [      -6.27297131, -0.00050014, 0.00030643, 7.27247117, 0.99847210, 0.99919343, 0.49320414],
    6225                                                                                                  [      -6.27297150, -0.00050006, 0.00030638, 7.27247144, 0.99847235, 0.99919356, 0.49320414],
    6226                                                                                                  [      -6.27297169, -0.00049998, 0.00030633, 7.27247172, 0.99847259, 0.99919369, 0.49320417],
    6227                                                                                                  [      -6.27297189, -0.00049990, 0.00030629, 7.27247199, 0.99847284, 0.99919382, 0.49320418],
    6228                                                                                                  [      -6.27297208, -0.00049982, 0.00030624, 7.27247226, 0.99847309, 0.99919395, 0.49320420],
    6229                                                                                                  [      -6.27297227, -0.00049973, 0.00030619, 7.27247254, 0.99847333, 0.99919408, 0.49320426],
    6230                                                                                                  [      -6.27297246, -0.00049965, 0.00030614, 7.27247281, 0.99847358, 0.99919421, 0.49320420],
    6231                                                                                                  [      -6.27297266, -0.00049957, 0.00030609, 7.27247308, 0.99847383, 0.99919434, 0.49320435],
    6232                                                                                                  [      -6.27297285, -0.00049949, 0.00030604, 7.27247336, 0.99847407, 0.99919447, 0.49320431],
    6233                                                                                                  [      -6.27297304, -0.00049941, 0.00030599, 7.27247363, 0.99847432, 0.99919460, 0.49320437],
    6234                                                                                                  [      -6.27297324, -0.00049933, 0.00030594, 7.27247390, 0.99847457, 0.99919473, 0.49320437],
    6235                                                                                                  [      -6.27297343, -0.00049925, 0.00030589, 7.27247418, 0.99847481, 0.99919486, 0.49320443],
    6236                                                                                                  [      -6.27297362, -0.00049917, 0.00030584, 7.27247445, 0.99847506, 0.99919499, 0.49320448],
    6237                                                                                                  [      -6.27297381, -0.00049909, 0.00030579, 7.27247472, 0.99847530, 0.99919512, 0.49320448],
    6238                                                                                                  [      -6.27297401, -0.00049901, 0.00030574, 7.27247500, 0.99847555, 0.99919525, 0.49320449],
    6239                                                                                                  [      -6.27297420, -0.00049893, 0.00030569, 7.27247527, 0.99847580, 0.99919538, 0.49320451],
    6240                                                                                                  [      -6.27297439, -0.00049885, 0.00030564, 7.27247554, 0.99847604, 0.99919551, 0.49320453],
    6241                                                                                                  [      -6.27297458, -0.00049877, 0.00030559, 7.27247582, 0.99847629, 0.99919564, 0.49320461],
    6242                                                                                                  [      -6.27297478, -0.00049869, 0.00030554, 7.27247609, 0.99847653, 0.99919577, 0.49320461],
    6243                                                                                                  [      -6.27297497, -0.00049861, 0.00030550, 7.27247636, 0.99847678, 0.99919590, 0.49320465],
    6244                                                                                                  [      -6.27297516, -0.00049853, 0.00030545, 7.27247663, 0.99847702, 0.99919603, 0.49320475],
    6245                                                                                                  [      -6.27297535, -0.00049845, 0.00030540, 7.27247691, 0.99847727, 0.99919616, 0.49320473],
    6246                                                                                                  [      -6.27297554, -0.00049837, 0.00030535, 7.27247718, 0.99847751, 0.99919629, 0.49320474],
    6247                                                                                                  [      -6.27297574, -0.00049829, 0.00030530, 7.27247745, 0.99847776, 0.99919641, 0.49320475],
    6248                                                                                                  [      -6.27297593, -0.00049821, 0.00030525, 7.27247772, 0.99847800, 0.99919654, 0.49320486],
    6249                                                                                                  [      -6.27297612, -0.00049813, 0.00030520, 7.27247799, 0.99847825, 0.99919667, 0.49320483],
    6250                                                                                                  [      -6.27297631, -0.00049805, 0.00030515, 7.27247827, 0.99847849, 0.99919680, 0.49320494],
    6251                                                                                                  [      -6.27297650, -0.00049797, 0.00030510, 7.27247854, 0.99847874, 0.99919693, 0.49320494],
    6252                                                                                                  [      -6.27297670, -0.00049789, 0.00030505, 7.27247881, 0.99847898, 0.99919706, 0.49320488],
    6253                                                                                                  [      -6.27297689, -0.00049781, 0.00030500, 7.27247908, 0.99847923, 0.99919719, 0.49320497],
    6254                                                                                                  [      -6.27297708, -0.00049773, 0.00030495, 7.27247935, 0.99847947, 0.99919732, 0.49320498],
    6255                                                                                                  [      -6.27297727, -0.00049765, 0.00030491, 7.27247962, 0.99847972, 0.99919745, 0.49320504],
    6256                                                                                                  [      -6.27297746, -0.00049757, 0.00030486, 7.27247990, 0.99847996, 0.99919758, 0.49320498],
    6257                                                                                                  [      -6.27297765, -0.00049749, 0.00030481, 7.27248017, 0.99848021, 0.99919771, 0.49320508],
    6258                                                                                                  [      -6.27297784, -0.00049741, 0.00030476, 7.27248044, 0.99848045, 0.99919784, 0.49320506],
    6259                                                                                                  [      -6.27297804, -0.00049733, 0.00030471, 7.27248071, 0.99848070, 0.99919796, 0.49320512],
    6260                                                                                                  [      -6.27297823, -0.00049725, 0.00030466, 7.27248098, 0.99848094, 0.99919809, 0.49320520],
    6261                                                                                                  [      -6.27297842, -0.00049717, 0.00030461, 7.27248125, 0.99848118, 0.99919822, 0.49320518],
    6262                                                                                                  [      -6.27297861, -0.00049709, 0.00030456, 7.27248152, 0.99848143, 0.99919835, 0.49320519],
    6263                                                                                                  [      -6.27297880, -0.00049701, 0.00030451, 7.27248179, 0.99848167, 0.99919848, 0.49320524],
    6264                                                                                                  [      -6.27297899, -0.00049693, 0.00030446, 7.27248206, 0.99848192, 0.99919861, 0.49320527],
    6265                                                                                                  [      -6.27297918, -0.00049685, 0.00030442, 7.27248233, 0.99848216, 0.99919874, 0.49320529],
    6266                                                                                                  [      -6.27297937, -0.00049677, 0.00030437, 7.27248260, 0.99848240, 0.99919887, 0.49320530],
    6267                                                                                                  [      -6.27297956, -0.00049669, 0.00030432, 7.27248288, 0.99848265, 0.99919899, 0.49320533],
    6268                                                                                                  [      -6.27297975, -0.00049661, 0.00030427, 7.27248315, 0.99848289, 0.99919912, 0.49320533],
    6269                                                                                                  [      -6.27297994, -0.00049653, 0.00030422, 7.27248342, 0.99848313, 0.99919925, 0.49320545],
    6270                                                                                                  [      -6.27298013, -0.00049645, 0.00030417, 7.27248369, 0.99848338, 0.99919938, 0.49320550],
    6271                                                                                                  [      -6.27298033, -0.00049637, 0.00030412, 7.27248396, 0.99848362, 0.99919951, 0.49320544],
    6272                                                                                                  [      -6.27298052, -0.00049629, 0.00030407, 7.27248423, 0.99848386, 0.99919964, 0.49320542],
    6273                                                                                                  [      -6.27298071, -0.00049621, 0.00030403, 7.27248450, 0.99848411, 0.99919976, 0.49320549],
    6274                                                                                                  [      -6.27298090, -0.00049613, 0.00030398, 7.27248477, 0.99848435, 0.99919989, 0.49320553],
    6275                                                                                                  [      -6.27298109, -0.00049605, 0.00030393, 7.27248504, 0.99848459, 0.99920002, 0.49320549],
    6276                                                                                                  [      -6.27298128, -0.00049597, 0.00030388, 7.27248531, 0.99848484, 0.99920015, 0.49320559],
    6277                                                                                                  [      -6.27298147, -0.00049589, 0.00030383, 7.27248557, 0.99848508, 0.99920028, 0.49320560],
    6278                                                                                                  [      -6.27298166, -0.00049581, 0.00030378, 7.27248584, 0.99848532, 0.99920041, 0.49320562],
    6279                                                                                                  [      -6.27298185, -0.00049573, 0.00030373, 7.27248611, 0.99848556, 0.99920053, 0.49320572],
    6280                                                                                                  [      -6.27298204, -0.00049565, 0.00030368, 7.27248638, 0.99848581, 0.99920066, 0.49320570],
    6281                                                                                                  [      -6.27298223, -0.00049557, 0.00030364, 7.27248665, 0.99848605, 0.99920079, 0.49320571],
    6282                                                                                                  [      -6.27298242, -0.00049550, 0.00030359, 7.27248692, 0.99848629, 0.99920092, 0.49320573],
    6283                                                                                                  [      -6.27298261, -0.00049542, 0.00030354, 7.27248719, 0.99848653, 0.99920105, 0.49320576],
    6284                                                                                                  [      -6.27298280, -0.00049534, 0.00030349, 7.27248746, 0.99848678, 0.99920117, 0.49320585],
    6285                                                                                                  [      -6.27298299, -0.00049526, 0.00030344, 7.27248773, 0.99848702, 0.99920130, 0.49320584],
    6286                                                                                                  [      -6.27298318, -0.00049518, 0.00030339, 7.27248800, 0.99848726, 0.99920143, 0.49320590],
    6287                                                                                                  [      -6.27298336, -0.00049510, 0.00030334, 7.27248827, 0.99848750, 0.99920156, 0.49320592],
    6288                                                                                                  [      -6.27298355, -0.00049502, 0.00030330, 7.27248853, 0.99848774, 0.99920168, 0.49320594],
    6289                                                                                                  [      -6.27298374, -0.00049494, 0.00030325, 7.27248880, 0.99848799, 0.99920181, 0.49320595],
    6290                                                                                                  [      -6.27298393, -0.00049486, 0.00030320, 7.27248907, 0.99848823, 0.99920194, 0.49320597],
    6291                                                                                                  [      -6.27298412, -0.00049478, 0.00030315, 7.27248934, 0.99848847, 0.99920207, 0.49320596],
    6292                                                                                                  [      -6.27298431, -0.00049470, 0.00030310, 7.27248961, 0.99848871, 0.99920220, 0.49320603],
    6293                                                                                                  [      -6.27298450, -0.00049462, 0.00030305, 7.27248988, 0.99848895, 0.99920232, 0.49320613],
    6294                                                                                                  [      -6.27298469, -0.00049455, 0.00030300, 7.27249014, 0.99848919, 0.99920245, 0.49320607],
    6295                                                                                                  [      -6.27298488, -0.00049447, 0.00030296, 7.27249041, 0.99848944, 0.99920258, 0.49320616],
    6296                                                                                                  [      -6.27298507, -0.00049439, 0.00030291, 7.27249068, 0.99848968, 0.99920270, 0.49320618],
    6297                                                                                                  [      -6.27298526, -0.00049431, 0.00030286, 7.27249095, 0.99848992, 0.99920283, 0.49320613],
    6298                                                                                                  [      -6.27298545, -0.00049423, 0.00030281, 7.27249122, 0.99849016, 0.99920296, 0.49320620],
    6299                                                                                                  [      -6.27298563, -0.00049415, 0.00030276, 7.27249148, 0.99849040, 0.99920309, 0.49320622],
    6300                                                                                                  [      -6.27298582, -0.00049407, 0.00030271, 7.27249175, 0.99849064, 0.99920321, 0.49320626],
    6301                                                                                                  [      -6.27298601, -0.00049399, 0.00030267, 7.27249202, 0.99849088, 0.99920334, 0.49320625],
    6302                                                                                                  [      -6.27298620, -0.00049391, 0.00030262, 7.27249229, 0.99849112, 0.99920347, 0.49320640],
    6303                                                                                                  [      -6.27298639, -0.00049384, 0.00030257, 7.27249255, 0.99849136, 0.99920360, 0.49320640],
    6304                                                                                                  [      -6.27298658, -0.00049376, 0.00030252, 7.27249282, 0.99849161, 0.99920372, 0.49320636],
    6305                                                                                                  [      -6.27298677, -0.00049368, 0.00030247, 7.27249309, 0.99849185, 0.99920385, 0.49320641],
    6306                                                                                                  [      -6.27298695, -0.00049360, 0.00030242, 7.27249336, 0.99849209, 0.99920398, 0.49320644],
    6307                                                                                                  [      -6.27298714, -0.00049352, 0.00030238, 7.27249362, 0.99849233, 0.99920410, 0.49320643],
    6308                                                                                                  [      -6.27298733, -0.00049344, 0.00030233, 7.27249389, 0.99849257, 0.99920423, 0.49320647],
    6309                                                                                                  [      -6.27298752, -0.00049336, 0.00030228, 7.27249416, 0.99849281, 0.99920436, 0.49320649],
    6310                                                                                                  [      -6.27298771, -0.00049328, 0.00030223, 7.27249442, 0.99849305, 0.99920448, 0.49320659],
    6311                                                                                                  [      -6.27298790, -0.00049321, 0.00030218, 7.27249469, 0.99849329, 0.99920461, 0.49320657],
    6312                                                                                                  [      -6.27298808, -0.00049313, 0.00030214, 7.27249496, 0.99849353, 0.99920474, 0.49320661],
    6313                                                                                                  [      -6.27298827, -0.00049305, 0.00030209, 7.27249522, 0.99849377, 0.99920486, 0.49320660],
    6314                                                                                                  [      -6.27298846, -0.00049297, 0.00030204, 7.27249549, 0.99849401, 0.99920499, 0.49320663],
    6315                                                                                                  [      -6.27298865, -0.00049289, 0.00030199, 7.27249576, 0.99849425, 0.99920512, 0.49320673],
    6316                                                                                                  [      -6.27298883, -0.00049281, 0.00030194, 7.27249602, 0.99849449, 0.99920524, 0.49320673],
    6317                                                                                                  [      -6.27298902, -0.00049273, 0.00030189, 7.27249629, 0.99849473, 0.99920537, 0.49320669],
    6318                                                                                                  [      -6.27298921, -0.00049266, 0.00030185, 7.27249655, 0.99849497, 0.99920550, 0.49320677],
    6319                                                                                                  [      -6.27298940, -0.00049258, 0.00030180, 7.27249682, 0.99849521, 0.99920562, 0.49320680],
    6320                                                                                                  [      -6.27298959, -0.00049250, 0.00030175, 7.27249709, 0.99849545, 0.99920575, 0.49320687],
    6321                                                                                                  [      -6.27298977, -0.00049242, 0.00030170, 7.27249735, 0.99849569, 0.99920588, 0.49320693],
    6322                                                                                                  [      -6.27298996, -0.00049234, 0.00030165, 7.27249762, 0.99849593, 0.99920600, 0.49320681],
    6323                                                                                                  [      -6.27299015, -0.00049226, 0.00030161, 7.27249788, 0.99849616, 0.99920613, 0.49320699],
    6324                                                                                                  [      -6.27299033, -0.00049219, 0.00030156, 7.27249815, 0.99849640, 0.99920626, 0.49320687],
    6325                                                                                                  [      -6.27299052, -0.00049211, 0.00030151, 7.27249841, 0.99849664, 0.99920638, 0.49320699],
    6326                                                                                                  [      -6.27299071, -0.00049203, 0.00030146, 7.27249868, 0.99849688, 0.99920651, 0.49320705],
    6327                                                                                                  [      -6.27299090, -0.00049195, 0.00030141, 7.27249894, 0.99849712, 0.99920663, 0.49320709],
    6328                                                                                                  [      -6.27299108, -0.00049187, 0.00030137, 7.27249921, 0.99849736, 0.99920676, 0.49320704],
    6329                                                                                                  [      -6.27299127, -0.00049180, 0.00030132, 7.27249948, 0.99849760, 0.99920689, 0.49320700],
    6330                                                                                                  [      -6.27299146, -0.00049172, 0.00030127, 7.27249974, 0.99849784, 0.99920701, 0.49320709],
    6331                                                                                                  [      -6.27299164, -0.00049164, 0.00030122, 7.27250001, 0.99849808, 0.99920714, 0.49320722],
    6332                                                                                                  [      -6.27299183, -0.00049156, 0.00030118, 7.27250027, 0.99849831, 0.99920726, 0.49320713],
    6333                                                                                                  [      -6.27299202, -0.00049148, 0.00030113, 7.27250053, 0.99849855, 0.99920739, 0.49320717],
    6334                                                                                                  [      -6.27299220, -0.00049140, 0.00030108, 7.27250080, 0.99849879, 0.99920752, 0.49320720],
    6335                                                                                                  [      -6.27299239, -0.00049133, 0.00030103, 7.27250106, 0.99849903, 0.99920764, 0.49320724],
    6336                                                                                                  [      -6.27299258, -0.00049125, 0.00030098, 7.27250133, 0.99849927, 0.99920777, 0.49320731],
    6337                                                                                                  [      -6.27299276, -0.00049117, 0.00030094, 7.27250159, 0.99849951, 0.99920789, 0.49320733],
    6338                                                                                                  [      -6.27299295, -0.00049109, 0.00030089, 7.27250186, 0.99849974, 0.99920802, 0.49320736],
    6339                                                                                                  [      -6.27299314, -0.00049102, 0.00030084, 7.27250212, 0.99849998, 0.99920814, 0.49320742],
    6340                                                                                                  [      -6.27299332, -0.00049094, 0.00030079, 7.27250239, 0.99850022, 0.99920827, 0.49320737],
    6341                                                                                                  [      -6.27299351, -0.00049086, 0.00030075, 7.27250265, 0.99850046, 0.99920840, 0.49320741],
    6342                                                                                                  [      -6.27299370, -0.00049078, 0.00030070, 7.27250291, 0.99850070, 0.99920852, 0.49320747],
    6343                                                                                                  [      -6.27299388, -0.00049070, 0.00030065, 7.27250318, 0.99850093, 0.99920865, 0.49320746],
    6344                                                                                                  [      -6.27299407, -0.00049063, 0.00030060, 7.27250344, 0.99850117, 0.99920877, 0.49320747],
    6345                                                                                                  [      -6.27299425, -0.00049055, 0.00030055, 7.27250371, 0.99850141, 0.99920890, 0.49320753],
    6346                                                                                                  [      -6.27299444, -0.00049047, 0.00030051, 7.27250397, 0.99850165, 0.99920902, 0.49320754],
    6347                                                                                                  [      -6.27299463, -0.00049039, 0.00030046, 7.27250423, 0.99850188, 0.99920915, 0.49320761],
    6348                                                                                                  [      -6.27299481, -0.00049032, 0.00030041, 7.27250450, 0.99850212, 0.99920927, 0.49320761],
    6349                                                                                                  [      -6.27299500, -0.00049024, 0.00030036, 7.27250476, 0.99850236, 0.99920940, 0.49320763],
    6350                                                                                                  [      -6.27299518, -0.00049016, 0.00030032, 7.27250502, 0.99850260, 0.99920952, 0.49320763],
    6351                                                                                                  [      -6.27299537, -0.00049008, 0.00030027, 7.27250529, 0.99850283, 0.99920965, 0.49320764],
    6352                                                                                                  [      -6.27299556, -0.00049000, 0.00030022, 7.27250555, 0.99850307, 0.99920977, 0.49320768],
    6353                                                                                                  [      -6.27299574, -0.00048993, 0.00030017, 7.27250581, 0.99850331, 0.99920990, 0.49320774],
    6354                                                                                                  [      -6.27299593, -0.00048985, 0.00030013, 7.27250608, 0.99850354, 0.99921002, 0.49320770],
    6355                                                                                                  [      -6.27299611, -0.00048977, 0.00030008, 7.27250634, 0.99850378, 0.99921015, 0.49320782],
    6356                                                                                                  [      -6.27299630, -0.00048969, 0.00030003, 7.27250660, 0.99850402, 0.99921027, 0.49320781],
    6357                                                                                                  [      -6.27299648, -0.00048962, 0.00029998, 7.27250687, 0.99850426, 0.99921040, 0.49320784],
    6358                                                                                                  [      -6.27299667, -0.00048954, 0.00029994, 7.27250713, 0.99850449, 0.99921052, 0.49320787],
    6359                                                                                                  [      -6.27299685, -0.00048946, 0.00029989, 7.27250739, 0.99850473, 0.99921065, 0.49320791],
    6360                                                                                                  [      -6.27299704, -0.00048938, 0.00029984, 7.27250765, 0.99850496, 0.99921077, 0.49320794],
    6361                                                                                                  [      -6.27299722, -0.00048931, 0.00029979, 7.27250792, 0.99850520, 0.99921090, 0.49320795],
    6362                                                                                                  [      -6.27299741, -0.00048923, 0.00029975, 7.27250818, 0.99850544, 0.99921102, 0.49320801],
    6363                                                                                                  [      -6.27299759, -0.00048915, 0.00029970, 7.27250844, 0.99850567, 0.99921115, 0.49320802],
    6364                                                                                                  [      -6.27299778, -0.00048908, 0.00029965, 7.27250870, 0.99850591, 0.99921127, 0.49320805],
    6365                                                                                                  [      -6.27299796, -0.00048900, 0.00029960, 7.27250896, 0.99850615, 0.99921140, 0.49320810],
    6366                                                                                                  [      -6.27299815, -0.00048892, 0.00029956, 7.27250923, 0.99850638, 0.99921152, 0.49320806],
    6367                                                                                                  [      -6.27299833, -0.00048884, 0.00029951, 7.27250949, 0.99850662, 0.99921165, 0.49320815],
    6368                                                                                                  [      -6.27299852, -0.00048877, 0.00029946, 7.27250975, 0.99850685, 0.99921177, 0.49320816],
    6369                                                                                                  [      -6.27299870, -0.00048869, 0.00029941, 7.27251001, 0.99850709, 0.99921190, 0.49320817],
    6370                                                                                                  [      -6.27299889, -0.00048861, 0.00029937, 7.27251027, 0.99850733, 0.99921202, 0.49320820],
    6371                                                                                                  [      -6.27299907, -0.00048854, 0.00029932, 7.27251054, 0.99850756, 0.99921214, 0.49320826],
    6372                                                                                                  [      -6.27299926, -0.00048846, 0.00029927, 7.27251080, 0.99850780, 0.99921227, 0.49320827],
    6373                                                                                                  [      -6.27299944, -0.00048838, 0.00029923, 7.27251106, 0.99850803, 0.99921239, 0.49320823],
    6374                                                                                                  [      -6.27299962, -0.00048830, 0.00029918, 7.27251132, 0.99850827, 0.99921252, 0.49320833],
    6375                                                                                                  [      -6.27299981, -0.00048823, 0.00029913, 7.27251158, 0.99850850, 0.99921264, 0.49320833],
    6376                                                                                                  [      -6.27299999, -0.00048815, 0.00029908, 7.27251184, 0.99850874, 0.99921277, 0.49320839],
    6377                                                                                                  [      -6.27300018, -0.00048807, 0.00029904, 7.27251210, 0.99850897, 0.99921289, 0.49320841],
    6378                                                                                                  [      -6.27300036, -0.00048800, 0.00029899, 7.27251236, 0.99850921, 0.99921301, 0.49320850],
    6379                                                                                                  [      -6.27300055, -0.00048792, 0.00029894, 7.27251263, 0.99850944, 0.99921314, 0.49320846],
    6380                                                                                                  [      -6.27300073, -0.00048784, 0.00029890, 7.27251289, 0.99850968, 0.99921326, 0.49320848],
    6381                                                                                                  [      -6.27300091, -0.00048777, 0.00029885, 7.27251315, 0.99850991, 0.99921339, 0.49320847],
    6382                                                                                                  [      -6.27300110, -0.00048769, 0.00029880, 7.27251341, 0.99851015, 0.99921351, 0.49320858],
    6383                                                                                                  [      -6.27300128, -0.00048761, 0.00029875, 7.27251367, 0.99851038, 0.99921363, 0.49320864],
    6384                                                                                                  [      -6.27300146, -0.00048754, 0.00029871, 7.27251393, 0.99851062, 0.99921376, 0.49320855],
    6385                                                                                                  [      -6.27300165, -0.00048746, 0.00029866, 7.27251419, 0.99851085, 0.99921388, 0.49320856],
    6386                                                                                                  [      -6.27300183, -0.00048738, 0.00029861, 7.27251445, 0.99851109, 0.99921401, 0.49320863],
    6387                                                                                                  [      -6.27300202, -0.00048730, 0.00029857, 7.27251471, 0.99851132, 0.99921413, 0.49320867],
    6388                                                                                                  [      -6.27300220, -0.00048723, 0.00029852, 7.27251497, 0.99851156, 0.99921425, 0.49320861],
    6389                                                                                                  [      -6.27300238, -0.00048715, 0.00029847, 7.27251523, 0.99851179, 0.99921438, 0.49320874],
    6390                                                                                                  [      -6.27300257, -0.00048707, 0.00029842, 7.27251549, 0.99851202, 0.99921450, 0.49320874],
    6391                                                                                                  [      -6.27300275, -0.00048700, 0.00029838, 7.27251575, 0.99851226, 0.99921462, 0.49320881],
    6392                                                                                                  [      -6.27300293, -0.00048692, 0.00029833, 7.27251601, 0.99851249, 0.99921475, 0.49320880],
    6393                                                                                                  [      -6.27300312, -0.00048685, 0.00029828, 7.27251627, 0.99851273, 0.99921487, 0.49320887],
    6394                                                                                                  [      -6.27300330, -0.00048677, 0.00029824, 7.27251653, 0.99851296, 0.99921499, 0.49320886],
    6395                                                                                                  [      -6.27300348, -0.00048669, 0.00029819, 7.27251679, 0.99851320, 0.99921512, 0.49320893],
    6396                                                                                                  [      -6.27300367, -0.00048662, 0.00029814, 7.27251705, 0.99851343, 0.99921524, 0.49320893],
    6397                                                                                                  [      -6.27300385, -0.00048654, 0.00029810, 7.27251731, 0.99851366, 0.99921536, 0.49320895],
    6398                                                                                                  [      -6.27300403, -0.00048646, 0.00029805, 7.27251757, 0.99851390, 0.99921549, 0.49320892],
    6399                                                                                                  [      -6.27300421, -0.00048639, 0.00029800, 7.27251783, 0.99851413, 0.99921561, 0.49320898],
    6400                                                                                                  [      -6.27300440, -0.00048631, 0.00029796, 7.27251809, 0.99851436, 0.99921573, 0.49320901],
    6401                                                                                                  [      -6.27300458, -0.00048623, 0.00029791, 7.27251835, 0.99851460, 0.99921586, 0.49320901],
    6402                                                                                                  [      -6.27300476, -0.00048616, 0.00029786, 7.27251861, 0.99851483, 0.99921598, 0.49320912],
    6403                                                                                                  [      -6.27300495, -0.00048608, 0.00029782, 7.27251886, 0.99851506, 0.99921610, 0.49320910],
    6404                                                                                                  [      -6.27300513, -0.00048600, 0.00029777, 7.27251912, 0.99851530, 0.99921623, 0.49320913],
    6405                                                                                                  [      -6.27300531, -0.00048593, 0.00029772, 7.27251938, 0.99851553, 0.99921635, 0.49320917],
    6406                                                                                                  [      -6.27300549, -0.00048585, 0.00029768, 7.27251964, 0.99851576, 0.99921647, 0.49320916],
    6407                                                                                                  [      -6.27300568, -0.00048578, 0.00029763, 7.27251990, 0.99851600, 0.99921660, 0.49320920],
    6408                                                                                                  [      -6.27300586, -0.00048570, 0.00029758, 7.27252016, 0.99851623, 0.99921672, 0.49320924],
    6409                                                                                                  [      -6.27300604, -0.00048562, 0.00029753, 7.27252042, 0.99851646, 0.99921684, 0.49320926],
    6410                                                                                                  [      -6.27300622, -0.00048555, 0.00029749, 7.27252068, 0.99851669, 0.99921696, 0.49320930],
    6411                                                                                                  [      -6.27300640, -0.00048547, 0.00029744, 7.27252093, 0.99851693, 0.99921709, 0.49320931],
    6412                                                                                                  [      -6.27300659, -0.00048539, 0.00029739, 7.27252119, 0.99851716, 0.99921721, 0.49320938],
    6413                                                                                                  [      -6.27300677, -0.00048532, 0.00029735, 7.27252145, 0.99851739, 0.99921733, 0.49320939],
    6414                                                                                                  [      -6.27300695, -0.00048524, 0.00029730, 7.27252171, 0.99851763, 0.99921746, 0.49320948],
    6415                                                                                                  [      -6.27300713, -0.00048517, 0.00029725, 7.27252197, 0.99851786, 0.99921758, 0.49320954],
    6416                                                                                                  [      -6.27300732, -0.00048509, 0.00029721, 7.27252222, 0.99851809, 0.99921770, 0.49320950],
    6417                                                                                                  [      -6.27300750, -0.00048501, 0.00029716, 7.27252248, 0.99851832, 0.99921782, 0.49320952],
    6418                                                                                                  [      -6.27300768, -0.00048494, 0.00029712, 7.27252274, 0.99851855, 0.99921795, 0.49320954],
    6419                                                                                                  [      -6.27300786, -0.00048486, 0.00029707, 7.27252300, 0.99851879, 0.99921807, 0.49320960],
    6420                                                                                                  [      -6.27300804, -0.00048479, 0.00029702, 7.27252326, 0.99851902, 0.99921819, 0.49320959],
    6421                                                                                                  [      -6.27300822, -0.00048471, 0.00029698, 7.27252351, 0.99851925, 0.99921831, 0.49320958],
    6422                                                                                                  [      -6.27300841, -0.00048463, 0.00029693, 7.27252377, 0.99851948, 0.99921844, 0.49320965],
    6423                                                                                                  [      -6.27300859, -0.00048456, 0.00029688, 7.27252403, 0.99851971, 0.99921856, 0.49320967],
    6424                                                                                                  [      -6.27300877, -0.00048448, 0.00029684, 7.27252429, 0.99851995, 0.99921868, 0.49320972],
    6425                                                                                                  [      -6.27300895, -0.00048441, 0.00029679, 7.27252454, 0.99852018, 0.99921880, 0.49320973],
    6426                                                                                                  [      -6.27300913, -0.00048433, 0.00029674, 7.27252480, 0.99852041, 0.99921893, 0.49320972],
    6427                                                                                                  [      -6.27300931, -0.00048426, 0.00029670, 7.27252506, 0.99852064, 0.99921905, 0.49320980],
    6428                                                                                                  [      -6.27300949, -0.00048418, 0.00029665, 7.27252531, 0.99852087, 0.99921917, 0.49320981],
    6429                                                                                                  [      -6.27300968, -0.00048410, 0.00029660, 7.27252557, 0.99852110, 0.99921929, 0.49320974],
    6430                                                                                                  [      -6.27300986, -0.00048403, 0.00029656, 7.27252583, 0.99852134, 0.99921941, 0.49320985],
    6431                                                                                                  [      -6.27301004, -0.00048395, 0.00029651, 7.27252608, 0.99852157, 0.99921954, 0.49320992],
    6432                                                                                                  [      -6.27301022, -0.00048388, 0.00029646, 7.27252634, 0.99852180, 0.99921966, 0.49320992],
    6433                                                                                                  [      -6.27301040, -0.00048380, 0.00029642, 7.27252660, 0.99852203, 0.99921978, 0.49320993],
    6434                                                                                                  [      -6.27301058, -0.00048373, 0.00029637, 7.27252685, 0.99852226, 0.99921990, 0.49320993],
    6435                                                                                                  [      -6.27301076, -0.00048365, 0.00029633, 7.27252711, 0.99852249, 0.99922002, 0.49321001],
    6436                                                                                                  [      -6.27301094, -0.00048357, 0.00029628, 7.27252737, 0.99852272, 0.99922015, 0.49321003],
    6437                                                                                                  [      -6.27301112, -0.00048350, 0.00029623, 7.27252762, 0.99852295, 0.99922027, 0.49321005],
    6438                                                                                                  [      -6.27301130, -0.00048342, 0.00029619, 7.27252788, 0.99852318, 0.99922039, 0.49321008],
    6439                                                                                                  [      -6.27301148, -0.00048335, 0.00029614, 7.27252814, 0.99852341, 0.99922051, 0.49321008],
    6440                                                                                                  [      -6.27301166, -0.00048327, 0.00029609, 7.27252839, 0.99852364, 0.99922063, 0.49321010],
    6441                                                                                                  [      -6.27301185, -0.00048320, 0.00029605, 7.27252865, 0.99852388, 0.99922075, 0.49321017],
    6442                                                                                                  [      -6.27301203, -0.00048312, 0.00029600, 7.27252890, 0.99852411, 0.99922088, 0.49321023],
    6443                                                                                                  [      -6.27301221, -0.00048305, 0.00029596, 7.27252916, 0.99852434, 0.99922100, 0.49321020],
    6444                                                                                                  [      -6.27301239, -0.00048297, 0.00029591, 7.27252942, 0.99852457, 0.99922112, 0.49321023],
    6445                                                                                                  [      -6.27301257, -0.00048290, 0.00029586, 7.27252967, 0.99852480, 0.99922124, 0.49321024],
    6446                                                                                                  [      -6.27301275, -0.00048282, 0.00029582, 7.27252993, 0.99852503, 0.99922136, 0.49321030],
    6447                                                                                                  [      -6.27301293, -0.00048275, 0.00029577, 7.27253018, 0.99852526, 0.99922148, 0.49321031],
    6448                                                                                                  [      -6.27301311, -0.00048267, 0.00029572, 7.27253044, 0.99852549, 0.99922161, 0.49321030],
    6449                                                                                                  [      -6.27301329, -0.00048259, 0.00029568, 7.27253069, 0.99852572, 0.99922173, 0.49321030],
    6450                                                                                                  [      -6.27301347, -0.00048252, 0.00029563, 7.27253095, 0.99852595, 0.99922185, 0.49321039],
    6451                                                                                                  [      -6.27301365, -0.00048244, 0.00029559, 7.27253120, 0.99852618, 0.99922197, 0.49321037],
    6452                                                                                                  [      -6.27301383, -0.00048237, 0.00029554, 7.27253146, 0.99852641, 0.99922209, 0.49321046],
    6453                                                                                                  [      -6.27301401, -0.00048229, 0.00029549, 7.27253171, 0.99852664, 0.99922221, 0.49321048],
    6454                                                                                                  [      -6.27301419, -0.00048222, 0.00029545, 7.27253197, 0.99852687, 0.99922233, 0.49321049],
    6455                                                                                                  [      -6.27301437, -0.00048214, 0.00029540, 7.27253222, 0.99852710, 0.99922245, 0.49321046],
    6456                                                                                                  [      -6.27301455, -0.00048207, 0.00029536, 7.27253248, 0.99852732, 0.99922258, 0.49321053],
    6457                                                                                                  [      -6.27301473, -0.00048199, 0.00029531, 7.27253273, 0.99852755, 0.99922270, 0.49321060],
    6458                                                                                                  [      -6.27301491, -0.00048192, 0.00029526, 7.27253299, 0.99852778, 0.99922282, 0.49321066],
    6459                                                                                                  [      -6.27301509, -0.00048184, 0.00029522, 7.27253324, 0.99852801, 0.99922294, 0.49321062],
    6460                                                                                                  [      -6.27301526, -0.00048177, 0.00029517, 7.27253350, 0.99852824, 0.99922306, 0.49321065],
    6461                                                                                                  [      -6.27301544, -0.00048169, 0.00029513, 7.27253375, 0.99852847, 0.99922318, 0.49321069],
    6462                                                                                                  [      -6.27301562, -0.00048162, 0.00029508, 7.27253400, 0.99852870, 0.99922330, 0.49321066],
    6463                                                                                                  [      -6.27301580, -0.00048154, 0.00029503, 7.27253426, 0.99852893, 0.99922342, 0.49321075],
    6464                                                                                                  [      -6.27301598, -0.00048147, 0.00029499, 7.27253451, 0.99852916, 0.99922354, 0.49321074],
    6465                                                                                                  [      -6.27301616, -0.00048139, 0.00029494, 7.27253477, 0.99852939, 0.99922366, 0.49321082],
    6466                                                                                                  [      -6.27301634, -0.00048132, 0.00029490, 7.27253502, 0.99852962, 0.99922378, 0.49321081],
    6467                                                                                                  [      -6.27301652, -0.00048124, 0.00029485, 7.27253528, 0.99852984, 0.99922391, 0.49321083],
    6468                                                                                                  [      -6.27301670, -0.00048117, 0.00029480, 7.27253553, 0.99853007, 0.99922403, 0.49321094],
    6469                                                                                                  [      -6.27301688, -0.00048109, 0.00029476, 7.27253578, 0.99853030, 0.99922415, 0.49321096],
    6470                                                                                                  [      -6.27301706, -0.00048102, 0.00029471, 7.27253604, 0.99853053, 0.99922427, 0.49321093],
    6471                                                                                                  [      -6.27301724, -0.00048095, 0.00029467, 7.27253629, 0.99853076, 0.99922439, 0.49321094],
    6472                                                                                                  [      -6.27301741, -0.00048087, 0.00029462, 7.27253654, 0.99853099, 0.99922451, 0.49321098],
    6473                                                                                                  [      -6.27301759, -0.00048080, 0.00029458, 7.27253680, 0.99853121, 0.99922463, 0.49321102],
    6474                                                                                                  [      -6.27301777, -0.00048072, 0.00029453, 7.27253705, 0.99853144, 0.99922475, 0.49321101],
    6475                                                                                                  [      -6.27301795, -0.00048065, 0.00029448, 7.27253730, 0.99853167, 0.99922487, 0.49321109],
    6476                                                                                                  [      -6.27301813, -0.00048057, 0.00029444, 7.27253756, 0.99853190, 0.99922499, 0.49321107],
    6477                                                                                                  [      -6.27301831, -0.00048050, 0.00029439, 7.27253781, 0.99853213, 0.99922511, 0.49321107],
    6478                                                                                                  [      -6.27301849, -0.00048042, 0.00029435, 7.27253806, 0.99853235, 0.99922523, 0.49321110],
    6479                                                                                                  [      -6.27301866, -0.00048035, 0.00029430, 7.27253832, 0.99853258, 0.99922535, 0.49321118],
    6480                                                                                                  [      -6.27301884, -0.00048027, 0.00029426, 7.27253857, 0.99853281, 0.99922547, 0.49321119],
    6481                                                                                                  [      -6.27301902, -0.00048020, 0.00029421, 7.27253882, 0.99853304, 0.99922559, 0.49321116],
    6482                                                                                                  [      -6.27301920, -0.00048012, 0.00029416, 7.27253907, 0.99853327, 0.99922571, 0.49321127],
    6483                                                                                                  [      -6.27301938, -0.00048005, 0.00029412, 7.27253933, 0.99853349, 0.99922583, 0.49321123],
    6484                                                                                                  [      -6.27301956, -0.00047998, 0.00029407, 7.27253958, 0.99853372, 0.99922595, 0.49321129],
    6485                                                                                                  [      -6.27301973, -0.00047990, 0.00029403, 7.27253983, 0.99853395, 0.99922607, 0.49321135],
    6486                                                                                                  [      -6.27301991, -0.00047983, 0.00029398, 7.27254008, 0.99853418, 0.99922619, 0.49321135],
    6487                                                                                                  [      -6.27302009, -0.00047975, 0.00029394, 7.27254034, 0.99853440, 0.99922631, 0.49321139],
    6488                                                                                                  [      -6.27302027, -0.00047968, 0.00029389, 7.27254059, 0.99853463, 0.99922643, 0.49321146],
    6489                                                                                                  [      -6.27302044, -0.00047960, 0.00029384, 7.27254084, 0.99853486, 0.99922655, 0.49321142],
    6490                                                                                                  [      -6.27302062, -0.00047953, 0.00029380, 7.27254109, 0.99853508, 0.99922667, 0.49321144],
    6491                                                                                                  [      -6.27302080, -0.00047946, 0.00029375, 7.27254135, 0.99853531, 0.99922679, 0.49321144],
    6492                                                                                                  [      -6.27302098, -0.00047938, 0.00029371, 7.27254160, 0.99853554, 0.99922691, 0.49321157],
    6493                                                                                                  [      -6.27302116, -0.00047931, 0.00029366, 7.27254185, 0.99853577, 0.99922703, 0.49321152],
    6494                                                                                                  [      -6.27302133, -0.00047923, 0.00029362, 7.27254210, 0.99853599, 0.99922715, 0.49321153],
    6495                                                                                                  [      -6.27302151, -0.00047916, 0.00029357, 7.27254235, 0.99853622, 0.99922727, 0.49321157],
    6496                                                                                                  [      -6.27302169, -0.00047908, 0.00029353, 7.27254260, 0.99853645, 0.99922739, 0.49321160],
    6497                                                                                                  [      -6.27302187, -0.00047901, 0.00029348, 7.27254286, 0.99853667, 0.99922751, 0.49321170],
    6498                                                                                                  [      -6.27302204, -0.00047894, 0.00029344, 7.27254311, 0.99853690, 0.99922763, 0.49321172],
    6499                                                                                                  [      -6.27302222, -0.00047886, 0.00029339, 7.27254336, 0.99853712, 0.99922775, 0.49321163],
    6500                                                                                                  [      -6.27302240, -0.00047879, 0.00029334, 7.27254361, 0.99853735, 0.99922787, 0.49321166],
    6501                                                                                                  [      -6.27302257, -0.00047871, 0.00029330, 7.27254386, 0.99853758, 0.99922799, 0.49321175],
    6502                                                                                                  [      -6.27302275, -0.00047864, 0.00029325, 7.27254411, 0.99853780, 0.99922811, 0.49321177],
    6503                                                                                                  [      -6.27302293, -0.00047857, 0.00029321, 7.27254436, 0.99853803, 0.99922823, 0.49321185],
    6504                                                                                                  [      -6.27302311, -0.00047849, 0.00029316, 7.27254461, 0.99853826, 0.99922834, 0.49321182],
    6505                                                                                                  [      -6.27302328, -0.00047842, 0.00029312, 7.27254486, 0.99853848, 0.99922846, 0.49321190],
    6506                                                                                                  [      -6.27302346, -0.00047834, 0.00029307, 7.27254512, 0.99853871, 0.99922858, 0.49321191],
    6507                                                                                                  [      -6.27302364, -0.00047827, 0.00029303, 7.27254537, 0.99853893, 0.99922870, 0.49321187],
    6508                                                                                                  [      -6.27302381, -0.00047820, 0.00029298, 7.27254562, 0.99853916, 0.99922882, 0.49321186],
    6509                                                                                                  [      -6.27302399, -0.00047812, 0.00029294, 7.27254587, 0.99853939, 0.99922894, 0.49321193],
    6510                                                                                                  [      -6.27302417, -0.00047805, 0.00029289, 7.27254612, 0.99853961, 0.99922906, 0.49321201],
    6511                                                                                                  [      -6.27302434, -0.00047797, 0.00029285, 7.27254637, 0.99853984, 0.99922918, 0.49321205],
    6512                                                                                                  [      -6.27302452, -0.00047790, 0.00029280, 7.27254662, 0.99854006, 0.99922930, 0.49321210],
    6513                                                                                                  [      -6.27302470, -0.00047783, 0.00029276, 7.27254687, 0.99854029, 0.99922942, 0.49321211],
    6514                                                                                                  [      -6.27302487, -0.00047775, 0.00029271, 7.27254712, 0.99854051, 0.99922954, 0.49321206],
    6515                                                                                                  [      -6.27302505, -0.00047768, 0.00029267, 7.27254737, 0.99854074, 0.99922965, 0.49321212],
    6516                                                                                                  [      -6.27302523, -0.00047761, 0.00029262, 7.27254762, 0.99854096, 0.99922977, 0.49321212],
    6517                                                                                                  [      -6.27302540, -0.00047753, 0.00029257, 7.27254787, 0.99854119, 0.99922989, 0.49321221],
    6518                                                                                                  [      -6.27302558, -0.00047746, 0.00029253, 7.27254812, 0.99854141, 0.99923001, 0.49321218],
    6519                                                                                                  [      -6.27302575, -0.00047739, 0.00029248, 7.27254837, 0.99854164, 0.99923013, 0.49321223],
    6520                                                                                                  [      -6.27302593, -0.00047731, 0.00029244, 7.27254862, 0.99854186, 0.99923025, 0.49321227],
    6521                                                                                                  [      -6.27302611, -0.00047724, 0.00029239, 7.27254887, 0.99854209, 0.99923037, 0.49321227],
    6522                                                                                                  [      -6.27302628, -0.00047716, 0.00029235, 7.27254912, 0.99854231, 0.99923049, 0.49321226],
    6523                                                                                                  [      -6.27302646, -0.00047709, 0.00029230, 7.27254937, 0.99854254, 0.99923060, 0.49321229],
    6524                                                                                                  [      -6.27302664, -0.00047702, 0.00029226, 7.27254962, 0.99854276, 0.99923072, 0.49321232],
    6525                                                                                                  [      -6.27302681, -0.00047694, 0.00029221, 7.27254987, 0.99854299, 0.99923084, 0.49321239],
    6526                                                                                                  [      -6.27302699, -0.00047687, 0.00029217, 7.27255012, 0.99854321, 0.99923096, 0.49321240],
    6527                                                                                                  [      -6.27302716, -0.00047680, 0.00029212, 7.27255037, 0.99854344, 0.99923108, 0.49321246],
    6528                                                                                                  [      -6.27302734, -0.00047672, 0.00029208, 7.27255061, 0.99854366, 0.99923120, 0.49321244],
    6529                                                                                                  [      -6.27302751, -0.00047665, 0.00029203, 7.27255086, 0.99854388, 0.99923132, 0.49321242],
    6530                                                                                                  [      -6.27302769, -0.00047658, 0.00029199, 7.27255111, 0.99854411, 0.99923143, 0.49321242],
    6531                                                                                                  [      -6.27302787, -0.00047650, 0.00029194, 7.27255136, 0.99854433, 0.99923155, 0.49321258],
    6532                                                                                                  [      -6.27302804, -0.00047643, 0.00029190, 7.27255161, 0.99854456, 0.99923167, 0.49321251],
    6533                                                                                                  [      -6.27302822, -0.00047636, 0.00029185, 7.27255186, 0.99854478, 0.99923179, 0.49321261],
    6534                                                                                                  [      -6.27302839, -0.00047628, 0.00029181, 7.27255211, 0.99854501, 0.99923191, 0.49321264],
    6535                                                                                                  [      -6.27302857, -0.00047621, 0.00029176, 7.27255236, 0.99854523, 0.99923203, 0.49321265],
    6536                                                                                                  [      -6.27302874, -0.00047614, 0.00029172, 7.27255261, 0.99854545, 0.99923214, 0.49321268],
    6537                                                                                                  [      -6.27302892, -0.00047606, 0.00029167, 7.27255285, 0.99854568, 0.99923226, 0.49321269],
    6538                                                                                                  [      -6.27302909, -0.00047599, 0.00029163, 7.27255310, 0.99854590, 0.99923238, 0.49321277],
    6539                                                                                                  [      -6.27302927, -0.00047592, 0.00029158, 7.27255335, 0.99854612, 0.99923250, 0.49321272],
    6540                                                                                                  [      -6.27302944, -0.00047584, 0.00029154, 7.27255360, 0.99854635, 0.99923262, 0.49321278],
    6541                                                                                                  [      -6.27302962, -0.00047577, 0.00029150, 7.27255385, 0.99854657, 0.99923273, 0.49321287],
    6542                                                                                                  [      -6.27302979, -0.00047570, 0.00029145, 7.27255410, 0.99854679, 0.99923285, 0.49321280],
    6543                                                                                                  [      -6.27302997, -0.00047562, 0.00029141, 7.27255434, 0.99854702, 0.99923297, 0.49321291],
    6544                                                                                                  [      -6.27303014, -0.00047555, 0.00029136, 7.27255459, 0.99854724, 0.99923309, 0.49321279],
    6545                                                                                                  [      -6.27303032, -0.00047548, 0.00029132, 7.27255484, 0.99854746, 0.99923321, 0.49321284],
    6546                                                                                                  [      -6.27303049, -0.00047541, 0.00029127, 7.27255509, 0.99854769, 0.99923332, 0.49321288],
    6547                                                                                                  [      -6.27303067, -0.00047533, 0.00029123, 7.27255533, 0.99854791, 0.99923344, 0.49321294],
    6548                                                                                                  [      -6.27303084, -0.00047526, 0.00029118, 7.27255558, 0.99854813, 0.99923356, 0.49321292],
    6549                                                                                                  [      -6.27303102, -0.00047519, 0.00029114, 7.27255583, 0.99854836, 0.99923368, 0.49321300],
    6550                                                                                                  [      -6.27303119, -0.00047511, 0.00029109, 7.27255608, 0.99854858, 0.99923379, 0.49321302],
    6551                                                                                                  [      -6.27303137, -0.00047504, 0.00029105, 7.27255632, 0.99854880, 0.99923391, 0.49321303],
    6552                                                                                                  [      -6.27303154, -0.00047497, 0.00029100, 7.27255657, 0.99854903, 0.99923403, 0.49321311],
    6553                                                                                                  [      -6.27303171, -0.00047490, 0.00029096, 7.27255682, 0.99854925, 0.99923415, 0.49321311],
    6554                                                                                                  [      -6.27303189, -0.00047482, 0.00029091, 7.27255707, 0.99854947, 0.99923426, 0.49321315],
    6555                                                                                                  [      -6.27303206, -0.00047475, 0.00029087, 7.27255731, 0.99854969, 0.99923438, 0.49321319],
    6556                                                                                                  [      -6.27303224, -0.00047468, 0.00029082, 7.27255756, 0.99854992, 0.99923450, 0.49321317],
    6557                                                                                                  [      -6.27303241, -0.00047460, 0.00029078, 7.27255781, 0.99855014, 0.99923462, 0.49321321],
    6558                                                                                                  [      -6.27303259, -0.00047453, 0.00029073, 7.27255805, 0.99855036, 0.99923473, 0.49321326],
    6559                                                                                                  [      -6.27303276, -0.00047446, 0.00029069, 7.27255830, 0.99855058, 0.99923485, 0.49321318],
    6560                                                                                                  [      -6.27303293, -0.00047439, 0.00029065, 7.27255855, 0.99855081, 0.99923497, 0.49321326],
    6561                                                                                                  [      -6.27303311, -0.00047431, 0.00029060, 7.27255879, 0.99855103, 0.99923509, 0.49321333],
    6562                                                                                                  [      -6.27303328, -0.00047424, 0.00029056, 7.27255904, 0.99855125, 0.99923520, 0.49321333],
    6563                                                                                                  [      -6.27303345, -0.00047417, 0.00029051, 7.27255929, 0.99855147, 0.99923532, 0.49321344],
    6564                                                                                                  [      -6.27303363, -0.00047410, 0.00029047, 7.27255953, 0.99855169, 0.99923544, 0.49321337],
    6565                                                                                                  [      -6.27303380, -0.00047402, 0.00029042, 7.27255978, 0.99855192, 0.99923555, 0.49321345],
    6566                                                                                                  [      -6.27303398, -0.00047395, 0.00029038, 7.27256003, 0.99855214, 0.99923567, 0.49321337],
    6567                                                                                                  [      -6.27303415, -0.00047388, 0.00029033, 7.27256027, 0.99855236, 0.99923579, 0.49321344],
    6568                                                                                                  [      -6.27303432, -0.00047380, 0.00029029, 7.27256052, 0.99855258, 0.99923591, 0.49321346],
    6569                                                                                                  [      -6.27303450, -0.00047373, 0.00029025, 7.27256076, 0.99855280, 0.99923602, 0.49321354],
    6570                                                                                                  [      -6.27303467, -0.00047366, 0.00029020, 7.27256101, 0.99855302, 0.99923614, 0.49321353],
    6571                                                                                                  [      -6.27303484, -0.00047359, 0.00029016, 7.27256126, 0.99855325, 0.99923626, 0.49321361],
    6572                                                                                                  [      -6.27303502, -0.00047351, 0.00029011, 7.27256150, 0.99855347, 0.99923637, 0.49321358],
    6573                                                                                                  [      -6.27303519, -0.00047344, 0.00029007, 7.27256175, 0.99855369, 0.99923649, 0.49321363],
    6574                                                                                                  [      -6.27303536, -0.00047337, 0.00029002, 7.27256199, 0.99855391, 0.99923661, 0.49321367],
    6575                                                                                                  [      -6.27303554, -0.00047330, 0.00028998, 7.27256224, 0.99855413, 0.99923672, 0.49321364],
    6576                                                                                                  [      -6.27303571, -0.00047323, 0.00028993, 7.27256248, 0.99855435, 0.99923684, 0.49321377],
    6577                                                                                                  [      -6.27303588, -0.00047315, 0.00028989, 7.27256273, 0.99855457, 0.99923696, 0.49321375],
    6578                                                                                                  [      -6.27303606, -0.00047308, 0.00028985, 7.27256298, 0.99855479, 0.99923707, 0.49321379],
    6579                                                                                                  [      -6.27303623, -0.00047301, 0.00028980, 7.27256322, 0.99855501, 0.99923719, 0.49321377],
    6580                                                                                                  [      -6.27303640, -0.00047294, 0.00028976, 7.27256347, 0.99855524, 0.99923731, 0.49321372],
    6581                                                                                                  [      -6.27303658, -0.00047286, 0.00028971, 7.27256371, 0.99855546, 0.99923742, 0.49321383],
    6582                                                                                                  [      -6.27303675, -0.00047279, 0.00028967, 7.27256396, 0.99855568, 0.99923754, 0.49321384],
    6583                                                                                                  [      -6.27303692, -0.00047272, 0.00028962, 7.27256420, 0.99855590, 0.99923766, 0.49321394],
    6584                                                                                                  [      -6.27303709, -0.00047265, 0.00028958, 7.27256445, 0.99855612, 0.99923777, 0.49321386],
    6585                                                                                                  [      -6.27303727, -0.00047258, 0.00028954, 7.27256469, 0.99855634, 0.99923789, 0.49321390],
    6586                                                                                                  [      -6.27303744, -0.00047250, 0.00028949, 7.27256494, 0.99855656, 0.99923801, 0.49321401],
    6587                                                                                                  [      -6.27303761, -0.00047243, 0.00028945, 7.27256518, 0.99855678, 0.99923812, 0.49321394],
    6588                                                                                                  [      -6.27303778, -0.00047236, 0.00028940, 7.27256543, 0.99855700, 0.99923824, 0.49321395],
    6589                                                                                                  [      -6.27303796, -0.00047229, 0.00028936, 7.27256567, 0.99855722, 0.99923835, 0.49321400],
    6590                                                                                                  [      -6.27303813, -0.00047221, 0.00028931, 7.27256591, 0.99855744, 0.99923847, 0.49321392],
    6591                                                                                                  [      -6.27303830, -0.00047214, 0.00028927, 7.27256616, 0.99855766, 0.99923859, 0.49321409],
    6592                                                                                                  [      -6.27303847, -0.00047207, 0.00028923, 7.27256640, 0.99855788, 0.99923870, 0.49321404],
    6593                                                                                                  [      -6.27303865, -0.00047200, 0.00028918, 7.27256665, 0.99855810, 0.99923882, 0.49321416],
    6594                                                                                                  [      -6.27303882, -0.00047193, 0.00028914, 7.27256689, 0.99855832, 0.99923893, 0.49321409],
    6595                                                                                                  [      -6.27303899, -0.00047185, 0.00028909, 7.27256714, 0.99855854, 0.99923905, 0.49321418],
    6596                                                                                                  [      -6.27303916, -0.00047178, 0.00028905, 7.27256738, 0.99855876, 0.99923917, 0.49321418],
    6597                                                                                                  [      -6.27303933, -0.00047171, 0.00028901, 7.27256762, 0.99855898, 0.99923928, 0.49321424],
    6598                                                                                                  [      -6.27303951, -0.00047164, 0.00028896, 7.27256787, 0.99855920, 0.99923940, 0.49321434],
    6599                                                                                                  [      -6.27303968, -0.00047157, 0.00028892, 7.27256811, 0.99855942, 0.99923951, 0.49321431],
    6600                                                                                                  [      -6.27303985, -0.00047150, 0.00028887, 7.27256835, 0.99855964, 0.99923963, 0.49321429],
    6601                                                                                                  [      -6.27304002, -0.00047142, 0.00028883, 7.27256860, 0.99855986, 0.99923975, 0.49321428],
    6602                                                                                                  [      -6.27304019, -0.00047135, 0.00028879, 7.27256884, 0.99856008, 0.99923986, 0.49321434],
    6603                                                                                                  [      -6.27304037, -0.00047128, 0.00028874, 7.27256909, 0.99856030, 0.99923998, 0.49321435],
    6604                                                                                                  [      -6.27304054, -0.00047121, 0.00028870, 7.27256933, 0.99856052, 0.99924009, 0.49321437],
    6605                                                                                                  [      -6.27304071, -0.00047114, 0.00028865, 7.27256957, 0.99856073, 0.99924021, 0.49321446],
    6606                                                                                                  [      -6.27304088, -0.00047106, 0.00028861, 7.27256982, 0.99856095, 0.99924032, 0.49321442],
    6607                                                                                                  [      -6.27304105, -0.00047099, 0.00028857, 7.27257006, 0.99856117, 0.99924044, 0.49321442],
    6608                                                                                                  [      -6.27304122, -0.00047092, 0.00028852, 7.27257030, 0.99856139, 0.99924056, 0.49321451],
    6609                                                                                                  [      -6.27304139, -0.00047085, 0.00028848, 7.27257054, 0.99856161, 0.99924067, 0.49321455],
    6610                                                                                                  [      -6.27304157, -0.00047078, 0.00028843, 7.27257079, 0.99856183, 0.99924079, 0.49321455],
    6611                                                                                                  [      -6.27304174, -0.00047071, 0.00028839, 7.27257103, 0.99856205, 0.99924090, 0.49321459],
    6612                                                                                                  [      -6.27304191, -0.00047064, 0.00028835, 7.27257127, 0.99856227, 0.99924102, 0.49321464],
    6613                                                                                                  [      -6.27304208, -0.00047056, 0.00028830, 7.27257152, 0.99856249, 0.99924113, 0.49321460],
    6614                                                                                                  [      -6.27304225, -0.00047049, 0.00028826, 7.27257176, 0.99856270, 0.99924125, 0.49321463],
    6615                                                                                                  [      -6.27304242, -0.00047042, 0.00028822, 7.27257200, 0.99856292, 0.99924136, 0.49321476],
    6616                                                                                                  [      -6.27304259, -0.00047035, 0.00028817, 7.27257224, 0.99856314, 0.99924148, 0.49321475],
    6617                                                                                                  [      -6.27304276, -0.00047028, 0.00028813, 7.27257249, 0.99856336, 0.99924159, 0.49321471],
    6618                                                                                                  [      -6.27304294, -0.00047021, 0.00028808, 7.27257273, 0.99856358, 0.99924171, 0.49321475],
    6619                                                                                                  [      -6.27304311, -0.00047013, 0.00028804, 7.27257297, 0.99856380, 0.99924183, 0.49321476],
    6620                                                                                                  [      -6.27304328, -0.00047006, 0.00028800, 7.27257321, 0.99856401, 0.99924194, 0.49321484],
    6621                                                                                                  [      -6.27304345, -0.00046999, 0.00028795, 7.27257346, 0.99856423, 0.99924206, 0.49321477],
    6622                                                                                                  [      -6.27304362, -0.00046992, 0.00028791, 7.27257370, 0.99856445, 0.99924217, 0.49321483],
    6623                                                                                                  [      -6.27304379, -0.00046985, 0.00028787, 7.27257394, 0.99856467, 0.99924229, 0.49321495],
    6624                                                                                                  [      -6.27304396, -0.00046978, 0.00028782, 7.27257418, 0.99856489, 0.99924240, 0.49321491],
    6625                                                                                                  [      -6.27304413, -0.00046971, 0.00028778, 7.27257442, 0.99856510, 0.99924252, 0.49321493],
    6626                                                                                                  [      -6.27304430, -0.00046964, 0.00028773, 7.27257467, 0.99856532, 0.99924263, 0.49321498],
    6627                                                                                                  [      -6.27304447, -0.00046956, 0.00028769, 7.27257491, 0.99856554, 0.99924275, 0.49321496],
    6628                                                                                                  [      -6.27304464, -0.00046949, 0.00028765, 7.27257515, 0.99856576, 0.99924286, 0.49321502],
    6629                                                                                                  [      -6.27304481, -0.00046942, 0.00028760, 7.27257539, 0.99856597, 0.99924298, 0.49321503],
    6630                                                                                                  [      -6.27304498, -0.00046935, 0.00028756, 7.27257563, 0.99856619, 0.99924309, 0.49321507],
    6631                                                                                                  [      -6.27304515, -0.00046928, 0.00028752, 7.27257587, 0.99856641, 0.99924320, 0.49321515],
    6632                                                                                                  [      -6.27304532, -0.00046921, 0.00028747, 7.27257611, 0.99856663, 0.99924332, 0.49321508],
    6633                                                                                                  [      -6.27304549, -0.00046914, 0.00028743, 7.27257636, 0.99856684, 0.99924343, 0.49321514],
    6634                                                                                                  [      -6.27304566, -0.00046907, 0.00028738, 7.27257660, 0.99856706, 0.99924355, 0.49321526],
    6635                                                                                                  [      -6.27304583, -0.00046900, 0.00028734, 7.27257684, 0.99856728, 0.99924366, 0.49321521],
    6636                                                                                                  [      -6.27304600, -0.00046892, 0.00028730, 7.27257708, 0.99856750, 0.99924378, 0.49321521],
    6637                                                                                                  [      -6.27304617, -0.00046885, 0.00028725, 7.27257732, 0.99856771, 0.99924389, 0.49321523],
    6638                                                                                                  [      -6.27304634, -0.00046878, 0.00028721, 7.27257756, 0.99856793, 0.99924401, 0.49321526],
    6639                                                                                                  [      -6.27304651, -0.00046871, 0.00028717, 7.27257780, 0.99856815, 0.99924412, 0.49321530],
    6640                                                                                                  [      -6.27304668, -0.00046864, 0.00028712, 7.27257804, 0.99856836, 0.99924424, 0.49321535],
    6641                                                                                                  [      -6.27304685, -0.00046857, 0.00028708, 7.27257828, 0.99856858, 0.99924435, 0.49321541],
    6642                                                                                                  [      -6.27304702, -0.00046850, 0.00028704, 7.27257852, 0.99856880, 0.99924446, 0.49321529],
    6643                                                                                                  [      -6.27304719, -0.00046843, 0.00028699, 7.27257876, 0.99856901, 0.99924458, 0.49321541],
    6644                                                                                                  [      -6.27304736, -0.00046836, 0.00028695, 7.27257901, 0.99856923, 0.99924469, 0.49321535],
    6645                                                                                                  [      -6.27304753, -0.00046829, 0.00028691, 7.27257925, 0.99856945, 0.99924481, 0.49321543],
    6646                                                                                                  [      -6.27304770, -0.00046821, 0.00028686, 7.27257949, 0.99856966, 0.99924492, 0.49321548],
    6647                                                                                                  [      -6.27304787, -0.00046814, 0.00028682, 7.27257973, 0.99856988, 0.99924504, 0.49321551],
    6648                                                                                                  [      -6.27304804, -0.00046807, 0.00028678, 7.27257997, 0.99857010, 0.99924515, 0.49321545],
    6649                                                                                                  [      -6.27304821, -0.00046800, 0.00028673, 7.27258021, 0.99857031, 0.99924526, 0.49321554],
    6650                                                                                                  [      -6.27304838, -0.00046793, 0.00028669, 7.27258045, 0.99857053, 0.99924538, 0.49321557],
    6651                                                                                                  [      -6.27304855, -0.00046786, 0.00028665, 7.27258069, 0.99857074, 0.99924549, 0.49321561],
    6652                                                                                                  [      -6.27304872, -0.00046779, 0.00028660, 7.27258093, 0.99857096, 0.99924561, 0.49321567],
    6653                                                                                                  [      -6.27304889, -0.00046772, 0.00028656, 7.27258117, 0.99857118, 0.99924572, 0.49321567],
    6654                                                                                                  [      -6.27304906, -0.00046765, 0.00028652, 7.27258141, 0.99857139, 0.99924583, 0.49321571],
    6655                                                                                                  [      -6.27304922, -0.00046758, 0.00028647, 7.27258165, 0.99857161, 0.99924595, 0.49321566],
    6656                                                                                                  [      -6.27304939, -0.00046751, 0.00028643, 7.27258189, 0.99857182, 0.99924606, 0.49321576],
    6657                                                                                                  [      -6.27304956, -0.00046744, 0.00028639, 7.27258213, 0.99857204, 0.99924618, 0.49321567],
    6658                                                                                                  [      -6.27304973, -0.00046737, 0.00028634, 7.27258236, 0.99857226, 0.99924629, 0.49321585],
    6659                                                                                                  [      -6.27304990, -0.00046730, 0.00028630, 7.27258260, 0.99857247, 0.99924640, 0.49321576],
    6660                                                                                                  [      -6.27305007, -0.00046723, 0.00028626, 7.27258284, 0.99857269, 0.99924652, 0.49321581],
    6661                                                                                                  [      -6.27305024, -0.00046715, 0.00028621, 7.27258308, 0.99857290, 0.99924663, 0.49321580],
    6662                                                                                                  [      -6.27305041, -0.00046708, 0.00028617, 7.27258332, 0.99857312, 0.99924675, 0.49321590],
    6663                                                                                                  [      -6.27305057, -0.00046701, 0.00028613, 7.27258356, 0.99857333, 0.99924686, 0.49321582],
    6664                                                                                                  [      -6.27305074, -0.00046694, 0.00028608, 7.27258380, 0.99857355, 0.99924697, 0.49321587],
    6665                                                                                                  [      -6.27305091, -0.00046687, 0.00028604, 7.27258404, 0.99857376, 0.99924709, 0.49321595],
    6666                                                                                                  [      -6.27305108, -0.00046680, 0.00028600, 7.27258428, 0.99857398, 0.99924720, 0.49321595],
    6667                                                                                                  [      -6.27305125, -0.00046673, 0.00028595, 7.27258452, 0.99857419, 0.99924731, 0.49321600],
    6668                                                                                                  [      -6.27305142, -0.00046666, 0.00028591, 7.27258476, 0.99857441, 0.99924743, 0.49321598],
    6669                                                                                                  [      -6.27305159, -0.00046659, 0.00028587, 7.27258499, 0.99857462, 0.99924754, 0.49321613],
    6670                                                                                                  [      -6.27305175, -0.00046652, 0.00028582, 7.27258523, 0.99857484, 0.99924765, 0.49321611],
    6671                                                                                                  [      -6.27305192, -0.00046645, 0.00028578, 7.27258547, 0.99857505, 0.99924777, 0.49321600],
    6672                                                                                                  [      -6.27305209, -0.00046638, 0.00028574, 7.27258571, 0.99857527, 0.99924788, 0.49321621],
    6673                                                                                                  [      -6.27305226, -0.00046631, 0.00028570, 7.27258595, 0.99857548, 0.99924799, 0.49321615],
    6674                                                                                                  [      -6.27305243, -0.00046624, 0.00028565, 7.27258619, 0.99857570, 0.99924811, 0.49321620],
    6675                                                                                                  [      -6.27305259, -0.00046617, 0.00028561, 7.27258642, 0.99857591, 0.99924822, 0.49321625],
    6676                                                                                                  [      -6.27305276, -0.00046610, 0.00028557, 7.27258666, 0.99857613, 0.99924833, 0.49321621],
    6677                                                                                                  [      -6.27305293, -0.00046603, 0.00028552, 7.27258690, 0.99857634, 0.99924845, 0.49321630],
    6678                                                                                                  [      -6.27305310, -0.00046596, 0.00028548, 7.27258714, 0.99857656, 0.99924856, 0.49321623],
    6679                                                                                                  [      -6.27305327, -0.00046589, 0.00028544, 7.27258738, 0.99857677, 0.99924867, 0.49321633],
    6680                                                                                                  [      -6.27305343, -0.00046582, 0.00028539, 7.27258761, 0.99857698, 0.99924879, 0.49321637],
    6681                                                                                                  [      -6.27305360, -0.00046575, 0.00028535, 7.27258785, 0.99857720, 0.99924890, 0.49321640],
    6682                                                                                                  [      -6.27305377, -0.00046568, 0.00028531, 7.27258809, 0.99857741, 0.99924901, 0.49321641],
    6683                                                                                                  [      -6.27305394, -0.00046561, 0.00028527, 7.27258833, 0.99857763, 0.99924913, 0.49321644],
    6684                                                                                                  [      -6.27305410, -0.00046554, 0.00028522, 7.27258857, 0.99857784, 0.99924924, 0.49321640],
    6685                                                                                                  [      -6.27305427, -0.00046547, 0.00028518, 7.27258880, 0.99857805, 0.99924935, 0.49321644],
    6686                                                                                                  [      -6.27305444, -0.00046540, 0.00028514, 7.27258904, 0.99857827, 0.99924946, 0.49321647],
    6687                                                                                                  [      -6.27305461, -0.00046533, 0.00028509, 7.27258928, 0.99857848, 0.99924958, 0.49321655],
    6688                                                                                                  [      -6.27305477, -0.00046526, 0.00028505, 7.27258952, 0.99857870, 0.99924969, 0.49321652],
    6689                                                                                                  [      -6.27305494, -0.00046519, 0.00028501, 7.27258975, 0.99857891, 0.99924980, 0.49321651],
    6690                                                                                                  [      -6.27305511, -0.00046512, 0.00028497, 7.27258999, 0.99857912, 0.99924992, 0.49321656],
    6691                                                                                                  [      -6.27305528, -0.00046505, 0.00028492, 7.27259023, 0.99857934, 0.99925003, 0.49321656],
    6692                                                                                                  [      -6.27305544, -0.00046498, 0.00028488, 7.27259046, 0.99857955, 0.99925014, 0.49321665],
    6693                                                                                                  [      -6.27305561, -0.00046491, 0.00028484, 7.27259070, 0.99857976, 0.99925025, 0.49321668],
    6694                                                                                                  [      -6.27305578, -0.00046484, 0.00028479, 7.27259094, 0.99857998, 0.99925037, 0.49321665],
    6695                                                                                                  [      -6.27305594, -0.00046477, 0.00028475, 7.27259117, 0.99858019, 0.99925048, 0.49321672],
    6696                                                                                                  [      -6.27305611, -0.00046470, 0.00028471, 7.27259141, 0.99858040, 0.99925059, 0.49321675],
    6697                                                                                                  [      -6.27305628, -0.00046463, 0.00028467, 7.27259165, 0.99858062, 0.99925070, 0.49321677],
    6698                                                                                                  [      -6.27305645, -0.00046456, 0.00028462, 7.27259188, 0.99858083, 0.99925082, 0.49321675],
    6699                                                                                                  [      -6.27305661, -0.00046449, 0.00028458, 7.27259212, 0.99858104, 0.99925093, 0.49321677],
    6700                                                                                                  [      -6.27305678, -0.00046442, 0.00028454, 7.27259236, 0.99858126, 0.99925104, 0.49321687],
    6701                                                                                                  [      -6.27305695, -0.00046435, 0.00028449, 7.27259259, 0.99858147, 0.99925115, 0.49321692],
    6702                                                                                                  [      -6.27305711, -0.00046428, 0.00028445, 7.27259283, 0.99858168, 0.99925127, 0.49321690],
    6703                                                                                                  [      -6.27305728, -0.00046421, 0.00028441, 7.27259307, 0.99858189, 0.99925138, 0.49321690],
    6704                                                                                                  [      -6.27305745, -0.00046414, 0.00028437, 7.27259330, 0.99858211, 0.99925149, 0.49321703],
    6705                                                                                                  [      -6.27305761, -0.00046407, 0.00028432, 7.27259354, 0.99858232, 0.99925160, 0.49321695],
    6706                                                                                                  [      -6.27305778, -0.00046400, 0.00028428, 7.27259377, 0.99858253, 0.99925171, 0.49321702],
    6707                                                                                                  [      -6.27305795, -0.00046393, 0.00028424, 7.27259401, 0.99858275, 0.99925183, 0.49321702],
    6708                                                                                                  [      -6.27305811, -0.00046386, 0.00028420, 7.27259425, 0.99858296, 0.99925194, 0.49321707],
    6709                                                                                                  [      -6.27305828, -0.00046380, 0.00028415, 7.27259448, 0.99858317, 0.99925205, 0.49321711],
    6710                                                                                                  [      -6.27305844, -0.00046373, 0.00028411, 7.27259472, 0.99858338, 0.99925216, 0.49321702],
    6711                                                                                                  [      -6.27305861, -0.00046366, 0.00028407, 7.27259495, 0.99858359, 0.99925227, 0.49321714],
    6712                                                                                                  [      -6.27305878, -0.00046359, 0.00028403, 7.27259519, 0.99858381, 0.99925239, 0.49321714],
    6713                                                                                                  [      -6.27305894, -0.00046352, 0.00028398, 7.27259543, 0.99858402, 0.99925250, 0.49321712],
    6714                                                                                                  [      -6.27305911, -0.00046345, 0.00028394, 7.27259566, 0.99858423, 0.99925261, 0.49321724],
    6715                                                                                                  [      -6.27305927, -0.00046338, 0.00028390, 7.27259590, 0.99858444, 0.99925272, 0.49321723],
    6716                                                                                                  [      -6.27305944, -0.00046331, 0.00028386, 7.27259613, 0.99858465, 0.99925283, 0.49321718],
    6717                                                                                                  [      -6.27305961, -0.00046324, 0.00028381, 7.27259637, 0.99858487, 0.99925295, 0.49321725],
    6718                                                                                                  [      -6.27305977, -0.00046317, 0.00028377, 7.27259660, 0.99858508, 0.99925306, 0.49321729],
    6719                                                                                                  [      -6.27305994, -0.00046310, 0.00028373, 7.27259684, 0.99858529, 0.99925317, 0.49321728],
    6720                                                                                                  [      -6.27306010, -0.00046303, 0.00028369, 7.27259707, 0.99858550, 0.99925328, 0.49321728],
    6721                                                                                                  [      -6.27306027, -0.00046296, 0.00028364, 7.27259731, 0.99858571, 0.99925339, 0.49321738],
    6722                                                                                                  [      -6.27306044, -0.00046289, 0.00028360, 7.27259754, 0.99858593, 0.99925351, 0.49321730],
    6723                                                                                                  [      -6.27306060, -0.00046282, 0.00028356, 7.27259778, 0.99858614, 0.99925362, 0.49321736],
    6724                                                                                                  [      -6.27306077, -0.00046276, 0.00028352, 7.27259801, 0.99858635, 0.99925373, 0.49321743],
    6725                                                                                                  [      -6.27306093, -0.00046269, 0.00028347, 7.27259825, 0.99858656, 0.99925384, 0.49321740],
    6726                                                                                                  [      -6.27306110, -0.00046262, 0.00028343, 7.27259848, 0.99858677, 0.99925395, 0.49321757],
    6727                                                                                                  [      -6.27306126, -0.00046255, 0.00028339, 7.27259872, 0.99858698, 0.99925406, 0.49321754],
    6728                                                                                                  [      -6.27306143, -0.00046248, 0.00028335, 7.27259895, 0.99858719, 0.99925417, 0.49321760],
    6729                                                                                                  [      -6.27306159, -0.00046241, 0.00028330, 7.27259918, 0.99858740, 0.99925429, 0.49321757],
    6730                                                                                                  [      -6.27306176, -0.00046234, 0.00028326, 7.27259942, 0.99858762, 0.99925440, 0.49321761],
    6731                                                                                                  [      -6.27306192, -0.00046227, 0.00028322, 7.27259965, 0.99858783, 0.99925451, 0.49321757],
    6732                                                                                                  [      -6.27306209, -0.00046220, 0.00028318, 7.27259989, 0.99858804, 0.99925462, 0.49321764],
    6733                                                                                                  [      -6.27306225, -0.00046213, 0.00028314, 7.27260012, 0.99858825, 0.99925473, 0.49321769],
    6734                                                                                                  [      -6.27306242, -0.00046206, 0.00028309, 7.27260036, 0.99858846, 0.99925484, 0.49321767],
    6735                                                                                                  [      -6.27306259, -0.00046200, 0.00028305, 7.27260059, 0.99858867, 0.99925495, 0.49321773],
    6736                                                                                                  [      -6.27306275, -0.00046193, 0.00028301, 7.27260082, 0.99858888, 0.99925506, 0.49321772],
    6737                                                                                                  [      -6.27306292, -0.00046186, 0.00028297, 7.27260106, 0.99858909, 0.99925518, 0.49321771],
    6738                                                                                                  [      -6.27306308, -0.00046179, 0.00028292, 7.27260129, 0.99858930, 0.99925529, 0.49321779],
    6739                                                                                                  [      -6.27306324, -0.00046172, 0.00028288, 7.27260152, 0.99858951, 0.99925540, 0.49321779],
    6740                                                                                                  [      -6.27306341, -0.00046165, 0.00028284, 7.27260176, 0.99858972, 0.99925551, 0.49321780],
    6741                                                                                                  [      -6.27306357, -0.00046158, 0.00028280, 7.27260199, 0.99858993, 0.99925562, 0.49321791],
    6742                                                                                                  [      -6.27306374, -0.00046151, 0.00028275, 7.27260223, 0.99859014, 0.99925573, 0.49321791],
    6743                                                                                                  [      -6.27306390, -0.00046144, 0.00028271, 7.27260246, 0.99859035, 0.99925584, 0.49321788],
    6744                                                                                                  [      -6.27306407, -0.00046138, 0.00028267, 7.27260269, 0.99859056, 0.99925595, 0.49321791],
    6745                                                                                                  [      -6.27306423, -0.00046131, 0.00028263, 7.27260293, 0.99859077, 0.99925606, 0.49321799],
    6746                                                                                                  [      -6.27306440, -0.00046124, 0.00028259, 7.27260316, 0.99859098, 0.99925618, 0.49321795],
    6747                                                                                                  [      -6.27306456, -0.00046117, 0.00028254, 7.27260339, 0.99859119, 0.99925629, 0.49321797],
    6748                                                                                                  [      -6.27306473, -0.00046110, 0.00028250, 7.27260363, 0.99859140, 0.99925640, 0.49321800],
    6749                                                                                                  [      -6.27306489, -0.00046103, 0.00028246, 7.27260386, 0.99859161, 0.99925651, 0.49321804],
    6750                                                                                                  [      -6.27306505, -0.00046096, 0.00028242, 7.27260409, 0.99859182, 0.99925662, 0.49321800],
    6751                                                                                                  [      -6.27306522, -0.00046090, 0.00028238, 7.27260432, 0.99859203, 0.99925673, 0.49321804],
    6752                                                                                                  [      -6.27306538, -0.00046083, 0.00028233, 7.27260456, 0.99859224, 0.99925684, 0.49321806],
    6753                                                                                                  [      -6.27306555, -0.00046076, 0.00028229, 7.27260479, 0.99859245, 0.99925695, 0.49321814],
    6754                                                                                                  [      -6.27306571, -0.00046069, 0.00028225, 7.27260502, 0.99859266, 0.99925706, 0.49321818],
    6755                                                                                                  [      -6.27306588, -0.00046062, 0.00028221, 7.27260525, 0.99859287, 0.99925717, 0.49321811],
    6756                                                                                                  [      -6.27306604, -0.00046055, 0.00028217, 7.27260549, 0.99859308, 0.99925728, 0.49321821],
    6757                                                                                                  [      -6.27306620, -0.00046048, 0.00028212, 7.27260572, 0.99859329, 0.99925739, 0.49321828],
    6758                                                                                                  [      -6.27306637, -0.00046042, 0.00028208, 7.27260595, 0.99859350, 0.99925750, 0.49321829],
    6759                                                                                                  [      -6.27306653, -0.00046035, 0.00028204, 7.27260618, 0.99859371, 0.99925761, 0.49321826],
    6760                                                                                                  [      -6.27306670, -0.00046028, 0.00028200, 7.27260642, 0.99859392, 0.99925772, 0.49321833],
    6761                                                                                                  [      -6.27306686, -0.00046021, 0.00028196, 7.27260665, 0.99859413, 0.99925783, 0.49321833],
    6762                                                                                                  [      -6.27306702, -0.00046014, 0.00028191, 7.27260688, 0.99859434, 0.99925794, 0.49321830],
    6763                                                                                                  [      -6.27306719, -0.00046007, 0.00028187, 7.27260711, 0.99859455, 0.99925805, 0.49321842],
    6764                                                                                                  [      -6.27306735, -0.00046000, 0.00028183, 7.27260735, 0.99859475, 0.99925817, 0.49321838],
    6765                                                                                                  [      -6.27306751, -0.00045994, 0.00028179, 7.27260758, 0.99859496, 0.99925828, 0.49321849],
    6766                                                                                                  [      -6.27306768, -0.00045987, 0.00028175, 7.27260781, 0.99859517, 0.99925839, 0.49321848],
    6767                                                                                                  [      -6.27306784, -0.00045980, 0.00028170, 7.27260804, 0.99859538, 0.99925850, 0.49321848],
    6768                                                                                                  [      -6.27306800, -0.00045973, 0.00028166, 7.27260827, 0.99859559, 0.99925861, 0.49321852],
    6769                                                                                                  [      -6.27306817, -0.00045966, 0.00028162, 7.27260850, 0.99859580, 0.99925872, 0.49321855],
    6770                                                                                                  [      -6.27306833, -0.00045959, 0.00028158, 7.27260874, 0.99859601, 0.99925883, 0.49321849],
    6771                                                                                                  [      -6.27306849, -0.00045953, 0.00028154, 7.27260897, 0.99859622, 0.99925894, 0.49321861],
    6772                                                                                                  [      -6.27306866, -0.00045946, 0.00028150, 7.27260920, 0.99859642, 0.99925905, 0.49321858],
    6773                                                                                                  [      -6.27306882, -0.00045939, 0.00028145, 7.27260943, 0.99859663, 0.99925916, 0.49321869],
    6774                                                                                                  [      -6.27306898, -0.00045932, 0.00028141, 7.27260966, 0.99859684, 0.99925927, 0.49321873],
    6775                                                                                                  [      -6.27306915, -0.00045925, 0.00028137, 7.27260989, 0.99859705, 0.99925938, 0.49321868],
    6776                                                                                                  [      -6.27306931, -0.00045919, 0.00028133, 7.27261012, 0.99859726, 0.99925949, 0.49321872],
    6777                                                                                                  [      -6.27306947, -0.00045912, 0.00028129, 7.27261035, 0.99859746, 0.99925960, 0.49321879],
    6778                                                                                                  [      -6.27306964, -0.00045905, 0.00028124, 7.27261059, 0.99859767, 0.99925971, 0.49321873],
    6779                                                                                                  [      -6.27306980, -0.00045898, 0.00028120, 7.27261082, 0.99859788, 0.99925982, 0.49321881],
    6780                                                                                                  [      -6.27306996, -0.00045891, 0.00028116, 7.27261105, 0.99859809, 0.99925993, 0.49321869],
    6781                                                                                                  [      -6.27307012, -0.00045885, 0.00028112, 7.27261128, 0.99859830, 0.99926003, 0.49321889],
    6782                                                                                                  [      -6.27307029, -0.00045878, 0.00028108, 7.27261151, 0.99859850, 0.99926014, 0.49321883],
    6783                                                                                                  [      -6.27307045, -0.00045871, 0.00028104, 7.27261174, 0.99859871, 0.99926025, 0.49321889],
    6784                                                                                                  [      -6.27307061, -0.00045864, 0.00028099, 7.27261197, 0.99859892, 0.99926036, 0.49321886],
    6785                                                                                                  [      -6.27307078, -0.00045857, 0.00028095, 7.27261220, 0.99859913, 0.99926047, 0.49321894],
    6786                                                                                                  [      -6.27307094, -0.00045851, 0.00028091, 7.27261243, 0.99859934, 0.99926058, 0.49321894],
    6787                                                                                                  [      -6.27307110, -0.00045844, 0.00028087, 7.27261266, 0.99859954, 0.99926069, 0.49321891],
    6788                                                                                                  [      -6.27307126, -0.00045837, 0.00028083, 7.27261289, 0.99859975, 0.99926080, 0.49321907],
    6789                                                                                                  [      -6.27307142, -0.00045830, 0.00028079, 7.27261312, 0.99859996, 0.99926091, 0.49321892],
    6790                                                                                                  [      -6.27307159, -0.00045823, 0.00028074, 7.27261335, 0.99860016, 0.99926102, 0.49321904],
    6791                                                                                                  [      -6.27307175, -0.00045817, 0.00028070, 7.27261358, 0.99860037, 0.99926113, 0.49321907],
    6792                                                                                                  [      -6.27307191, -0.00045810, 0.00028066, 7.27261381, 0.99860058, 0.99926124, 0.49321903],
    6793                                                                                                  [      -6.27307207, -0.00045803, 0.00028062, 7.27261404, 0.99860079, 0.99926135, 0.49321912],
    6794                                                                                                  [      -6.27307224, -0.00045796, 0.00028058, 7.27261427, 0.99860099, 0.99926146, 0.49321912],
    6795                                                                                                  [      -6.27307240, -0.00045790, 0.00028054, 7.27261450, 0.99860120, 0.99926157, 0.49321912],
    6796                                                                                                  [      -6.27307256, -0.00045783, 0.00028050, 7.27261473, 0.99860141, 0.99926168, 0.49321924],
    6797                                                                                                  [      -6.27307272, -0.00045776, 0.00028045, 7.27261496, 0.99860161, 0.99926179, 0.49321924],
    6798                                                                                                  [      -6.27307288, -0.00045769, 0.00028041, 7.27261519, 0.99860182, 0.99926190, 0.49321921],
    6799                                                                                                  [      -6.27307305, -0.00045762, 0.00028037, 7.27261542, 0.99860203, 0.99926200, 0.49321927],
    6800                                                                                                  [      -6.27307321, -0.00045756, 0.00028033, 7.27261565, 0.99860223, 0.99926211, 0.49321925],
    6801                                                                                                  [      -6.27307337, -0.00045749, 0.00028029, 7.27261588, 0.99860244, 0.99926222, 0.49321926],
    6802                                                                                                  [      -6.27307353, -0.00045742, 0.00028025, 7.27261611, 0.99860265, 0.99926233, 0.49321932],
    6803                                                                                                  [      -6.27307369, -0.00045735, 0.00028021, 7.27261634, 0.99860285, 0.99926244, 0.49321935],
    6804                                                                                                  [      -6.27307386, -0.00045729, 0.00028016, 7.27261657, 0.99860306, 0.99926255, 0.49321931],
    6805                                                                                                  [      -6.27307402, -0.00045722, 0.00028012, 7.27261680, 0.99860327, 0.99926266, 0.49321940],
    6806                                                                                                  [      -6.27307418, -0.00045715, 0.00028008, 7.27261703, 0.99860347, 0.99926277, 0.49321940],
    6807                                                                                                  [      -6.27307434, -0.00045708, 0.00028004, 7.27261726, 0.99860368, 0.99926288, 0.49321938],
    6808                                                                                                  [      -6.27307450, -0.00045702, 0.00028000, 7.27261749, 0.99860389, 0.99926299, 0.49321955],
    6809                                                                                                  [      -6.27307466, -0.00045695, 0.00027996, 7.27261771, 0.99860409, 0.99926309, 0.49321946],
    6810                                                                                                  [      -6.27307482, -0.00045688, 0.00027992, 7.27261794, 0.99860430, 0.99926320, 0.49321952],
    6811                                                                                                  [      -6.27307499, -0.00045681, 0.00027987, 7.27261817, 0.99860450, 0.99926331, 0.49321956],
    6812                                                                                                  [      -6.27307515, -0.00045675, 0.00027983, 7.27261840, 0.99860471, 0.99926342, 0.49321950],
    6813                                                                                                  [      -6.27307531, -0.00045668, 0.00027979, 7.27261863, 0.99860492, 0.99926353, 0.49321959],
    6814                                                                                                  [      -6.27307547, -0.00045661, 0.00027975, 7.27261886, 0.99860512, 0.99926364, 0.49321954],
    6815                                                                                                  [      -6.27307563, -0.00045654, 0.00027971, 7.27261909, 0.99860533, 0.99926375, 0.49321964],
    6816                                                                                                  [      -6.27307579, -0.00045648, 0.00027967, 7.27261931, 0.99860553, 0.99926385, 0.49321960],
    6817                                                                                                  [      -6.27307595, -0.00045641, 0.00027963, 7.27261954, 0.99860574, 0.99926396, 0.49321972],
    6818                                                                                                  [      -6.27307611, -0.00045634, 0.00027959, 7.27261977, 0.99860595, 0.99926407, 0.49321973],
    6819                                                                                                  [      -6.27307628, -0.00045628, 0.00027954, 7.27262000, 0.99860615, 0.99926418, 0.49321968],
    6820                                                                                                  [      -6.27307644, -0.00045621, 0.00027950, 7.27262023, 0.99860636, 0.99926429, 0.49321967],
    6821                                                                                                  [      -6.27307660, -0.00045614, 0.00027946, 7.27262046, 0.99860656, 0.99926440, 0.49321972],
    6822                                                                                                  [      -6.27307676, -0.00045607, 0.00027942, 7.27262068, 0.99860677, 0.99926451, 0.49321981],
    6823                                                                                                  [      -6.27307692, -0.00045601, 0.00027938, 7.27262091, 0.99860697, 0.99926461, 0.49321979],
    6824                                                                                                  [      -6.27307708, -0.00045594, 0.00027934, 7.27262114, 0.99860718, 0.99926472, 0.49321986],
    6825                                                                                                  [      -6.27307724, -0.00045587, 0.00027930, 7.27262137, 0.99860738, 0.99926483, 0.49321988],
    6826                                                                                                  [      -6.27307740, -0.00045581, 0.00027926, 7.27262160, 0.99860759, 0.99926494, 0.49321990],
    6827                                                                                                  [      -6.27307756, -0.00045574, 0.00027921, 7.27262182, 0.99860779, 0.99926505, 0.49321998],
    6828                                                                                                  [      -6.27307772, -0.00045567, 0.00027917, 7.27262205, 0.99860800, 0.99926516, 0.49322003],
    6829                                                                                                  [      -6.27307788, -0.00045560, 0.00027913, 7.27262228, 0.99860820, 0.99926526, 0.49321994],
    6830                                                                                                  [      -6.27307804, -0.00045554, 0.00027909, 7.27262251, 0.99860841, 0.99926537, 0.49322002],
    6831                                                                                                  [      -6.27307820, -0.00045547, 0.00027905, 7.27262273, 0.99860861, 0.99926548, 0.49321999],
    6832                                                                                                  [      -6.27307836, -0.00045540, 0.00027901, 7.27262296, 0.99860882, 0.99926559, 0.49322005],
    6833                                                                                                  [      -6.27307852, -0.00045534, 0.00027897, 7.27262319, 0.99860902, 0.99926570, 0.49322007],
    6834                                                                                                  [      -6.27307868, -0.00045527, 0.00027893, 7.27262342, 0.99860923, 0.99926580, 0.49322002],
    6835                                                                                                  [      -6.27307884, -0.00045520, 0.00027889, 7.27262364, 0.99860943, 0.99926591, 0.49322013],
    6836                                                                                                  [      -6.27307900, -0.00045514, 0.00027884, 7.27262387, 0.99860964, 0.99926602, 0.49322009],
    6837                                                                                                  [      -6.27307916, -0.00045507, 0.00027880, 7.27262410, 0.99860984, 0.99926613, 0.49322010],
    6838                                                                                                  [      -6.27307932, -0.00045500, 0.00027876, 7.27262432, 0.99861004, 0.99926624, 0.49322020],
    6839                                                                                                  [      -6.27307949, -0.00045493, 0.00027872, 7.27262455, 0.99861025, 0.99926634, 0.49322020],
    6840                                                                                                  [      -6.27307964, -0.00045487, 0.00027868, 7.27262478, 0.99861045, 0.99926645, 0.49322021],
    6841                                                                                                  [      -6.27307980, -0.00045480, 0.00027864, 7.27262500, 0.99861066, 0.99926656, 0.49322031],
    6842                                                                                                  [      -6.27307996, -0.00045473, 0.00027860, 7.27262523, 0.99861086, 0.99926667, 0.49322031],
    6843                                                                                                  [      -6.27308012, -0.00045467, 0.00027856, 7.27262546, 0.99861107, 0.99926677, 0.49322033],
    6844                                                                                                  [      -6.27308028, -0.00045460, 0.00027852, 7.27262568, 0.99861127, 0.99926688, 0.49322029],
    6845                                                                                                  [      -6.27308044, -0.00045453, 0.00027848, 7.27262591, 0.99861147, 0.99926699, 0.49322034],
    6846                                                                                                  [      -6.27308060, -0.00045447, 0.00027844, 7.27262614, 0.99861168, 0.99926710, 0.49322033],
    6847                                                                                                  [      -6.27308076, -0.00045440, 0.00027839, 7.27262636, 0.99861188, 0.99926721, 0.49322036],
    6848                                                                                                  [      -6.27308092, -0.00045433, 0.00027835, 7.27262659, 0.99861209, 0.99926731, 0.49322047],
    6849                                                                                                  [      -6.27308108, -0.00045427, 0.00027831, 7.27262682, 0.99861229, 0.99926742, 0.49322045],
    6850                                                                                                  [      -6.27308124, -0.00045420, 0.00027827, 7.27262704, 0.99861249, 0.99926753, 0.49322049],
    6851                                                                                                  [      -6.27308140, -0.00045413, 0.00027823, 7.27262727, 0.99861270, 0.99926764, 0.49322055],
    6852                                                                                                  [      -6.27308156, -0.00045407, 0.00027819, 7.27262749, 0.99861290, 0.99926774, 0.49322054],
    6853                                                                                                  [      -6.27308172, -0.00045400, 0.00027815, 7.27262772, 0.99861310, 0.99926785, 0.49322056],
    6854                                                                                                  [      -6.27308188, -0.00045393, 0.00027811, 7.27262795, 0.99861331, 0.99926796, 0.49322059],
    6855                                                                                                  [      -6.27308204, -0.00045387, 0.00027807, 7.27262817, 0.99861351, 0.99926807, 0.49322050],
    6856                                                                                                  [      -6.27308220, -0.00045380, 0.00027803, 7.27262840, 0.99861371, 0.99926817, 0.49322063],
    6857                                                                                                  [      -6.27308236, -0.00045373, 0.00027799, 7.27262862, 0.99861392, 0.99926828, 0.49322066],
    6858                                                                                                  [      -6.27308252, -0.00045367, 0.00027795, 7.27262885, 0.99861412, 0.99926839, 0.49322063],
    6859                                                                                                  [      -6.27308268, -0.00045360, 0.00027790, 7.27262907, 0.99861432, 0.99926849, 0.49322070],
    6860                                                                                                  [      -6.27308284, -0.00045353, 0.00027786, 7.27262930, 0.99861453, 0.99926860, 0.49322066],
    6861                                                                                                  [      -6.27308299, -0.00045347, 0.00027782, 7.27262953, 0.99861473, 0.99926871, 0.49322073],
    6862                                                                                                  [      -6.27308315, -0.00045340, 0.00027778, 7.27262975, 0.99861493, 0.99926882, 0.49322074],
    6863                                                                                                  [      -6.27308331, -0.00045334, 0.00027774, 7.27262998, 0.99861514, 0.99926892, 0.49322073],
    6864                                                                                                  [      -6.27308347, -0.00045327, 0.00027770, 7.27263020, 0.99861534, 0.99926903, 0.49322080],
    6865                                                                                                  [      -6.27308363, -0.00045320, 0.00027766, 7.27263043, 0.99861554, 0.99926914, 0.49322087],
    6866                                                                                                  [      -6.27308379, -0.00045314, 0.00027762, 7.27263065, 0.99861574, 0.99926924, 0.49322079],
    6867                                                                                                  [      -6.27308395, -0.00045307, 0.00027758, 7.27263088, 0.99861595, 0.99926935, 0.49322088],
    6868                                                                                                  [      -6.27308411, -0.00045300, 0.00027754, 7.27263110, 0.99861615, 0.99926946, 0.49322089],
    6869                                                                                                  [      -6.27308426, -0.00045294, 0.00027750, 7.27263133, 0.99861635, 0.99926956, 0.49322091],
    6870                                                                                                  [      -6.27308442, -0.00045287, 0.00027746, 7.27263155, 0.99861655, 0.99926967, 0.49322099],
    6871                                                                                                  [      -6.27308458, -0.00045281, 0.00027742, 7.27263178, 0.99861676, 0.99926978, 0.49322093],
    6872                                                                                                  [      -6.27308474, -0.00045274, 0.00027738, 7.27263200, 0.99861696, 0.99926989, 0.49322094],
    6873                                                                                                  [      -6.27308490, -0.00045267, 0.00027734, 7.27263223, 0.99861716, 0.99926999, 0.49322104],
    6874                                                                                                  [      -6.27308506, -0.00045261, 0.00027729, 7.27263245, 0.99861736, 0.99927010, 0.49322101],
    6875                                                                                                  [      -6.27308522, -0.00045254, 0.00027725, 7.27263268, 0.99861757, 0.99927021, 0.49322100],
    6876                                                                                                  [      -6.27308537, -0.00045247, 0.00027721, 7.27263290, 0.99861777, 0.99927031, 0.49322109],
    6877                                                                                                  [      -6.27308553, -0.00045241, 0.00027717, 7.27263312, 0.99861797, 0.99927042, 0.49322112],
    6878                                                                                                  [      -6.27308569, -0.00045234, 0.00027713, 7.27263335, 0.99861817, 0.99927053, 0.49322118],
    6879                                                                                                  [      -6.27308585, -0.00045228, 0.00027709, 7.27263357, 0.99861837, 0.99927063, 0.49322108],
    6880                                                                                                  [      -6.27308601, -0.00045221, 0.00027705, 7.27263380, 0.99861858, 0.99927074, 0.49322119],
    6881                                                                                                  [      -6.27308616, -0.00045214, 0.00027701, 7.27263402, 0.99861878, 0.99927085, 0.49322124],
    6882                                                                                                  [      -6.27308632, -0.00045208, 0.00027697, 7.27263424, 0.99861898, 0.99927095, 0.49322120],
    6883                                                                                                  [      -6.27308648, -0.00045201, 0.00027693, 7.27263447, 0.99861918, 0.99927106, 0.49322125],
    6884                                                                                                  [      -6.27308664, -0.00045195, 0.00027689, 7.27263469, 0.99861938, 0.99927116, 0.49322131],
    6885                                                                                                  [      -6.27308680, -0.00045188, 0.00027685, 7.27263492, 0.99861959, 0.99927127, 0.49322139],
    6886                                                                                                  [      -6.27308695, -0.00045181, 0.00027681, 7.27263514, 0.99861979, 0.99927138, 0.49322128],
    6887                                                                                                  [      -6.27308711, -0.00045175, 0.00027677, 7.27263536, 0.99861999, 0.99927148, 0.49322133],
    6888                                                                                                  [      -6.27308727, -0.00045168, 0.00027673, 7.27263559, 0.99862019, 0.99927159, 0.49322134],
    6889                                                                                                  [      -6.27308743, -0.00045162, 0.00027669, 7.27263581, 0.99862039, 0.99927170, 0.49322141],
    6890                                                                                                  [      -6.27308759, -0.00045155, 0.00027665, 7.27263604, 0.99862059, 0.99927180, 0.49322137],
    6891                                                                                                  [      -6.27308774, -0.00045148, 0.00027661, 7.27263626, 0.99862079, 0.99927191, 0.49322148],
    6892                                                                                                  [      -6.27308790, -0.00045142, 0.00027657, 7.27263648, 0.99862099, 0.99927202, 0.49322145],
    6893                                                                                                  [      -6.27308806, -0.00045135, 0.00027653, 7.27263671, 0.99862120, 0.99927212, 0.49322138],
    6894                                                                                                  [      -6.27308822, -0.00045129, 0.00027649, 7.27263693, 0.99862140, 0.99927223, 0.49322155],
    6895                                                                                                  [      -6.27308837, -0.00045122, 0.00027645, 7.27263715, 0.99862160, 0.99927233, 0.49322147],
    6896                                                                                                  [      -6.27308853, -0.00045116, 0.00027641, 7.27263737, 0.99862180, 0.99927244, 0.49322164],
    6897                                                                                                  [      -6.27308869, -0.00045109, 0.00027636, 7.27263760, 0.99862200, 0.99927255, 0.49322155],
    6898                                                                                                  [      -6.27308884, -0.00045102, 0.00027632, 7.27263782, 0.99862220, 0.99927265, 0.49322156],
    6899                                                                                                  [      -6.27308900, -0.00045096, 0.00027628, 7.27263804, 0.99862240, 0.99927276, 0.49322154],
    6900                                                                                                  [      -6.27308916, -0.00045089, 0.00027624, 7.27263827, 0.99862260, 0.99927286, 0.49322167],
    6901                                                                                                  [      -6.27308932, -0.00045083, 0.00027620, 7.27263849, 0.99862280, 0.99927297, 0.49322165],
    6902                                                                                                  [      -6.27308947, -0.00045076, 0.00027616, 7.27263871, 0.99862300, 0.99927308, 0.49322177],
    6903                                                                                                  [      -6.27308963, -0.00045070, 0.00027612, 7.27263894, 0.99862320, 0.99927318, 0.49322172],
    6904                                                                                                  [      -6.27308979, -0.00045063, 0.00027608, 7.27263916, 0.99862340, 0.99927329, 0.49322177],
    6905                                                                                                  [      -6.27308994, -0.00045056, 0.00027604, 7.27263938, 0.99862360, 0.99927339, 0.49322171],
    6906                                                                                                  [      -6.27309010, -0.00045050, 0.00027600, 7.27263960, 0.99862381, 0.99927350, 0.49322172],
    6907                                                                                                  [      -6.27309026, -0.00045043, 0.00027596, 7.27263983, 0.99862401, 0.99927360, 0.49322182],
    6908                                                                                                  [      -6.27309042, -0.00045037, 0.00027592, 7.27264005, 0.99862421, 0.99927371, 0.49322183],
    6909                                                                                                  [      -6.27309057, -0.00045030, 0.00027588, 7.27264027, 0.99862441, 0.99927382, 0.49322187],
    6910                                                                                                  [      -6.27309073, -0.00045024, 0.00027584, 7.27264049, 0.99862461, 0.99927392, 0.49322184],
    6911                                                                                                  [      -6.27309089, -0.00045017, 0.00027580, 7.27264071, 0.99862481, 0.99927403, 0.49322189],
    6912                                                                                                  [      -6.27309104, -0.00045011, 0.00027576, 7.27264094, 0.99862501, 0.99927413, 0.49322190],
    6913                                                                                                  [      -6.27309120, -0.00045004, 0.00027572, 7.27264116, 0.99862521, 0.99927424, 0.49322188],
    6914                                                                                                  [      -6.27309136, -0.00044997, 0.00027568, 7.27264138, 0.99862541, 0.99927434, 0.49322197],
    6915                                                                                                  [      -6.27309151, -0.00044991, 0.00027564, 7.27264160, 0.99862561, 0.99927445, 0.49322195],
    6916                                                                                                  [      -6.27309167, -0.00044984, 0.00027560, 7.27264182, 0.99862581, 0.99927455, 0.49322198],
    6917                                                                                                  [      -6.27309183, -0.00044978, 0.00027556, 7.27264205, 0.99862601, 0.99927466, 0.49322195],
    6918                                                                                                  [      -6.27309198, -0.00044971, 0.00027552, 7.27264227, 0.99862621, 0.99927477, 0.49322211],
    6919                                                                                                  [      -6.27309214, -0.00044965, 0.00027548, 7.27264249, 0.99862641, 0.99927487, 0.49322215],
    6920                                                                                                  [      -6.27309229, -0.00044958, 0.00027544, 7.27264271, 0.99862660, 0.99927498, 0.49322209],
    6921                                                                                                  [      -6.27309245, -0.00044952, 0.00027540, 7.27264293, 0.99862680, 0.99927508, 0.49322211],
    6922                                                                                                  [      -6.27309261, -0.00044945, 0.00027536, 7.27264315, 0.99862700, 0.99927519, 0.49322213],
    6923                                                                                                  [      -6.27309276, -0.00044939, 0.00027532, 7.27264338, 0.99862720, 0.99927529, 0.49322220],
    6924                                                                                                  [      -6.27309292, -0.00044932, 0.00027528, 7.27264360, 0.99862740, 0.99927540, 0.49322206],
    6925                                                                                                  [      -6.27309307, -0.00044926, 0.00027524, 7.27264382, 0.99862760, 0.99927550, 0.49322222],
    6926                                                                                                  [      -6.27309323, -0.00044919, 0.00027520, 7.27264404, 0.99862780, 0.99927561, 0.49322230],
    6927                                                                                                  [      -6.27309339, -0.00044913, 0.00027516, 7.27264426, 0.99862800, 0.99927571, 0.49322233],
    6928                                                                                                  [      -6.27309354, -0.00044906, 0.00027512, 7.27264448, 0.99862820, 0.99927582, 0.49322226],
    6929                                                                                                  [      -6.27309370, -0.00044900, 0.00027508, 7.27264470, 0.99862840, 0.99927592, 0.49322237],
    6930                                                                                                  [      -6.27309385, -0.00044893, 0.00027504, 7.27264492, 0.99862860, 0.99927603, 0.49322238],
    6931                                                                                                  [      -6.27309401, -0.00044887, 0.00027500, 7.27264514, 0.99862880, 0.99927613, 0.49322229],
    6932                                                                                                  [      -6.27309417, -0.00044880, 0.00027496, 7.27264537, 0.99862899, 0.99927624, 0.49322245],
    6933                                                                                                  [      -6.27309432, -0.00044874, 0.00027492, 7.27264559, 0.99862919, 0.99927634, 0.49322245],
    6934                                                                                                  [      -6.27309448, -0.00044867, 0.00027488, 7.27264581, 0.99862939, 0.99927645, 0.49322246],
    6935                                                                                                  [      -6.27309463, -0.00044861, 0.00027484, 7.27264603, 0.99862959, 0.99927655, 0.49322247],
    6936                                                                                                  [      -6.27309479, -0.00044854, 0.00027480, 7.27264625, 0.99862979, 0.99927666, 0.49322254],
    6937                                                                                                  [      -6.27309494, -0.00044848, 0.00027476, 7.27264647, 0.99862999, 0.99927676, 0.49322253],
    6938                                                                                                  [      -6.27309510, -0.00044841, 0.00027472, 7.27264669, 0.99863019, 0.99927687, 0.49322258],
    6939                                                                                                  [      -6.27309526, -0.00044835, 0.00027468, 7.27264691, 0.99863039, 0.99927697, 0.49322250],
    6940                                                                                                  [      -6.27309541, -0.00044828, 0.00027464, 7.27264713, 0.99863058, 0.99927708, 0.49322253],
    6941                                                                                                  [      -6.27309557, -0.00044822, 0.00027460, 7.27264735, 0.99863078, 0.99927718, 0.49322260],
    6942                                                                                                  [      -6.27309572, -0.00044815, 0.00027456, 7.27264757, 0.99863098, 0.99927729, 0.49322265],
    6943                                                                                                  [      -6.27309588, -0.00044809, 0.00027452, 7.27264779, 0.99863118, 0.99927739, 0.49322261],
    6944                                                                                                  [      -6.27309603, -0.00044802, 0.00027448, 7.27264801, 0.99863138, 0.99927750, 0.49322265],
    6945                                                                                                  [      -6.27309619, -0.00044796, 0.00027444, 7.27264823, 0.99863158, 0.99927760, 0.49322274],
    6946                                                                                                  [      -6.27309634, -0.00044789, 0.00027440, 7.27264845, 0.99863177, 0.99927770, 0.49322271],
    6947                                                                                                  [      -6.27309650, -0.00044783, 0.00027436, 7.27264867, 0.99863197, 0.99927781, 0.49322271],
    6948                                                                                                  [      -6.27309665, -0.00044776, 0.00027432, 7.27264889, 0.99863217, 0.99927791, 0.49322277],
    6949                                                                                                  [      -6.27309681, -0.00044770, 0.00027429, 7.27264911, 0.99863237, 0.99927802, 0.49322282],
    6950                                                                                                  [      -6.27309696, -0.00044763, 0.00027425, 7.27264933, 0.99863256, 0.99927812, 0.49322277],
    6951                                                                                                  [      -6.27309712, -0.00044757, 0.00027421, 7.27264955, 0.99863276, 0.99927823, 0.49322279],
    6952                                                                                                  [      -6.27309727, -0.00044750, 0.00027417, 7.27264977, 0.99863296, 0.99927833, 0.49322290],
    6953                                                                                                  [      -6.27309743, -0.00044744, 0.00027413, 7.27264999, 0.99863316, 0.99927844, 0.49322286],
    6954                                                                                                  [      -6.27309758, -0.00044737, 0.00027409, 7.27265021, 0.99863336, 0.99927854, 0.49322289],
    6955                                                                                                  [      -6.27309774, -0.00044731, 0.00027405, 7.27265043, 0.99863355, 0.99927864, 0.49322292],
    6956                                                                                                  [      -6.27309789, -0.00044724, 0.00027401, 7.27265065, 0.99863375, 0.99927875, 0.49322303],
    6957                                                                                                  [      -6.27309805, -0.00044718, 0.00027397, 7.27265087, 0.99863395, 0.99927885, 0.49322297],
    6958                                                                                                  [      -6.27309820, -0.00044712, 0.00027393, 7.27265108, 0.99863415, 0.99927896, 0.49322299],
    6959                                                                                                  [      -6.27309835, -0.00044705, 0.00027389, 7.27265130, 0.99863434, 0.99927906, 0.49322300],
    6960                                                                                                  [      -6.27309851, -0.00044699, 0.00027385, 7.27265152, 0.99863454, 0.99927916, 0.49322302],
    6961                                                                                                  [      -6.27309866, -0.00044692, 0.00027381, 7.27265174, 0.99863474, 0.99927927, 0.49322302],
    6962                                                                                                  [      -6.27309882, -0.00044686, 0.00027377, 7.27265196, 0.99863493, 0.99927937, 0.49322309],
    6963                                                                                                  [      -6.27309897, -0.00044679, 0.00027373, 7.27265218, 0.99863513, 0.99927948, 0.49322304],
    6964                                                                                                  [      -6.27309913, -0.00044673, 0.00027369, 7.27265240, 0.99863533, 0.99927958, 0.49322317],
    6965                                                                                                  [      -6.27309928, -0.00044666, 0.00027365, 7.27265262, 0.99863553, 0.99927968, 0.49322317],
    6966                                                                                                  [      -6.27309944, -0.00044660, 0.00027361, 7.27265284, 0.99863572, 0.99927979, 0.49322320],
    6967                                                                                                  [      -6.27309959, -0.00044653, 0.00027357, 7.27265305, 0.99863592, 0.99927989, 0.49322325],
    6968                                                                                                  [      -6.27309974, -0.00044647, 0.00027353, 7.27265327, 0.99863612, 0.99928000, 0.49322322],
    6969                                                                                                  [      -6.27309990, -0.00044641, 0.00027349, 7.27265349, 0.99863631, 0.99928010, 0.49322331],
    6970                                                                                                  [      -6.27310005, -0.00044634, 0.00027345, 7.27265371, 0.99863651, 0.99928020, 0.49322327],
    6971                                                                                                  [      -6.27310021, -0.00044628, 0.00027341, 7.27265393, 0.99863671, 0.99928031, 0.49322319],
    6972                                                                                                  [      -6.27310036, -0.00044621, 0.00027338, 7.27265415, 0.99863690, 0.99928041, 0.49322336],
    6973                                                                                                  [      -6.27310051, -0.00044615, 0.00027334, 7.27265436, 0.99863710, 0.99928052, 0.49322341],
    6974                                                                                                  [      -6.27310067, -0.00044608, 0.00027330, 7.27265458, 0.99863730, 0.99928062, 0.49322335],
    6975                                                                                                  [      -6.27310082, -0.00044602, 0.00027326, 7.27265480, 0.99863749, 0.99928072, 0.49322336],
    6976                                                                                                  [      -6.27310097, -0.00044596, 0.00027322, 7.27265502, 0.99863769, 0.99928083, 0.49322343],
    6977                                                                                                  [      -6.27310113, -0.00044589, 0.00027318, 7.27265524, 0.99863789, 0.99928093, 0.49322345],
    6978                                                                                                  [      -6.27310128, -0.00044583, 0.00027314, 7.27265546, 0.99863808, 0.99928103, 0.49322341],
    6979                                                                                                  [      -6.27310144, -0.00044576, 0.00027310, 7.27265567, 0.99863828, 0.99928114, 0.49322343],
    6980                                                                                                  [      -6.27310159, -0.00044570, 0.00027306, 7.27265589, 0.99863847, 0.99928124, 0.49322353],
    6981                                                                                                  [      -6.27310174, -0.00044563, 0.00027302, 7.27265611, 0.99863867, 0.99928134, 0.49322355],
    6982                                                                                                  [      -6.27310190, -0.00044557, 0.00027298, 7.27265633, 0.99863887, 0.99928145, 0.49322359],
    6983                                                                                                  [      -6.27310205, -0.00044551, 0.00027294, 7.27265654, 0.99863906, 0.99928155, 0.49322357],
    6984                                                                                                  [      -6.27310220, -0.00044544, 0.00027290, 7.27265676, 0.99863926, 0.99928165, 0.49322365],
    6985                                                                                                  [      -6.27310236, -0.00044538, 0.00027286, 7.27265698, 0.99863945, 0.99928176, 0.49322365],
    6986                                                                                                  [      -6.27310251, -0.00044531, 0.00027282, 7.27265720, 0.99863965, 0.99928186, 0.49322366],
    6987                                                                                                  [      -6.27310266, -0.00044525, 0.00027279, 7.27265741, 0.99863984, 0.99928196, 0.49322350],
    6988                                                                                                  [      -6.27310282, -0.00044519, 0.00027275, 7.27265763, 0.99864004, 0.99928207, 0.49322363],
    6989                                                                                                  [      -6.27310297, -0.00044512, 0.00027271, 7.27265785, 0.99864024, 0.99928217, 0.49322376],
    6990                                                                                                  [      -6.27310312, -0.00044506, 0.00027267, 7.27265807, 0.99864043, 0.99928227, 0.49322376],
    6991                                                                                                  [      -6.27310328, -0.00044499, 0.00027263, 7.27265828, 0.99864063, 0.99928238, 0.49322386],
    6992                                                                                                  [      -6.27310343, -0.00044493, 0.00027259, 7.27265850, 0.99864082, 0.99928248, 0.49322387],
    6993                                                                                                  [      -6.27310358, -0.00044487, 0.00027255, 7.27265872, 0.99864102, 0.99928258, 0.49322377],
    6994                                                                                                  [      -6.27310374, -0.00044480, 0.00027251, 7.27265893, 0.99864121, 0.99928269, 0.49322371],
    6995                                                                                                  [      -6.27310389, -0.00044474, 0.00027247, 7.27265915, 0.99864141, 0.99928279, 0.49322385],
    6996                                                                                                  [      -6.27310404, -0.00044467, 0.00027243, 7.27265937, 0.99864160, 0.99928289, 0.49322391],
    6997                                                                                                  [      -6.27310419, -0.00044461, 0.00027239, 7.27265958, 0.99864180, 0.99928300, 0.49322388],
    6998                                                                                                  [      -6.27310435, -0.00044455, 0.00027235, 7.27265980, 0.99864199, 0.99928310, 0.49322387],
    6999                                                                                                  [      -6.27310450, -0.00044448, 0.00027231, 7.27266002, 0.99864219, 0.99928320, 0.49322394],
    7000                                                                                                  [      -6.27310465, -0.00044442, 0.00027228, 7.27266023, 0.99864238, 0.99928330, 0.49322403],
    7001                                                                                                  [      -6.27310481, -0.00044436, 0.00027224, 7.27266045, 0.99864258, 0.99928341, 0.49322393],
    7002                                                                                                  [      -6.27310496, -0.00044429, 0.00027220, 7.27266067, 0.99864277, 0.99928351, 0.49322396],
    7003                                                                                                  [      -6.27310511, -0.00044423, 0.00027216, 7.27266088, 0.99864297, 0.99928361, 0.49322397],
    7004                                                                                                  [      -6.27310526, -0.00044416, 0.00027212, 7.27266110, 0.99864316, 0.99928372, 0.49322408],
    7005                                                                                                  [      -6.27310542, -0.00044410, 0.00027208, 7.27266132, 0.99864336, 0.99928382, 0.49322399],
    7006                                                                                                  [      -6.27310557, -0.00044404, 0.00027204, 7.27266153, 0.99864355, 0.99928392, 0.49322405],
    7007                                                                                                  [      -6.27310572, -0.00044397, 0.00027200, 7.27266175, 0.99864375, 0.99928402, 0.49322411],
    7008                                                                                                  [      -6.27310587, -0.00044391, 0.00027196, 7.27266196, 0.99864394, 0.99928413, 0.49322415],
    7009                                                                                                  [      -6.27310603, -0.00044385, 0.00027192, 7.27266218, 0.99864414, 0.99928423, 0.49322414],
    7010                                                                                                  [      -6.27310618, -0.00044378, 0.00027189, 7.27266240, 0.99864433, 0.99928433, 0.49322429],
    7011                                                                                                  [      -6.27310633, -0.00044372, 0.00027185, 7.27266261, 0.99864453, 0.99928444, 0.49322422],
    7012                                                                                                  [      -6.27310648, -0.00044365, 0.00027181, 7.27266283, 0.99864472, 0.99928454, 0.49322422],
    7013                                                                                                  [      -6.27310663, -0.00044359, 0.00027177, 7.27266304, 0.99864491, 0.99928464, 0.49322418],
    7014                                                                                                  [      -6.27310679, -0.00044353, 0.00027173, 7.27266326, 0.99864511, 0.99928474, 0.49322426],
    7015                                                                                                  [      -6.27310694, -0.00044346, 0.00027169, 7.27266347, 0.99864530, 0.99928485, 0.49322432],
    7016                                                                                                  [      -6.27310709, -0.00044340, 0.00027165, 7.27266369, 0.99864550, 0.99928495, 0.49322429],
    7017                                                                                                  [      -6.27310724, -0.00044334, 0.00027161, 7.27266391, 0.99864569, 0.99928505, 0.49322440],
    7018                                                                                                  [      -6.27310739, -0.00044327, 0.00027157, 7.27266412, 0.99864589, 0.99928515, 0.49322431],
    7019                                                                                                  [      -6.27310755, -0.00044321, 0.00027153, 7.27266434, 0.99864608, 0.99928526, 0.49322435],
    7020                                                                                                  [      -6.27310770, -0.00044315, 0.00027150, 7.27266455, 0.99864627, 0.99928536, 0.49322446],
    7021                                                                                                  [      -6.27310785, -0.00044308, 0.00027146, 7.27266477, 0.99864647, 0.99928546, 0.49322440],
    7022                                                                                                  [      -6.27310800, -0.00044302, 0.00027142, 7.27266498, 0.99864666, 0.99928556, 0.49322441],
    7023                                                                                                  [      -6.27310815, -0.00044296, 0.00027138, 7.27266520, 0.99864685, 0.99928566, 0.49322447],
    7024                                                                                                  [      -6.27310831, -0.00044289, 0.00027134, 7.27266541, 0.99864705, 0.99928577, 0.49322449],
    7025                                                                                                  [      -6.27310846, -0.00044283, 0.00027130, 7.27266563, 0.99864724, 0.99928587, 0.49322455],
    7026                                                                                                  [      -6.27310861, -0.00044277, 0.00027126, 7.27266584, 0.99864744, 0.99928597, 0.49322455],
    7027                                                                                                  [      -6.27310876, -0.00044270, 0.00027122, 7.27266606, 0.99864763, 0.99928607, 0.49322448],
    7028                                                                                                  [      -6.27310891, -0.00044264, 0.00027119, 7.27266627, 0.99864782, 0.99928618, 0.49322460],
    7029                                                                                                  [      -6.27310906, -0.00044258, 0.00027115, 7.27266649, 0.99864802, 0.99928628, 0.49322463],
    7030                                                                                                  [      -6.27310921, -0.00044251, 0.00027111, 7.27266670, 0.99864821, 0.99928638, 0.49322466],
    7031                                                                                                  [      -6.27310937, -0.00044245, 0.00027107, 7.27266692, 0.99864840, 0.99928648, 0.49322476],
    7032                                                                                                  [      -6.27310952, -0.00044239, 0.00027103, 7.27266713, 0.99864860, 0.99928658, 0.49322465],
    7033                                                                                                  [      -6.27310967, -0.00044232, 0.00027099, 7.27266735, 0.99864879, 0.99928669, 0.49322471],
    7034                                                                                                  [      -6.27310982, -0.00044226, 0.00027095, 7.27266756, 0.99864898, 0.99928679, 0.49322475],
    7035                                                                                                  [      -6.27310997, -0.00044220, 0.00027091, 7.27266777, 0.99864917, 0.99928689, 0.49322474],
    7036                                                                                                  [      -6.27311012, -0.00044213, 0.00027088, 7.27266799, 0.99864937, 0.99928699, 0.49322474],
    7037                                                                                                  [      -6.27311027, -0.00044207, 0.00027084, 7.27266820, 0.99864956, 0.99928709, 0.49322480],
    7038                                                                                                  [      -6.27311042, -0.00044201, 0.00027080, 7.27266842, 0.99864975, 0.99928719, 0.49322485],
    7039                                                                                                  [      -6.27311058, -0.00044194, 0.00027076, 7.27266863, 0.99864995, 0.99928730, 0.49322481],
    7040                                                                                                  [      -6.27311073, -0.00044188, 0.00027072, 7.27266884, 0.99865014, 0.99928740, 0.49322488],
    7041                                                                                                  [      -6.27311088, -0.00044182, 0.00027068, 7.27266906, 0.99865033, 0.99928750, 0.49322485],
    7042                                                                                                  [      -6.27311103, -0.00044176, 0.00027064, 7.27266927, 0.99865052, 0.99928760, 0.49322488],
    7043                                                                                                  [      -6.27311118, -0.00044169, 0.00027060, 7.27266949, 0.99865072, 0.99928770, 0.49322494],
    7044                                                                                                  [      -6.27311133, -0.00044163, 0.00027057, 7.27266970, 0.99865091, 0.99928780, 0.49322492],
    7045                                                                                                  [      -6.27311148, -0.00044157, 0.00027053, 7.27266991, 0.99865110, 0.99928791, 0.49322499],
    7046                                                                                                  [      -6.27311163, -0.00044150, 0.00027049, 7.27267013, 0.99865129, 0.99928801, 0.49322490],
    7047                                                                                                  [      -6.27311178, -0.00044144, 0.00027045, 7.27267034, 0.99865149, 0.99928811, 0.49322494],
    7048                                                                                                  [      -6.27311193, -0.00044138, 0.00027041, 7.27267056, 0.99865168, 0.99928821, 0.49322503],
    7049                                                                                                  [      -6.27311208, -0.00044131, 0.00027037, 7.27267077, 0.99865187, 0.99928831, 0.49322507],
    7050                                                                                                  [      -6.27311223, -0.00044125, 0.00027033, 7.27267098, 0.99865206, 0.99928841, 0.49322506],
    7051                                                                                                  [      -6.27311238, -0.00044119, 0.00027030, 7.27267120, 0.99865226, 0.99928852, 0.49322507],
    7052                                                                                                  [      -6.27311253, -0.00044113, 0.00027026, 7.27267141, 0.99865245, 0.99928862, 0.49322511],
    7053                                                                                                  [      -6.27311269, -0.00044106, 0.00027022, 7.27267162, 0.99865264, 0.99928872, 0.49322515],
    7054                                                                                                  [      -6.27311284, -0.00044100, 0.00027018, 7.27267184, 0.99865283, 0.99928882, 0.49322525],
    7055                                                                                                  [      -6.27311299, -0.00044094, 0.00027014, 7.27267205, 0.99865302, 0.99928892, 0.49322511],
    7056                                                                                                  [      -6.27311314, -0.00044087, 0.00027010, 7.27267226, 0.99865322, 0.99928902, 0.49322518],
    7057                                                                                                  [      -6.27311329, -0.00044081, 0.00027006, 7.27267247, 0.99865341, 0.99928912, 0.49322526],
    7058                                                                                                  [      -6.27311344, -0.00044075, 0.00027003, 7.27267269, 0.99865360, 0.99928922, 0.49322521],
    7059                                                                                                  [      -6.27311359, -0.00044069, 0.00026999, 7.27267290, 0.99865379, 0.99928933, 0.49322528],
    7060                                                                                                  [      -6.27311374, -0.00044062, 0.00026995, 7.27267311, 0.99865398, 0.99928943, 0.49322529],
    7061                                                                                                  [      -6.27311389, -0.00044056, 0.00026991, 7.27267333, 0.99865418, 0.99928953, 0.49322527],
    7062                                                                                                  [      -6.27311404, -0.00044050, 0.00026987, 7.27267354, 0.99865437, 0.99928963, 0.49322539],
    7063                                                                                                  [      -6.27311419, -0.00044044, 0.00026983, 7.27267375, 0.99865456, 0.99928973, 0.49322538],
    7064                                                                                                  [      -6.27311434, -0.00044037, 0.00026980, 7.27267396, 0.99865475, 0.99928983, 0.49322547],
    7065                                                                                                  [      -6.27311449, -0.00044031, 0.00026976, 7.27267418, 0.99865494, 0.99928993, 0.49322544],
    7066                                                                                                  [      -6.27311464, -0.00044025, 0.00026972, 7.27267439, 0.99865513, 0.99929003, 0.49322545],
    7067                                                                                                  [      -6.27311479, -0.00044018, 0.00026968, 7.27267460, 0.99865532, 0.99929013, 0.49322545],
    7068                                                                                                  [      -6.27311494, -0.00044012, 0.00026964, 7.27267481, 0.99865551, 0.99929024, 0.49322537],
    7069                                                                                                  [      -6.27311509, -0.00044006, 0.00026960, 7.27267503, 0.99865571, 0.99929034, 0.49322549],
    7070                                                                                                  [      -6.27311524, -0.00044000, 0.00026957, 7.27267524, 0.99865590, 0.99929044, 0.49322552],
    7071                                                                                                  [      -6.27311539, -0.00043993, 0.00026953, 7.27267545, 0.99865609, 0.99929054, 0.49322561],
    7072                                                                                                  [      -6.27311554, -0.00043987, 0.00026949, 7.27267566, 0.99865628, 0.99929064, 0.49322551],
    7073                                                                                                  [      -6.27311569, -0.00043981, 0.00026945, 7.27267588, 0.99865647, 0.99929074, 0.49322559],
    7074                                                                                                  [      -6.27311583, -0.00043975, 0.00026941, 7.27267609, 0.99865666, 0.99929084, 0.49322564],
    7075                                                                                                  [      -6.27311598, -0.00043968, 0.00026937, 7.27267630, 0.99865685, 0.99929094, 0.49322558],
    7076                                                                                                  [      -6.27311613, -0.00043962, 0.00026934, 7.27267651, 0.99865704, 0.99929104, 0.49322567],
    7077                                                                                                  [      -6.27311628, -0.00043956, 0.00026930, 7.27267672, 0.99865723, 0.99929114, 0.49322564],
    7078                                                                                                  [      -6.27311643, -0.00043950, 0.00026926, 7.27267693, 0.99865742, 0.99929124, 0.49322573],
    7079                                                                                                  [      -6.27311658, -0.00043944, 0.00026922, 7.27267715, 0.99865762, 0.99929134, 0.49322571],
    7080                                                                                                  [      -6.27311673, -0.00043937, 0.00026918, 7.27267736, 0.99865781, 0.99929144, 0.49322569],
    7081                                                                                                  [      -6.27311688, -0.00043931, 0.00026914, 7.27267757, 0.99865800, 0.99929155, 0.49322578],
    7082                                                                                                  [      -6.27311703, -0.00043925, 0.00026911, 7.27267778, 0.99865819, 0.99929165, 0.49322578],
    7083                                                                                                  [      -6.27311718, -0.00043919, 0.00026907, 7.27267799, 0.99865838, 0.99929175, 0.49322584],
    7084                                                                                                  [      -6.27311733, -0.00043912, 0.00026903, 7.27267820, 0.99865857, 0.99929185, 0.49322586],
    7085                                                                                                  [      -6.27311748, -0.00043906, 0.00026899, 7.27267842, 0.99865876, 0.99929195, 0.49322590],
    7086                                                                                                  [      -6.27311763, -0.00043900, 0.00026895, 7.27267863, 0.99865895, 0.99929205, 0.49322588],
    7087                                                                                                  [      -6.27311777, -0.00043894, 0.00026892, 7.27267884, 0.99865914, 0.99929215, 0.49322594],
    7088                                                                                                  [      -6.27311792, -0.00043887, 0.00026888, 7.27267905, 0.99865933, 0.99929225, 0.49322584],
    7089                                                                                                  [      -6.27311807, -0.00043881, 0.00026884, 7.27267926, 0.99865952, 0.99929235, 0.49322593],
    7090                                                                                                  [      -6.27311822, -0.00043875, 0.00026880, 7.27267947, 0.99865971, 0.99929245, 0.49322593],
    7091                                                                                                  [      -6.27311837, -0.00043869, 0.00026876, 7.27267968, 0.99865990, 0.99929255, 0.49322599],
    7092                                                                                                  [      -6.27311852, -0.00043863, 0.00026872, 7.27267989, 0.99866009, 0.99929265, 0.49322601],
    7093                                                                                                  [      -6.27311867, -0.00043856, 0.00026869, 7.27268010, 0.99866028, 0.99929275, 0.49322609],
    7094                                                                                                  [      -6.27311882, -0.00043850, 0.00026865, 7.27268032, 0.99866047, 0.99929285, 0.49322605],
    7095                                                                                                  [      -6.27311897, -0.00043844, 0.00026861, 7.27268053, 0.99866066, 0.99929295, 0.49322609],
    7096                                                                                                  [      -6.27311911, -0.00043838, 0.00026857, 7.27268074, 0.99866085, 0.99929305, 0.49322609],
    7097                                                                                                  [      -6.27311926, -0.00043832, 0.00026853, 7.27268095, 0.99866104, 0.99929315, 0.49322617],
    7098                                                                                                  [      -6.27311941, -0.00043825, 0.00026850, 7.27268116, 0.99866123, 0.99929325, 0.49322622],
    7099                                                                                                  [      -6.27311956, -0.00043819, 0.00026846, 7.27268137, 0.99866142, 0.99929335, 0.49322614],
    7100                                                                                                  [      -6.27311971, -0.00043813, 0.00026842, 7.27268158, 0.99866161, 0.99929345, 0.49322631],
    7101                                                                                                  [      -6.27311986, -0.00043807, 0.00026838, 7.27268179, 0.99866180, 0.99929355, 0.49322620],
    7102                                                                                                  [      -6.27312000, -0.00043800, 0.00026834, 7.27268200, 0.99866199, 0.99929365, 0.49322616],
    7103                                                                                                  [      -6.27312015, -0.00043794, 0.00026831, 7.27268221, 0.99866217, 0.99929375, 0.49322624],
    7104                                                                                                  [      -6.27312030, -0.00043788, 0.00026827, 7.27268242, 0.99866236, 0.99929385, 0.49322623],
    7105                                                                                                  [      -6.27312045, -0.00043782, 0.00026823, 7.27268263, 0.99866255, 0.99929395, 0.49322635],
    7106                                                                                                  [      -6.27312060, -0.00043776, 0.00026819, 7.27268284, 0.99866274, 0.99929405, 0.49322632],
    7107                                                                                                  [      -6.27312075, -0.00043770, 0.00026815, 7.27268305, 0.99866293, 0.99929415, 0.49322635],
    7108                                                                                                  [      -6.27312089, -0.00043763, 0.00026812, 7.27268326, 0.99866312, 0.99929425, 0.49322639],
    7109                                                                                                  [      -6.27312104, -0.00043757, 0.00026808, 7.27268347, 0.99866331, 0.99929435, 0.49322639],
    7110                                                                                                  [      -6.27312119, -0.00043751, 0.00026804, 7.27268368, 0.99866350, 0.99929445, 0.49322638],
    7111                                                                                                  [      -6.27312134, -0.00043745, 0.00026800, 7.27268389, 0.99866369, 0.99929455, 0.49322647],
    7112                                                                                                  [      -6.27312149, -0.00043739, 0.00026796, 7.27268410, 0.99866388, 0.99929465, 0.49322642],
    7113                                                                                                  [      -6.27312163, -0.00043732, 0.00026793, 7.27268431, 0.99866407, 0.99929475, 0.49322644],
    7114                                                                                                  [      -6.27312178, -0.00043726, 0.00026789, 7.27268452, 0.99866425, 0.99929485, 0.49322646],
    7115                                                                                                  [      -6.27312193, -0.00043720, 0.00026785, 7.27268473, 0.99866444, 0.99929495, 0.49322653],
    7116                                                                                                  [      -6.27312208, -0.00043714, 0.00026781, 7.27268494, 0.99866463, 0.99929505, 0.49322663],
    7117                                                                                                  [      -6.27312223, -0.00043708, 0.00026778, 7.27268515, 0.99866482, 0.99929515, 0.49322655],
    7118                                                                                                  [      -6.27312237, -0.00043702, 0.00026774, 7.27268536, 0.99866501, 0.99929525, 0.49322658],
    7119                                                                                                  [      -6.27312252, -0.00043695, 0.00026770, 7.27268557, 0.99866520, 0.99929535, 0.49322660],
    7120                                                                                                  [      -6.27312267, -0.00043689, 0.00026766, 7.27268578, 0.99866539, 0.99929545, 0.49322666],
    7121                                                                                                  [      -6.27312282, -0.00043683, 0.00026762, 7.27268599, 0.99866557, 0.99929555, 0.49322663],
    7122                                                                                                  [      -6.27312296, -0.00043677, 0.00026759, 7.27268619, 0.99866576, 0.99929564, 0.49322672],
    7123                                                                                                  [      -6.27312311, -0.00043671, 0.00026755, 7.27268640, 0.99866595, 0.99929574, 0.49322669],
    7124                                                                                                  [      -6.27312326, -0.00043665, 0.00026751, 7.27268661, 0.99866614, 0.99929584, 0.49322667],
    7125                                                                                                  [      -6.27312341, -0.00043658, 0.00026747, 7.27268682, 0.99866633, 0.99929594, 0.49322665],
    7126                                                                                                  [      -6.27312355, -0.00043652, 0.00026744, 7.27268703, 0.99866652, 0.99929604, 0.49322678],
    7127                                                                                                  [      -6.27312370, -0.00043646, 0.00026740, 7.27268724, 0.99866670, 0.99929614, 0.49322680],
    7128                                                                                                  [      -6.27312385, -0.00043640, 0.00026736, 7.27268745, 0.99866689, 0.99929624, 0.49322677],
    7129                                                                                                  [      -6.27312399, -0.00043634, 0.00026732, 7.27268766, 0.99866708, 0.99929634, 0.49322687],
    7130                                                                                                  [      -6.27312414, -0.00043628, 0.00026728, 7.27268787, 0.99866727, 0.99929644, 0.49322695],
    7131                                                                                                  [      -6.27312429, -0.00043622, 0.00026725, 7.27268807, 0.99866746, 0.99929654, 0.49322684],
    7132                                                                                                  [      -6.27312444, -0.00043615, 0.00026721, 7.27268828, 0.99866764, 0.99929664, 0.49322695],
    7133                                                                                                  [      -6.27312458, -0.00043609, 0.00026717, 7.27268849, 0.99866783, 0.99929674, 0.49322694],
    7134                                                                                                  [      -6.27312473, -0.00043603, 0.00026713, 7.27268870, 0.99866802, 0.99929684, 0.49322694],
    7135                                                                                                  [      -6.27312488, -0.00043597, 0.00026710, 7.27268891, 0.99866821, 0.99929693, 0.49322692],
    7136                                                                                                  [      -6.27312502, -0.00043591, 0.00026706, 7.27268912, 0.99866839, 0.99929703, 0.49322694],
    7137                                                                                                  [      -6.27312517, -0.00043585, 0.00026702, 7.27268932, 0.99866858, 0.99929713, 0.49322699],
    7138                                                                                                  [      -6.27312532, -0.00043579, 0.00026698, 7.27268953, 0.99866877, 0.99929723, 0.49322697],
    7139                                                                                                  [      -6.27312546, -0.00043572, 0.00026695, 7.27268974, 0.99866896, 0.99929733, 0.49322709],
    7140                                                                                                  [      -6.27312561, -0.00043566, 0.00026691, 7.27268995, 0.99866914, 0.99929743, 0.49322698],
    7141                                                                                                  [      -6.27312576, -0.00043560, 0.00026687, 7.27269016, 0.99866933, 0.99929753, 0.49322713],
    7142                                                                                                  [      -6.27312590, -0.00043554, 0.00026683, 7.27269037, 0.99866952, 0.99929763, 0.49322708],
    7143                                                                                                  [      -6.27312605, -0.00043548, 0.00026680, 7.27269057, 0.99866971, 0.99929773, 0.49322723],
    7144                                                                                                  [      -6.27312620, -0.00043542, 0.00026676, 7.27269078, 0.99866989, 0.99929782, 0.49322717],
    7145                                                                                                  [      -6.27312634, -0.00043536, 0.00026672, 7.27269099, 0.99867008, 0.99929792, 0.49322722],
    7146                                                                                                  [      -6.27312649, -0.00043529, 0.00026668, 7.27269120, 0.99867027, 0.99929802, 0.49322714],
    7147                                                                                                  [      -6.27312664, -0.00043523, 0.00026665, 7.27269140, 0.99867045, 0.99929812, 0.49322725],
    7148                                                                                                  [      -6.27312678, -0.00043517, 0.00026661, 7.27269161, 0.99867064, 0.99929822, 0.49322739],
    7149                                                                                                  [      -6.27312693, -0.00043511, 0.00026657, 7.27269182, 0.99867083, 0.99929832, 0.49322721],
    7150                                                                                                  [      -6.27312708, -0.00043505, 0.00026653, 7.27269203, 0.99867101, 0.99929842, 0.49322728],
    7151                                                                                                  [      -6.27312722, -0.00043499, 0.00026650, 7.27269223, 0.99867120, 0.99929852, 0.49322731],
    7152                                                                                                  [      -6.27312737, -0.00043493, 0.00026646, 7.27269244, 0.99867139, 0.99929861, 0.49322735],
    7153                                                                                                  [      -6.27312752, -0.00043487, 0.00026642, 7.27269265, 0.99867158, 0.99929871, 0.49322737],
    7154                                                                                                  [      -6.27312766, -0.00043481, 0.00026638, 7.27269286, 0.99867176, 0.99929881, 0.49322735],
    7155                                                                                                  [      -6.27312781, -0.00043474, 0.00026635, 7.27269306, 0.99867195, 0.99929891, 0.49322744],
    7156                                                                                                  [      -6.27312795, -0.00043468, 0.00026631, 7.27269327, 0.99867214, 0.99929901, 0.49322745],
    7157                                                                                                  [      -6.27312810, -0.00043462, 0.00026627, 7.27269348, 0.99867232, 0.99929911, 0.49322747],
    7158                                                                                                  [      -6.27312825, -0.00043456, 0.00026623, 7.27269368, 0.99867251, 0.99929920, 0.49322750],
    7159                                                                                                  [      -6.27312839, -0.00043450, 0.00026620, 7.27269389, 0.99867269, 0.99929930, 0.49322745],
    7160                                                                                                  [      -6.27312854, -0.00043444, 0.00026616, 7.27269410, 0.99867288, 0.99929940, 0.49322761],
    7161                                                                                                  [      -6.27312868, -0.00043438, 0.00026612, 7.27269431, 0.99867307, 0.99929950, 0.49322746],
    7162                                                                                                  [      -6.27312883, -0.00043432, 0.00026608, 7.27269451, 0.99867325, 0.99929960, 0.49322757],
    7163                                                                                                  [      -6.27312898, -0.00043426, 0.00026605, 7.27269472, 0.99867344, 0.99929970, 0.49322765],
    7164                                                                                                  [      -6.27312912, -0.00043420, 0.00026601, 7.27269493, 0.99867363, 0.99929979, 0.49322763],
    7165                                                                                                  [      -6.27312927, -0.00043413, 0.00026597, 7.27269513, 0.99867381, 0.99929989, 0.49322751],
    7166                                                                                                  [      -6.27312941, -0.00043407, 0.00026593, 7.27269534, 0.99867400, 0.99929999, 0.49322758],
    7167                                                                                                  [      -6.27312956, -0.00043401, 0.00026590, 7.27269555, 0.99867418, 0.99930009, 0.49322771],
    7168                                                                                                  [      -6.27312970, -0.00043395, 0.00026586, 7.27269575, 0.99867437, 0.99930019, 0.49322770],
    7169                                                                                                  [      -6.27312985, -0.00043389, 0.00026582, 7.27269596, 0.99867456, 0.99930029, 0.49322772],
    7170                                                                                                  [      -6.27313000, -0.00043383, 0.00026579, 7.27269616, 0.99867474, 0.99930038, 0.49322775],
    7171                                                                                                  [      -6.27313014, -0.00043377, 0.00026575, 7.27269637, 0.99867493, 0.99930048, 0.49322776],
    7172                                                                                                  [      -6.27313029, -0.00043371, 0.00026571, 7.27269658, 0.99867511, 0.99930058, 0.49322779],
    7173                                                                                                  [      -6.27313043, -0.00043365, 0.00026567, 7.27269678, 0.99867530, 0.99930068, 0.49322775],
    7174                                                                                                  [      -6.27313058, -0.00043359, 0.00026564, 7.27269699, 0.99867548, 0.99930078, 0.49322782],
    7175                                                                                                  [      -6.27313072, -0.00043353, 0.00026560, 7.27269720, 0.99867567, 0.99930087, 0.49322777],
    7176                                                                                                  [      -6.27313087, -0.00043347, 0.00026556, 7.27269740, 0.99867586, 0.99930097, 0.49322785],
    7177                                                                                                  [      -6.27313101, -0.00043341, 0.00026552, 7.27269761, 0.99867604, 0.99930107, 0.49322785],
    7178                                                                                                  [      -6.27313116, -0.00043335, 0.00026549, 7.27269781, 0.99867623, 0.99930117, 0.49322792],
    7179                                                                                                  [      -6.27313130, -0.00043328, 0.00026545, 7.27269802, 0.99867641, 0.99930127, 0.49322802],
    7180                                                                                                  [      -6.27313145, -0.00043322, 0.00026541, 7.27269823, 0.99867660, 0.99930136, 0.49322800],
    7181                                                                                                  [      -6.27313159, -0.00043316, 0.00026538, 7.27269843, 0.99867678, 0.99930146, 0.49322801],
    7182                                                                                                  [      -6.27313174, -0.00043310, 0.00026534, 7.27269864, 0.99867697, 0.99930156, 0.49322793],
    7183                                                                                                  [      -6.27313188, -0.00043304, 0.00026530, 7.27269884, 0.99867715, 0.99930166, 0.49322797],
    7184                                                                                                  [      -6.27313203, -0.00043298, 0.00026526, 7.27269905, 0.99867734, 0.99930175, 0.49322808],
    7185                                                                                                  [      -6.27313217, -0.00043292, 0.00026523, 7.27269925, 0.99867752, 0.99930185, 0.49322805],
    7186                                                                                                  [      -6.27313232, -0.00043286, 0.00026519, 7.27269946, 0.99867771, 0.99930195, 0.49322811],
    7187                                                                                                  [      -6.27313246, -0.00043280, 0.00026515, 7.27269966, 0.99867789, 0.99930205, 0.49322809],
    7188                                                                                                  [      -6.27313261, -0.00043274, 0.00026512, 7.27269987, 0.99867808, 0.99930214, 0.49322806],
    7189                                                                                                  [      -6.27313275, -0.00043268, 0.00026508, 7.27270007, 0.99867826, 0.99930224, 0.49322819],
    7190                                                                                                  [      -6.27313290, -0.00043262, 0.00026504, 7.27270028, 0.99867845, 0.99930234, 0.49322820],
    7191                                                                                                  [      -6.27313304, -0.00043256, 0.00026501, 7.27270049, 0.99867863, 0.99930244, 0.49322821],
    7192                                                                                                  [      -6.27313319, -0.00043250, 0.00026497, 7.27270069, 0.99867882, 0.99930253, 0.49322826],
    7193                                                                                                  [      -6.27313333, -0.00043244, 0.00026493, 7.27270090, 0.99867900, 0.99930263, 0.49322825],
    7194                                                                                                  [      -6.27313348, -0.00043238, 0.00026489, 7.27270110, 0.99867919, 0.99930273, 0.49322828],
    7195                                                                                                  [      -6.27313362, -0.00043232, 0.00026486, 7.27270131, 0.99867937, 0.99930283, 0.49322824],
    7196                                                                                                  [      -6.27313377, -0.00043226, 0.00026482, 7.27270151, 0.99867955, 0.99930292, 0.49322829],
    7197                                                                                                  [      -6.27313391, -0.00043220, 0.00026478, 7.27270171, 0.99867974, 0.99930302, 0.49322833],
    7198                                                                                                  [      -6.27313405, -0.00043214, 0.00026475, 7.27270192, 0.99867992, 0.99930312, 0.49322832],
    7199                                                                                                  [      -6.27313420, -0.00043207, 0.00026471, 7.27270212, 0.99868011, 0.99930322, 0.49322832],
    7200                                                                                                  [      -6.27313434, -0.00043201, 0.00026467, 7.27270233, 0.99868029, 0.99930331, 0.49322841],
    7201                                                                                                  [      -6.27313449, -0.00043195, 0.00026464, 7.27270253, 0.99868048, 0.99930341, 0.49322842],
    7202                                                                                                  [      -6.27313463, -0.00043189, 0.00026460, 7.27270274, 0.99868066, 0.99930351, 0.49322850],
    7203                                                                                                  [      -6.27313478, -0.00043183, 0.00026456, 7.27270294, 0.99868084, 0.99930360, 0.49322849],
    7204                                                                                                  [      -6.27313492, -0.00043177, 0.00026452, 7.27270315, 0.99868103, 0.99930370, 0.49322832],
    7205                                                                                                  [      -6.27313506, -0.00043171, 0.00026449, 7.27270335, 0.99868121, 0.99930380, 0.49322850],
    7206                                                                                                  [      -6.27313521, -0.00043165, 0.00026445, 7.27270356, 0.99868140, 0.99930390, 0.49322849],
    7207                                                                                                  [      -6.27313535, -0.00043159, 0.00026441, 7.27270376, 0.99868158, 0.99930399, 0.49322851],
    7208                                                                                                  [      -6.27313550, -0.00043153, 0.00026438, 7.27270396, 0.99868176, 0.99930409, 0.49322842],
    7209                                                                                                  [      -6.27313564, -0.00043147, 0.00026434, 7.27270417, 0.99868195, 0.99930419, 0.49322856],
    7210                                                                                                  [      -6.27313578, -0.00043141, 0.00026430, 7.27270437, 0.99868213, 0.99930428, 0.49322852],
    7211                                                                                                  [      -6.27313593, -0.00043135, 0.00026427, 7.27270458, 0.99868232, 0.99930438, 0.49322857],
    7212                                                                                                  [      -6.27313607, -0.00043129, 0.00026423, 7.27270478, 0.99868250, 0.99930448, 0.49322857],
    7213                                                                                                  [      -6.27313622, -0.00043123, 0.00026419, 7.27270498, 0.99868268, 0.99930458, 0.49322862],
    7214                                                                                                  [      -6.27313636, -0.00043117, 0.00026416, 7.27270519, 0.99868287, 0.99930467, 0.49322867],
    7215                                                                                                  [      -6.27313650, -0.00043111, 0.00026412, 7.27270539, 0.99868305, 0.99930477, 0.49322876],
    7216                                                                                                  [      -6.27313665, -0.00043105, 0.00026408, 7.27270560, 0.99868323, 0.99930487, 0.49322877],
    7217                                                                                                  [      -6.27313679, -0.00043099, 0.00026405, 7.27270580, 0.99868342, 0.99930496, 0.49322873],
    7218                                                                                                  [      -6.27313693, -0.00043093, 0.00026401, 7.27270600, 0.99868360, 0.99930506, 0.49322870],
    7219                                                                                                  [      -6.27313708, -0.00043087, 0.00026397, 7.27270621, 0.99868378, 0.99930516, 0.49322877],
    7220                                                                                                  [      -6.27313722, -0.00043081, 0.00026394, 7.27270641, 0.99868397, 0.99930525, 0.49322879],
    7221                                                                                                  [      -6.27313737, -0.00043075, 0.00026390, 7.27270661, 0.99868415, 0.99930535, 0.49322891],
    7222                                                                                                  [      -6.27313751, -0.00043069, 0.00026386, 7.27270682, 0.99868433, 0.99930545, 0.49322887],
    7223                                                                                                  [      -6.27313765, -0.00043063, 0.00026382, 7.27270702, 0.99868452, 0.99930554, 0.49322881],
    7224                                                                                                  [      -6.27313780, -0.00043057, 0.00026379, 7.27270722, 0.99868470, 0.99930564, 0.49322892],
    7225                                                                                                  [      -6.27313794, -0.00043051, 0.00026375, 7.27270743, 0.99868488, 0.99930574, 0.49322891],
    7226                                                                                                  [      -6.27313808, -0.00043045, 0.00026371, 7.27270763, 0.99868507, 0.99930583, 0.49322891],
    7227                                                                                                  [      -6.27313823, -0.00043039, 0.00026368, 7.27270783, 0.99868525, 0.99930593, 0.49322893],
    7228                                                                                                  [      -6.27313837, -0.00043033, 0.00026364, 7.27270804, 0.99868543, 0.99930603, 0.49322886],
    7229                                                                                                  [      -6.27313851, -0.00043027, 0.00026360, 7.27270824, 0.99868561, 0.99930612, 0.49322902],
    7230                                                                                                  [      -6.27313865, -0.00043021, 0.00026357, 7.27270844, 0.99868580, 0.99930622, 0.49322900],
    7231                                                                                                  [      -6.27313880, -0.00043015, 0.00026353, 7.27270864, 0.99868598, 0.99930632, 0.49322904],
    7232                                                                                                  [      -6.27313894, -0.00043009, 0.00026349, 7.27270885, 0.99868616, 0.99930641, 0.49322903],
    7233                                                                                                  [      -6.27313908, -0.00043003, 0.00026346, 7.27270905, 0.99868634, 0.99930651, 0.49322900],
    7234                                                                                                  [      -6.27313923, -0.00042997, 0.00026342, 7.27270925, 0.99868653, 0.99930660, 0.49322904],
    7235                                                                                                  [      -6.27313937, -0.00042991, 0.00026338, 7.27270946, 0.99868671, 0.99930670, 0.49322912],
    7236                                                                                                  [      -6.27313951, -0.00042985, 0.00026335, 7.27270966, 0.99868689, 0.99930680, 0.49322917],
    7237                                                                                                  [      -6.27313966, -0.00042980, 0.00026331, 7.27270986, 0.99868707, 0.99930689, 0.49322903],
    7238                                                                                                  [      -6.27313980, -0.00042974, 0.00026328, 7.27271006, 0.99868726, 0.99930699, 0.49322919],
    7239                                                                                                  [      -6.27313994, -0.00042968, 0.00026324, 7.27271027, 0.99868744, 0.99930709, 0.49322915],
    7240                                                                                                  [      -6.27314008, -0.00042962, 0.00026320, 7.27271047, 0.99868762, 0.99930718, 0.49322921],
    7241                                                                                                  [      -6.27314023, -0.00042956, 0.00026317, 7.27271067, 0.99868780, 0.99930728, 0.49322918],
    7242                                                                                                  [      -6.27314037, -0.00042950, 0.00026313, 7.27271087, 0.99868799, 0.99930737, 0.49322930],
    7243                                                                                                  [      -6.27314051, -0.00042944, 0.00026309, 7.27271107, 0.99868817, 0.99930747, 0.49322927],
    7244                                                                                                  [      -6.27314065, -0.00042938, 0.00026306, 7.27271128, 0.99868835, 0.99930757, 0.49322931],
    7245                                                                                                  [      -6.27314080, -0.00042932, 0.00026302, 7.27271148, 0.99868853, 0.99930766, 0.49322934],
    7246                                                                                                  [      -6.27314094, -0.00042926, 0.00026298, 7.27271168, 0.99868871, 0.99930776, 0.49322928],
    7247                                                                                                  [      -6.27314108, -0.00042920, 0.00026295, 7.27271188, 0.99868890, 0.99930785, 0.49322942],
    7248                                                                                                  [      -6.27314122, -0.00042914, 0.00026291, 7.27271208, 0.99868908, 0.99930795, 0.49322942],
    7249                                                                                                  [      -6.27314137, -0.00042908, 0.00026287, 7.27271229, 0.99868926, 0.99930805, 0.49322944],
    7250                                                                                                  [      -6.27314151, -0.00042902, 0.00026284, 7.27271249, 0.99868944, 0.99930814, 0.49322951],
    7251                                                                                                  [      -6.27314165, -0.00042896, 0.00026280, 7.27271269, 0.99868962, 0.99930824, 0.49322944],
    7252                                                                                                  [      -6.27314179, -0.00042890, 0.00026276, 7.27271289, 0.99868980, 0.99930833, 0.49322951],
    7253                                                                                                  [      -6.27314194, -0.00042884, 0.00026273, 7.27271309, 0.99868999, 0.99930843, 0.49322954],
    7254                                                                                                  [      -6.27314208, -0.00042878, 0.00026269, 7.27271329, 0.99869017, 0.99930853, 0.49322961],
    7255                                                                                                  [      -6.27314222, -0.00042872, 0.00026265, 7.27271350, 0.99869035, 0.99930862, 0.49322958],
    7256                                                                                                  [      -6.27314236, -0.00042866, 0.00026262, 7.27271370, 0.99869053, 0.99930872, 0.49322958],
    7257                                                                                                  [      -6.27314250, -0.00042861, 0.00026258, 7.27271390, 0.99869071, 0.99930881, 0.49322960],
    7258                                                                                                  [      -6.27314265, -0.00042855, 0.00026255, 7.27271410, 0.99869089, 0.99930891, 0.49322954],
    7259                                                                                                  [      -6.27314279, -0.00042849, 0.00026251, 7.27271430, 0.99869107, 0.99930900, 0.49322960],
    7260                                                                                                  [      -6.27314293, -0.00042843, 0.00026247, 7.27271450, 0.99869125, 0.99930910, 0.49322964],
    7261                                                                                                  [      -6.27314307, -0.00042837, 0.00026244, 7.27271470, 0.99869144, 0.99930920, 0.49322967],
    7262                                                                                                  [      -6.27314321, -0.00042831, 0.00026240, 7.27271491, 0.99869162, 0.99930929, 0.49322963],
    7263                                                                                                  [      -6.27314336, -0.00042825, 0.00026236, 7.27271511, 0.99869180, 0.99930939, 0.49322972],
    7264                                                                                                  [      -6.27314350, -0.00042819, 0.00026233, 7.27271531, 0.99869198, 0.99930948, 0.49322962],
    7265                                                                                                  [      -6.27314364, -0.00042813, 0.00026229, 7.27271551, 0.99869216, 0.99930958, 0.49322977],
    7266                                                                                                  [      -6.27314378, -0.00042807, 0.00026226, 7.27271571, 0.99869234, 0.99930967, 0.49322982],
    7267                                                                                                  [      -6.27314392, -0.00042801, 0.00026222, 7.27271591, 0.99869252, 0.99930977, 0.49322974],
    7268                                                                                                  [      -6.27314406, -0.00042795, 0.00026218, 7.27271611, 0.99869270, 0.99930986, 0.49322983],
    7269                                                                                                  [      -6.27314421, -0.00042789, 0.00026215, 7.27271631, 0.99869288, 0.99930996, 0.49322981],
    7270                                                                                                  [      -6.27314435, -0.00042783, 0.00026211, 7.27271651, 0.99869306, 0.99931005, 0.49322987],
    7271                                                                                                  [      -6.27314449, -0.00042778, 0.00026207, 7.27271671, 0.99869325, 0.99931015, 0.49322991],
    7272                                                                                                  [      -6.27314463, -0.00042772, 0.00026204, 7.27271691, 0.99869343, 0.99931025, 0.49322985],
    7273                                                                                                  [      -6.27314477, -0.00042766, 0.00026200, 7.27271711, 0.99869361, 0.99931034, 0.49322989],
    7274                                                                                                  [      -6.27314491, -0.00042760, 0.00026197, 7.27271731, 0.99869379, 0.99931044, 0.49322995],
    7275                                                                                                  [      -6.27314505, -0.00042754, 0.00026193, 7.27271752, 0.99869397, 0.99931053, 0.49322998],
    7276                                                                                                  [      -6.27314520, -0.00042748, 0.00026189, 7.27271772, 0.99869415, 0.99931063, 0.49322992],
    7277                                                                                                  [      -6.27314534, -0.00042742, 0.00026186, 7.27271792, 0.99869433, 0.99931072, 0.49322999],
    7278                                                                                                  [      -6.27314548, -0.00042736, 0.00026182, 7.27271812, 0.99869451, 0.99931082, 0.49323014],
    7279                                                                                                  [      -6.27314562, -0.00042730, 0.00026178, 7.27271832, 0.99869469, 0.99931091, 0.49323001],
    7280                                                                                                  [      -6.27314576, -0.00042724, 0.00026175, 7.27271852, 0.99869487, 0.99931101, 0.49323007],
    7281                                                                                                  [      -6.27314590, -0.00042719, 0.00026171, 7.27271872, 0.99869505, 0.99931110, 0.49323010],
    7282                                                                                                  [      -6.27314604, -0.00042713, 0.00026168, 7.27271892, 0.99869523, 0.99931120, 0.49323018],
    7283                                                                                                  [      -6.27314618, -0.00042707, 0.00026164, 7.27271912, 0.99869541, 0.99931129, 0.49323018],
    7284                                                                                                  [      -6.27314633, -0.00042701, 0.00026160, 7.27271932, 0.99869559, 0.99931139, 0.49323016],
    7285                                                                                                  [      -6.27314647, -0.00042695, 0.00026157, 7.27271952, 0.99869577, 0.99931148, 0.49323007],
    7286                                                                                                  [      -6.27314661, -0.00042689, 0.00026153, 7.27271972, 0.99869595, 0.99931158, 0.49323022],
    7287                                                                                                  [      -6.27314675, -0.00042683, 0.00026150, 7.27271992, 0.99869613, 0.99931167, 0.49323025],
    7288                                                                                                  [      -6.27314689, -0.00042677, 0.00026146, 7.27272012, 0.99869631, 0.99931177, 0.49323030],
    7289                                                                                                  [      -6.27314703, -0.00042671, 0.00026142, 7.27272032, 0.99869649, 0.99931186, 0.49323027],
    7290                                                                                                  [      -6.27314717, -0.00042666, 0.00026139, 7.27272051, 0.99869667, 0.99931196, 0.49323031],
    7291                                                                                                  [      -6.27314731, -0.00042660, 0.00026135, 7.27272071, 0.99869685, 0.99931205, 0.49323029],
    7292                                                                                                  [      -6.27314745, -0.00042654, 0.00026132, 7.27272091, 0.99869703, 0.99931215, 0.49323033],
    7293                                                                                                  [      -6.27314759, -0.00042648, 0.00026128, 7.27272111, 0.99869721, 0.99931224, 0.49323043],
    7294                                                                                                  [      -6.27314773, -0.00042642, 0.00026124, 7.27272131, 0.99869739, 0.99931234, 0.49323035],
    7295                                                                                                  [      -6.27314787, -0.00042636, 0.00026121, 7.27272151, 0.99869757, 0.99931243, 0.49323032],
    7296                                                                                                  [      -6.27314801, -0.00042630, 0.00026117, 7.27272171, 0.99869775, 0.99931253, 0.49323043],
    7297                                                                                                  [      -6.27314815, -0.00042624, 0.00026114, 7.27272191, 0.99869792, 0.99931262, 0.49323038],
    7298                                                                                                  [      -6.27314830, -0.00042619, 0.00026110, 7.27272211, 0.99869810, 0.99931272, 0.49323055],
    7299                                                                                                  [      -6.27314844, -0.00042613, 0.00026106, 7.27272231, 0.99869828, 0.99931281, 0.49323047],
    7300                                                                                                  [      -6.27314858, -0.00042607, 0.00026103, 7.27272251, 0.99869846, 0.99931290, 0.49323039],
    7301                                                                                                  [      -6.27314872, -0.00042601, 0.00026099, 7.27272271, 0.99869864, 0.99931300, 0.49323039],
    7302                                                                                                  [      -6.27314886, -0.00042595, 0.00026096, 7.27272291, 0.99869882, 0.99931309, 0.49323057],
    7303                                                                                                  [      -6.27314900, -0.00042589, 0.00026092, 7.27272310, 0.99869900, 0.99931319, 0.49323051],
    7304                                                                                                  [      -6.27314914, -0.00042583, 0.00026088, 7.27272330, 0.99869918, 0.99931328, 0.49323056],
    7305                                                                                                  [      -6.27314928, -0.00042578, 0.00026085, 7.27272350, 0.99869936, 0.99931338, 0.49323064],
    7306                                                                                                  [      -6.27314942, -0.00042572, 0.00026081, 7.27272370, 0.99869954, 0.99931347, 0.49323065],
    7307                                                                                                  [      -6.27314956, -0.00042566, 0.00026078, 7.27272390, 0.99869972, 0.99931357, 0.49323065],
    7308                                                                                                  [      -6.27314970, -0.00042560, 0.00026074, 7.27272410, 0.99869989, 0.99931366, 0.49323070],
    7309                                                                                                  [      -6.27314984, -0.00042554, 0.00026070, 7.27272430, 0.99870007, 0.99931375, 0.49323062],
    7310                                                                                                  [      -6.27314998, -0.00042548, 0.00026067, 7.27272450, 0.99870025, 0.99931385, 0.49323063],
    7311                                                                                                  [      -6.27315012, -0.00042542, 0.00026063, 7.27272469, 0.99870043, 0.99931394, 0.49323075],
    7312                                                                                                  [      -6.27315026, -0.00042537, 0.00026060, 7.27272489, 0.99870061, 0.99931404, 0.49323074],
    7313                                                                                                  [      -6.27315040, -0.00042531, 0.00026056, 7.27272509, 0.99870079, 0.99931413, 0.49323081],
    7314                                                                                                  [      -6.27315054, -0.00042525, 0.00026052, 7.27272529, 0.99870097, 0.99931423, 0.49323082],
    7315                                                                                                  [      -6.27315068, -0.00042519, 0.00026049, 7.27272549, 0.99870115, 0.99931432, 0.49323079],
    7316                                                                                                  [      -6.27315082, -0.00042513, 0.00026045, 7.27272569, 0.99870132, 0.99931441, 0.49323072],
    7317                                                                                                  [      -6.27315096, -0.00042507, 0.00026042, 7.27272588, 0.99870150, 0.99931451, 0.49323088],
    7318                                                                                                  [      -6.27315110, -0.00042502, 0.00026038, 7.27272608, 0.99870168, 0.99931460, 0.49323096],
    7319                                                                                                  [      -6.27315124, -0.00042496, 0.00026035, 7.27272628, 0.99870186, 0.99931470, 0.49323088],
    7320                                                                                                  [      -6.27315138, -0.00042490, 0.00026031, 7.27272648, 0.99870204, 0.99931479, 0.49323085],
    7321                                                                                                  [      -6.27315152, -0.00042484, 0.00026027, 7.27272668, 0.99870222, 0.99931489, 0.49323089],
    7322                                                                                                  [      -6.27315165, -0.00042478, 0.00026024, 7.27272687, 0.99870239, 0.99931498, 0.49323085],
    7323                                                                                                  [      -6.27315179, -0.00042472, 0.00026020, 7.27272707, 0.99870257, 0.99931507, 0.49323101],
    7324                                                                                                  [      -6.27315193, -0.00042467, 0.00026017, 7.27272727, 0.99870275, 0.99931517, 0.49323094],
    7325                                                                                                  [      -6.27315207, -0.00042461, 0.00026013, 7.27272747, 0.99870293, 0.99931526, 0.49323104],
    7326                                                                                                  [      -6.27315221, -0.00042455, 0.00026010, 7.27272766, 0.99870311, 0.99931535, 0.49323100],
    7327                                                                                                  [      -6.27315235, -0.00042449, 0.00026006, 7.27272786, 0.99870328, 0.99931545, 0.49323105],
    7328                                                                                                  [      -6.27315249, -0.00042443, 0.00026002, 7.27272806, 0.99870346, 0.99931554, 0.49323112],
    7329                                                                                                  [      -6.27315263, -0.00042437, 0.00025999, 7.27272826, 0.99870364, 0.99931564, 0.49323100],
    7330                                                                                                  [      -6.27315277, -0.00042432, 0.00025995, 7.27272845, 0.99870382, 0.99931573, 0.49323104],
    7331                                                                                                  [      -6.27315291, -0.00042426, 0.00025992, 7.27272865, 0.99870399, 0.99931582, 0.49323113],
    7332                                                                                                  [      -6.27315305, -0.00042420, 0.00025988, 7.27272885, 0.99870417, 0.99931592, 0.49323100],
    7333                                                                                                  [      -6.27315319, -0.00042414, 0.00025985, 7.27272905, 0.99870435, 0.99931601, 0.49323118],
    7334                                                                                                  [      -6.27315333, -0.00042408, 0.00025981, 7.27272924, 0.99870453, 0.99931611, 0.49323122],
    7335                                                                                                  [      -6.27315347, -0.00042403, 0.00025978, 7.27272944, 0.99870470, 0.99931620, 0.49323123],
    7336                                                                                                  [      -6.27315360, -0.00042397, 0.00025974, 7.27272964, 0.99870488, 0.99931629, 0.49323124],
    7337                                                                                                  [      -6.27315374, -0.00042391, 0.00025970, 7.27272983, 0.99870506, 0.99931639, 0.49323127],
    7338                                                                                                  [      -6.27315388, -0.00042385, 0.00025967, 7.27273003, 0.99870524, 0.99931648, 0.49323133],
    7339                                                                                                  [      -6.27315402, -0.00042379, 0.00025963, 7.27273023, 0.99870541, 0.99931657, 0.49323140],
    7340                                                                                                  [      -6.27315416, -0.00042374, 0.00025960, 7.27273042, 0.99870559, 0.99931667, 0.49323133],
    7341                                                                                                  [      -6.27315430, -0.00042368, 0.00025956, 7.27273062, 0.99870577, 0.99931676, 0.49323138],
    7342                                                                                                  [      -6.27315444, -0.00042362, 0.00025953, 7.27273082, 0.99870595, 0.99931685, 0.49323140],
    7343                                                                                                  [      -6.27315458, -0.00042356, 0.00025949, 7.27273101, 0.99870612, 0.99931695, 0.49323145],
    7344                                                                                                  [      -6.27315472, -0.00042350, 0.00025946, 7.27273121, 0.99870630, 0.99931704, 0.49323139],
    7345                                                                                                  [      -6.27315485, -0.00042345, 0.00025942, 7.27273141, 0.99870648, 0.99931713, 0.49323136],
    7346                                                                                                  [      -6.27315499, -0.00042339, 0.00025938, 7.27273160, 0.99870665, 0.99931723, 0.49323144],
    7347                                                                                                  [      -6.27315513, -0.00042333, 0.00025935, 7.27273180, 0.99870683, 0.99931732, 0.49323141],
    7348                                                                                                  [      -6.27315527, -0.00042327, 0.00025931, 7.27273200, 0.99870701, 0.99931741, 0.49323140],
    7349                                                                                                  [      -6.27315541, -0.00042321, 0.00025928, 7.27273219, 0.99870719, 0.99931751, 0.49323155],
    7350                                                                                                  [      -6.27315555, -0.00042316, 0.00025924, 7.27273239, 0.99870736, 0.99931760, 0.49323157],
    7351                                                                                                  [      -6.27315569, -0.00042310, 0.00025921, 7.27273259, 0.99870754, 0.99931769, 0.49323161],
    7352                                                                                                  [      -6.27315582, -0.00042304, 0.00025917, 7.27273278, 0.99870772, 0.99931779, 0.49323157],
    7353                                                                                                  [      -6.27315596, -0.00042298, 0.00025914, 7.27273298, 0.99870789, 0.99931788, 0.49323162],
    7354                                                                                                  [      -6.27315610, -0.00042292, 0.00025910, 7.27273318, 0.99870807, 0.99931797, 0.49323164],
    7355                                                                                                  [      -6.27315624, -0.00042287, 0.00025907, 7.27273337, 0.99870825, 0.99931807, 0.49323172],
    7356                                                                                                  [      -6.27315638, -0.00042281, 0.00025903, 7.27273357, 0.99870842, 0.99931816, 0.49323163],
    7357                                                                                                  [      -6.27315652, -0.00042275, 0.00025899, 7.27273376, 0.99870860, 0.99931825, 0.49323158],
    7358                                                                                                  [      -6.27315665, -0.00042269, 0.00025896, 7.27273396, 0.99870877, 0.99931835, 0.49323168],
    7359                                                                                                  [      -6.27315679, -0.00042264, 0.00025892, 7.27273416, 0.99870895, 0.99931844, 0.49323175],
    7360                                                                                                  [      -6.27315693, -0.00042258, 0.00025889, 7.27273435, 0.99870913, 0.99931853, 0.49323172],
    7361                                                                                                  [      -6.27315707, -0.00042252, 0.00025885, 7.27273455, 0.99870930, 0.99931863, 0.49323175],
    7362                                                                                                  [      -6.27315721, -0.00042246, 0.00025882, 7.27273474, 0.99870948, 0.99931872, 0.49323179],
    7363                                                                                                  [      -6.27315734, -0.00042241, 0.00025878, 7.27273494, 0.99870966, 0.99931881, 0.49323178],
    7364                                                                                                  [      -6.27315748, -0.00042235, 0.00025875, 7.27273513, 0.99870983, 0.99931891, 0.49323183],
    7365                                                                                                  [      -6.27315762, -0.00042229, 0.00025871, 7.27273533, 0.99871001, 0.99931900, 0.49323180],
    7366                                                                                                  [      -6.27315776, -0.00042223, 0.00025868, 7.27273552, 0.99871018, 0.99931909, 0.49323181],
    7367                                                                                                  [      -6.27315790, -0.00042218, 0.00025864, 7.27273572, 0.99871036, 0.99931918, 0.49323188],
    7368                                                                                                  [      -6.27315803, -0.00042212, 0.00025861, 7.27273592, 0.99871054, 0.99931928, 0.49323197],
    7369                                                                                                  [      -6.27315817, -0.00042206, 0.00025857, 7.27273611, 0.99871071, 0.99931937, 0.49323190],
    7370                                                                                                  [      -6.27315831, -0.00042200, 0.00025854, 7.27273631, 0.99871089, 0.99931946, 0.49323185],
    7371                                                                                                  [      -6.27315845, -0.00042194, 0.00025850, 7.27273650, 0.99871106, 0.99931956, 0.49323199],
    7372                                                                                                  [      -6.27315858, -0.00042189, 0.00025846, 7.27273670, 0.99871124, 0.99931965, 0.49323204],
    7373                                                                                                  [      -6.27315872, -0.00042183, 0.00025843, 7.27273689, 0.99871141, 0.99931974, 0.49323191],
    7374                                                                                                  [      -6.27315886, -0.00042177, 0.00025839, 7.27273709, 0.99871159, 0.99931983, 0.49323202],
    7375                                                                                                  [      -6.27315900, -0.00042171, 0.00025836, 7.27273728, 0.99871177, 0.99931993, 0.49323199],
    7376                                                                                                  [      -6.27315913, -0.00042166, 0.00025832, 7.27273748, 0.99871194, 0.99932002, 0.49323200],
    7377                                                                                                  [      -6.27315927, -0.00042160, 0.00025829, 7.27273767, 0.99871212, 0.99932011, 0.49323212],
    7378                                                                                                  [      -6.27315941, -0.00042154, 0.00025825, 7.27273787, 0.99871229, 0.99932020, 0.49323215],
    7379                                                                                                  [      -6.27315955, -0.00042149, 0.00025822, 7.27273806, 0.99871247, 0.99932030, 0.49323211],
    7380                                                                                                  [      -6.27315968, -0.00042143, 0.00025818, 7.27273826, 0.99871264, 0.99932039, 0.49323217],
    7381                                                                                                  [      -6.27315982, -0.00042137, 0.00025815, 7.27273845, 0.99871282, 0.99932048, 0.49323219],
    7382                                                                                                  [      -6.27315996, -0.00042131, 0.00025811, 7.27273864, 0.99871299, 0.99932057, 0.49323223],
    7383                                                                                                  [      -6.27316010, -0.00042126, 0.00025808, 7.27273884, 0.99871317, 0.99932067, 0.49323224],
    7384                                                                                                  [      -6.27316023, -0.00042120, 0.00025804, 7.27273903, 0.99871334, 0.99932076, 0.49323221],
    7385                                                                                                  [      -6.27316037, -0.00042114, 0.00025801, 7.27273923, 0.99871352, 0.99932085, 0.49323224],
    7386                                                                                                  [      -6.27316051, -0.00042108, 0.00025797, 7.27273942, 0.99871369, 0.99932094, 0.49323220],
    7387                                                                                                  [      -6.27316064, -0.00042103, 0.00025794, 7.27273962, 0.99871387, 0.99932104, 0.49323229],
    7388                                                                                                  [      -6.27316078, -0.00042097, 0.00025790, 7.27273981, 0.99871404, 0.99932113, 0.49323228],
    7389                                                                                                  [      -6.27316092, -0.00042091, 0.00025787, 7.27274001, 0.99871422, 0.99932122, 0.49323228],
    7390                                                                                                  [      -6.27316105, -0.00042085, 0.00025783, 7.27274020, 0.99871439, 0.99932131, 0.49323234],
    7391                                                                                                  [      -6.27316119, -0.00042080, 0.00025780, 7.27274039, 0.99871457, 0.99932141, 0.49323243],
    7392                                                                                                  [      -6.27316133, -0.00042074, 0.00025776, 7.27274059, 0.99871474, 0.99932150, 0.49323241],
    7393                                                                                                  [      -6.27316147, -0.00042068, 0.00025773, 7.27274078, 0.99871492, 0.99932159, 0.49323242],
    7394                                                                                                  [      -6.27316160, -0.00042063, 0.00025769, 7.27274098, 0.99871509, 0.99932168, 0.49323234],
    7395                                                                                                  [      -6.27316174, -0.00042057, 0.00025766, 7.27274117, 0.99871527, 0.99932177, 0.49323243],
    7396                                                                                                  [      -6.27316188, -0.00042051, 0.00025762, 7.27274136, 0.99871544, 0.99932187, 0.49323249],
    7397                                                                                                  [      -6.27316201, -0.00042045, 0.00025759, 7.27274156, 0.99871562, 0.99932196, 0.49323249],
    7398                                                                                                  [      -6.27316215, -0.00042040, 0.00025755, 7.27274175, 0.99871579, 0.99932205, 0.49323255],
    7399                                                                                                  [      -6.27316229, -0.00042034, 0.00025752, 7.27274195, 0.99871597, 0.99932214, 0.49323261],
    7400                                                                                                  [      -6.27316242, -0.00042028, 0.00025748, 7.27274214, 0.99871614, 0.99932223, 0.49323266],
    7401                                                                                                  [      -6.27316256, -0.00042023, 0.00025745, 7.27274233, 0.99871631, 0.99932233, 0.49323261],
    7402                                                                                                  [      -6.27316270, -0.00042017, 0.00025741, 7.27274253, 0.99871649, 0.99932242, 0.49323265],
    7403                                                                                                  [      -6.27316283, -0.00042011, 0.00025738, 7.27274272, 0.99871666, 0.99932251, 0.49323261],
    7404                                                                                                  [      -6.27316297, -0.00042006, 0.00025734, 7.27274291, 0.99871684, 0.99932260, 0.49323268],
    7405                                                                                                  [      -6.27316311, -0.00042000, 0.00025731, 7.27274311, 0.99871701, 0.99932269, 0.49323261],
    7406                                                                                                  [      -6.27316324, -0.00041994, 0.00025727, 7.27274330, 0.99871719, 0.99932279, 0.49323277],
    7407                                                                                                  [      -6.27316338, -0.00041988, 0.00025724, 7.27274349, 0.99871736, 0.99932288, 0.49323278],
    7408                                                                                                  [      -6.27316351, -0.00041983, 0.00025720, 7.27274369, 0.99871753, 0.99932297, 0.49323270],
    7409                                                                                                  [      -6.27316365, -0.00041977, 0.00025717, 7.27274388, 0.99871771, 0.99932306, 0.49323262],
    7410                                                                                                  [      -6.27316379, -0.00041971, 0.00025713, 7.27274407, 0.99871788, 0.99932315, 0.49323267],
    7411                                                                                                  [      -6.27316392, -0.00041966, 0.00025710, 7.27274427, 0.99871806, 0.99932325, 0.49323282],
    7412                                                                                                  [      -6.27316406, -0.00041960, 0.00025706, 7.27274446, 0.99871823, 0.99932334, 0.49323274],
    7413                                                                                                  [      -6.27316420, -0.00041954, 0.00025703, 7.27274465, 0.99871840, 0.99932343, 0.49323276],
    7414                                                                                                  [      -6.27316433, -0.00041949, 0.00025699, 7.27274485, 0.99871858, 0.99932352, 0.49323279],
    7415                                                                                                  [      -6.27316447, -0.00041943, 0.00025696, 7.27274504, 0.99871875, 0.99932361, 0.49323285],
    7416                                                                                                  [      -6.27316460, -0.00041937, 0.00025692, 7.27274523, 0.99871892, 0.99932370, 0.49323286],
    7417                                                                                                  [      -6.27316474, -0.00041932, 0.00025689, 7.27274542, 0.99871910, 0.99932380, 0.49323296],
    7418                                                                                                  [      -6.27316488, -0.00041926, 0.00025685, 7.27274562, 0.99871927, 0.99932389, 0.49323294],
    7419                                                                                                  [      -6.27316501, -0.00041920, 0.00025682, 7.27274581, 0.99871944, 0.99932398, 0.49323292],
    7420                                                                                                  [      -6.27316515, -0.00041915, 0.00025678, 7.27274600, 0.99871962, 0.99932407, 0.49323285],
    7421                                                                                                  [      -6.27316528, -0.00041909, 0.00025675, 7.27274619, 0.99871979, 0.99932416, 0.49323292],
    7422                                                                                                  [      -6.27316542, -0.00041903, 0.00025671, 7.27274639, 0.99871996, 0.99932425, 0.49323303],
    7423                                                                                                  [      -6.27316555, -0.00041898, 0.00025668, 7.27274658, 0.99872014, 0.99932435, 0.49323312],
    7424                                                                                                  [      -6.27316569, -0.00041892, 0.00025664, 7.27274677, 0.99872031, 0.99932444, 0.49323326],
    7425                                                                                                  [      -6.27316583, -0.00041886, 0.00025661, 7.27274696, 0.99872048, 0.99932453, 0.49323308],
    7426                                                                                                  [      -6.27316596, -0.00041881, 0.00025658, 7.27274716, 0.99872066, 0.99932462, 0.49323307],
    7427                                                                                                  [      -6.27316610, -0.00041875, 0.00025654, 7.27274735, 0.99872083, 0.99932471, 0.49323314],
    7428                                                                                                  [      -6.27316623, -0.00041869, 0.00025651, 7.27274754, 0.99872100, 0.99932480, 0.49323312],
    7429                                                                                                  [      -6.27316637, -0.00041864, 0.00025647, 7.27274773, 0.99872118, 0.99932489, 0.49323320],
    7430                                                                                                  [      -6.27316650, -0.00041858, 0.00025644, 7.27274793, 0.99872135, 0.99932498, 0.49323311],
    7431                                                                                                  [      -6.27316664, -0.00041852, 0.00025640, 7.27274812, 0.99872152, 0.99932508, 0.49323311],
    7432                                                                                                  [      -6.27316677, -0.00041847, 0.00025637, 7.27274831, 0.99872170, 0.99932517, 0.49323317],
    7433                                                                                                  [      -6.27316691, -0.00041841, 0.00025633, 7.27274850, 0.99872187, 0.99932526, 0.49323323],
    7434                                                                                                  [      -6.27316705, -0.00041835, 0.00025630, 7.27274869, 0.99872204, 0.99932535, 0.49323325],
    7435                                                                                                  [      -6.27316718, -0.00041830, 0.00025626, 7.27274888, 0.99872221, 0.99932544, 0.49323334],
    7436                                                                                                  [      -6.27316732, -0.00041824, 0.00025623, 7.27274908, 0.99872239, 0.99932553, 0.49323332],
    7437                                                                                                  [      -6.27316745, -0.00041818, 0.00025619, 7.27274927, 0.99872256, 0.99932562, 0.49323331],
    7438                                                                                                  [      -6.27316759, -0.00041813, 0.00025616, 7.27274946, 0.99872273, 0.99932571, 0.49323331],
    7439                                                                                                  [      -6.27316772, -0.00041807, 0.00025612, 7.27274965, 0.99872290, 0.99932581, 0.49323346],
    7440                                                                                                  [      -6.27316786, -0.00041801, 0.00025609, 7.27274984, 0.99872308, 0.99932590, 0.49323331],
    7441                                                                                                  [      -6.27316799, -0.00041796, 0.00025606, 7.27275003, 0.99872325, 0.99932599, 0.49323339],
    7442                                                                                                  [      -6.27316813, -0.00041790, 0.00025602, 7.27275023, 0.99872342, 0.99932608, 0.49323343],
    7443                                                                                                  [      -6.27316826, -0.00041784, 0.00025599, 7.27275042, 0.99872359, 0.99932617, 0.49323337],
    7444                                                                                                  [      -6.27316840, -0.00041779, 0.00025595, 7.27275061, 0.99872377, 0.99932626, 0.49323342],
    7445                                                                                                  [      -6.27316853, -0.00041773, 0.00025592, 7.27275080, 0.99872394, 0.99932635, 0.49323347],
    7446                                                                                                  [      -6.27316867, -0.00041768, 0.00025588, 7.27275099, 0.99872411, 0.99932644, 0.49323353],
    7447                                                                                                  [      -6.27316880, -0.00041762, 0.00025585, 7.27275118, 0.99872428, 0.99932653, 0.49323349],
    7448                                                                                                  [      -6.27316894, -0.00041756, 0.00025581, 7.27275137, 0.99872446, 0.99932662, 0.49323358],
    7449                                                                                                  [      -6.27316907, -0.00041751, 0.00025578, 7.27275157, 0.99872463, 0.99932671, 0.49323354],
    7450                                                                                                  [      -6.27316921, -0.00041745, 0.00025574, 7.27275176, 0.99872480, 0.99932681, 0.49323350],
    7451                                                                                                  [      -6.27316934, -0.00041739, 0.00025571, 7.27275195, 0.99872497, 0.99932690, 0.49323356],
    7452                                                                                                  [      -6.27316948, -0.00041734, 0.00025568, 7.27275214, 0.99872514, 0.99932699, 0.49323355],
    7453                                                                                                  [      -6.27316961, -0.00041728, 0.00025564, 7.27275233, 0.99872532, 0.99932708, 0.49323359],
    7454                                                                                                  [      -6.27316974, -0.00041722, 0.00025561, 7.27275252, 0.99872549, 0.99932717, 0.49323360],
    7455                                                                                                  [      -6.27316988, -0.00041717, 0.00025557, 7.27275271, 0.99872566, 0.99932726, 0.49323362],
    7456                                                                                                  [      -6.27317001, -0.00041711, 0.00025554, 7.27275290, 0.99872583, 0.99932735, 0.49323369],
    7457                                                                                                  [      -6.27317015, -0.00041706, 0.00025550, 7.27275309, 0.99872600, 0.99932744, 0.49323369],
    7458                                                                                                  [      -6.27317028, -0.00041700, 0.00025547, 7.27275328, 0.99872617, 0.99932753, 0.49323368],
    7459                                                                                                  [      -6.27317042, -0.00041694, 0.00025543, 7.27275347, 0.99872635, 0.99932762, 0.49323375],
    7460                                                                                                  [      -6.27317055, -0.00041689, 0.00025540, 7.27275366, 0.99872652, 0.99932771, 0.49323378],
    7461                                                                                                  [      -6.27317069, -0.00041683, 0.00025537, 7.27275385, 0.99872669, 0.99932780, 0.49323373],
    7462                                                                                                  [      -6.27317082, -0.00041678, 0.00025533, 7.27275405, 0.99872686, 0.99932789, 0.49323370],
    7463                                                                                                  [      -6.27317095, -0.00041672, 0.00025530, 7.27275424, 0.99872703, 0.99932798, 0.49323379],
    7464                                                                                                  [      -6.27317109, -0.00041666, 0.00025526, 7.27275443, 0.99872720, 0.99932807, 0.49323375],
    7465                                                                                                  [      -6.27317122, -0.00041661, 0.00025523, 7.27275462, 0.99872738, 0.99932816, 0.49323392],
    7466                                                                                                  [      -6.27317136, -0.00041655, 0.00025519, 7.27275481, 0.99872755, 0.99932826, 0.49323391],
    7467                                                                                                  [      -6.27317149, -0.00041649, 0.00025516, 7.27275500, 0.99872772, 0.99932835, 0.49323391],
    7468                                                                                                  [      -6.27317163, -0.00041644, 0.00025512, 7.27275519, 0.99872789, 0.99932844, 0.49323388],
    7469                                                                                                  [      -6.27317176, -0.00041638, 0.00025509, 7.27275538, 0.99872806, 0.99932853, 0.49323395],
    7470                                                                                                  [      -6.27317189, -0.00041633, 0.00025506, 7.27275557, 0.99872823, 0.99932862, 0.49323385],
    7471                                                                                                  [      -6.27317203, -0.00041627, 0.00025502, 7.27275576, 0.99872840, 0.99932871, 0.49323392],
    7472                                                                                                  [      -6.27317216, -0.00041621, 0.00025499, 7.27275595, 0.99872857, 0.99932880, 0.49323402],
    7473                                                                                                  [      -6.27317230, -0.00041616, 0.00025495, 7.27275614, 0.99872874, 0.99932889, 0.49323405],
    7474                                                                                                  [      -6.27317243, -0.00041610, 0.00025492, 7.27275633, 0.99872892, 0.99932898, 0.49323405],
    7475                                                                                                  [      -6.27317256, -0.00041605, 0.00025488, 7.27275652, 0.99872909, 0.99932907, 0.49323408],
    7476                                                                                                  [      -6.27317270, -0.00041599, 0.00025485, 7.27275671, 0.99872926, 0.99932916, 0.49323410],
    7477                                                                                                  [      -6.27317283, -0.00041594, 0.00025482, 7.27275690, 0.99872943, 0.99932925, 0.49323410],
    7478                                                                                                  [      -6.27317297, -0.00041588, 0.00025478, 7.27275709, 0.99872960, 0.99932934, 0.49323416],
    7479                                                                                                  [      -6.27317310, -0.00041582, 0.00025475, 7.27275728, 0.99872977, 0.99932943, 0.49323413],
    7480                                                                                                  [      -6.27317323, -0.00041577, 0.00025471, 7.27275746, 0.99872994, 0.99932952, 0.49323409],
    7481                                                                                                  [      -6.27317337, -0.00041571, 0.00025468, 7.27275765, 0.99873011, 0.99932961, 0.49323425],
    7482                                                                                                  [      -6.27317350, -0.00041566, 0.00025465, 7.27275784, 0.99873028, 0.99932970, 0.49323426],
    7483                                                                                                  [      -6.27317363, -0.00041560, 0.00025461, 7.27275803, 0.99873045, 0.99932979, 0.49323421],
    7484                                                                                                  [      -6.27317377, -0.00041554, 0.00025458, 7.27275822, 0.99873062, 0.99932988, 0.49323430],
    7485                                                                                                  [      -6.27317390, -0.00041549, 0.00025454, 7.27275841, 0.99873079, 0.99932997, 0.49323422],
    7486                                                                                                  [      -6.27317403, -0.00041543, 0.00025451, 7.27275860, 0.99873096, 0.99933006, 0.49323429],
    7487                                                                                                  [      -6.27317417, -0.00041538, 0.00025447, 7.27275879, 0.99873113, 0.99933015, 0.49323420],
    7488                                                                                                  [      -6.27317430, -0.00041532, 0.00025444, 7.27275898, 0.99873130, 0.99933024, 0.49323427],
    7489                                                                                                  [      -6.27317443, -0.00041527, 0.00025441, 7.27275917, 0.99873147, 0.99933033, 0.49323431],
    7490                                                                                                  [      -6.27317457, -0.00041521, 0.00025437, 7.27275936, 0.99873164, 0.99933042, 0.49323443],
    7491                                                                                                  [      -6.27317470, -0.00041515, 0.00025434, 7.27275955, 0.99873181, 0.99933051, 0.49323428],
    7492                                                                                                  [      -6.27317483, -0.00041510, 0.00025430, 7.27275974, 0.99873198, 0.99933060, 0.49323443],
    7493                                                                                                  [      -6.27317497, -0.00041504, 0.00025427, 7.27275992, 0.99873215, 0.99933069, 0.49323437],
    7494                                                                                                  [      -6.27317510, -0.00041499, 0.00025424, 7.27276011, 0.99873232, 0.99933078, 0.49323454],
    7495                                                                                                  [      -6.27317523, -0.00041493, 0.00025420, 7.27276030, 0.99873249, 0.99933087, 0.49323446],
    7496                                                                                                  [      -6.27317537, -0.00041488, 0.00025417, 7.27276049, 0.99873266, 0.99933096, 0.49323436],
    7497                                                                                                  [      -6.27317550, -0.00041482, 0.00025413, 7.27276068, 0.99873283, 0.99933105, 0.49323455],
    7498                                                                                                  [      -6.27317563, -0.00041476, 0.00025410, 7.27276087, 0.99873300, 0.99933114, 0.49323443],
    7499                                                                                                  [      -6.27317577, -0.00041471, 0.00025406, 7.27276106, 0.99873317, 0.99933123, 0.49323444],
    7500                                                                                                  [      -6.27317590, -0.00041465, 0.00025403, 7.27276124, 0.99873334, 0.99933132, 0.49323452],
    7501                                                                                                  [      -6.27317603, -0.00041460, 0.00025400, 7.27276143, 0.99873351, 0.99933140, 0.49323465],
    7502                                                                                                  [      -6.27317616, -0.00041454, 0.00025396, 7.27276162, 0.99873368, 0.99933149, 0.49323452],
    7503                                                                                                  [      -6.27317630, -0.00041449, 0.00025393, 7.27276181, 0.99873385, 0.99933158, 0.49323459],
    7504                                                                                                  [      -6.27317643, -0.00041443, 0.00025389, 7.27276200, 0.99873402, 0.99933167, 0.49323462],
    7505                                                                                                  [      -6.27317656, -0.00041438, 0.00025386, 7.27276219, 0.99873419, 0.99933176, 0.49323457],
    7506                                                                                                  [      -6.27317670, -0.00041432, 0.00025383, 7.27276237, 0.99873436, 0.99933185, 0.49323468],
    7507                                                                                                  [      -6.27317683, -0.00041427, 0.00025379, 7.27276256, 0.99873453, 0.99933194, 0.49323479],
    7508                                                                                                  [      -6.27317696, -0.00041421, 0.00025376, 7.27276275, 0.99873470, 0.99933203, 0.49323481],
    7509                                                                                                  [      -6.27317709, -0.00041415, 0.00025372, 7.27276294, 0.99873487, 0.99933212, 0.49323465],
    7510                                                                                                  [      -6.27317723, -0.00041410, 0.00025369, 7.27276313, 0.99873504, 0.99933221, 0.49323467],
    7511                                                                                                  [      -6.27317736, -0.00041404, 0.00025366, 7.27276332, 0.99873521, 0.99933230, 0.49323474],
    7512                                                                                                  [      -6.27317749, -0.00041399, 0.00025362, 7.27276350, 0.99873538, 0.99933239, 0.49323475],
    7513                                                                                                  [      -6.27317762, -0.00041393, 0.00025359, 7.27276369, 0.99873555, 0.99933248, 0.49323489],
    7514                                                                                                  [      -6.27317776, -0.00041388, 0.00025355, 7.27276388, 0.99873572, 0.99933257, 0.49323478],
    7515                                                                                                  [      -6.27317789, -0.00041382, 0.00025352, 7.27276407, 0.99873588, 0.99933266, 0.49323490],
    7516                                                                                                  [      -6.27317802, -0.00041377, 0.00025349, 7.27276425, 0.99873605, 0.99933275, 0.49323500],
    7517                                                                                                  [      -6.27317815, -0.00041371, 0.00025345, 7.27276444, 0.99873622, 0.99933283, 0.49323486],
    7518                                                                                                  [      -6.27317829, -0.00041366, 0.00025342, 7.27276463, 0.99873639, 0.99933292, 0.49323491],
    7519                                                                                                  [      -6.27317842, -0.00041360, 0.00025339, 7.27276482, 0.99873656, 0.99933301, 0.49323473],
    7520                                                                                                  [      -6.27317855, -0.00041355, 0.00025335, 7.27276500, 0.99873673, 0.99933310, 0.49323495],
    7521                                                                                                  [      -6.27317868, -0.00041349, 0.00025332, 7.27276519, 0.99873690, 0.99933319, 0.49323495],
    7522                                                                                                  [      -6.27317882, -0.00041344, 0.00025328, 7.27276538, 0.99873707, 0.99933328, 0.49323487],
    7523                                                                                                  [      -6.27317895, -0.00041338, 0.00025325, 7.27276557, 0.99873724, 0.99933337, 0.49323500],
    7524                                                                                                  [      -6.27317908, -0.00041333, 0.00025322, 7.27276575, 0.99873740, 0.99933346, 0.49323493],
    7525                                                                                                  [      -6.27317921, -0.00041327, 0.00025318, 7.27276594, 0.99873757, 0.99933355, 0.49323497],
    7526                                                                                                  [      -6.27317934, -0.00041321, 0.00025315, 7.27276613, 0.99873774, 0.99933364, 0.49323507],
    7527                                                                                                  [      -6.27317948, -0.00041316, 0.00025311, 7.27276632, 0.99873791, 0.99933373, 0.49323512],
    7528                                                                                                  [      -6.27317961, -0.00041310, 0.00025308, 7.27276650, 0.99873808, 0.99933381, 0.49323500],
    7529                                                                                                  [      -6.27317974, -0.00041305, 0.00025305, 7.27276669, 0.99873825, 0.99933390, 0.49323510],
    7530                                                                                                  [      -6.27317987, -0.00041299, 0.00025301, 7.27276688, 0.99873842, 0.99933399, 0.49323520],
    7531                                                                                                  [      -6.27318000, -0.00041294, 0.00025298, 7.27276706, 0.99873858, 0.99933408, 0.49323515],
    7532                                                                                                  [      -6.27318014, -0.00041288, 0.00025295, 7.27276725, 0.99873875, 0.99933417, 0.49323523],
    7533                                                                                                  [      -6.27318027, -0.00041283, 0.00025291, 7.27276744, 0.99873892, 0.99933426, 0.49323516],
    7534                                                                                                  [      -6.27318040, -0.00041277, 0.00025288, 7.27276762, 0.99873909, 0.99933435, 0.49323517],
    7535                                                                                                  [      -6.27318053, -0.00041272, 0.00025284, 7.27276781, 0.99873926, 0.99933444, 0.49323519],
    7536                                                                                                  [      -6.27318066, -0.00041266, 0.00025281, 7.27276800, 0.99873942, 0.99933453, 0.49323515],
    7537                                                                                                  [      -6.27318079, -0.00041261, 0.00025278, 7.27276818, 0.99873959, 0.99933461, 0.49323538],
    7538                                                                                                  [      -6.27318093, -0.00041255, 0.00025274, 7.27276837, 0.99873976, 0.99933470, 0.49323529],
    7539                                                                                                  [      -6.27318106, -0.00041250, 0.00025271, 7.27276856, 0.99873993, 0.99933479, 0.49323537],
    7540                                                                                                  [      -6.27318119, -0.00041244, 0.00025268, 7.27276874, 0.99874010, 0.99933488, 0.49323534],
    7541                                                                                                  [      -6.27318132, -0.00041239, 0.00025264, 7.27276893, 0.99874026, 0.99933497, 0.49323537],
    7542                                                                                                  [      -6.27318145, -0.00041233, 0.00025261, 7.27276912, 0.99874043, 0.99933506, 0.49323540],
    7543                                                                                                  [      -6.27318158, -0.00041228, 0.00025258, 7.27276930, 0.99874060, 0.99933515, 0.49323539],
    7544                                                                                                  [      -6.27318171, -0.00041222, 0.00025254, 7.27276949, 0.99874077, 0.99933523, 0.49323536],
    7545                                                                                                  [      -6.27318185, -0.00041217, 0.00025251, 7.27276968, 0.99874094, 0.99933532, 0.49323541],
    7546                                                                                                  [      -6.27318198, -0.00041211, 0.00025247, 7.27276986, 0.99874110, 0.99933541, 0.49323529],
    7547                                                                                                  [      -6.27318211, -0.00041206, 0.00025244, 7.27277005, 0.99874127, 0.99933550, 0.49323554],
    7548                                                                                                  [      -6.27318224, -0.00041200, 0.00025241, 7.27277023, 0.99874144, 0.99933559, 0.49323556],
    7549                                                                                                  [      -6.27318237, -0.00041195, 0.00025237, 7.27277042, 0.99874161, 0.99933568, 0.49323548],
    7550                                                                                                  [      -6.27318250, -0.00041190, 0.00025234, 7.27277061, 0.99874177, 0.99933577, 0.49323555],
    7551                                                                                                  [      -6.27318263, -0.00041184, 0.00025231, 7.27277079, 0.99874194, 0.99933585, 0.49323555],
    7552                                                                                                  [      -6.27318276, -0.00041179, 0.00025227, 7.27277098, 0.99874211, 0.99933594, 0.49323566],
    7553                                                                                                  [      -6.27318290, -0.00041173, 0.00025224, 7.27277117, 0.99874228, 0.99933603, 0.49323552],
    7554                                                                                                  [      -6.27318303, -0.00041168, 0.00025221, 7.27277135, 0.99874244, 0.99933612, 0.49323561],
    7555                                                                                                  [      -6.27318316, -0.00041162, 0.00025217, 7.27277154, 0.99874261, 0.99933621, 0.49323566],
    7556                                                                                                  [      -6.27318329, -0.00041157, 0.00025214, 7.27277172, 0.99874278, 0.99933630, 0.49323555],
    7557                                                                                                  [      -6.27318342, -0.00041151, 0.00025210, 7.27277191, 0.99874294, 0.99933638, 0.49323560],
    7558                                                                                                  [      -6.27318355, -0.00041146, 0.00025207, 7.27277209, 0.99874311, 0.99933647, 0.49323570],
    7559                                                                                                  [      -6.27318368, -0.00041140, 0.00025204, 7.27277228, 0.99874328, 0.99933656, 0.49323566],
    7560                                                                                                  [      -6.27318381, -0.00041135, 0.00025200, 7.27277246, 0.99874345, 0.99933665, 0.49323580],
    7561                                                                                                  [      -6.27318394, -0.00041129, 0.00025197, 7.27277265, 0.99874361, 0.99933674, 0.49323573],
    7562                                                                                                  [      -6.27318407, -0.00041124, 0.00025194, 7.27277284, 0.99874378, 0.99933682, 0.49323588],
    7563                                                                                                  [      -6.27318420, -0.00041118, 0.00025190, 7.27277302, 0.99874395, 0.99933691, 0.49323574],
    7564                                                                                                  [      -6.27318434, -0.00041113, 0.00025187, 7.27277321, 0.99874411, 0.99933700, 0.49323584],
    7565                                                                                                  [      -6.27318447, -0.00041107, 0.00025184, 7.27277339, 0.99874428, 0.99933709, 0.49323574],
    7566                                                                                                  [      -6.27318460, -0.00041102, 0.00025180, 7.27277358, 0.99874445, 0.99933718, 0.49323586],
    7567                                                                                                  [      -6.27318473, -0.00041097, 0.00025177, 7.27277376, 0.99874461, 0.99933726, 0.49323593],
    7568                                                                                                  [      -6.27318486, -0.00041091, 0.00025174, 7.27277395, 0.99874478, 0.99933735, 0.49323592],
    7569                                                                                                  [      -6.27318499, -0.00041086, 0.00025170, 7.27277413, 0.99874495, 0.99933744, 0.49323598],
    7570                                                                                                  [      -6.27318512, -0.00041080, 0.00025167, 7.27277432, 0.99874511, 0.99933753, 0.49323589],
    7571                                                                                                  [      -6.27318525, -0.00041075, 0.00025164, 7.27277450, 0.99874528, 0.99933762, 0.49323587],
    7572                                                                                                  [      -6.27318538, -0.00041069, 0.00025160, 7.27277469, 0.99874545, 0.99933770, 0.49323605],
    7573                                                                                                  [      -6.27318551, -0.00041064, 0.00025157, 7.27277487, 0.99874561, 0.99933779, 0.49323594],
    7574                                                                                                  [      -6.27318564, -0.00041058, 0.00025154, 7.27277506, 0.99874578, 0.99933788, 0.49323599],
    7575                                                                                                  [      -6.27318577, -0.00041053, 0.00025150, 7.27277524, 0.99874595, 0.99933797, 0.49323604],
    7576                                                                                                  [      -6.27318590, -0.00041048, 0.00025147, 7.27277543, 0.99874611, 0.99933806, 0.49323602],
    7577                                                                                                  [      -6.27318603, -0.00041042, 0.00025144, 7.27277561, 0.99874628, 0.99933814, 0.49323601],
    7578                                                                                                  [      -6.27318616, -0.00041037, 0.00025140, 7.27277580, 0.99874645, 0.99933823, 0.49323601],
    7579                                                                                                  [      -6.27318629, -0.00041031, 0.00025137, 7.27277598, 0.99874661, 0.99933832, 0.49323608],
    7580                                                                                                  [      -6.27318642, -0.00041026, 0.00025134, 7.27277616, 0.99874678, 0.99933841, 0.49323616],
    7581                                                                                                  [      -6.27318655, -0.00041020, 0.00025130, 7.27277635, 0.99874694, 0.99933849, 0.49323617],
    7582                                                                                                  [      -6.27318668, -0.00041015, 0.00025127, 7.27277653, 0.99874711, 0.99933858, 0.49323615],
    7583                                                                                                  [      -6.27318681, -0.00041009, 0.00025124, 7.27277672, 0.99874728, 0.99933867, 0.49323614],
    7584                                                                                                  [      -6.27318694, -0.00041004, 0.00025120, 7.27277690, 0.99874744, 0.99933876, 0.49323615],
    7585                                                                                                  [      -6.27318707, -0.00040999, 0.00025117, 7.27277709, 0.99874761, 0.99933884, 0.49323610],
    7586                                                                                                  [      -6.27318720, -0.00040993, 0.00025114, 7.27277727, 0.99874777, 0.99933893, 0.49323628],
    7587                                                                                                  [      -6.27318733, -0.00040988, 0.00025110, 7.27277746, 0.99874794, 0.99933902, 0.49323634],
    7588                                                                                                  [      -6.27318746, -0.00040982, 0.00025107, 7.27277764, 0.99874811, 0.99933911, 0.49323627],
    7589                                                                                                  [      -6.27318759, -0.00040977, 0.00025104, 7.27277782, 0.99874827, 0.99933919, 0.49323622],
    7590                                                                                                  [      -6.27318772, -0.00040971, 0.00025100, 7.27277801, 0.99874844, 0.99933928, 0.49323631],
    7591                                                                                                  [      -6.27318785, -0.00040966, 0.00025097, 7.27277819, 0.99874860, 0.99933937, 0.49323628],
    7592                                                                                                  [      -6.27318798, -0.00040961, 0.00025094, 7.27277838, 0.99874877, 0.99933946, 0.49323627],
    7593                                                                                                  [      -6.27318811, -0.00040955, 0.00025090, 7.27277856, 0.99874893, 0.99933954, 0.49323637],
    7594                                                                                                  [      -6.27318824, -0.00040950, 0.00025087, 7.27277874, 0.99874910, 0.99933963, 0.49323632],
    7595                                                                                                  [      -6.27318837, -0.00040944, 0.00025084, 7.27277893, 0.99874927, 0.99933972, 0.49323640],
    7596                                                                                                  [      -6.27318850, -0.00040939, 0.00025080, 7.27277911, 0.99874943, 0.99933981, 0.49323651],
    7597                                                                                                  [      -6.27318863, -0.00040934, 0.00025077, 7.27277929, 0.99874960, 0.99933989, 0.49323644],
    7598                                                                                                  [      -6.27318876, -0.00040928, 0.00025074, 7.27277948, 0.99874976, 0.99933998, 0.49323637],
    7599                                                                                                  [      -6.27318889, -0.00040923, 0.00025070, 7.27277966, 0.99874993, 0.99934007, 0.49323647],
    7600                                                                                                  [      -6.27318902, -0.00040917, 0.00025067, 7.27277985, 0.99875009, 0.99934016, 0.49323644],
    7601                                                                                                  [      -6.27318915, -0.00040912, 0.00025064, 7.27278003, 0.99875026, 0.99934024, 0.49323643],
    7602                                                                                                  [      -6.27318928, -0.00040906, 0.00025060, 7.27278021, 0.99875042, 0.99934033, 0.49323648],
    7603                                                                                                  [      -6.27318941, -0.00040901, 0.00025057, 7.27278040, 0.99875059, 0.99934042, 0.49323655],
    7604                                                                                                  [      -6.27318954, -0.00040896, 0.00025054, 7.27278058, 0.99875075, 0.99934050, 0.49323657],
    7605                                                                                                  [      -6.27318967, -0.00040890, 0.00025051, 7.27278076, 0.99875092, 0.99934059, 0.49323664],
    7606                                                                                                  [      -6.27318979, -0.00040885, 0.00025047, 7.27278095, 0.99875108, 0.99934068, 0.49323657],
    7607                                                                                                  [      -6.27318992, -0.00040879, 0.00025044, 7.27278113, 0.99875125, 0.99934077, 0.49323666],
    7608                                                                                                  [      -6.27319005, -0.00040874, 0.00025041, 7.27278131, 0.99875141, 0.99934085, 0.49323663],
    7609                                                                                                  [      -6.27319018, -0.00040869, 0.00025037, 7.27278150, 0.99875158, 0.99934094, 0.49323672],
    7610                                                                                                  [      -6.27319031, -0.00040863, 0.00025034, 7.27278168, 0.99875174, 0.99934103, 0.49323665],
    7611                                                                                                  [      -6.27319044, -0.00040858, 0.00025031, 7.27278186, 0.99875191, 0.99934111, 0.49323670],
    7612                                                                                                  [      -6.27319057, -0.00040852, 0.00025027, 7.27278204, 0.99875207, 0.99934120, 0.49323671],
    7613                                                                                                  [      -6.27319070, -0.00040847, 0.00025024, 7.27278223, 0.99875224, 0.99934129, 0.49323673],
    7614                                                                                                  [      -6.27319083, -0.00040842, 0.00025021, 7.27278241, 0.99875240, 0.99934137, 0.49323684],
    7615                                                                                                  [      -6.27319096, -0.00040836, 0.00025017, 7.27278259, 0.99875257, 0.99934146, 0.49323687],
    7616                                                                                                  [      -6.27319109, -0.00040831, 0.00025014, 7.27278278, 0.99875273, 0.99934155, 0.49323685],
    7617                                                                                                  [      -6.27319121, -0.00040826, 0.00025011, 7.27278296, 0.99875290, 0.99934164, 0.49323688],
    7618                                                                                                  [      -6.27319134, -0.00040820, 0.00025008, 7.27278314, 0.99875306, 0.99934172, 0.49323675],
    7619                                                                                                  [      -6.27319147, -0.00040815, 0.00025004, 7.27278332, 0.99875322, 0.99934181, 0.49323678],
    7620                                                                                                  [      -6.27319160, -0.00040809, 0.00025001, 7.27278351, 0.99875339, 0.99934190, 0.49323687],
    7621                                                                                                  [      -6.27319173, -0.00040804, 0.00024998, 7.27278369, 0.99875355, 0.99934198, 0.49323686],
    7622                                                                                                  [      -6.27319186, -0.00040799, 0.00024994, 7.27278387, 0.99875372, 0.99934207, 0.49323698],
    7623                                                                                                  [      -6.27319199, -0.00040793, 0.00024991, 7.27278405, 0.99875388, 0.99934216, 0.49323692],
    7624                                                                                                  [      -6.27319212, -0.00040788, 0.00024988, 7.27278424, 0.99875405, 0.99934224, 0.49323708],
    7625                                                                                                  [      -6.27319224, -0.00040783, 0.00024985, 7.27278442, 0.99875421, 0.99934233, 0.49323704],
    7626                                                                                                  [      -6.27319237, -0.00040777, 0.00024981, 7.27278460, 0.99875437, 0.99934242, 0.49323700],
    7627                                                                                                  [      -6.27319250, -0.00040772, 0.00024978, 7.27278478, 0.99875454, 0.99934250, 0.49323693],
    7628                                                                                                  [      -6.27319263, -0.00040766, 0.00024975, 7.27278497, 0.99875470, 0.99934259, 0.49323702],
    7629                                                                                                  [      -6.27319276, -0.00040761, 0.00024971, 7.27278515, 0.99875487, 0.99934268, 0.49323716],
    7630                                                                                                  [      -6.27319289, -0.00040756, 0.00024968, 7.27278533, 0.99875503, 0.99934276, 0.49323703],
    7631                                                                                                  [      -6.27319302, -0.00040750, 0.00024965, 7.27278551, 0.99875519, 0.99934285, 0.49323706],
    7632                                                                                                  [      -6.27319314, -0.00040745, 0.00024961, 7.27278569, 0.99875536, 0.99934294, 0.49323706],
    7633                                                                                                  [      -6.27319327, -0.00040740, 0.00024958, 7.27278588, 0.99875552, 0.99934302, 0.49323714],
    7634                                                                                                  [      -6.27319340, -0.00040734, 0.00024955, 7.27278606, 0.99875569, 0.99934311, 0.49323706],
    7635                                                                                                  [      -6.27319353, -0.00040729, 0.00024952, 7.27278624, 0.99875585, 0.99934320, 0.49323708],
    7636                                                                                                  [      -6.27319366, -0.00040724, 0.00024948, 7.27278642, 0.99875601, 0.99934328, 0.49323729],
    7637                                                                                                  [      -6.27319379, -0.00040718, 0.00024945, 7.27278660, 0.99875618, 0.99934337, 0.49323724],
    7638                                                                                                  [      -6.27319391, -0.00040713, 0.00024942, 7.27278679, 0.99875634, 0.99934345, 0.49323721],
    7639                                                                                                  [      -6.27319404, -0.00040707, 0.00024938, 7.27278697, 0.99875650, 0.99934354, 0.49323728],
    7640                                                                                                  [      -6.27319417, -0.00040702, 0.00024935, 7.27278715, 0.99875667, 0.99934363, 0.49323732],
    7641                                                                                                  [      -6.27319430, -0.00040697, 0.00024932, 7.27278733, 0.99875683, 0.99934371, 0.49323735],
    7642                                                                                                  [      -6.27319443, -0.00040691, 0.00024929, 7.27278751, 0.99875700, 0.99934380, 0.49323736],
    7643                                                                                                  [      -6.27319455, -0.00040686, 0.00024925, 7.27278769, 0.99875716, 0.99934389, 0.49323725],
    7644                                                                                                  [      -6.27319468, -0.00040681, 0.00024922, 7.27278788, 0.99875732, 0.99934397, 0.49323738],
    7645                                                                                                  [      -6.27319481, -0.00040675, 0.00024919, 7.27278806, 0.99875749, 0.99934406, 0.49323735],
    7646                                                                                                  [      -6.27319494, -0.00040670, 0.00024916, 7.27278824, 0.99875765, 0.99934414, 0.49323731],
    7647                                                                                                  [      -6.27319507, -0.00040665, 0.00024912, 7.27278842, 0.99875781, 0.99934423, 0.49323743],
    7648                                                                                                  [      -6.27319519, -0.00040659, 0.00024909, 7.27278860, 0.99875798, 0.99934432, 0.49323750],
    7649                                                                                                  [      -6.27319532, -0.00040654, 0.00024906, 7.27278878, 0.99875814, 0.99934440, 0.49323738],
    7650                                                                                                  [      -6.27319545, -0.00040649, 0.00024902, 7.27278896, 0.99875830, 0.99934449, 0.49323751],
    7651                                                                                                  [      -6.27319558, -0.00040643, 0.00024899, 7.27278914, 0.99875846, 0.99934457, 0.49323752],
    7652                                                                                                  [      -6.27319571, -0.00040638, 0.00024896, 7.27278933, 0.99875863, 0.99934466, 0.49323741],
    7653                                                                                                  [      -6.27319583, -0.00040633, 0.00024893, 7.27278951, 0.99875879, 0.99934475, 0.49323749],
    7654                                                                                                  [      -6.27319596, -0.00040627, 0.00024889, 7.27278969, 0.99875895, 0.99934483, 0.49323755],
    7655                                                                                                  [      -6.27319609, -0.00040622, 0.00024886, 7.27278987, 0.99875912, 0.99934492, 0.49323762],
    7656                                                                                                  [      -6.27319622, -0.00040617, 0.00024883, 7.27279005, 0.99875928, 0.99934501, 0.49323759],
    7657                                                                                                  [      -6.27319634, -0.00040611, 0.00024880, 7.27279023, 0.99875944, 0.99934509, 0.49323760],
    7658                                                                                                  [      -6.27319647, -0.00040606, 0.00024876, 7.27279041, 0.99875960, 0.99934518, 0.49323757],
    7659                                                                                                  [      -6.27319660, -0.00040601, 0.00024873, 7.27279059, 0.99875977, 0.99934526, 0.49323761],
    7660                                                                                                  [      -6.27319673, -0.00040595, 0.00024870, 7.27279077, 0.99875993, 0.99934535, 0.49323762],
    7661                                                                                                  [      -6.27319685, -0.00040590, 0.00024867, 7.27279095, 0.99876009, 0.99934543, 0.49323771],
    7662                                                                                                  [      -6.27319698, -0.00040585, 0.00024863, 7.27279113, 0.99876026, 0.99934552, 0.49323775],
    7663                                                                                                  [      -6.27319711, -0.00040579, 0.00024860, 7.27279131, 0.99876042, 0.99934561, 0.49323777],
    7664                                                                                                  [      -6.27319724, -0.00040574, 0.00024857, 7.27279149, 0.99876058, 0.99934569, 0.49323761],
    7665                                                                                                  [      -6.27319736, -0.00040569, 0.00024853, 7.27279168, 0.99876074, 0.99934578, 0.49323772],
    7666                                                                                                  [      -6.27319749, -0.00040563, 0.00024850, 7.27279186, 0.99876091, 0.99934586, 0.49323767],
    7667                                                                                                  [      -6.27319762, -0.00040558, 0.00024847, 7.27279204, 0.99876107, 0.99934595, 0.49323779],
    7668                                                                                                  [      -6.27319774, -0.00040553, 0.00024844, 7.27279222, 0.99876123, 0.99934603, 0.49323782],
    7669                                                                                                  [      -6.27319787, -0.00040547, 0.00024840, 7.27279240, 0.99876139, 0.99934612, 0.49323776],
    7670                                                                                                  [      -6.27319800, -0.00040542, 0.00024837, 7.27279258, 0.99876156, 0.99934621, 0.49323782],
    7671                                                                                                  [      -6.27319813, -0.00040537, 0.00024834, 7.27279276, 0.99876172, 0.99934629, 0.49323787],
    7672                                                                                                  [      -6.27319825, -0.00040532, 0.00024831, 7.27279294, 0.99876188, 0.99934638, 0.49323783],
    7673                                                                                                  [      -6.27319838, -0.00040526, 0.00024827, 7.27279312, 0.99876204, 0.99934646, 0.49323795],
    7674                                                                                                  [      -6.27319851, -0.00040521, 0.00024824, 7.27279330, 0.99876220, 0.99934655, 0.49323788],
    7675                                                                                                  [      -6.27319863, -0.00040516, 0.00024821, 7.27279348, 0.99876237, 0.99934663, 0.49323798],
    7676                                                                                                  [      -6.27319876, -0.00040510, 0.00024818, 7.27279366, 0.99876253, 0.99934672, 0.49323799],
    7677                                                                                                  [      -6.27319889, -0.00040505, 0.00024814, 7.27279384, 0.99876269, 0.99934681, 0.49323794],
    7678                                                                                                  [      -6.27319901, -0.00040500, 0.00024811, 7.27279402, 0.99876285, 0.99934689, 0.49323812],
    7679                                                                                                  [      -6.27319914, -0.00040494, 0.00024808, 7.27279420, 0.99876301, 0.99934698, 0.49323800],
    7680                                                                                                  [      -6.27319927, -0.00040489, 0.00024805, 7.27279438, 0.99876318, 0.99934706, 0.49323799],
    7681                                                                                                  [      -6.27319939, -0.00040484, 0.00024801, 7.27279456, 0.99876334, 0.99934715, 0.49323807],
    7682                                                                                                  [      -6.27319952, -0.00040479, 0.00024798, 7.27279474, 0.99876350, 0.99934723, 0.49323804],
    7683                                                                                                  [      -6.27319965, -0.00040473, 0.00024795, 7.27279492, 0.99876366, 0.99934732, 0.49323807],
    7684                                                                                                  [      -6.27319977, -0.00040468, 0.00024792, 7.27279510, 0.99876382, 0.99934740, 0.49323796],
    7685                                                                                                  [      -6.27319990, -0.00040463, 0.00024788, 7.27279527, 0.99876398, 0.99934749, 0.49323820],
    7686                                                                                                  [      -6.27320003, -0.00040457, 0.00024785, 7.27279545, 0.99876415, 0.99934757, 0.49323815],
    7687                                                                                                  [      -6.27320015, -0.00040452, 0.00024782, 7.27279563, 0.99876431, 0.99934766, 0.49323813],
    7688                                                                                                  [      -6.27320028, -0.00040447, 0.00024779, 7.27279581, 0.99876447, 0.99934774, 0.49323819],
    7689                                                                                                  [      -6.27320041, -0.00040442, 0.00024776, 7.27279599, 0.99876463, 0.99934783, 0.49323817],
    7690                                                                                                  [      -6.27320053, -0.00040436, 0.00024772, 7.27279617, 0.99876479, 0.99934791, 0.49323809],
    7691                                                                                                  [      -6.27320066, -0.00040431, 0.00024769, 7.27279635, 0.99876495, 0.99934800, 0.49323823],
    7692                                                                                                  [      -6.27320079, -0.00040426, 0.00024766, 7.27279653, 0.99876511, 0.99934809, 0.49323818],
    7693                                                                                                  [      -6.27320091, -0.00040420, 0.00024763, 7.27279671, 0.99876528, 0.99934817, 0.49323822],
    7694                                                                                                  [      -6.27320104, -0.00040415, 0.00024759, 7.27279689, 0.99876544, 0.99934826, 0.49323828],
    7695                                                                                                  [      -6.27320117, -0.00040410, 0.00024756, 7.27279707, 0.99876560, 0.99934834, 0.49323852],
    7696                                                                                                  [      -6.27320129, -0.00040405, 0.00024753, 7.27279725, 0.99876576, 0.99934843, 0.49323826],
    7697                                                                                                  [      -6.27320142, -0.00040399, 0.00024750, 7.27279743, 0.99876592, 0.99934851, 0.49323833],
    7698                                                                                                  [      -6.27320154, -0.00040394, 0.00024746, 7.27279760, 0.99876608, 0.99934860, 0.49323832],
    7699                                                                                                  [      -6.27320167, -0.00040389, 0.00024743, 7.27279778, 0.99876624, 0.99934868, 0.49323839],
    7700                                                                                                  [      -6.27320180, -0.00040383, 0.00024740, 7.27279796, 0.99876640, 0.99934877, 0.49323831],
    7701                                                                                                  [      -6.27320192, -0.00040378, 0.00024737, 7.27279814, 0.99876656, 0.99934885, 0.49323847],
    7702                                                                                                  [      -6.27320205, -0.00040373, 0.00024733, 7.27279832, 0.99876673, 0.99934894, 0.49323846],
    7703                                                                                                  [      -6.27320217, -0.00040368, 0.00024730, 7.27279850, 0.99876689, 0.99934902, 0.49323853],
    7704                                                                                                  [      -6.27320230, -0.00040362, 0.00024727, 7.27279868, 0.99876705, 0.99934911, 0.49323849],
    7705                                                                                                  [      -6.27320243, -0.00040357, 0.00024724, 7.27279886, 0.99876721, 0.99934919, 0.49323847],
    7706                                                                                                  [      -6.27320255, -0.00040352, 0.00024721, 7.27279903, 0.99876737, 0.99934928, 0.49323843],
    7707                                                                                                  [      -6.27320268, -0.00040347, 0.00024717, 7.27279921, 0.99876753, 0.99934936, 0.49323854],
    7708                                                                                                  [      -6.27320280, -0.00040341, 0.00024714, 7.27279939, 0.99876769, 0.99934944, 0.49323862],
    7709                                                                                                  [      -6.27320293, -0.00040336, 0.00024711, 7.27279957, 0.99876785, 0.99934953, 0.49323861],
    7710                                                                                                  [      -6.27320306, -0.00040331, 0.00024708, 7.27279975, 0.99876801, 0.99934961, 0.49323862],
    7711                                                                                                  [      -6.27320318, -0.00040326, 0.00024704, 7.27279993, 0.99876817, 0.99934970, 0.49323859],
    7712                                                                                                  [      -6.27320331, -0.00040320, 0.00024701, 7.27280010, 0.99876833, 0.99934978, 0.49323864],
    7713                                                                                                  [      -6.27320343, -0.00040315, 0.00024698, 7.27280028, 0.99876849, 0.99934987, 0.49323872],
    7714                                                                                                  [      -6.27320356, -0.00040310, 0.00024695, 7.27280046, 0.99876865, 0.99934995, 0.49323853],
    7715                                                                                                  [      -6.27320368, -0.00040305, 0.00024692, 7.27280064, 0.99876881, 0.99935004, 0.49323874],
    7716                                                                                                  [      -6.27320381, -0.00040299, 0.00024688, 7.27280082, 0.99876897, 0.99935012, 0.49323866],
    7717                                                                                                  [      -6.27320394, -0.00040294, 0.00024685, 7.27280099, 0.99876913, 0.99935021, 0.49323878],
    7718                                                                                                  [      -6.27320406, -0.00040289, 0.00024682, 7.27280117, 0.99876929, 0.99935029, 0.49323872],
    7719                                                                                                  [      -6.27320419, -0.00040284, 0.00024679, 7.27280135, 0.99876945, 0.99935038, 0.49323872],
    7720                                                                                                  [      -6.27320431, -0.00040278, 0.00024676, 7.27280153, 0.99876961, 0.99935046, 0.49323876],
    7721                                                                                                  [      -6.27320444, -0.00040273, 0.00024672, 7.27280171, 0.99876978, 0.99935055, 0.49323884],
    7722                                                                                                  [      -6.27320456, -0.00040268, 0.00024669, 7.27280188, 0.99876994, 0.99935063, 0.49323875],
    7723                                                                                                  [      -6.27320469, -0.00040263, 0.00024666, 7.27280206, 0.99877010, 0.99935071, 0.49323881],
    7724                                                                                                  [      -6.27320481, -0.00040257, 0.00024663, 7.27280224, 0.99877026, 0.99935080, 0.49323883],
    7725                                                                                                  [      -6.27320494, -0.00040252, 0.00024659, 7.27280242, 0.99877042, 0.99935088, 0.49323893],
    7726                                                                                                  [      -6.27320506, -0.00040247, 0.00024656, 7.27280259, 0.99877058, 0.99935097, 0.49323897],
    7727                                                                                                  [      -6.27320519, -0.00040242, 0.00024653, 7.27280277, 0.99877073, 0.99935105, 0.49323888],
    7728                                                                                                  [      -6.27320532, -0.00040237, 0.00024650, 7.27280295, 0.99877089, 0.99935114, 0.49323894],
    7729                                                                                                  [      -6.27320544, -0.00040231, 0.00024647, 7.27280313, 0.99877105, 0.99935122, 0.49323891],
    7730                                                                                                  [      -6.27320557, -0.00040226, 0.00024643, 7.27280330, 0.99877121, 0.99935130, 0.49323883],
    7731                                                                                                  [      -6.27320569, -0.00040221, 0.00024640, 7.27280348, 0.99877137, 0.99935139, 0.49323900],
    7732                                                                                                  [      -6.27320582, -0.00040216, 0.00024637, 7.27280366, 0.99877153, 0.99935147, 0.49323894],
    7733                                                                                                  [      -6.27320594, -0.00040210, 0.00024634, 7.27280384, 0.99877169, 0.99935156, 0.49323913],
    7734                                                                                                  [      -6.27320607, -0.00040205, 0.00024631, 7.27280401, 0.99877185, 0.99935164, 0.49323892],
    7735                                                                                                  [      -6.27320619, -0.00040200, 0.00024627, 7.27280419, 0.99877201, 0.99935173, 0.49323905],
    7736                                                                                                  [      -6.27320632, -0.00040195, 0.00024624, 7.27280437, 0.99877217, 0.99935181, 0.49323908],
    7737                                                                                                  [      -6.27320644, -0.00040190, 0.00024621, 7.27280455, 0.99877233, 0.99935189, 0.49323912],
    7738                                                                                                  [      -6.27320657, -0.00040184, 0.00024618, 7.27280472, 0.99877249, 0.99935198, 0.49323907],
    7739                                                                                                  [      -6.27320669, -0.00040179, 0.00024615, 7.27280490, 0.99877265, 0.99935206, 0.49323901],
    7740                                                                                                  [      -6.27320682, -0.00040174, 0.00024611, 7.27280508, 0.99877281, 0.99935215, 0.49323923],
    7741                                                                                                  [      -6.27320694, -0.00040169, 0.00024608, 7.27280525, 0.99877297, 0.99935223, 0.49323914],
    7742                                                                                                  [      -6.27320706, -0.00040163, 0.00024605, 7.27280543, 0.99877313, 0.99935231, 0.49323921],
    7743                                                                                                  [      -6.27320719, -0.00040158, 0.00024602, 7.27280561, 0.99877329, 0.99935240, 0.49323926],
    7744                                                                                                  [      -6.27320731, -0.00040153, 0.00024599, 7.27280578, 0.99877345, 0.99935248, 0.49323926],
    7745                                                                                                  [      -6.27320744, -0.00040148, 0.00024595, 7.27280596, 0.99877361, 0.99935257, 0.49323918],
    7746                                                                                                  [      -6.27320756, -0.00040143, 0.00024592, 7.27280614, 0.99877376, 0.99935265, 0.49323936],
    7747                                                                                                  [      -6.27320769, -0.00040137, 0.00024589, 7.27280631, 0.99877392, 0.99935273, 0.49323929],
    7748                                                                                                  [      -6.27320781, -0.00040132, 0.00024586, 7.27280649, 0.99877408, 0.99935282, 0.49323934],
    7749                                                                                                  [      -6.27320794, -0.00040127, 0.00024583, 7.27280667, 0.99877424, 0.99935290, 0.49323932],
    7750                                                                                                  [      -6.27320806, -0.00040122, 0.00024580, 7.27280684, 0.99877440, 0.99935299, 0.49323931],
    7751                                                                                                  [      -6.27320819, -0.00040117, 0.00024576, 7.27280702, 0.99877456, 0.99935307, 0.49323926],
    7752                                                                                                  [      -6.27320831, -0.00040111, 0.00024573, 7.27280720, 0.99877472, 0.99935315, 0.49323938],
    7753                                                                                                  [      -6.27320843, -0.00040106, 0.00024570, 7.27280737, 0.99877488, 0.99935324, 0.49323939],
    7754                                                                                                  [      -6.27320856, -0.00040101, 0.00024567, 7.27280755, 0.99877504, 0.99935332, 0.49323934],
    7755                                                                                                  [      -6.27320868, -0.00040096, 0.00024564, 7.27280773, 0.99877519, 0.99935341, 0.49323939],
    7756                                                                                                  [      -6.27320881, -0.00040091, 0.00024560, 7.27280790, 0.99877535, 0.99935349, 0.49323943],
    7757                                                                                                  [      -6.27320893, -0.00040085, 0.00024557, 7.27280808, 0.99877551, 0.99935357, 0.49323942],
    7758                                                                                                  [      -6.27320906, -0.00040080, 0.00024554, 7.27280825, 0.99877567, 0.99935366, 0.49323947],
    7759                                                                                                  [      -6.27320918, -0.00040075, 0.00024551, 7.27280843, 0.99877583, 0.99935374, 0.49323951],
    7760                                                                                                  [      -6.27320930, -0.00040070, 0.00024548, 7.27280861, 0.99877599, 0.99935382, 0.49323953],
    7761                                                                                                  [      -6.27320943, -0.00040065, 0.00024545, 7.27280878, 0.99877615, 0.99935391, 0.49323955],
    7762                                                                                                  [      -6.27320955, -0.00040059, 0.00024541, 7.27280896, 0.99877630, 0.99935399, 0.49323962],
    7763                                                                                                  [      -6.27320968, -0.00040054, 0.00024538, 7.27280913, 0.99877646, 0.99935408, 0.49323956],
    7764                                                                                                  [      -6.27320980, -0.00040049, 0.00024535, 7.27280931, 0.99877662, 0.99935416, 0.49323962],
    7765                                                                                                  [      -6.27320993, -0.00040044, 0.00024532, 7.27280949, 0.99877678, 0.99935424, 0.49323958],
    7766                                                                                                  [      -6.27321005, -0.00040039, 0.00024529, 7.27280966, 0.99877694, 0.99935433, 0.49323965],
    7767                                                                                                  [      -6.27321017, -0.00040034, 0.00024525, 7.27280984, 0.99877710, 0.99935441, 0.49323969],
    7768                                                                                                  [      -6.27321030, -0.00040028, 0.00024522, 7.27281001, 0.99877725, 0.99935449, 0.49323976],
    7769                                                                                                  [      -6.27321042, -0.00040023, 0.00024519, 7.27281019, 0.99877741, 0.99935458, 0.49323970],
    7770                                                                                                  [      -6.27321054, -0.00040018, 0.00024516, 7.27281036, 0.99877757, 0.99935466, 0.49323974],
    7771                                                                                                  [      -6.27321067, -0.00040013, 0.00024513, 7.27281054, 0.99877773, 0.99935474, 0.49323974],
    7772                                                                                                  [      -6.27321079, -0.00040008, 0.00024510, 7.27281072, 0.99877789, 0.99935483, 0.49323966],
    7773                                                                                                  [      -6.27321092, -0.00040003, 0.00024506, 7.27281089, 0.99877804, 0.99935491, 0.49323980],
    7774                                                                                                  [      -6.27321104, -0.00039997, 0.00024503, 7.27281107, 0.99877820, 0.99935499, 0.49323982],
    7775                                                                                                  [      -6.27321116, -0.00039992, 0.00024500, 7.27281124, 0.99877836, 0.99935508, 0.49323984],
    7776                                                                                                  [      -6.27321129, -0.00039987, 0.00024497, 7.27281142, 0.99877852, 0.99935516, 0.49323979],
    7777                                                                                                  [      -6.27321141, -0.00039982, 0.00024494, 7.27281159, 0.99877868, 0.99935524, 0.49323984],
    7778                                                                                                  [      -6.27321153, -0.00039977, 0.00024491, 7.27281177, 0.99877883, 0.99935533, 0.49323987],
    7779                                                                                                  [      -6.27321166, -0.00039972, 0.00024487, 7.27281194, 0.99877899, 0.99935541, 0.49323994],
    7780                                                                                                  [      -6.27321178, -0.00039966, 0.00024484, 7.27281212, 0.99877915, 0.99935549, 0.49323989],
    7781                                                                                                  [      -6.27321191, -0.00039961, 0.00024481, 7.27281229, 0.99877931, 0.99935558, 0.49323986],
    7782                                                                                                  [      -6.27321203, -0.00039956, 0.00024478, 7.27281247, 0.99877946, 0.99935566, 0.49323995],
    7783                                                                                                  [      -6.27321215, -0.00039951, 0.00024475, 7.27281264, 0.99877962, 0.99935574, 0.49323997],
    7784                                                                                                  [      -6.27321228, -0.00039946, 0.00024472, 7.27281282, 0.99877978, 0.99935583, 0.49323996],
    7785                                                                                                  [      -6.27321240, -0.00039941, 0.00024468, 7.27281299, 0.99877994, 0.99935591, 0.49323998],
    7786                                                                                                  [      -6.27321252, -0.00039935, 0.00024465, 7.27281317, 0.99878009, 0.99935599, 0.49323996],
    7787                                                                                                  [      -6.27321265, -0.00039930, 0.00024462, 7.27281334, 0.99878025, 0.99935608, 0.49324002],
    7788                                                                                                  [      -6.27321277, -0.00039925, 0.00024459, 7.27281352, 0.99878041, 0.99935616, 0.49323998],
    7789                                                                                                  [      -6.27321289, -0.00039920, 0.00024456, 7.27281369, 0.99878057, 0.99935624, 0.49324001],
    7790                                                                                                  [      -6.27321302, -0.00039915, 0.00024453, 7.27281387, 0.99878072, 0.99935632, 0.49324014],
    7791                                                                                                  [      -6.27321314, -0.00039910, 0.00024450, 7.27281404, 0.99878088, 0.99935641, 0.49324019],
    7792                                                                                                  [      -6.27321326, -0.00039905, 0.00024446, 7.27281422, 0.99878104, 0.99935649, 0.49324012],
    7793                                                                                                  [      -6.27321338, -0.00039899, 0.00024443, 7.27281439, 0.99878120, 0.99935657, 0.49324003],
    7794                                                                                                  [      -6.27321351, -0.00039894, 0.00024440, 7.27281457, 0.99878135, 0.99935666, 0.49324013],
    7795                                                                                                  [      -6.27321363, -0.00039889, 0.00024437, 7.27281474, 0.99878151, 0.99935674, 0.49324013],
    7796                                                                                                  [      -6.27321375, -0.00039884, 0.00024434, 7.27281491, 0.99878167, 0.99935682, 0.49324017],
    7797                                                                                                  [      -6.27321388, -0.00039879, 0.00024431, 7.27281509, 0.99878182, 0.99935690, 0.49324022],
    7798                                                                                                  [      -6.27321400, -0.00039874, 0.00024427, 7.27281526, 0.99878198, 0.99935699, 0.49324015],
    7799                                                                                                  [      -6.27321412, -0.00039869, 0.00024424, 7.27281544, 0.99878214, 0.99935707, 0.49324036],
    7800                                                                                                  [      -6.27321425, -0.00039863, 0.00024421, 7.27281561, 0.99878229, 0.99935715, 0.49324026],
    7801                                                                                                  [      -6.27321437, -0.00039858, 0.00024418, 7.27281579, 0.99878245, 0.99935724, 0.49324022],
    7802                                                                                                  [      -6.27321449, -0.00039853, 0.00024415, 7.27281596, 0.99878261, 0.99935732, 0.49324031],
    7803                                                                                                  [      -6.27321461, -0.00039848, 0.00024412, 7.27281613, 0.99878277, 0.99935740, 0.49324028],
    7804                                                                                                  [      -6.27321474, -0.00039843, 0.00024409, 7.27281631, 0.99878292, 0.99935748, 0.49324030],
    7805                                                                                                  [      -6.27321486, -0.00039838, 0.00024405, 7.27281648, 0.99878308, 0.99935757, 0.49324023],
    7806                                                                                                  [      -6.27321498, -0.00039833, 0.00024402, 7.27281666, 0.99878324, 0.99935765, 0.49324037],
    7807                                                                                                  [      -6.27321511, -0.00039828, 0.00024399, 7.27281683, 0.99878339, 0.99935773, 0.49324036],
    7808                                                                                                  [      -6.27321523, -0.00039822, 0.00024396, 7.27281700, 0.99878355, 0.99935782, 0.49324044],
    7809                                                                                                  [      -6.27321535, -0.00039817, 0.00024393, 7.27281718, 0.99878370, 0.99935790, 0.49324039],
    7810                                                                                                  [      -6.27321547, -0.00039812, 0.00024390, 7.27281735, 0.99878386, 0.99935798, 0.49324042],
    7811                                                                                                  [      -6.27321560, -0.00039807, 0.00024387, 7.27281752, 0.99878402, 0.99935806, 0.49324055],
    7812                                                                                                  [      -6.27321572, -0.00039802, 0.00024383, 7.27281770, 0.99878417, 0.99935815, 0.49324042],
    7813                                                                                                  [      -6.27321584, -0.00039797, 0.00024380, 7.27281787, 0.99878433, 0.99935823, 0.49324044],
    7814                                                                                                  [      -6.27321596, -0.00039792, 0.00024377, 7.27281805, 0.99878449, 0.99935831, 0.49324041],
    7815                                                                                                  [      -6.27321609, -0.00039787, 0.00024374, 7.27281822, 0.99878464, 0.99935839, 0.49324060],
    7816                                                                                                  [      -6.27321621, -0.00039781, 0.00024371, 7.27281839, 0.99878480, 0.99935848, 0.49324044],
    7817                                                                                                  [      -6.27321633, -0.00039776, 0.00024368, 7.27281857, 0.99878496, 0.99935856, 0.49324054],
    7818                                                                                                  [      -6.27321645, -0.00039771, 0.00024365, 7.27281874, 0.99878511, 0.99935864, 0.49324046],
    7819                                                                                                  [      -6.27321658, -0.00039766, 0.00024362, 7.27281891, 0.99878527, 0.99935872, 0.49324052],
    7820                                                                                                  [      -6.27321670, -0.00039761, 0.00024358, 7.27281909, 0.99878542, 0.99935881, 0.49324063],
    7821                                                                                                  [      -6.27321682, -0.00039756, 0.00024355, 7.27281926, 0.99878558, 0.99935889, 0.49324081],
    7822                                                                                                  [      -6.27321694, -0.00039751, 0.00024352, 7.27281943, 0.99878574, 0.99935897, 0.49324067],
    7823                                                                                                  [      -6.27321706, -0.00039746, 0.00024349, 7.27281961, 0.99878589, 0.99935905, 0.49324080],
    7824                                                                                                  [      -6.27321719, -0.00039741, 0.00024346, 7.27281978, 0.99878605, 0.99935913, 0.49324070],
    7825                                                                                                  [      -6.27321731, -0.00039736, 0.00024343, 7.27281995, 0.99878620, 0.99935922, 0.49324061],
    7826                                                                                                  [      -6.27321743, -0.00039730, 0.00024340, 7.27282013, 0.99878636, 0.99935930, 0.49324072],
    7827                                                                                                  [      -6.27321755, -0.00039725, 0.00024337, 7.27282030, 0.99878652, 0.99935938, 0.49324071],
    7828                                                                                                  [      -6.27321767, -0.00039720, 0.00024333, 7.27282047, 0.99878667, 0.99935946, 0.49324076],
    7829                                                                                                  [      -6.27321780, -0.00039715, 0.00024330, 7.27282064, 0.99878683, 0.99935955, 0.49324084],
    7830                                                                                                  [      -6.27321792, -0.00039710, 0.00024327, 7.27282082, 0.99878698, 0.99935963, 0.49324086],
    7831                                                                                                  [      -6.27321804, -0.00039705, 0.00024324, 7.27282099, 0.99878714, 0.99935971, 0.49324068],
    7832                                                                                                  [      -6.27321816, -0.00039700, 0.00024321, 7.27282116, 0.99878729, 0.99935979, 0.49324078],
    7833                                                                                                  [      -6.27321828, -0.00039695, 0.00024318, 7.27282134, 0.99878745, 0.99935987, 0.49324088],
    7834                                                                                                  [      -6.27321841, -0.00039690, 0.00024315, 7.27282151, 0.99878760, 0.99935996, 0.49324077],
    7835                                                                                                  [      -6.27321853, -0.00039685, 0.00024312, 7.27282168, 0.99878776, 0.99936004, 0.49324091],
    7836                                                                                                  [      -6.27321865, -0.00039680, 0.00024308, 7.27282185, 0.99878792, 0.99936012, 0.49324089],
    7837                                                                                                  [      -6.27321877, -0.00039674, 0.00024305, 7.27282203, 0.99878807, 0.99936020, 0.49324098],
    7838                                                                                                  [      -6.27321889, -0.00039669, 0.00024302, 7.27282220, 0.99878823, 0.99936028, 0.49324089],
    7839                                                                                                  [      -6.27321901, -0.00039664, 0.00024299, 7.27282237, 0.99878838, 0.99936037, 0.49324096],
    7840                                                                                                  [      -6.27321914, -0.00039659, 0.00024296, 7.27282254, 0.99878854, 0.99936045, 0.49324110],
    7841                                                                                                  [      -6.27321926, -0.00039654, 0.00024293, 7.27282272, 0.99878869, 0.99936053, 0.49324104],
    7842                                                                                                  [      -6.27321938, -0.00039649, 0.00024290, 7.27282289, 0.99878885, 0.99936061, 0.49324115],
    7843                                                                                                  [      -6.27321950, -0.00039644, 0.00024287, 7.27282306, 0.99878900, 0.99936069, 0.49324105],
    7844                                                                                                  [      -6.27321962, -0.00039639, 0.00024284, 7.27282323, 0.99878916, 0.99936078, 0.49324108],
    7845                                                                                                  [      -6.27321974, -0.00039634, 0.00024280, 7.27282341, 0.99878931, 0.99936086, 0.49324101],
    7846                                                                                                  [      -6.27321987, -0.00039629, 0.00024277, 7.27282358, 0.99878947, 0.99936094, 0.49324102],
    7847                                                                                                  [      -6.27321999, -0.00039624, 0.00024274, 7.27282375, 0.99878962, 0.99936102, 0.49324113],
    7848                                                                                                  [      -6.27322011, -0.00039619, 0.00024271, 7.27282392, 0.99878978, 0.99936110, 0.49324108],
    7849                                                                                                  [      -6.27322023, -0.00039613, 0.00024268, 7.27282409, 0.99878993, 0.99936119, 0.49324117],
    7850                                                                                                  [      -6.27322035, -0.00039608, 0.00024265, 7.27282427, 0.99879009, 0.99936127, 0.49324125],
    7851                                                                                                  [      -6.27322047, -0.00039603, 0.00024262, 7.27282444, 0.99879024, 0.99936135, 0.49324106],
    7852                                                                                                  [      -6.27322059, -0.00039598, 0.00024259, 7.27282461, 0.99879040, 0.99936143, 0.49324119],
    7853                                                                                                  [      -6.27322071, -0.00039593, 0.00024256, 7.27282478, 0.99879055, 0.99936151, 0.49324110],
    7854                                                                                                  [      -6.27322084, -0.00039588, 0.00024252, 7.27282495, 0.99879071, 0.99936159, 0.49324126],
    7855                                                                                                  [      -6.27322096, -0.00039583, 0.00024249, 7.27282513, 0.99879086, 0.99936168, 0.49324122],
    7856                                                                                                  [      -6.27322108, -0.00039578, 0.00024246, 7.27282530, 0.99879102, 0.99936176, 0.49324129],
    7857                                                                                                  [      -6.27322120, -0.00039573, 0.00024243, 7.27282547, 0.99879117, 0.99936184, 0.49324129],
    7858                                                                                                  [      -6.27322132, -0.00039568, 0.00024240, 7.27282564, 0.99879133, 0.99936192, 0.49324124],
    7859                                                                                                  [      -6.27322144, -0.00039563, 0.00024237, 7.27282581, 0.99879148, 0.99936200, 0.49324135],
    7860                                                                                                  [      -6.27322156, -0.00039558, 0.00024234, 7.27282598, 0.99879163, 0.99936208, 0.49324138],
    7861                                                                                                  [      -6.27322168, -0.00039553, 0.00024231, 7.27282616, 0.99879179, 0.99936216, 0.49324133],
    7862                                                                                                  [      -6.27322180, -0.00039548, 0.00024228, 7.27282633, 0.99879194, 0.99936225, 0.49324140],
    7863                                                                                                  [      -6.27322193, -0.00039543, 0.00024225, 7.27282650, 0.99879210, 0.99936233, 0.49324130],
    7864                                                                                                  [      -6.27322205, -0.00039538, 0.00024221, 7.27282667, 0.99879225, 0.99936241, 0.49324149],
    7865                                                                                                  [      -6.27322217, -0.00039533, 0.00024218, 7.27282684, 0.99879241, 0.99936249, 0.49324143],
    7866                                                                                                  [      -6.27322229, -0.00039528, 0.00024215, 7.27282701, 0.99879256, 0.99936257, 0.49324140],
    7867                                                                                                  [      -6.27322241, -0.00039522, 0.00024212, 7.27282718, 0.99879271, 0.99936265, 0.49324158],
    7868                                                                                                  [      -6.27322253, -0.00039517, 0.00024209, 7.27282736, 0.99879287, 0.99936273, 0.49324147],
    7869                                                                                                  [      -6.27322265, -0.00039512, 0.00024206, 7.27282753, 0.99879302, 0.99936282, 0.49324156],
    7870                                                                                                  [      -6.27322277, -0.00039507, 0.00024203, 7.27282770, 0.99879318, 0.99936290, 0.49324153],
    7871                                                                                                  [      -6.27322289, -0.00039502, 0.00024200, 7.27282787, 0.99879333, 0.99936298, 0.49324143],
    7872                                                                                                  [      -6.27322301, -0.00039497, 0.00024197, 7.27282804, 0.99879349, 0.99936306, 0.49324134],
    7873                                                                                                  [      -6.27322313, -0.00039492, 0.00024194, 7.27282821, 0.99879364, 0.99936314, 0.49324161],
    7874                                                                                                  [      -6.27322325, -0.00039487, 0.00024191, 7.27282838, 0.99879379, 0.99936322, 0.49324161],
    7875                                                                                                  [      -6.27322337, -0.00039482, 0.00024187, 7.27282855, 0.99879395, 0.99936330, 0.49324164],
    7876                                                                                                  [      -6.27322349, -0.00039477, 0.00024184, 7.27282872, 0.99879410, 0.99936339, 0.49324176],
    7877                                                                                                  [      -6.27322362, -0.00039472, 0.00024181, 7.27282889, 0.99879425, 0.99936347, 0.49324160],
    7878                                                                                                  [      -6.27322374, -0.00039467, 0.00024178, 7.27282907, 0.99879441, 0.99936355, 0.49324157],
    7879                                                                                                  [      -6.27322386, -0.00039462, 0.00024175, 7.27282924, 0.99879456, 0.99936363, 0.49324158],
    7880                                                                                                  [      -6.27322398, -0.00039457, 0.00024172, 7.27282941, 0.99879472, 0.99936371, 0.49324166],
    7881                                                                                                  [      -6.27322410, -0.00039452, 0.00024169, 7.27282958, 0.99879487, 0.99936379, 0.49324172],
    7882                                                                                                  [      -6.27322422, -0.00039447, 0.00024166, 7.27282975, 0.99879502, 0.99936387, 0.49324177],
    7883                                                                                                  [      -6.27322434, -0.00039442, 0.00024163, 7.27282992, 0.99879518, 0.99936395, 0.49324175],
    7884                                                                                                  [      -6.27322446, -0.00039437, 0.00024160, 7.27283009, 0.99879533, 0.99936403, 0.49324173],
    7885                                                                                                  [      -6.27322458, -0.00039432, 0.00024157, 7.27283026, 0.99879548, 0.99936412, 0.49324183],
    7886                                                                                                  [      -6.27322470, -0.00039427, 0.00024154, 7.27283043, 0.99879564, 0.99936420, 0.49324189],
    7887                                                                                                  [      -6.27322482, -0.00039422, 0.00024150, 7.27283060, 0.99879579, 0.99936428, 0.49324183],
    7888                                                                                                  [      -6.27322494, -0.00039417, 0.00024147, 7.27283077, 0.99879594, 0.99936436, 0.49324176],
    7889                                                                                                  [      -6.27322506, -0.00039412, 0.00024144, 7.27283094, 0.99879610, 0.99936444, 0.49324183],
    7890                                                                                                  [      -6.27322518, -0.00039407, 0.00024141, 7.27283111, 0.99879625, 0.99936452, 0.49324186],
    7891                                                                                                  [      -6.27322530, -0.00039402, 0.00024138, 7.27283128, 0.99879640, 0.99936460, 0.49324198],
    7892                                                                                                  [      -6.27322542, -0.00039397, 0.00024135, 7.27283145, 0.99879656, 0.99936468, 0.49324210],
    7893                                                                                                  [      -6.27322554, -0.00039392, 0.00024132, 7.27283162, 0.99879671, 0.99936476, 0.49324198],
    7894                                                                                                  [      -6.27322566, -0.00039387, 0.00024129, 7.27283179, 0.99879686, 0.99936484, 0.49324205],
    7895                                                                                                  [      -6.27322578, -0.00039382, 0.00024126, 7.27283196, 0.99879702, 0.99936492, 0.49324207],
    7896                                                                                                  [      -6.27322590, -0.00039377, 0.00024123, 7.27283213, 0.99879717, 0.99936501, 0.49324191],
    7897                                                                                                  [      -6.27322602, -0.00039372, 0.00024120, 7.27283230, 0.99879732, 0.99936509, 0.49324201],
    7898                                                                                                  [      -6.27322614, -0.00039367, 0.00024117, 7.27283247, 0.99879748, 0.99936517, 0.49324194],
    7899                                                                                                  [      -6.27322626, -0.00039362, 0.00024114, 7.27283264, 0.99879763, 0.99936525, 0.49324211],
    7900                                                                                                  [      -6.27322638, -0.00039357, 0.00024111, 7.27283281, 0.99879778, 0.99936533, 0.49324210],
    7901                                                                                                  [      -6.27322650, -0.00039352, 0.00024107, 7.27283298, 0.99879793, 0.99936541, 0.49324195],
    7902                                                                                                  [      -6.27322662, -0.00039347, 0.00024104, 7.27283315, 0.99879809, 0.99936549, 0.49324205],
    7903                                                                                                  [      -6.27322674, -0.00039342, 0.00024101, 7.27283332, 0.99879824, 0.99936557, 0.49324210],
    7904                                                                                                  [      -6.27322686, -0.00039337, 0.00024098, 7.27283349, 0.99879839, 0.99936565, 0.49324214],
    7905                                                                                                  [      -6.27322698, -0.00039332, 0.00024095, 7.27283366, 0.99879855, 0.99936573, 0.49324202],
    7906                                                                                                  [      -6.27322710, -0.00039327, 0.00024092, 7.27283383, 0.99879870, 0.99936581, 0.49324209],
    7907                                                                                                  [      -6.27322722, -0.00039322, 0.00024089, 7.27283400, 0.99879885, 0.99936589, 0.49324208],
    7908                                                                                                  [      -6.27322734, -0.00039317, 0.00024086, 7.27283417, 0.99879900, 0.99936597, 0.49324207],
    7909                                                                                                  [      -6.27322746, -0.00039312, 0.00024083, 7.27283434, 0.99879916, 0.99936605, 0.49324215],
    7910                                                                                                  [      -6.27322757, -0.00039307, 0.00024080, 7.27283451, 0.99879931, 0.99936613, 0.49324220],
    7911                                                                                                  [      -6.27322769, -0.00039302, 0.00024077, 7.27283468, 0.99879946, 0.99936621, 0.49324229],
    7912                                                                                                  [      -6.27322781, -0.00039297, 0.00024074, 7.27283485, 0.99879961, 0.99936630, 0.49324226],
    7913                                                                                                  [      -6.27322793, -0.00039292, 0.00024071, 7.27283502, 0.99879977, 0.99936638, 0.49324230],
    7914                                                                                                  [      -6.27322805, -0.00039287, 0.00024068, 7.27283519, 0.99879992, 0.99936646, 0.49324236],
    7915                                                                                                  [      -6.27322817, -0.00039282, 0.00024065, 7.27283535, 0.99880007, 0.99936654, 0.49324229],
    7916                                                                                                  [      -6.27322829, -0.00039277, 0.00024062, 7.27283552, 0.99880022, 0.99936662, 0.49324245],
    7917                                                                                                  [      -6.27322841, -0.00039272, 0.00024059, 7.27283569, 0.99880038, 0.99936670, 0.49324230],
    7918                                                                                                  [      -6.27322853, -0.00039267, 0.00024055, 7.27283586, 0.99880053, 0.99936678, 0.49324241],
    7919                                                                                                  [      -6.27322865, -0.00039262, 0.00024052, 7.27283603, 0.99880068, 0.99936686, 0.49324234],
    7920                                                                                                  [      -6.27322877, -0.00039257, 0.00024049, 7.27283620, 0.99880083, 0.99936694, 0.49324231],
    7921                                                                                                  [      -6.27322889, -0.00039252, 0.00024046, 7.27283637, 0.99880098, 0.99936702, 0.49324244],
    7922                                                                                                  [      -6.27322901, -0.00039247, 0.00024043, 7.27283654, 0.99880114, 0.99936710, 0.49324243],
    7923                                                                                                  [      -6.27322913, -0.00039242, 0.00024040, 7.27283671, 0.99880129, 0.99936718, 0.49324251],
    7924                                                                                                  [      -6.27322924, -0.00039237, 0.00024037, 7.27283688, 0.99880144, 0.99936726, 0.49324242],
    7925                                                                                                  [      -6.27322936, -0.00039232, 0.00024034, 7.27283704, 0.99880159, 0.99936734, 0.49324245],
    7926                                                                                                  [      -6.27322948, -0.00039227, 0.00024031, 7.27283721, 0.99880174, 0.99936742, 0.49324248],
    7927                                                                                                  [      -6.27322960, -0.00039222, 0.00024028, 7.27283738, 0.99880190, 0.99936750, 0.49324240],
    7928                                                                                                  [      -6.27322972, -0.00039217, 0.00024025, 7.27283755, 0.99880205, 0.99936758, 0.49324256],
    7929                                                                                                  [      -6.27322984, -0.00039212, 0.00024022, 7.27283772, 0.99880220, 0.99936766, 0.49324270],
    7930                                                                                                  [      -6.27322996, -0.00039207, 0.00024019, 7.27283789, 0.99880235, 0.99936774, 0.49324265],
    7931                                                                                                  [      -6.27323008, -0.00039202, 0.00024016, 7.27283806, 0.99880250, 0.99936782, 0.49324254],
    7932                                                                                                  [      -6.27323020, -0.00039197, 0.00024013, 7.27283822, 0.99880265, 0.99936790, 0.49324268],
    7933                                                                                                  [      -6.27323032, -0.00039192, 0.00024010, 7.27283839, 0.99880281, 0.99936798, 0.49324263],
    7934                                                                                                  [      -6.27323043, -0.00039187, 0.00024007, 7.27283856, 0.99880296, 0.99936806, 0.49324257],
    7935                                                                                                  [      -6.27323055, -0.00039182, 0.00024004, 7.27283873, 0.99880311, 0.99936814, 0.49324271],
    7936                                                                                                  [      -6.27323067, -0.00039177, 0.00024001, 7.27283890, 0.99880326, 0.99936822, 0.49324263],
    7937                                                                                                  [      -6.27323079, -0.00039172, 0.00023998, 7.27283907, 0.99880341, 0.99936830, 0.49324259],
    7938                                                                                                  [      -6.27323091, -0.00039167, 0.00023995, 7.27283923, 0.99880356, 0.99936838, 0.49324272],
    7939                                                                                                  [      -6.27323103, -0.00039162, 0.00023992, 7.27283940, 0.99880372, 0.99936846, 0.49324266],
    7940                                                                                                  [      -6.27323115, -0.00039158, 0.00023989, 7.27283957, 0.99880387, 0.99936854, 0.49324277],
    7941                                                                                                  [      -6.27323126, -0.00039153, 0.00023985, 7.27283974, 0.99880402, 0.99936862, 0.49324283],
    7942                                                                                                  [      -6.27323138, -0.00039148, 0.00023982, 7.27283991, 0.99880417, 0.99936870, 0.49324288],
    7943                                                                                                  [      -6.27323150, -0.00039143, 0.00023979, 7.27284008, 0.99880432, 0.99936878, 0.49324274],
    7944                                                                                                  [      -6.27323162, -0.00039138, 0.00023976, 7.27284024, 0.99880447, 0.99936886, 0.49324289],
    7945                                                                                                  [      -6.27323174, -0.00039133, 0.00023973, 7.27284041, 0.99880462, 0.99936894, 0.49324287],
    7946                                                                                                  [      -6.27323186, -0.00039128, 0.00023970, 7.27284058, 0.99880477, 0.99936902, 0.49324285],
    7947                                                                                                  [      -6.27323198, -0.00039123, 0.00023967, 7.27284075, 0.99880493, 0.99936910, 0.49324283],
    7948                                                                                                  [      -6.27323209, -0.00039118, 0.00023964, 7.27284091, 0.99880508, 0.99936918, 0.49324290],
    7949                                                                                                  [      -6.27323221, -0.00039113, 0.00023961, 7.27284108, 0.99880523, 0.99936926, 0.49324280],
    7950                                                                                                  [      -6.27323233, -0.00039108, 0.00023958, 7.27284125, 0.99880538, 0.99936934, 0.49324296],
    7951                                                                                                  [      -6.27323245, -0.00039103, 0.00023955, 7.27284142, 0.99880553, 0.99936942, 0.49324284],
    7952                                                                                                  [      -6.27323257, -0.00039098, 0.00023952, 7.27284159, 0.99880568, 0.99936950, 0.49324285],
    7953                                                                                                  [      -6.27323268, -0.00039093, 0.00023949, 7.27284175, 0.99880583, 0.99936958, 0.49324302],
    7954                                                                                                  [      -6.27323280, -0.00039088, 0.00023946, 7.27284192, 0.99880598, 0.99936966, 0.49324295],
    7955                                                                                                  [      -6.27323292, -0.00039083, 0.00023943, 7.27284209, 0.99880613, 0.99936974, 0.49324320],
    7956                                                                                                  [      -6.27323304, -0.00039078, 0.00023940, 7.27284226, 0.99880628, 0.99936982, 0.49324315],
    7957                                                                                                  [      -6.27323316, -0.00039073, 0.00023937, 7.27284242, 0.99880643, 0.99936990, 0.49324296],
    7958                                                                                                  [      -6.27323328, -0.00039069, 0.00023934, 7.27284259, 0.99880658, 0.99936997, 0.49324298],
    7959                                                                                                  [      -6.27323339, -0.00039064, 0.00023931, 7.27284276, 0.99880674, 0.99937005, 0.49324310],
    7960                                                                                                  [      -6.27323351, -0.00039059, 0.00023928, 7.27284292, 0.99880689, 0.99937013, 0.49324316],
    7961                                                                                                  [      -6.27323363, -0.00039054, 0.00023925, 7.27284309, 0.99880704, 0.99937021, 0.49324305],
    7962                                                                                                  [      -6.27323375, -0.00039049, 0.00023922, 7.27284326, 0.99880719, 0.99937029, 0.49324317],
    7963                                                                                                  [      -6.27323387, -0.00039044, 0.00023919, 7.27284343, 0.99880734, 0.99937037, 0.49324316],
    7964                                                                                                  [      -6.27323398, -0.00039039, 0.00023916, 7.27284359, 0.99880749, 0.99937045, 0.49324322],
    7965                                                                                                  [      -6.27323410, -0.00039034, 0.00023913, 7.27284376, 0.99880764, 0.99937053, 0.49324310],
    7966                                                                                                  [      -6.27323422, -0.00039029, 0.00023910, 7.27284393, 0.99880779, 0.99937061, 0.49324325],
    7967                                                                                                  [      -6.27323434, -0.00039024, 0.00023907, 7.27284409, 0.99880794, 0.99937069, 0.49324319],
    7968                                                                                                  [      -6.27323445, -0.00039019, 0.00023904, 7.27284426, 0.99880809, 0.99937077, 0.49324326],
    7969                                                                                                  [      -6.27323457, -0.00039014, 0.00023901, 7.27284443, 0.99880824, 0.99937085, 0.49324329],
    7970                                                                                                  [      -6.27323469, -0.00039009, 0.00023898, 7.27284460, 0.99880839, 0.99937093, 0.49324333],
    7971                                                                                                  [      -6.27323481, -0.00039005, 0.00023895, 7.27284476, 0.99880854, 0.99937101, 0.49324318],
    7972                                                                                                  [      -6.27323493, -0.00039000, 0.00023892, 7.27284493, 0.99880869, 0.99937109, 0.49324318],
    7973                                                                                                  [      -6.27323504, -0.00038995, 0.00023889, 7.27284510, 0.99880884, 0.99937117, 0.49324337],
    7974                                                                                                  [      -6.27323516, -0.00038990, 0.00023886, 7.27284526, 0.99880899, 0.99937124, 0.49324337],
    7975                                                                                                  [      -6.27323528, -0.00038985, 0.00023883, 7.27284543, 0.99880914, 0.99937132, 0.49324350],
    7976                                                                                                  [      -6.27323540, -0.00038980, 0.00023880, 7.27284560, 0.99880929, 0.99937140, 0.49324334],
    7977                                                                                                  [      -6.27323551, -0.00038975, 0.00023877, 7.27284576, 0.99880944, 0.99937148, 0.49324341],
    7978                                                                                                  [      -6.27323563, -0.00038970, 0.00023874, 7.27284593, 0.99880959, 0.99937156, 0.49324338],
    7979                                                                                                  [      -6.27323575, -0.00038965, 0.00023871, 7.27284609, 0.99880974, 0.99937164, 0.49324344],
    7980                                                                                                  [      -6.27323587, -0.00038960, 0.00023868, 7.27284626, 0.99880989, 0.99937172, 0.49324362],
    7981                                                                                                  [      -6.27323598, -0.00038955, 0.00023865, 7.27284643, 0.99881004, 0.99937180, 0.49324347],
    7982                                                                                                  [      -6.27323610, -0.00038951, 0.00023862, 7.27284659, 0.99881019, 0.99937188, 0.49324345],
    7983                                                                                                  [      -6.27323622, -0.00038946, 0.00023859, 7.27284676, 0.99881034, 0.99937196, 0.49324353],
    7984                                                                                                  [      -6.27323633, -0.00038941, 0.00023856, 7.27284693, 0.99881049, 0.99937204, 0.49324361],
    7985                                                                                                  [      -6.27323645, -0.00038936, 0.00023853, 7.27284709, 0.99881064, 0.99937211, 0.49324364],
    7986                                                                                                  [      -6.27323657, -0.00038931, 0.00023850, 7.27284726, 0.99881079, 0.99937219, 0.49324360],
    7987                                                                                                  [      -6.27323669, -0.00038926, 0.00023847, 7.27284743, 0.99881094, 0.99937227, 0.49324354],
    7988                                                                                                  [      -6.27323680, -0.00038921, 0.00023844, 7.27284759, 0.99881109, 0.99937235, 0.49324359],
    7989                                                                                                  [      -6.27323692, -0.00038916, 0.00023841, 7.27284776, 0.99881124, 0.99937243, 0.49324355],
    7990                                                                                                  [      -6.27323704, -0.00038911, 0.00023838, 7.27284792, 0.99881139, 0.99937251, 0.49324369],
    7991                                                                                                  [      -6.27323715, -0.00038907, 0.00023835, 7.27284809, 0.99881154, 0.99937259, 0.49324366],
    7992                                                                                                  [      -6.27323727, -0.00038902, 0.00023832, 7.27284826, 0.99881169, 0.99937267, 0.49324363],
    7993                                                                                                  [      -6.27323739, -0.00038897, 0.00023829, 7.27284842, 0.99881184, 0.99937275, 0.49324368],
    7994                                                                                                  [      -6.27323751, -0.00038892, 0.00023826, 7.27284859, 0.99881198, 0.99937282, 0.49324385],
    7995                                                                                                  [      -6.27323762, -0.00038887, 0.00023823, 7.27284875, 0.99881213, 0.99937290, 0.49324375],
    7996                                                                                                  [      -6.27323774, -0.00038882, 0.00023820, 7.27284892, 0.99881228, 0.99937298, 0.49324381],
    7997                                                                                                  [      -6.27323786, -0.00038877, 0.00023817, 7.27284908, 0.99881243, 0.99937306, 0.49324383],
    7998                                                                                                  [      -6.27323797, -0.00038872, 0.00023814, 7.27284925, 0.99881258, 0.99937314, 0.49324389],
    7999                                                                                                  [      -6.27323809, -0.00038867, 0.00023811, 7.27284942, 0.99881273, 0.99937322, 0.49324387],
    8000                                                                                                  [      -6.27323821, -0.00038863, 0.00023808, 7.27284958, 0.99881288, 0.99937330, 0.49324385],
    8001                                                                                                  [      -6.27323832, -0.00038858, 0.00023805, 7.27284975, 0.99881303, 0.99937338, 0.49324378],
    8002                                                                                                  [      -6.27323844, -0.00038853, 0.00023802, 7.27284991, 0.99881318, 0.99937345, 0.49324377],
    8003                                                                                                  [      -6.27323856, -0.00038848, 0.00023799, 7.27285008, 0.99881333, 0.99937353, 0.49324388],
    8004                                                                                                  [      -6.27323867, -0.00038843, 0.00023796, 7.27285024, 0.99881348, 0.99937361, 0.49324392],
    8005                                                                                                  [      -6.27323879, -0.00038838, 0.00023793, 7.27285041, 0.99881362, 0.99937369, 0.49324396],
    8006                                                                                                  [      -6.27323891, -0.00038833, 0.00023790, 7.27285057, 0.99881377, 0.99937377, 0.49324387],
    8007                                                                                                  [      -6.27323902, -0.00038828, 0.00023787, 7.27285074, 0.99881392, 0.99937385, 0.49324395],
    8008                                                                                                  [      -6.27323914, -0.00038824, 0.00023784, 7.27285090, 0.99881407, 0.99937393, 0.49324401],
    8009                                                                                                  [      -6.27323926, -0.00038819, 0.00023781, 7.27285107, 0.99881422, 0.99937400, 0.49324397],
    8010                                                                                                  [      -6.27323937, -0.00038814, 0.00023778, 7.27285124, 0.99881437, 0.99937408, 0.49324409],
    8011                                                                                                  [      -6.27323949, -0.00038809, 0.00023775, 7.27285140, 0.99881452, 0.99937416, 0.49324390],
    8012                                                                                                  [      -6.27323961, -0.00038804, 0.00023772, 7.27285157, 0.99881467, 0.99937424, 0.49324412],
    8013                                                                                                  [      -6.27323972, -0.00038799, 0.00023769, 7.27285173, 0.99881481, 0.99937432, 0.49324405],
    8014                                                                                                  [      -6.27323984, -0.00038794, 0.00023766, 7.27285190, 0.99881496, 0.99937440, 0.49324413],
    8015                                                                                                  [      -6.27323996, -0.00038789, 0.00023763, 7.27285206, 0.99881511, 0.99937448, 0.49324398],
    8016                                                                                                  [      -6.27324007, -0.00038785, 0.00023760, 7.27285223, 0.99881526, 0.99937455, 0.49324408],
    8017                                                                                                  [      -6.27324019, -0.00038780, 0.00023757, 7.27285239, 0.99881541, 0.99937463, 0.49324411],
    8018                                                                                                  [      -6.27324030, -0.00038775, 0.00023754, 7.27285256, 0.99881556, 0.99937471, 0.49324404],
    8019                                                                                                  [      -6.27324042, -0.00038770, 0.00023751, 7.27285272, 0.99881571, 0.99937479, 0.49324417],
    8020                                                                                                  [      -6.27324054, -0.00038765, 0.00023748, 7.27285289, 0.99881585, 0.99937487, 0.49324417],
    8021                                                                                                  [      -6.27324065, -0.00038760, 0.00023745, 7.27285305, 0.99881600, 0.99937495, 0.49324417],
    8022                                                                                                  [      -6.27324077, -0.00038755, 0.00023742, 7.27285321, 0.99881615, 0.99937502, 0.49324410],
    8023                                                                                                  [      -6.27324089, -0.00038751, 0.00023739, 7.27285338, 0.99881630, 0.99937510, 0.49324415],
    8024                                                                                                  [      -6.27324100, -0.00038746, 0.00023736, 7.27285354, 0.99881645, 0.99937518, 0.49324415],
    8025                                                                                                  [      -6.27324112, -0.00038741, 0.00023733, 7.27285371, 0.99881660, 0.99937526, 0.49324428],
    8026                                                                                                  [      -6.27324123, -0.00038736, 0.00023730, 7.27285387, 0.99881674, 0.99937534, 0.49324427],
    8027                                                                                                  [      -6.27324135, -0.00038731, 0.00023727, 7.27285404, 0.99881689, 0.99937541, 0.49324429],
    8028                                                                                                  [      -6.27324147, -0.00038726, 0.00023724, 7.27285420, 0.99881704, 0.99937549, 0.49324429],
    8029                                                                                                  [      -6.27324158, -0.00038722, 0.00023721, 7.27285437, 0.99881719, 0.99937557, 0.49324431],
    8030                                                                                                  [      -6.27324170, -0.00038717, 0.00023718, 7.27285453, 0.99881734, 0.99937565, 0.49324418],
    8031                                                                                                  [      -6.27324181, -0.00038712, 0.00023715, 7.27285469, 0.99881748, 0.99937573, 0.49324436],
    8032                                                                                                  [      -6.27324193, -0.00038707, 0.00023712, 7.27285486, 0.99881763, 0.99937581, 0.49324427],
    8033                                                                                                  [      -6.27324205, -0.00038702, 0.00023709, 7.27285502, 0.99881778, 0.99937588, 0.49324438],
    8034                                                                                                  [      -6.27324216, -0.00038697, 0.00023706, 7.27285519, 0.99881793, 0.99937596, 0.49324441],
    8035                                                                                                  [      -6.27324228, -0.00038693, 0.00023704, 7.27285535, 0.99881807, 0.99937604, 0.49324425],
    8036                                                                                                  [      -6.27324239, -0.00038688, 0.00023701, 7.27285552, 0.99881822, 0.99937612, 0.49324444],
    8037                                                                                                  [      -6.27324251, -0.00038683, 0.00023698, 7.27285568, 0.99881837, 0.99937620, 0.49324437],
    8038                                                                                                  [      -6.27324262, -0.00038678, 0.00023695, 7.27285584, 0.99881852, 0.99937627, 0.49324451],
    8039                                                                                                  [      -6.27324274, -0.00038673, 0.00023692, 7.27285601, 0.99881867, 0.99937635, 0.49324443],
    8040                                                                                                  [      -6.27324286, -0.00038668, 0.00023689, 7.27285617, 0.99881881, 0.99937643, 0.49324463],
    8041                                                                                                  [      -6.27324297, -0.00038664, 0.00023686, 7.27285634, 0.99881896, 0.99937651, 0.49324464],
    8042                                                                                                  [      -6.27324309, -0.00038659, 0.00023683, 7.27285650, 0.99881911, 0.99937659, 0.49324460],
    8043                                                                                                  [      -6.27324320, -0.00038654, 0.00023680, 7.27285666, 0.99881926, 0.99937666, 0.49324474],
    8044                                                                                                  [      -6.27324332, -0.00038649, 0.00023677, 7.27285683, 0.99881940, 0.99937674, 0.49324457],
    8045                                                                                                  [      -6.27324343, -0.00038644, 0.00023674, 7.27285699, 0.99881955, 0.99937682, 0.49324464],
    8046                                                                                                  [      -6.27324355, -0.00038639, 0.00023671, 7.27285716, 0.99881970, 0.99937690, 0.49324452],
    8047                                                                                                  [      -6.27324366, -0.00038635, 0.00023668, 7.27285732, 0.99881985, 0.99937697, 0.49324451],
    8048                                                                                                  [      -6.27324378, -0.00038630, 0.00023665, 7.27285748, 0.99881999, 0.99937705, 0.49324463],
    8049                                                                                                  [      -6.27324390, -0.00038625, 0.00023662, 7.27285765, 0.99882014, 0.99937713, 0.49324460],
    8050                                                                                                  [      -6.27324401, -0.00038620, 0.00023659, 7.27285781, 0.99882029, 0.99937721, 0.49324461],
    8051                                                                                                  [      -6.27324413, -0.00038615, 0.00023656, 7.27285797, 0.99882043, 0.99937729, 0.49324473],
    8052                                                                                                  [      -6.27324424, -0.00038610, 0.00023653, 7.27285814, 0.99882058, 0.99937736, 0.49324474],
    8053                                                                                                  [      -6.27324436, -0.00038606, 0.00023650, 7.27285830, 0.99882073, 0.99937744, 0.49324465],
    8054                                                                                                  [      -6.27324447, -0.00038601, 0.00023647, 7.27285846, 0.99882088, 0.99937752, 0.49324475],
    8055                                                                                                  [      -6.27324459, -0.00038596, 0.00023644, 7.27285863, 0.99882102, 0.99937760, 0.49324482],
    8056                                                                                                  [      -6.27324470, -0.00038591, 0.00023641, 7.27285879, 0.99882117, 0.99937767, 0.49324468],
    8057                                                                                                  [      -6.27324482, -0.00038586, 0.00023638, 7.27285895, 0.99882132, 0.99937775, 0.49324472],
    8058                                                                                                  [      -6.27324493, -0.00038582, 0.00023636, 7.27285912, 0.99882146, 0.99937783, 0.49324478],
    8059                                                                                                  [      -6.27324505, -0.00038577, 0.00023633, 7.27285928, 0.99882161, 0.99937791, 0.49324486],
    8060                                                                                                  [      -6.27324516, -0.00038572, 0.00023630, 7.27285944, 0.99882176, 0.99937798, 0.49324500],
    8061                                                                                                  [      -6.27324528, -0.00038567, 0.00023627, 7.27285961, 0.99882190, 0.99937806, 0.49324482],
    8062                                                                                                  [      -6.27324539, -0.00038562, 0.00023624, 7.27285977, 0.99882205, 0.99937814, 0.49324496],
    8063                                                                                                  [      -6.27324551, -0.00038558, 0.00023621, 7.27285993, 0.99882220, 0.99937822, 0.49324495],
    8064                                                                                                  [      -6.27324562, -0.00038553, 0.00023618, 7.27286009, 0.99882234, 0.99937829, 0.49324492],
    8065                                                                                                  [      -6.27324574, -0.00038548, 0.00023615, 7.27286026, 0.99882249, 0.99937837, 0.49324476],
    8066                                                                                                  [      -6.27324585, -0.00038543, 0.00023612, 7.27286042, 0.99882264, 0.99937845, 0.49324499],
    8067                                                                                                  [      -6.27324597, -0.00038538, 0.00023609, 7.27286058, 0.99882278, 0.99937853, 0.49324495],
    8068                                                                                                  [      -6.27324608, -0.00038534, 0.00023606, 7.27286075, 0.99882293, 0.99937860, 0.49324497],
    8069                                                                                                  [      -6.27324620, -0.00038529, 0.00023603, 7.27286091, 0.99882308, 0.99937868, 0.49324499],
    8070                                                                                                  [      -6.27324631, -0.00038524, 0.00023600, 7.27286107, 0.99882322, 0.99937876, 0.49324496],
    8071                                                                                                  [      -6.27324643, -0.00038519, 0.00023597, 7.27286123, 0.99882337, 0.99937884, 0.49324507],
    8072                                                                                                  [      -6.27324654, -0.00038514, 0.00023594, 7.27286140, 0.99882352, 0.99937891, 0.49324506],
    8073                                                                                                  [      -6.27324666, -0.00038510, 0.00023591, 7.27286156, 0.99882366, 0.99937899, 0.49324519],
    8074                                                                                                  [      -6.27324677, -0.00038505, 0.00023588, 7.27286172, 0.99882381, 0.99937907, 0.49324510],
    8075                                                                                                  [      -6.27324689, -0.00038500, 0.00023586, 7.27286188, 0.99882396, 0.99937914, 0.49324509],
    8076                                                                                                  [      -6.27324700, -0.00038495, 0.00023583, 7.27286205, 0.99882410, 0.99937922, 0.49324510],
    8077                                                                                                  [      -6.27324711, -0.00038490, 0.00023580, 7.27286221, 0.99882425, 0.99937930, 0.49324517],
    8078                                                                                                  [      -6.27324723, -0.00038486, 0.00023577, 7.27286237, 0.99882440, 0.99937938, 0.49324527],
    8079                                                                                                  [      -6.27324734, -0.00038481, 0.00023574, 7.27286253, 0.99882454, 0.99937945, 0.49324519],
    8080                                                                                                  [      -6.27324746, -0.00038476, 0.00023571, 7.27286270, 0.99882469, 0.99937953, 0.49324516],
    8081                                                                                                  [      -6.27324757, -0.00038471, 0.00023568, 7.27286286, 0.99882483, 0.99937961, 0.49324513],
    8082                                                                                                  [      -6.27324769, -0.00038467, 0.00023565, 7.27286302, 0.99882498, 0.99937968, 0.49324519],
    8083                                                                                                  [      -6.27324780, -0.00038462, 0.00023562, 7.27286318, 0.99882513, 0.99937976, 0.49324509],
    8084                                                                                                  [      -6.27324792, -0.00038457, 0.00023559, 7.27286335, 0.99882527, 0.99937984, 0.49324532],
    8085                                                                                                  [      -6.27324803, -0.00038452, 0.00023556, 7.27286351, 0.99882542, 0.99937992, 0.49324518],
    8086                                                                                                  [      -6.27324814, -0.00038447, 0.00023553, 7.27286367, 0.99882556, 0.99937999, 0.49324537],
    8087                                                                                                  [      -6.27324826, -0.00038443, 0.00023550, 7.27286383, 0.99882571, 0.99938007, 0.49324536],
    8088                                                                                                  [      -6.27324837, -0.00038438, 0.00023547, 7.27286399, 0.99882586, 0.99938015, 0.49324540],
    8089                                                                                                  [      -6.27324849, -0.00038433, 0.00023545, 7.27286416, 0.99882600, 0.99938022, 0.49324531],
    8090                                                                                                  [      -6.27324860, -0.00038428, 0.00023542, 7.27286432, 0.99882615, 0.99938030, 0.49324544],
    8091                                                                                                  [      -6.27324872, -0.00038424, 0.00023539, 7.27286448, 0.99882629, 0.99938038, 0.49324534],
    8092                                                                                                  [      -6.27324883, -0.00038419, 0.00023536, 7.27286464, 0.99882644, 0.99938045, 0.49324551],
    8093                                                                                                  [      -6.27324894, -0.00038414, 0.00023533, 7.27286480, 0.99882658, 0.99938053, 0.49324541],
    8094                                                                                                  [      -6.27324906, -0.00038409, 0.00023530, 7.27286497, 0.99882673, 0.99938061, 0.49324551],
    8095                                                                                                  [      -6.27324917, -0.00038405, 0.00023527, 7.27286513, 0.99882688, 0.99938068, 0.49324541],
    8096                                                                                                  [      -6.27324929, -0.00038400, 0.00023524, 7.27286529, 0.99882702, 0.99938076, 0.49324543],
    8097                                                                                                  [      -6.27324940, -0.00038395, 0.00023521, 7.27286545, 0.99882717, 0.99938084, 0.49324548],
    8098                                                                                                  [      -6.27324951, -0.00038390, 0.00023518, 7.27286561, 0.99882731, 0.99938092, 0.49324547],
    8099                                                                                                  [      -6.27324963, -0.00038385, 0.00023515, 7.27286577, 0.99882746, 0.99938099, 0.49324552],
    8100                                                                                                  [      -6.27324974, -0.00038381, 0.00023512, 7.27286594, 0.99882760, 0.99938107, 0.49324561],
    8101                                                                                                  [      -6.27324986, -0.00038376, 0.00023509, 7.27286610, 0.99882775, 0.99938115, 0.49324575],
    8102                                                                                                  [      -6.27324997, -0.00038371, 0.00023507, 7.27286626, 0.99882789, 0.99938122, 0.49324555],
    8103                                                                                                  [      -6.27325008, -0.00038366, 0.00023504, 7.27286642, 0.99882804, 0.99938130, 0.49324561],
    8104                                                                                                  [      -6.27325020, -0.00038362, 0.00023501, 7.27286658, 0.99882818, 0.99938138, 0.49324560],
    8105                                                                                                  [      -6.27325031, -0.00038357, 0.00023498, 7.27286674, 0.99882833, 0.99938145, 0.49324567],
    8106                                                                                                  [      -6.27325043, -0.00038352, 0.00023495, 7.27286690, 0.99882847, 0.99938153, 0.49324557],
    8107                                                                                                  [      -6.27325054, -0.00038347, 0.00023492, 7.27286706, 0.99882862, 0.99938161, 0.49324572],
    8108                                                                                                  [      -6.27325065, -0.00038343, 0.00023489, 7.27286723, 0.99882877, 0.99938168, 0.49324570],
    8109                                                                                                  [      -6.27325077, -0.00038338, 0.00023486, 7.27286739, 0.99882891, 0.99938176, 0.49324576],
    8110                                                                                                  [      -6.27325088, -0.00038333, 0.00023483, 7.27286755, 0.99882906, 0.99938184, 0.49324591],
    8111                                                                                                  [      -6.27325099, -0.00038328, 0.00023480, 7.27286771, 0.99882920, 0.99938191, 0.49324569],
    8112                                                                                                  [      -6.27325111, -0.00038324, 0.00023477, 7.27286787, 0.99882935, 0.99938199, 0.49324559],
    8113                                                                                                  [      -6.27325122, -0.00038319, 0.00023475, 7.27286803, 0.99882949, 0.99938207, 0.49324564],
    8114                                                                                                  [      -6.27325133, -0.00038314, 0.00023472, 7.27286819, 0.99882964, 0.99938214, 0.49324576],
    8115                                                                                                  [      -6.27325145, -0.00038309, 0.00023469, 7.27286835, 0.99882978, 0.99938222, 0.49324581],
    8116                                                                                                  [      -6.27325156, -0.00038305, 0.00023466, 7.27286851, 0.99882993, 0.99938229, 0.49324590],
    8117                                                                                                  [      -6.27325168, -0.00038300, 0.00023463, 7.27286868, 0.99883007, 0.99938237, 0.49324573],
    8118                                                                                                  [      -6.27325179, -0.00038295, 0.00023460, 7.27286884, 0.99883021, 0.99938245, 0.49324578],
    8119                                                                                                  [      -6.27325190, -0.00038291, 0.00023457, 7.27286900, 0.99883036, 0.99938252, 0.49324585],
    8120                                                                                                  [      -6.27325202, -0.00038286, 0.00023454, 7.27286916, 0.99883050, 0.99938260, 0.49324579],
    8121                                                                                                  [      -6.27325213, -0.00038281, 0.00023451, 7.27286932, 0.99883065, 0.99938268, 0.49324589],
    8122                                                                                                  [      -6.27325224, -0.00038276, 0.00023448, 7.27286948, 0.99883079, 0.99938275, 0.49324588],
    8123                                                                                                  [      -6.27325236, -0.00038272, 0.00023446, 7.27286964, 0.99883094, 0.99938283, 0.49324586],
    8124                                                                                                  [      -6.27325247, -0.00038267, 0.00023443, 7.27286980, 0.99883108, 0.99938291, 0.49324588],
    8125                                                                                                  [      -6.27325258, -0.00038262, 0.00023440, 7.27286996, 0.99883123, 0.99938298, 0.49324600],
    8126                                                                                                  [      -6.27325269, -0.00038257, 0.00023437, 7.27287012, 0.99883137, 0.99938306, 0.49324602],
    8127                                                                                                  [      -6.27325281, -0.00038253, 0.00023434, 7.27287028, 0.99883152, 0.99938313, 0.49324593],
    8128                                                                                                  [      -6.27325292, -0.00038248, 0.00023431, 7.27287044, 0.99883166, 0.99938321, 0.49324600],
    8129                                                                                                  [      -6.27325303, -0.00038243, 0.00023428, 7.27287060, 0.99883180, 0.99938329, 0.49324594],
    8130                                                                                                  [      -6.27325315, -0.00038238, 0.00023425, 7.27287076, 0.99883195, 0.99938336, 0.49324594],
    8131                                                                                                  [      -6.27325326, -0.00038234, 0.00023422, 7.27287092, 0.99883209, 0.99938344, 0.49324616],
    8132                                                                                                  [      -6.27325337, -0.00038229, 0.00023419, 7.27287108, 0.99883224, 0.99938352, 0.49324609],
    8133                                                                                                  [      -6.27325349, -0.00038224, 0.00023417, 7.27287124, 0.99883238, 0.99938359, 0.49324615],
    8134                                                                                                  [      -6.27325360, -0.00038220, 0.00023414, 7.27287140, 0.99883253, 0.99938367, 0.49324616],
    8135                                                                                                  [      -6.27325371, -0.00038215, 0.00023411, 7.27287156, 0.99883267, 0.99938374, 0.49324616],
    8136                                                                                                  [      -6.27325383, -0.00038210, 0.00023408, 7.27287172, 0.99883281, 0.99938382, 0.49324603],
    8137                                                                                                  [      -6.27325394, -0.00038205, 0.00023405, 7.27287188, 0.99883296, 0.99938390, 0.49324614],
    8138                                                                                                  [      -6.27325405, -0.00038201, 0.00023402, 7.27287204, 0.99883310, 0.99938397, 0.49324629],
    8139                                                                                                  [      -6.27325416, -0.00038196, 0.00023399, 7.27287220, 0.99883325, 0.99938405, 0.49324628],
    8140                                                                                                  [      -6.27325428, -0.00038191, 0.00023396, 7.27287236, 0.99883339, 0.99938412, 0.49324634],
    8141                                                                                                  [      -6.27325439, -0.00038187, 0.00023393, 7.27287252, 0.99883353, 0.99938420, 0.49324618],
    8142                                                                                                  [      -6.27325450, -0.00038182, 0.00023391, 7.27287268, 0.99883368, 0.99938428, 0.49324620],
    8143                                                                                                  [      -6.27325462, -0.00038177, 0.00023388, 7.27287284, 0.99883382, 0.99938435, 0.49324621],
    8144                                                                                                  [      -6.27325473, -0.00038172, 0.00023385, 7.27287300, 0.99883397, 0.99938443, 0.49324620],
    8145                                                                                                  [      -6.27325484, -0.00038168, 0.00023382, 7.27287316, 0.99883411, 0.99938450, 0.49324631],
    8146                                                                                                  [      -6.27325495, -0.00038163, 0.00023379, 7.27287332, 0.99883425, 0.99938458, 0.49324616],
    8147                                                                                                  [      -6.27325507, -0.00038158, 0.00023376, 7.27287348, 0.99883440, 0.99938466, 0.49324629],
    8148                                                                                                  [      -6.27325518, -0.00038154, 0.00023373, 7.27287364, 0.99883454, 0.99938473, 0.49324635],
    8149                                                                                                  [      -6.27325529, -0.00038149, 0.00023370, 7.27287380, 0.99883469, 0.99938481, 0.49324648],
    8150                                                                                                  [      -6.27325540, -0.00038144, 0.00023367, 7.27287396, 0.99883483, 0.99938488, 0.49324638],
    8151                                                                                                  [      -6.27325552, -0.00038140, 0.00023365, 7.27287412, 0.99883497, 0.99938496, 0.49324637],
    8152                                                                                                  [      -6.27325563, -0.00038135, 0.00023362, 7.27287428, 0.99883512, 0.99938503, 0.49324641],
    8153                                                                                                  [      -6.27325574, -0.00038130, 0.00023359, 7.27287444, 0.99883526, 0.99938511, 0.49324645],
    8154                                                                                                  [      -6.27325585, -0.00038125, 0.00023356, 7.27287460, 0.99883540, 0.99938519, 0.49324647],
    8155                                                                                                  [      -6.27325597, -0.00038121, 0.00023353, 7.27287476, 0.99883555, 0.99938526, 0.49324642],
    8156                                                                                                  [      -6.27325608, -0.00038116, 0.00023350, 7.27287492, 0.99883569, 0.99938534, 0.49324651],
    8157                                                                                                  [      -6.27325619, -0.00038111, 0.00023347, 7.27287508, 0.99883583, 0.99938541, 0.49324649],
    8158                                                                                                  [      -6.27325630, -0.00038107, 0.00023344, 7.27287524, 0.99883598, 0.99938549, 0.49324647],
    8159                                                                                                  [      -6.27325642, -0.00038102, 0.00023342, 7.27287540, 0.99883612, 0.99938556, 0.49324658],
    8160                                                                                                  [      -6.27325653, -0.00038097, 0.00023339, 7.27287555, 0.99883626, 0.99938564, 0.49324664],
    8161                                                                                                  [      -6.27325664, -0.00038093, 0.00023336, 7.27287571, 0.99883641, 0.99938572, 0.49324649],
    8162                                                                                                  [      -6.27325675, -0.00038088, 0.00023333, 7.27287587, 0.99883655, 0.99938579, 0.49324658],
    8163                                                                                                  [      -6.27325686, -0.00038083, 0.00023330, 7.27287603, 0.99883669, 0.99938587, 0.49324653],
    8164                                                                                                  [      -6.27325698, -0.00038079, 0.00023327, 7.27287619, 0.99883684, 0.99938594, 0.49324658],
    8165                                                                                                  [      -6.27325709, -0.00038074, 0.00023324, 7.27287635, 0.99883698, 0.99938602, 0.49324649],
    8166                                                                                                  [      -6.27325720, -0.00038069, 0.00023321, 7.27287651, 0.99883712, 0.99938609, 0.49324663],
    8167                                                                                                  [      -6.27325731, -0.00038065, 0.00023319, 7.27287667, 0.99883727, 0.99938617, 0.49324670],
    8168                                                                                                  [      -6.27325742, -0.00038060, 0.00023316, 7.27287683, 0.99883741, 0.99938624, 0.49324665],
    8169                                                                                                  [      -6.27325754, -0.00038055, 0.00023313, 7.27287699, 0.99883755, 0.99938632, 0.49324681],
    8170                                                                                                  [      -6.27325765, -0.00038050, 0.00023310, 7.27287714, 0.99883769, 0.99938640, 0.49324678],
    8171                                                                                                  [      -6.27325776, -0.00038046, 0.00023307, 7.27287730, 0.99883784, 0.99938647, 0.49324668],
    8172                                                                                                  [      -6.27325787, -0.00038041, 0.00023304, 7.27287746, 0.99883798, 0.99938655, 0.49324676],
    8173                                                                                                  [      -6.27325798, -0.00038036, 0.00023301, 7.27287762, 0.99883812, 0.99938662, 0.49324679],
    8174                                                                                                  [      -6.27325810, -0.00038032, 0.00023299, 7.27287778, 0.99883827, 0.99938670, 0.49324680],
    8175                                                                                                  [      -6.27325821, -0.00038027, 0.00023296, 7.27287794, 0.99883841, 0.99938677, 0.49324686],
    8176                                                                                                  [      -6.27325832, -0.00038022, 0.00023293, 7.27287810, 0.99883855, 0.99938685, 0.49324703],
    8177                                                                                                  [      -6.27325843, -0.00038018, 0.00023290, 7.27287825, 0.99883869, 0.99938692, 0.49324683],
    8178                                                                                                  [      -6.27325854, -0.00038013, 0.00023287, 7.27287841, 0.99883884, 0.99938700, 0.49324688],
    8179                                                                                                  [      -6.27325866, -0.00038008, 0.00023284, 7.27287857, 0.99883898, 0.99938707, 0.49324687],
    8180                                                                                                  [      -6.27325877, -0.00038004, 0.00023281, 7.27287873, 0.99883912, 0.99938715, 0.49324692],
    8181                                                                                                  [      -6.27325888, -0.00037999, 0.00023279, 7.27287889, 0.99883926, 0.99938722, 0.49324678],
    8182                                                                                                  [      -6.27325899, -0.00037994, 0.00023276, 7.27287905, 0.99883941, 0.99938730, 0.49324693],
    8183                                                                                                  [      -6.27325910, -0.00037990, 0.00023273, 7.27287920, 0.99883955, 0.99938737, 0.49324693],
    8184                                                                                                  [      -6.27325921, -0.00037985, 0.00023270, 7.27287936, 0.99883969, 0.99938745, 0.49324695],
    8185                                                                                                  [      -6.27325932, -0.00037980, 0.00023267, 7.27287952, 0.99883983, 0.99938752, 0.49324704],
    8186                                                                                                  [      -6.27325944, -0.00037976, 0.00023264, 7.27287968, 0.99883998, 0.99938760, 0.49324699],
    8187                                                                                                  [      -6.27325955, -0.00037971, 0.00023261, 7.27287984, 0.99884012, 0.99938768, 0.49324702],
    8188                                                                                                  [      -6.27325966, -0.00037966, 0.00023259, 7.27287999, 0.99884026, 0.99938775, 0.49324694],
    8189                                                                                                  [      -6.27325977, -0.00037962, 0.00023256, 7.27288015, 0.99884040, 0.99938783, 0.49324708],
    8190                                                                                                  [      -6.27325988, -0.00037957, 0.00023253, 7.27288031, 0.99884055, 0.99938790, 0.49324716],
    8191                                                                                                  [      -6.27325999, -0.00037953, 0.00023250, 7.27288047, 0.99884069, 0.99938798, 0.49324712],
    8192                                                                                                  [      -6.27326011, -0.00037948, 0.00023247, 7.27288063, 0.99884083, 0.99938805, 0.49324715],
    8193                                                                                                  [      -6.27326022, -0.00037943, 0.00023244, 7.27288078, 0.99884097, 0.99938813, 0.49324707],
    8194                                                                                                  [      -6.27326033, -0.00037939, 0.00023241, 7.27288094, 0.99884111, 0.99938820, 0.49324704],
    8195                                                                                                  [      -6.27326044, -0.00037934, 0.00023239, 7.27288110, 0.99884126, 0.99938828, 0.49324718],
    8196                                                                                                  [      -6.27326055, -0.00037929, 0.00023236, 7.27288126, 0.99884140, 0.99938835, 0.49324714],
    8197                                                                                                  [      -6.27326066, -0.00037925, 0.00023233, 7.27288142, 0.99884154, 0.99938843, 0.49324726],
    8198                                                                                                  [      -6.27326077, -0.00037920, 0.00023230, 7.27288157, 0.99884168, 0.99938850, 0.49324702],
    8199                                                                                                  [      -6.27326088, -0.00037915, 0.00023227, 7.27288173, 0.99884182, 0.99938858, 0.49324721],
    8200                                                                                                  [      -6.27326100, -0.00037911, 0.00023224, 7.27288189, 0.99884197, 0.99938865, 0.49324723],
    8201                                                                                                  [      -6.27326111, -0.00037906, 0.00023221, 7.27288205, 0.99884211, 0.99938873, 0.49324718],
    8202                                                                                                  [      -6.27326122, -0.00037901, 0.00023219, 7.27288220, 0.99884225, 0.99938880, 0.49324712],
    8203                                                                                                  [      -6.27326133, -0.00037897, 0.00023216, 7.27288236, 0.99884239, 0.99938887, 0.49324742],
    8204                                                                                                  [      -6.27326144, -0.00037892, 0.00023213, 7.27288252, 0.99884253, 0.99938895, 0.49324731],
    8205                                                                                                  [      -6.27326155, -0.00037887, 0.00023210, 7.27288268, 0.99884267, 0.99938902, 0.49324731],
    8206                                                                                                  [      -6.27326166, -0.00037883, 0.00023207, 7.27288283, 0.99884282, 0.99938910, 0.49324735],
    8207                                                                                                  [      -6.27326177, -0.00037878, 0.00023204, 7.27288299, 0.99884296, 0.99938917, 0.49324724],
    8208                                                                                                  [      -6.27326188, -0.00037874, 0.00023202, 7.27288315, 0.99884310, 0.99938925, 0.49324733],
    8209                                                                                                  [      -6.27326199, -0.00037869, 0.00023199, 7.27288331, 0.99884324, 0.99938932, 0.49324726],
    8210                                                                                                  [      -6.27326211, -0.00037864, 0.00023196, 7.27288346, 0.99884338, 0.99938940, 0.49324734],
    8211                                                                                                  [      -6.27326222, -0.00037860, 0.00023193, 7.27288362, 0.99884352, 0.99938947, 0.49324737],
    8212                                                                                                  [      -6.27326233, -0.00037855, 0.00023190, 7.27288378, 0.99884367, 0.99938955, 0.49324746],
    8213                                                                                                  [      -6.27326244, -0.00037850, 0.00023187, 7.27288393, 0.99884381, 0.99938962, 0.49324742],
    8214                                                                                                  [      -6.27326255, -0.00037846, 0.00023185, 7.27288409, 0.99884395, 0.99938970, 0.49324750],
    8215                                                                                                  [      -6.27326266, -0.00037841, 0.00023182, 7.27288425, 0.99884409, 0.99938977, 0.49324754],
    8216                                                                                                  [      -6.27326277, -0.00037837, 0.00023179, 7.27288441, 0.99884423, 0.99938985, 0.49324741],
    8217                                                                                                  [      -6.27326288, -0.00037832, 0.00023176, 7.27288456, 0.99884437, 0.99938992, 0.49324760],
    8218                                                                                                  [      -6.27326299, -0.00037827, 0.00023173, 7.27288472, 0.99884451, 0.99939000, 0.49324751],
    8219                                                                                                  [      -6.27326310, -0.00037823, 0.00023170, 7.27288488, 0.99884466, 0.99939007, 0.49324747],
    8220                                                                                                  [      -6.27326321, -0.00037818, 0.00023168, 7.27288503, 0.99884480, 0.99939014, 0.49324756],
    8221                                                                                                  [      -6.27326332, -0.00037813, 0.00023165, 7.27288519, 0.99884494, 0.99939022, 0.49324744],
    8222                                                                                                  [      -6.27326343, -0.00037809, 0.00023162, 7.27288535, 0.99884508, 0.99939029, 0.49324765],
    8223                                                                                                  [      -6.27326354, -0.00037804, 0.00023159, 7.27288550, 0.99884522, 0.99939037, 0.49324755],
    8224                                                                                                  [      -6.27326366, -0.00037800, 0.00023156, 7.27288566, 0.99884536, 0.99939044, 0.49324760],
    8225                                                                                                  [      -6.27326377, -0.00037795, 0.00023153, 7.27288582, 0.99884550, 0.99939052, 0.49324764],
    8226                                                                                                  [      -6.27326388, -0.00037790, 0.00023151, 7.27288597, 0.99884564, 0.99939059, 0.49324764],
    8227                                                                                                  [      -6.27326399, -0.00037786, 0.00023148, 7.27288613, 0.99884578, 0.99939067, 0.49324768],
    8228                                                                                                  [      -6.27326410, -0.00037781, 0.00023145, 7.27288629, 0.99884592, 0.99939074, 0.49324772],
    8229                                                                                                  [      -6.27326421, -0.00037777, 0.00023142, 7.27288644, 0.99884607, 0.99939081, 0.49324775],
    8230                                                                                                  [      -6.27326432, -0.00037772, 0.00023139, 7.27288660, 0.99884621, 0.99939089, 0.49324763],
    8231                                                                                                  [      -6.27326443, -0.00037767, 0.00023136, 7.27288676, 0.99884635, 0.99939096, 0.49324773],
    8232                                                                                                  [      -6.27326454, -0.00037763, 0.00023134, 7.27288691, 0.99884649, 0.99939104, 0.49324770],
    8233                                                                                                  [      -6.27326465, -0.00037758, 0.00023131, 7.27288707, 0.99884663, 0.99939111, 0.49324772],
    8234                                                                                                  [      -6.27326476, -0.00037753, 0.00023128, 7.27288722, 0.99884677, 0.99939119, 0.49324778],
    8235                                                                                                  [      -6.27326487, -0.00037749, 0.00023125, 7.27288738, 0.99884691, 0.99939126, 0.49324783],
    8236                                                                                                  [      -6.27326498, -0.00037744, 0.00023122, 7.27288754, 0.99884705, 0.99939133, 0.49324780],
    8237                                                                                                  [      -6.27326509, -0.00037740, 0.00023120, 7.27288769, 0.99884719, 0.99939141, 0.49324776],
    8238                                                                                                  [      -6.27326520, -0.00037735, 0.00023117, 7.27288785, 0.99884733, 0.99939148, 0.49324786],
    8239                                                                                                  [      -6.27326531, -0.00037730, 0.00023114, 7.27288801, 0.99884747, 0.99939156, 0.49324788],
    8240                                                                                                  [      -6.27326542, -0.00037726, 0.00023111, 7.27288816, 0.99884761, 0.99939163, 0.49324776],
    8241                                                                                                  [      -6.27326553, -0.00037721, 0.00023108, 7.27288832, 0.99884775, 0.99939171, 0.49324788],
    8242                                                                                                  [      -6.27326564, -0.00037717, 0.00023105, 7.27288847, 0.99884789, 0.99939178, 0.49324801],
    8243                                                                                                  [      -6.27326575, -0.00037712, 0.00023103, 7.27288863, 0.99884803, 0.99939185, 0.49324790],
    8244                                                                                                  [      -6.27326586, -0.00037707, 0.00023100, 7.27288879, 0.99884817, 0.99939193, 0.49324783],
    8245                                                                                                  [      -6.27326597, -0.00037703, 0.00023097, 7.27288894, 0.99884831, 0.99939200, 0.49324795],
    8246                                                                                                  [      -6.27326608, -0.00037698, 0.00023094, 7.27288910, 0.99884846, 0.99939208, 0.49324808],
    8247                                                                                                  [      -6.27326619, -0.00037694, 0.00023091, 7.27288925, 0.99884860, 0.99939215, 0.49324796],
    8248                                                                                                  [      -6.27326630, -0.00037689, 0.00023089, 7.27288941, 0.99884874, 0.99939222, 0.49324802],
    8249                                                                                                  [      -6.27326641, -0.00037685, 0.00023086, 7.27288956, 0.99884888, 0.99939230, 0.49324786],
    8250                                                                                                  [      -6.27326652, -0.00037680, 0.00023083, 7.27288972, 0.99884902, 0.99939237, 0.49324795],
    8251                                                                                                  [      -6.27326663, -0.00037675, 0.00023080, 7.27288988, 0.99884916, 0.99939245, 0.49324822],
    8252                                                                                                  [      -6.27326674, -0.00037671, 0.00023077, 7.27289003, 0.99884930, 0.99939252, 0.49324803],
    8253                                                                                                  [      -6.27326685, -0.00037666, 0.00023074, 7.27289019, 0.99884944, 0.99939259, 0.49324799],
    8254                                                                                                  [      -6.27326696, -0.00037662, 0.00023072, 7.27289034, 0.99884958, 0.99939267, 0.49324798],
    8255                                                                                                  [      -6.27326707, -0.00037657, 0.00023069, 7.27289050, 0.99884972, 0.99939274, 0.49324802],
    8256                                                                                                  [      -6.27326718, -0.00037652, 0.00023066, 7.27289065, 0.99884986, 0.99939282, 0.49324803],
    8257                                                                                                  [      -6.27326729, -0.00037648, 0.00023063, 7.27289081, 0.99885000, 0.99939289, 0.49324811],
    8258                                                                                                  [      -6.27326740, -0.00037643, 0.00023060, 7.27289096, 0.99885014, 0.99939296, 0.49324817],
    8259                                                                                                  [      -6.27326751, -0.00037639, 0.00023058, 7.27289112, 0.99885028, 0.99939304, 0.49324821],
    8260                                                                                                  [      -6.27326762, -0.00037634, 0.00023055, 7.27289127, 0.99885042, 0.99939311, 0.49324821],
    8261                                                                                                  [      -6.27326773, -0.00037630, 0.00023052, 7.27289143, 0.99885056, 0.99939318, 0.49324827],
    8262                                                                                                  [      -6.27326783, -0.00037625, 0.00023049, 7.27289159, 0.99885070, 0.99939326, 0.49324820],
    8263                                                                                                  [      -6.27326794, -0.00037620, 0.00023046, 7.27289174, 0.99885084, 0.99939333, 0.49324832],
    8264                                                                                                  [      -6.27326805, -0.00037616, 0.00023044, 7.27289190, 0.99885097, 0.99939341, 0.49324834],
    8265                                                                                                  [      -6.27326816, -0.00037611, 0.00023041, 7.27289205, 0.99885111, 0.99939348, 0.49324841],
    8266                                                                                                  [      -6.27326827, -0.00037607, 0.00023038, 7.27289221, 0.99885125, 0.99939355, 0.49324834],
    8267                                                                                                  [      -6.27326838, -0.00037602, 0.00023035, 7.27289236, 0.99885139, 0.99939363, 0.49324834],
    8268                                                                                                  [      -6.27326849, -0.00037598, 0.00023032, 7.27289252, 0.99885153, 0.99939370, 0.49324836],
    8269                                                                                                  [      -6.27326860, -0.00037593, 0.00023030, 7.27289267, 0.99885167, 0.99939377, 0.49324838],
    8270                                                                                                  [      -6.27326871, -0.00037588, 0.00023027, 7.27289283, 0.99885181, 0.99939385, 0.49324843],
    8271                                                                                                  [      -6.27326882, -0.00037584, 0.00023024, 7.27289298, 0.99885195, 0.99939392, 0.49324818],
    8272                                                                                                  [      -6.27326893, -0.00037579, 0.00023021, 7.27289314, 0.99885209, 0.99939399, 0.49324852],
    8273                                                                                                  [      -6.27326904, -0.00037575, 0.00023018, 7.27289329, 0.99885223, 0.99939407, 0.49324850],
    8274                                                                                                  [      -6.27326915, -0.00037570, 0.00023016, 7.27289345, 0.99885237, 0.99939414, 0.49324851],
    8275                                                                                                  [      -6.27326926, -0.00037566, 0.00023013, 7.27289360, 0.99885251, 0.99939422, 0.49324838],
    8276                                                                                                  [      -6.27326937, -0.00037561, 0.00023010, 7.27289375, 0.99885265, 0.99939429, 0.49324847],
    8277                                                                                                  [      -6.27326947, -0.00037557, 0.00023007, 7.27289391, 0.99885279, 0.99939436, 0.49324849],
    8278                                                                                                  [      -6.27326958, -0.00037552, 0.00023004, 7.27289406, 0.99885293, 0.99939444, 0.49324851],
    8279                                                                                                  [      -6.27326969, -0.00037547, 0.00023002, 7.27289422, 0.99885307, 0.99939451, 0.49324844],
    8280                                                                                                  [      -6.27326980, -0.00037543, 0.00022999, 7.27289437, 0.99885321, 0.99939458, 0.49324862],
    8281                                                                                                  [      -6.27326991, -0.00037538, 0.00022996, 7.27289453, 0.99885334, 0.99939466, 0.49324845],
    8282                                                                                                  [      -6.27327002, -0.00037534, 0.00022993, 7.27289468, 0.99885348, 0.99939473, 0.49324866],
    8283                                                                                                  [      -6.27327013, -0.00037529, 0.00022991, 7.27289484, 0.99885362, 0.99939480, 0.49324850],
    8284                                                                                                  [      -6.27327024, -0.00037525, 0.00022988, 7.27289499, 0.99885376, 0.99939488, 0.49324874],
    8285                                                                                                  [      -6.27327035, -0.00037520, 0.00022985, 7.27289514, 0.99885390, 0.99939495, 0.49324863],
    8286                                                                                                  [      -6.27327045, -0.00037516, 0.00022982, 7.27289530, 0.99885404, 0.99939502, 0.49324861],
    8287                                                                                                  [      -6.27327056, -0.00037511, 0.00022979, 7.27289545, 0.99885418, 0.99939510, 0.49324863],
    8288                                                                                                  [      -6.27327067, -0.00037506, 0.00022977, 7.27289561, 0.99885432, 0.99939517, 0.49324878],
    8289                                                                                                  [      -6.27327078, -0.00037502, 0.00022974, 7.27289576, 0.99885446, 0.99939524, 0.49324852],
    8290                                                                                                  [      -6.27327089, -0.00037497, 0.00022971, 7.27289592, 0.99885459, 0.99939532, 0.49324868],
    8291                                                                                                  [      -6.27327100, -0.00037493, 0.00022968, 7.27289607, 0.99885473, 0.99939539, 0.49324870],
    8292                                                                                                  [      -6.27327111, -0.00037488, 0.00022965, 7.27289622, 0.99885487, 0.99939546, 0.49324867],
    8293                                                                                                  [      -6.27327122, -0.00037484, 0.00022963, 7.27289638, 0.99885501, 0.99939554, 0.49324861],
    8294                                                                                                  [      -6.27327132, -0.00037479, 0.00022960, 7.27289653, 0.99885515, 0.99939561, 0.49324879],
    8295                                                                                                  [      -6.27327143, -0.00037475, 0.00022957, 7.27289669, 0.99885529, 0.99939568, 0.49324878],
    8296                                                                                                  [      -6.27327154, -0.00037470, 0.00022954, 7.27289684, 0.99885543, 0.99939576, 0.49324873],
    8297                                                                                                  [      -6.27327165, -0.00037466, 0.00022952, 7.27289699, 0.99885557, 0.99939583, 0.49324877],
    8298                                                                                                  [      -6.27327176, -0.00037461, 0.00022949, 7.27289715, 0.99885570, 0.99939590, 0.49324893],
    8299                                                                                                  [      -6.27327187, -0.00037457, 0.00022946, 7.27289730, 0.99885584, 0.99939597, 0.49324876],
    8300                                                                                                  [      -6.27327198, -0.00037452, 0.00022943, 7.27289746, 0.99885598, 0.99939605, 0.49324876],
    8301                                                                                                  [      -6.27327208, -0.00037447, 0.00022940, 7.27289761, 0.99885612, 0.99939612, 0.49324883],
    8302                                                                                                  [      -6.27327219, -0.00037443, 0.00022938, 7.27289776, 0.99885626, 0.99939619, 0.49324897],
    8303                                                                                                  [      -6.27327230, -0.00037438, 0.00022935, 7.27289792, 0.99885640, 0.99939627, 0.49324903],
    8304                                                                                                  [      -6.27327241, -0.00037434, 0.00022932, 7.27289807, 0.99885653, 0.99939634, 0.49324897],
    8305                                                                                                  [      -6.27327252, -0.00037429, 0.00022929, 7.27289822, 0.99885667, 0.99939641, 0.49324915],
    8306                                                                                                  [      -6.27327263, -0.00037425, 0.00022927, 7.27289838, 0.99885681, 0.99939649, 0.49324899],
    8307                                                                                                  [      -6.27327273, -0.00037420, 0.00022924, 7.27289853, 0.99885695, 0.99939656, 0.49324895],
    8308                                                                                                  [      -6.27327284, -0.00037416, 0.00022921, 7.27289869, 0.99885709, 0.99939663, 0.49324901],
    8309                                                                                                  [      -6.27327295, -0.00037411, 0.00022918, 7.27289884, 0.99885723, 0.99939671, 0.49324899],
    8310                                                                                                  [      -6.27327306, -0.00037407, 0.00022915, 7.27289899, 0.99885736, 0.99939678, 0.49324910],
    8311                                                                                                  [      -6.27327317, -0.00037402, 0.00022913, 7.27289915, 0.99885750, 0.99939685, 0.49324893],
    8312                                                                                                  [      -6.27327328, -0.00037398, 0.00022910, 7.27289930, 0.99885764, 0.99939692, 0.49324897],
    8313                                                                                                  [      -6.27327338, -0.00037393, 0.00022907, 7.27289945, 0.99885778, 0.99939700, 0.49324903],
    8314                                                                                                  [      -6.27327349, -0.00037389, 0.00022904, 7.27289961, 0.99885792, 0.99939707, 0.49324907],
    8315                                                                                                  [      -6.27327360, -0.00037384, 0.00022902, 7.27289976, 0.99885805, 0.99939714, 0.49324912],
    8316                                                                                                  [      -6.27327371, -0.00037380, 0.00022899, 7.27289991, 0.99885819, 0.99939722, 0.49324911],
    8317                                                                                                  [      -6.27327382, -0.00037375, 0.00022896, 7.27290007, 0.99885833, 0.99939729, 0.49324918],
    8318                                                                                                  [      -6.27327392, -0.00037371, 0.00022893, 7.27290022, 0.99885847, 0.99939736, 0.49324911],
    8319                                                                                                  [      -6.27327403, -0.00037366, 0.00022891, 7.27290037, 0.99885861, 0.99939743, 0.49324922],
    8320                                                                                                  [      -6.27327414, -0.00037362, 0.00022888, 7.27290052, 0.99885874, 0.99939751, 0.49324912],
    8321                                                                                                  [      -6.27327425, -0.00037357, 0.00022885, 7.27290068, 0.99885888, 0.99939758, 0.49324914],
    8322                                                                                                  [      -6.27327436, -0.00037353, 0.00022882, 7.27290083, 0.99885902, 0.99939765, 0.49324919],
    8323                                                                                                  [      -6.27327446, -0.00037348, 0.00022880, 7.27290098, 0.99885916, 0.99939772, 0.49324915],
    8324                                                                                                  [      -6.27327457, -0.00037344, 0.00022877, 7.27290114, 0.99885929, 0.99939780, 0.49324920],
    8325                                                                                                  [      -6.27327468, -0.00037339, 0.00022874, 7.27290129, 0.99885943, 0.99939787, 0.49324914],
    8326                                                                                                  [      -6.27327479, -0.00037335, 0.00022871, 7.27290144, 0.99885957, 0.99939794, 0.49324927],
    8327                                                                                                  [      -6.27327490, -0.00037330, 0.00022868, 7.27290160, 0.99885971, 0.99939801, 0.49324924],
    8328                                                                                                  [      -6.27327500, -0.00037326, 0.00022866, 7.27290175, 0.99885984, 0.99939809, 0.49324926],
    8329                                                                                                  [      -6.27327511, -0.00037321, 0.00022863, 7.27290190, 0.99885998, 0.99939816, 0.49324920],
    8330                                                                                                  [      -6.27327522, -0.00037317, 0.00022860, 7.27290205, 0.99886012, 0.99939823, 0.49324932],
    8331                                                                                                  [      -6.27327533, -0.00037312, 0.00022857, 7.27290221, 0.99886026, 0.99939831, 0.49324939],
    8332                                                                                                  [      -6.27327543, -0.00037308, 0.00022855, 7.27290236, 0.99886039, 0.99939838, 0.49324946],
    8333                                                                                                  [      -6.27327554, -0.00037303, 0.00022852, 7.27290251, 0.99886053, 0.99939845, 0.49324935],
    8334                                                                                                  [      -6.27327565, -0.00037299, 0.00022849, 7.27290266, 0.99886067, 0.99939852, 0.49324930],
    8335                                                                                                  [      -6.27327576, -0.00037294, 0.00022846, 7.27290282, 0.99886081, 0.99939860, 0.49324950],
    8336                                                                                                  [      -6.27327586, -0.00037290, 0.00022844, 7.27290297, 0.99886094, 0.99939867, 0.49324938],
    8337                                                                                                  [      -6.27327597, -0.00037285, 0.00022841, 7.27290312, 0.99886108, 0.99939874, 0.49324942],
    8338                                                                                                  [      -6.27327608, -0.00037281, 0.00022838, 7.27290327, 0.99886122, 0.99939881, 0.49324944],
    8339                                                                                                  [      -6.27327619, -0.00037276, 0.00022835, 7.27290343, 0.99886136, 0.99939888, 0.49324942],
    8340                                                                                                  [      -6.27327629, -0.00037272, 0.00022833, 7.27290358, 0.99886149, 0.99939896, 0.49324940],
    8341                                                                                                  [      -6.27327640, -0.00037267, 0.00022830, 7.27290373, 0.99886163, 0.99939903, 0.49324954],
    8342                                                                                                  [      -6.27327651, -0.00037263, 0.00022827, 7.27290388, 0.99886177, 0.99939910, 0.49324936],
    8343                                                                                                  [      -6.27327662, -0.00037258, 0.00022824, 7.27290404, 0.99886190, 0.99939917, 0.49324945],
    8344                                                                                                  [      -6.27327672, -0.00037254, 0.00022822, 7.27290419, 0.99886204, 0.99939925, 0.49324953],
    8345                                                                                                  [      -6.27327683, -0.00037249, 0.00022819, 7.27290434, 0.99886218, 0.99939932, 0.49324957],
    8346                                                                                                  [      -6.27327694, -0.00037245, 0.00022816, 7.27290449, 0.99886231, 0.99939939, 0.49324952],
    8347                                                                                                  [      -6.27327705, -0.00037240, 0.00022813, 7.27290464, 0.99886245, 0.99939946, 0.49324959],
    8348                                                                                                  [      -6.27327715, -0.00037236, 0.00022811, 7.27290480, 0.99886259, 0.99939954, 0.49324957],
    8349                                                                                                  [      -6.27327726, -0.00037231, 0.00022808, 7.27290495, 0.99886273, 0.99939961, 0.49324964],
    8350                                                                                                  [      -6.27327737, -0.00037227, 0.00022805, 7.27290510, 0.99886286, 0.99939968, 0.49324963],
    8351                                                                                                  [      -6.27327747, -0.00037222, 0.00022802, 7.27290525, 0.99886300, 0.99939975, 0.49324974],
    8352                                                                                                  [      -6.27327758, -0.00037218, 0.00022800, 7.27290540, 0.99886314, 0.99939982, 0.49324966],
    8353                                                                                                  [      -6.27327769, -0.00037213, 0.00022797, 7.27290556, 0.99886327, 0.99939990, 0.49324952],
    8354                                                                                                  [      -6.27327780, -0.00037209, 0.00022794, 7.27290571, 0.99886341, 0.99939997, 0.49324969],
    8355                                                                                                  [      -6.27327790, -0.00037204, 0.00022791, 7.27290586, 0.99886355, 0.99940004, 0.49324970],
    8356                                                                                                  [      -6.27327801, -0.00037200, 0.00022789, 7.27290601, 0.99886368, 0.99940011, 0.49324976],
    8357                                                                                                  [      -6.27327812, -0.00037195, 0.00022786, 7.27290616, 0.99886382, 0.99940019, 0.49324984],
    8358                                                                                                  [      -6.27327822, -0.00037191, 0.00022783, 7.27290631, 0.99886396, 0.99940026, 0.49324963],
    8359                                                                                                  [      -6.27327833, -0.00037187, 0.00022781, 7.27290647, 0.99886409, 0.99940033, 0.49324968],
    8360                                                                                                  [      -6.27327844, -0.00037182, 0.00022778, 7.27290662, 0.99886423, 0.99940040, 0.49324978],
    8361                                                                                                  [      -6.27327855, -0.00037178, 0.00022775, 7.27290677, 0.99886436, 0.99940047, 0.49324985],
    8362                                                                                                  [      -6.27327865, -0.00037173, 0.00022772, 7.27290692, 0.99886450, 0.99940055, 0.49325000],
    8363                                                                                                  [      -6.27327876, -0.00037169, 0.00022770, 7.27290707, 0.99886464, 0.99940062, 0.49324984],
    8364                                                                                                  [      -6.27327887, -0.00037164, 0.00022767, 7.27290722, 0.99886477, 0.99940069, 0.49324982],
    8365                                                                                                  [      -6.27327897, -0.00037160, 0.00022764, 7.27290737, 0.99886491, 0.99940076, 0.49324988],
    8366                                                                                                  [      -6.27327908, -0.00037155, 0.00022761, 7.27290753, 0.99886505, 0.99940083, 0.49325015],
    8367                                                                                                  [      -6.27327919, -0.00037151, 0.00022759, 7.27290768, 0.99886518, 0.99940091, 0.49324977],
    8368                                                                                                  [      -6.27327929, -0.00037146, 0.00022756, 7.27290783, 0.99886532, 0.99940098, 0.49324993],
    8369                                                                                                  [      -6.27327940, -0.00037142, 0.00022753, 7.27290798, 0.99886546, 0.99940105, 0.49325002],
    8370                                                                                                  [      -6.27327951, -0.00037137, 0.00022750, 7.27290813, 0.99886559, 0.99940112, 0.49324999],
    8371                                                                                                  [      -6.27327961, -0.00037133, 0.00022748, 7.27290828, 0.99886573, 0.99940119, 0.49325000],
    8372                                                                                                  [      -6.27327972, -0.00037129, 0.00022745, 7.27290843, 0.99886586, 0.99940126, 0.49325006],
    8373                                                                                                  [      -6.27327983, -0.00037124, 0.00022742, 7.27290858, 0.99886600, 0.99940134, 0.49324994],
    8374                                                                                                  [      -6.27327993, -0.00037120, 0.00022740, 7.27290874, 0.99886614, 0.99940141, 0.49324986],
    8375                                                                                                  [      -6.27328004, -0.00037115, 0.00022737, 7.27290889, 0.99886627, 0.99940148, 0.49325009],
    8376                                                                                                  [      -6.27328015, -0.00037111, 0.00022734, 7.27290904, 0.99886641, 0.99940155, 0.49325012],
    8377                                                                                                  [      -6.27328025, -0.00037106, 0.00022731, 7.27290919, 0.99886654, 0.99940162, 0.49325015],
    8378                                                                                                  [      -6.27328036, -0.00037102, 0.00022729, 7.27290934, 0.99886668, 0.99940170, 0.49325010],
    8379                                                                                                  [      -6.27328047, -0.00037097, 0.00022726, 7.27290949, 0.99886682, 0.99940177, 0.49325020],
    8380                                                                                                  [      -6.27328057, -0.00037093, 0.00022723, 7.27290964, 0.99886695, 0.99940184, 0.49325004],
    8381                                                                                                  [      -6.27328068, -0.00037089, 0.00022720, 7.27290979, 0.99886709, 0.99940191, 0.49325014],
    8382                                                                                                  [      -6.27328078, -0.00037084, 0.00022718, 7.27290994, 0.99886722, 0.99940198, 0.49325025],
    8383                                                                                                  [      -6.27328089, -0.00037080, 0.00022715, 7.27291009, 0.99886736, 0.99940205, 0.49325008],
    8384                                                                                                  [      -6.27328100, -0.00037075, 0.00022712, 7.27291024, 0.99886749, 0.99940213, 0.49325032],
    8385                                                                                                  [      -6.27328110, -0.00037071, 0.00022710, 7.27291040, 0.99886763, 0.99940220, 0.49325016],
    8386                                                                                                  [      -6.27328121, -0.00037066, 0.00022707, 7.27291055, 0.99886777, 0.99940227, 0.49325010],
    8387                                                                                                  [      -6.27328132, -0.00037062, 0.00022704, 7.27291070, 0.99886790, 0.99940234, 0.49325006],
    8388                                                                                                  [      -6.27328142, -0.00037057, 0.00022701, 7.27291085, 0.99886804, 0.99940241, 0.49325022],
    8389                                                                                                  [      -6.27328153, -0.00037053, 0.00022699, 7.27291100, 0.99886817, 0.99940248, 0.49325031],
    8390                                                                                                  [      -6.27328163, -0.00037049, 0.00022696, 7.27291115, 0.99886831, 0.99940255, 0.49325037],
    8391                                                                                                  [      -6.27328174, -0.00037044, 0.00022693, 7.27291130, 0.99886844, 0.99940263, 0.49325027],
    8392                                                                                                  [      -6.27328185, -0.00037040, 0.00022691, 7.27291145, 0.99886858, 0.99940270, 0.49325034],
    8393                                                                                                  [      -6.27328195, -0.00037035, 0.00022688, 7.27291160, 0.99886871, 0.99940277, 0.49325020],
    8394                                                                                                  [      -6.27328206, -0.00037031, 0.00022685, 7.27291175, 0.99886885, 0.99940284, 0.49325035],
    8395                                                                                                  [      -6.27328217, -0.00037026, 0.00022682, 7.27291190, 0.99886898, 0.99940291, 0.49325022],
    8396                                                                                                  [      -6.27328227, -0.00037022, 0.00022680, 7.27291205, 0.99886912, 0.99940298, 0.49325038],
    8397                                                                                                  [      -6.27328238, -0.00037018, 0.00022677, 7.27291220, 0.99886926, 0.99940305, 0.49325045],
    8398                                                                                                  [      -6.27328248, -0.00037013, 0.00022674, 7.27291235, 0.99886939, 0.99940313, 0.49325055],
    8399                                                                                                  [      -6.27328259, -0.00037009, 0.00022672, 7.27291250, 0.99886953, 0.99940320, 0.49325042],
    8400                                                                                                  [      -6.27328269, -0.00037004, 0.00022669, 7.27291265, 0.99886966, 0.99940327, 0.49325036],
    8401                                                                                                  [      -6.27328280, -0.00037000, 0.00022666, 7.27291280, 0.99886980, 0.99940334, 0.49325057],
    8402                                                                                                  [      -6.27328291, -0.00036995, 0.00022663, 7.27291295, 0.99886993, 0.99940341, 0.49325047],
    8403                                                                                                  [      -6.27328301, -0.00036991, 0.00022661, 7.27291310, 0.99887007, 0.99940348, 0.49325050],
    8404                                                                                                  [      -6.27328312, -0.00036987, 0.00022658, 7.27291325, 0.99887020, 0.99940355, 0.49325044],
    8405                                                                                                  [      -6.27328322, -0.00036982, 0.00022655, 7.27291340, 0.99887034, 0.99940363, 0.49325060],
    8406                                                                                                  [      -6.27328333, -0.00036978, 0.00022653, 7.27291355, 0.99887047, 0.99940370, 0.49325046],
    8407                                                                                                  [      -6.27328344, -0.00036973, 0.00022650, 7.27291370, 0.99887061, 0.99940377, 0.49325049],
    8408                                                                                                  [      -6.27328354, -0.00036969, 0.00022647, 7.27291385, 0.99887074, 0.99940384, 0.49325054],
    8409                                                                                                  [      -6.27328365, -0.00036965, 0.00022644, 7.27291400, 0.99887088, 0.99940391, 0.49325051],
    8410                                                                                                  [      -6.27328375, -0.00036960, 0.00022642, 7.27291415, 0.99887101, 0.99940398, 0.49325068],
    8411                                                                                                  [      -6.27328386, -0.00036956, 0.00022639, 7.27291430, 0.99887115, 0.99940405, 0.49325059],
    8412                                                                                                  [      -6.27328396, -0.00036951, 0.00022636, 7.27291445, 0.99887128, 0.99940412, 0.49325082],
    8413                                                                                                  [      -6.27328407, -0.00036947, 0.00022634, 7.27291460, 0.99887142, 0.99940419, 0.49325077],
    8414                                                                                                  [      -6.27328418, -0.00036942, 0.00022631, 7.27291475, 0.99887155, 0.99940427, 0.49325076],
    8415                                                                                                  [      -6.27328428, -0.00036938, 0.00022628, 7.27291490, 0.99887168, 0.99940434, 0.49325073],
    8416                                                                                                  [      -6.27328439, -0.00036934, 0.00022626, 7.27291505, 0.99887182, 0.99940441, 0.49325073],
    8417                                                                                                  [      -6.27328449, -0.00036929, 0.00022623, 7.27291520, 0.99887195, 0.99940448, 0.49325059],
    8418                                                                                                  [      -6.27328460, -0.00036925, 0.00022620, 7.27291535, 0.99887209, 0.99940455, 0.49325071],
    8419                                                                                                  [      -6.27328470, -0.00036920, 0.00022617, 7.27291550, 0.99887222, 0.99940462, 0.49325075],
    8420                                                                                                  [      -6.27328481, -0.00036916, 0.00022615, 7.27291565, 0.99887236, 0.99940469, 0.49325074],
    8421                                                                                                  [      -6.27328491, -0.00036912, 0.00022612, 7.27291580, 0.99887249, 0.99940476, 0.49325076],
    8422                                                                                                  [      -6.27328502, -0.00036907, 0.00022609, 7.27291595, 0.99887263, 0.99940483, 0.49325069],
    8423                                                                                                  [      -6.27328512, -0.00036903, 0.00022607, 7.27291610, 0.99887276, 0.99940491, 0.49325089],
    8424                                                                                                  [      -6.27328523, -0.00036898, 0.00022604, 7.27291624, 0.99887290, 0.99940498, 0.49325087],
    8425                                                                                                  [      -6.27328533, -0.00036894, 0.00022601, 7.27291639, 0.99887303, 0.99940505, 0.49325089],
    8426                                                                                                  [      -6.27328544, -0.00036890, 0.00022599, 7.27291654, 0.99887316, 0.99940512, 0.49325087],
    8427                                                                                                  [      -6.27328555, -0.00036885, 0.00022596, 7.27291669, 0.99887330, 0.99940519, 0.49325085],
    8428                                                                                                  [      -6.27328565, -0.00036881, 0.00022593, 7.27291684, 0.99887343, 0.99940526, 0.49325080],
    8429                                                                                                  [      -6.27328576, -0.00036876, 0.00022590, 7.27291699, 0.99887357, 0.99940533, 0.49325071],
    8430                                                                                                  [      -6.27328586, -0.00036872, 0.00022588, 7.27291714, 0.99887370, 0.99940540, 0.49325095],
    8431                                                                                                  [      -6.27328597, -0.00036868, 0.00022585, 7.27291729, 0.99887384, 0.99940547, 0.49325080],
    8432                                                                                                  [      -6.27328607, -0.00036863, 0.00022582, 7.27291744, 0.99887397, 0.99940554, 0.49325088],
    8433                                                                                                  [      -6.27328618, -0.00036859, 0.00022580, 7.27291759, 0.99887410, 0.99940561, 0.49325100],
    8434                                                                                                  [      -6.27328628, -0.00036855, 0.00022577, 7.27291774, 0.99887424, 0.99940568, 0.49325106],
    8435                                                                                                  [      -6.27328639, -0.00036850, 0.00022574, 7.27291789, 0.99887437, 0.99940576, 0.49325085],
    8436                                                                                                  [      -6.27328649, -0.00036846, 0.00022572, 7.27291803, 0.99887451, 0.99940583, 0.49325087],
    8437                                                                                                  [      -6.27328660, -0.00036841, 0.00022569, 7.27291818, 0.99887464, 0.99940590, 0.49325084],
    8438                                                                                                  [      -6.27328670, -0.00036837, 0.00022566, 7.27291833, 0.99887477, 0.99940597, 0.49325118],
    8439                                                                                                  [      -6.27328681, -0.00036833, 0.00022564, 7.27291848, 0.99887491, 0.99940604, 0.49325112],
    8440                                                                                                  [      -6.27328691, -0.00036828, 0.00022561, 7.27291863, 0.99887504, 0.99940611, 0.49325104],
    8441                                                                                                  [      -6.27328702, -0.00036824, 0.00022558, 7.27291878, 0.99887518, 0.99940618, 0.49325104],
    8442                                                                                                  [      -6.27328712, -0.00036819, 0.00022556, 7.27291893, 0.99887531, 0.99940625, 0.49325116],
    8443                                                                                                  [      -6.27328723, -0.00036815, 0.00022553, 7.27291907, 0.99887544, 0.99940632, 0.49325111],
    8444                                                                                                  [      -6.27328733, -0.00036811, 0.00022550, 7.27291922, 0.99887558, 0.99940639, 0.49325116],
    8445                                                                                                  [      -6.27328744, -0.00036806, 0.00022547, 7.27291937, 0.99887571, 0.99940646, 0.49325108],
    8446                                                                                                  [      -6.27328754, -0.00036802, 0.00022545, 7.27291952, 0.99887584, 0.99940653, 0.49325111],
    8447                                                                                                  [      -6.27328764, -0.00036798, 0.00022542, 7.27291967, 0.99887598, 0.99940660, 0.49325113],
    8448                                                                                                  [      -6.27328775, -0.00036793, 0.00022539, 7.27291982, 0.99887611, 0.99940667, 0.49325130],
    8449                                                                                                  [      -6.27328785, -0.00036789, 0.00022537, 7.27291997, 0.99887625, 0.99940674, 0.49325114],
    8450                                                                                                  [      -6.27328796, -0.00036784, 0.00022534, 7.27292011, 0.99887638, 0.99940681, 0.49325125],
    8451                                                                                                  [      -6.27328806, -0.00036780, 0.00022531, 7.27292026, 0.99887651, 0.99940689, 0.49325120],
    8452                                                                                                  [      -6.27328817, -0.00036776, 0.00022529, 7.27292041, 0.99887665, 0.99940696, 0.49325118],
    8453                                                                                                  [      -6.27328827, -0.00036771, 0.00022526, 7.27292056, 0.99887678, 0.99940703, 0.49325120],
    8454                                                                                                  [      -6.27328838, -0.00036767, 0.00022523, 7.27292071, 0.99887691, 0.99940710, 0.49325135],
    8455                                                                                                  [      -6.27328848, -0.00036763, 0.00022521, 7.27292086, 0.99887705, 0.99940717, 0.49325134],
    8456                                                                                                  [      -6.27328859, -0.00036758, 0.00022518, 7.27292100, 0.99887718, 0.99940724, 0.49325139],
    8457                                                                                                  [      -6.27328869, -0.00036754, 0.00022515, 7.27292115, 0.99887731, 0.99940731, 0.49325135],
    8458                                                                                                  [      -6.27328880, -0.00036749, 0.00022513, 7.27292130, 0.99887745, 0.99940738, 0.49325126],
    8459                                                                                                  [      -6.27328890, -0.00036745, 0.00022510, 7.27292145, 0.99887758, 0.99940745, 0.49325131],
    8460                                                                                                  [      -6.27328900, -0.00036741, 0.00022507, 7.27292160, 0.99887771, 0.99940752, 0.49325136],
    8461                                                                                                  [      -6.27328911, -0.00036736, 0.00022505, 7.27292174, 0.99887785, 0.99940759, 0.49325152],
    8462                                                                                                  [      -6.27328921, -0.00036732, 0.00022502, 7.27292189, 0.99887798, 0.99940766, 0.49325159],
    8463                                                                                                  [      -6.27328932, -0.00036728, 0.00022499, 7.27292204, 0.99887811, 0.99940773, 0.49325140],
    8464                                                                                                  [      -6.27328942, -0.00036723, 0.00022497, 7.27292219, 0.99887825, 0.99940780, 0.49325141],
    8465                                                                                                  [      -6.27328953, -0.00036719, 0.00022494, 7.27292234, 0.99887838, 0.99940787, 0.49325131],
    8466                                                                                                  [      -6.27328963, -0.00036715, 0.00022491, 7.27292248, 0.99887851, 0.99940794, 0.49325145],
    8467                                                                                                  [      -6.27328973, -0.00036710, 0.00022489, 7.27292263, 0.99887864, 0.99940801, 0.49325145],
    8468                                                                                                  [      -6.27328984, -0.00036706, 0.00022486, 7.27292278, 0.99887878, 0.99940808, 0.49325157],
    8469                                                                                                  [      -6.27328994, -0.00036702, 0.00022483, 7.27292293, 0.99887891, 0.99940815, 0.49325149],
    8470                                                                                                  [      -6.27329005, -0.00036697, 0.00022481, 7.27292307, 0.99887904, 0.99940822, 0.49325164],
    8471                                                                                                  [      -6.27329015, -0.00036693, 0.00022478, 7.27292322, 0.99887918, 0.99940829, 0.49325155],
    8472                                                                                                  [      -6.27329025, -0.00036689, 0.00022475, 7.27292337, 0.99887931, 0.99940836, 0.49325164],
    8473                                                                                                  [      -6.27329036, -0.00036684, 0.00022473, 7.27292352, 0.99887944, 0.99940843, 0.49325151],
    8474                                                                                                  [      -6.27329046, -0.00036680, 0.00022470, 7.27292366, 0.99887958, 0.99940850, 0.49325168],
    8475                                                                                                  [      -6.27329057, -0.00036675, 0.00022467, 7.27292381, 0.99887971, 0.99940857, 0.49325138],
    8476                                                                                                  [      -6.27329067, -0.00036671, 0.00022465, 7.27292396, 0.99887984, 0.99940864, 0.49325171],
    8477                                                                                                  [      -6.27329078, -0.00036667, 0.00022462, 7.27292411, 0.99887997, 0.99940871, 0.49325159],
    8478                                                                                                  [      -6.27329088, -0.00036662, 0.00022459, 7.27292425, 0.99888011, 0.99940878, 0.49325160],
    8479                                                                                                  [      -6.27329098, -0.00036658, 0.00022457, 7.27292440, 0.99888024, 0.99940885, 0.49325177],
    8480                                                                                                  [      -6.27329109, -0.00036654, 0.00022454, 7.27292455, 0.99888037, 0.99940892, 0.49325177],
    8481                                                                                                  [      -6.27329119, -0.00036649, 0.00022451, 7.27292470, 0.99888050, 0.99940899, 0.49325164],
    8482                                                                                                  [      -6.27329129, -0.00036645, 0.00022449, 7.27292484, 0.99888064, 0.99940906, 0.49325172],
    8483                                                                                                  [      -6.27329140, -0.00036641, 0.00022446, 7.27292499, 0.99888077, 0.99940913, 0.49325179],
    8484                                                                                                  [      -6.27329150, -0.00036636, 0.00022443, 7.27292514, 0.99888090, 0.99940920, 0.49325181],
    8485                                                                                                  [      -6.27329161, -0.00036632, 0.00022441, 7.27292529, 0.99888103, 0.99940927, 0.49325178],
    8486                                                                                                  [      -6.27329171, -0.00036628, 0.00022438, 7.27292543, 0.99888117, 0.99940934, 0.49325178],
    8487                                                                                                  [      -6.27329181, -0.00036623, 0.00022435, 7.27292558, 0.99888130, 0.99940941, 0.49325183],
    8488                                                                                                  [      -6.27329192, -0.00036619, 0.00022433, 7.27292573, 0.99888143, 0.99940948, 0.49325179],
    8489                                                                                                  [      -6.27329202, -0.00036615, 0.00022430, 7.27292587, 0.99888156, 0.99940955, 0.49325183],
    8490                                                                                                  [      -6.27329212, -0.00036610, 0.00022427, 7.27292602, 0.99888170, 0.99940962, 0.49325178],
    8491                                                                                                  [      -6.27329223, -0.00036606, 0.00022425, 7.27292617, 0.99888183, 0.99940969, 0.49325167],
    8492                                                                                                  [      -6.27329233, -0.00036602, 0.00022422, 7.27292631, 0.99888196, 0.99940976, 0.49325180],
    8493                                                                                                  [      -6.27329244, -0.00036597, 0.00022419, 7.27292646, 0.99888209, 0.99940983, 0.49325201],
    8494                                                                                                  [      -6.27329254, -0.00036593, 0.00022417, 7.27292661, 0.99888222, 0.99940990, 0.49325190],
    8495                                                                                                  [      -6.27329264, -0.00036589, 0.00022414, 7.27292675, 0.99888236, 0.99940997, 0.49325201],
    8496                                                                                                  [      -6.27329275, -0.00036584, 0.00022412, 7.27292690, 0.99888249, 0.99941004, 0.49325203],
    8497                                                                                                  [      -6.27329285, -0.00036580, 0.00022409, 7.27292705, 0.99888262, 0.99941011, 0.49325195],
    8498                                                                                                  [      -6.27329295, -0.00036576, 0.00022406, 7.27292720, 0.99888275, 0.99941018, 0.49325194],
    8499                                                                                                  [      -6.27329306, -0.00036571, 0.00022404, 7.27292734, 0.99888289, 0.99941025, 0.49325187],
    8500                                                                                                  [      -6.27329316, -0.00036567, 0.00022401, 7.27292749, 0.99888302, 0.99941032, 0.49325203],
    8501                                                                                                  [      -6.27329326, -0.00036563, 0.00022398, 7.27292764, 0.99888315, 0.99941039, 0.49325193],
    8502                                                                                                  [      -6.27329337, -0.00036559, 0.00022396, 7.27292778, 0.99888328, 0.99941046, 0.49325192],
    8503                                                                                                  [      -6.27329347, -0.00036554, 0.00022393, 7.27292793, 0.99888341, 0.99941053, 0.49325212],
    8504                                                                                                  [      -6.27329357, -0.00036550, 0.00022390, 7.27292807, 0.99888355, 0.99941060, 0.49325192],
    8505                                                                                                  [      -6.27329368, -0.00036546, 0.00022388, 7.27292822, 0.99888368, 0.99941067, 0.49325204],
    8506                                                                                                  [      -6.27329378, -0.00036541, 0.00022385, 7.27292837, 0.99888381, 0.99941074, 0.49325210],
    8507                                                                                                  [      -6.27329388, -0.00036537, 0.00022382, 7.27292851, 0.99888394, 0.99941081, 0.49325200],
    8508                                                                                                  [      -6.27329399, -0.00036533, 0.00022380, 7.27292866, 0.99888407, 0.99941088, 0.49325216],
    8509                                                                                                  [      -6.27329409, -0.00036528, 0.00022377, 7.27292881, 0.99888420, 0.99941095, 0.49325212],
    8510                                                                                                  [      -6.27329419, -0.00036524, 0.00022374, 7.27292895, 0.99888434, 0.99941102, 0.49325214],
    8511                                                                                                  [      -6.27329430, -0.00036520, 0.00022372, 7.27292910, 0.99888447, 0.99941108, 0.49325208],
    8512                                                                                                  [      -6.27329440, -0.00036515, 0.00022369, 7.27292925, 0.99888460, 0.99941115, 0.49325230],
    8513                                                                                                  [      -6.27329450, -0.00036511, 0.00022367, 7.27292939, 0.99888473, 0.99941122, 0.49325225],
    8514                                                                                                  [      -6.27329461, -0.00036507, 0.00022364, 7.27292954, 0.99888486, 0.99941129, 0.49325212],
    8515                                                                                                  [      -6.27329471, -0.00036502, 0.00022361, 7.27292968, 0.99888499, 0.99941136, 0.49325221],
    8516                                                                                                  [      -6.27329481, -0.00036498, 0.00022359, 7.27292983, 0.99888513, 0.99941143, 0.49325215],
    8517                                                                                                  [      -6.27329491, -0.00036494, 0.00022356, 7.27292998, 0.99888526, 0.99941150, 0.49325228],
    8518                                                                                                  [      -6.27329502, -0.00036490, 0.00022353, 7.27293012, 0.99888539, 0.99941157, 0.49325236],
    8519                                                                                                  [      -6.27329512, -0.00036485, 0.00022351, 7.27293027, 0.99888552, 0.99941164, 0.49325238],
    8520                                                                                                  [      -6.27329522, -0.00036481, 0.00022348, 7.27293041, 0.99888565, 0.99941171, 0.49325230],
    8521                                                                                                  [      -6.27329533, -0.00036477, 0.00022345, 7.27293056, 0.99888578, 0.99941178, 0.49325233],
    8522                                                                                                  [      -6.27329543, -0.00036472, 0.00022343, 7.27293071, 0.99888591, 0.99941185, 0.49325243],
    8523                                                                                                  [      -6.27329553, -0.00036468, 0.00022340, 7.27293085, 0.99888605, 0.99941192, 0.49325248],
    8524                                                                                                  [      -6.27329564, -0.00036464, 0.00022338, 7.27293100, 0.99888618, 0.99941199, 0.49325226],
    8525                                                                                                  [      -6.27329574, -0.00036460, 0.00022335, 7.27293114, 0.99888631, 0.99941206, 0.49325247],
    8526                                                                                                  [      -6.27329584, -0.00036455, 0.00022332, 7.27293129, 0.99888644, 0.99941213, 0.49325235],
    8527                                                                                                  [      -6.27329594, -0.00036451, 0.00022330, 7.27293143, 0.99888657, 0.99941219, 0.49325238],
    8528                                                                                                  [      -6.27329605, -0.00036447, 0.00022327, 7.27293158, 0.99888670, 0.99941226, 0.49325236],
    8529                                                                                                  [      -6.27329615, -0.00036442, 0.00022324, 7.27293173, 0.99888683, 0.99941233, 0.49325251],
    8530                                                                                                  [      -6.27329625, -0.00036438, 0.00022322, 7.27293187, 0.99888696, 0.99941240, 0.49325244],
    8531                                                                                                  [      -6.27329635, -0.00036434, 0.00022319, 7.27293202, 0.99888709, 0.99941247, 0.49325243],
    8532                                                                                                  [      -6.27329646, -0.00036429, 0.00022317, 7.27293216, 0.99888723, 0.99941254, 0.49325235],
    8533                                                                                                  [      -6.27329656, -0.00036425, 0.00022314, 7.27293231, 0.99888736, 0.99941261, 0.49325265],
    8534                                                                                                  [      -6.27329666, -0.00036421, 0.00022311, 7.27293245, 0.99888749, 0.99941268, 0.49325266],
    8535                                                                                                  [      -6.27329677, -0.00036417, 0.00022309, 7.27293260, 0.99888762, 0.99941275, 0.49325241],
    8536                                                                                                  [      -6.27329687, -0.00036412, 0.00022306, 7.27293274, 0.99888775, 0.99941282, 0.49325251],
    8537                                                                                                  [      -6.27329697, -0.00036408, 0.00022303, 7.27293289, 0.99888788, 0.99941289, 0.49325244],
    8538                                                                                                  [      -6.27329707, -0.00036404, 0.00022301, 7.27293304, 0.99888801, 0.99941295, 0.49325256],
    8539                                                                                                  [      -6.27329718, -0.00036399, 0.00022298, 7.27293318, 0.99888814, 0.99941302, 0.49325261],
    8540                                                                                                  [      -6.27329728, -0.00036395, 0.00022296, 7.27293333, 0.99888827, 0.99941309, 0.49325262],
    8541                                                                                                  [      -6.27329738, -0.00036391, 0.00022293, 7.27293347, 0.99888840, 0.99941316, 0.49325272],
    8542                                                                                                  [      -6.27329748, -0.00036387, 0.00022290, 7.27293362, 0.99888853, 0.99941323, 0.49325264],
    8543                                                                                                  [      -6.27329758, -0.00036382, 0.00022288, 7.27293376, 0.99888866, 0.99941330, 0.49325271],
    8544                                                                                                  [      -6.27329769, -0.00036378, 0.00022285, 7.27293391, 0.99888879, 0.99941337, 0.49325250],
    8545                                                                                                  [      -6.27329779, -0.00036374, 0.00022282, 7.27293405, 0.99888893, 0.99941344, 0.49325276],
    8546                                                                                                  [      -6.27329789, -0.00036370, 0.00022280, 7.27293420, 0.99888906, 0.99941351, 0.49325279],
    8547                                                                                                  [      -6.27329799, -0.00036365, 0.00022277, 7.27293434, 0.99888919, 0.99941358, 0.49325256],
    8548                                                                                                  [      -6.27329810, -0.00036361, 0.00022275, 7.27293449, 0.99888932, 0.99941364, 0.49325269],
    8549                                                                                                  [      -6.27329820, -0.00036357, 0.00022272, 7.27293463, 0.99888945, 0.99941371, 0.49325274],
    8550                                                                                                  [      -6.27329830, -0.00036352, 0.00022269, 7.27293478, 0.99888958, 0.99941378, 0.49325276],
    8551                                                                                                  [      -6.27329840, -0.00036348, 0.00022267, 7.27293492, 0.99888971, 0.99941385, 0.49325275],
    8552                                                                                                  [      -6.27329851, -0.00036344, 0.00022264, 7.27293507, 0.99888984, 0.99941392, 0.49325266],
    8553                                                                                                  [      -6.27329861, -0.00036340, 0.00022261, 7.27293521, 0.99888997, 0.99941399, 0.49325274],
    8554                                                                                                  [      -6.27329871, -0.00036335, 0.00022259, 7.27293536, 0.99889010, 0.99941406, 0.49325275],
    8555                                                                                                  [      -6.27329881, -0.00036331, 0.00022256, 7.27293550, 0.99889023, 0.99941413, 0.49325279],
    8556                                                                                                  [      -6.27329891, -0.00036327, 0.00022254, 7.27293565, 0.99889036, 0.99941420, 0.49325277],
    8557                                                                                                  [      -6.27329902, -0.00036323, 0.00022251, 7.27293579, 0.99889049, 0.99941426, 0.49325299],
    8558                                                                                                  [      -6.27329912, -0.00036318, 0.00022248, 7.27293593, 0.99889062, 0.99941433, 0.49325298],
    8559                                                                                                  [      -6.27329922, -0.00036314, 0.00022246, 7.27293608, 0.99889075, 0.99941440, 0.49325274],
    8560                                                                                                  [      -6.27329932, -0.00036310, 0.00022243, 7.27293622, 0.99889088, 0.99941447, 0.49325294],
    8561                                                                                                  [      -6.27329942, -0.00036306, 0.00022241, 7.27293637, 0.99889101, 0.99941454, 0.49325297],
    8562                                                                                                  [      -6.27329953, -0.00036301, 0.00022238, 7.27293651, 0.99889114, 0.99941461, 0.49325278],
    8563                                                                                                  [      -6.27329963, -0.00036297, 0.00022235, 7.27293666, 0.99889127, 0.99941468, 0.49325281],
    8564                                                                                                  [      -6.27329973, -0.00036293, 0.00022233, 7.27293680, 0.99889140, 0.99941474, 0.49325304],
    8565                                                                                                  [      -6.27329983, -0.00036289, 0.00022230, 7.27293695, 0.99889153, 0.99941481, 0.49325295],
    8566                                                                                                  [      -6.27329993, -0.00036284, 0.00022228, 7.27293709, 0.99889166, 0.99941488, 0.49325311],
    8567                                                                                                  [      -6.27330004, -0.00036280, 0.00022225, 7.27293723, 0.99889179, 0.99941495, 0.49325291],
    8568                                                                                                  [      -6.27330014, -0.00036276, 0.00022222, 7.27293738, 0.99889192, 0.99941502, 0.49325317],
    8569                                                                                                  [      -6.27330024, -0.00036272, 0.00022220, 7.27293752, 0.99889205, 0.99941509, 0.49325298],
    8570                                                                                                  [      -6.27330034, -0.00036267, 0.00022217, 7.27293767, 0.99889218, 0.99941516, 0.49325316],
    8571                                                                                                  [      -6.27330044, -0.00036263, 0.00022215, 7.27293781, 0.99889231, 0.99941522, 0.49325310],
    8572                                                                                                  [      -6.27330054, -0.00036259, 0.00022212, 7.27293796, 0.99889244, 0.99941529, 0.49325314],
    8573                                                                                                  [      -6.27330065, -0.00036255, 0.00022209, 7.27293810, 0.99889257, 0.99941536, 0.49325310],
    8574                                                                                                  [      -6.27330075, -0.00036250, 0.00022207, 7.27293824, 0.99889270, 0.99941543, 0.49325300],
    8575                                                                                                  [      -6.27330085, -0.00036246, 0.00022204, 7.27293839, 0.99889283, 0.99941550, 0.49325323],
    8576                                                                                                  [      -6.27330095, -0.00036242, 0.00022202, 7.27293853, 0.99889296, 0.99941557, 0.49325313],
    8577                                                                                                  [      -6.27330105, -0.00036238, 0.00022199, 7.27293868, 0.99889309, 0.99941564, 0.49325318],
    8578                                                                                                  [      -6.27330115, -0.00036233, 0.00022196, 7.27293882, 0.99889322, 0.99941570, 0.49325325],
    8579                                                                                                  [      -6.27330126, -0.00036229, 0.00022194, 7.27293896, 0.99889335, 0.99941577, 0.49325315],
    8580                                                                                                  [      -6.27330136, -0.00036225, 0.00022191, 7.27293911, 0.99889348, 0.99941584, 0.49325312],
    8581                                                                                                  [      -6.27330146, -0.00036221, 0.00022189, 7.27293925, 0.99889361, 0.99941591, 0.49325327],
    8582                                                                                                  [      -6.27330156, -0.00036216, 0.00022186, 7.27293940, 0.99889374, 0.99941598, 0.49325334],
    8583                                                                                                  [      -6.27330166, -0.00036212, 0.00022183, 7.27293954, 0.99889387, 0.99941605, 0.49325318],
    8584                                                                                                  [      -6.27330176, -0.00036208, 0.00022181, 7.27293968, 0.99889400, 0.99941611, 0.49325339],
    8585                                                                                                  [      -6.27330186, -0.00036204, 0.00022178, 7.27293983, 0.99889412, 0.99941618, 0.49325320],
    8586                                                                                                  [      -6.27330197, -0.00036199, 0.00022176, 7.27293997, 0.99889425, 0.99941625, 0.49325327],
    8587                                                                                                  [      -6.27330207, -0.00036195, 0.00022173, 7.27294011, 0.99889438, 0.99941632, 0.49325329],
    8588                                                                                                  [      -6.27330217, -0.00036191, 0.00022170, 7.27294026, 0.99889451, 0.99941639, 0.49325333],
    8589                                                                                                  [      -6.27330227, -0.00036187, 0.00022168, 7.27294040, 0.99889464, 0.99941646, 0.49325330],
    8590                                                                                                  [      -6.27330237, -0.00036182, 0.00022165, 7.27294055, 0.99889477, 0.99941652, 0.49325321],
    8591                                                                                                  [      -6.27330247, -0.00036178, 0.00022163, 7.27294069, 0.99889490, 0.99941659, 0.49325343],
    8592                                                                                                  [      -6.27330257, -0.00036174, 0.00022160, 7.27294083, 0.99889503, 0.99941666, 0.49325334],
    8593                                                                                                  [      -6.27330267, -0.00036170, 0.00022157, 7.27294098, 0.99889516, 0.99941673, 0.49325333],
    8594                                                                                                  [      -6.27330278, -0.00036166, 0.00022155, 7.27294112, 0.99889529, 0.99941680, 0.49325328],
    8595                                                                                                  [      -6.27330288, -0.00036161, 0.00022152, 7.27294126, 0.99889542, 0.99941686, 0.49325344],
    8596                                                                                                  [      -6.27330298, -0.00036157, 0.00022150, 7.27294141, 0.99889555, 0.99941693, 0.49325340],
    8597                                                                                                  [      -6.27330308, -0.00036153, 0.00022147, 7.27294155, 0.99889568, 0.99941700, 0.49325337],
    8598                                                                                                  [      -6.27330318, -0.00036149, 0.00022144, 7.27294169, 0.99889580, 0.99941707, 0.49325346],
    8599                                                                                                  [      -6.27330328, -0.00036144, 0.00022142, 7.27294184, 0.99889593, 0.99941714, 0.49325350],
    8600                                                                                                  [      -6.27330338, -0.00036140, 0.00022139, 7.27294198, 0.99889606, 0.99941720, 0.49325355],
    8601                                                                                                  [      -6.27330348, -0.00036136, 0.00022137, 7.27294212, 0.99889619, 0.99941727, 0.49325362],
    8602                                                                                                  [      -6.27330358, -0.00036132, 0.00022134, 7.27294227, 0.99889632, 0.99941734, 0.49325356],
    8603                                                                                                  [      -6.27330368, -0.00036128, 0.00022132, 7.27294241, 0.99889645, 0.99941741, 0.49325360],
    8604                                                                                                  [      -6.27330379, -0.00036123, 0.00022129, 7.27294255, 0.99889658, 0.99941748, 0.49325348],
    8605                                                                                                  [      -6.27330389, -0.00036119, 0.00022126, 7.27294269, 0.99889671, 0.99941754, 0.49325378],
    8606                                                                                                  [      -6.27330399, -0.00036115, 0.00022124, 7.27294284, 0.99889684, 0.99941761, 0.49325364],
    8607                                                                                                  [      -6.27330409, -0.00036111, 0.00022121, 7.27294298, 0.99889696, 0.99941768, 0.49325361],
    8608                                                                                                  [      -6.27330419, -0.00036107, 0.00022119, 7.27294312, 0.99889709, 0.99941775, 0.49325386],
    8609                                                                                                  [      -6.27330429, -0.00036102, 0.00022116, 7.27294327, 0.99889722, 0.99941782, 0.49325359],
    8610                                                                                                  [      -6.27330439, -0.00036098, 0.00022113, 7.27294341, 0.99889735, 0.99941788, 0.49325371],
    8611                                                                                                  [      -6.27330449, -0.00036094, 0.00022111, 7.27294355, 0.99889748, 0.99941795, 0.49325375],
    8612                                                                                                  [      -6.27330459, -0.00036090, 0.00022108, 7.27294370, 0.99889761, 0.99941802, 0.49325371],
    8613                                                                                                  [      -6.27330469, -0.00036085, 0.00022106, 7.27294384, 0.99889774, 0.99941809, 0.49325378],
    8614                                                                                                  [      -6.27330479, -0.00036081, 0.00022103, 7.27294398, 0.99889786, 0.99941816, 0.49325370],
    8615                                                                                                  [      -6.27330489, -0.00036077, 0.00022101, 7.27294412, 0.99889799, 0.99941822, 0.49325364],
    8616                                                                                                  [      -6.27330499, -0.00036073, 0.00022098, 7.27294427, 0.99889812, 0.99941829, 0.49325373],
    8617                                                                                                  [      -6.27330510, -0.00036069, 0.00022095, 7.27294441, 0.99889825, 0.99941836, 0.49325372],
    8618                                                                                                  [      -6.27330520, -0.00036064, 0.00022093, 7.27294455, 0.99889838, 0.99941843, 0.49325391],
    8619                                                                                                  [      -6.27330530, -0.00036060, 0.00022090, 7.27294469, 0.99889851, 0.99941849, 0.49325378],
    8620                                                                                                  [      -6.27330540, -0.00036056, 0.00022088, 7.27294484, 0.99889863, 0.99941856, 0.49325387],
    8621                                                                                                  [      -6.27330550, -0.00036052, 0.00022085, 7.27294498, 0.99889876, 0.99941863, 0.49325370],
    8622                                                                                                  [      -6.27330560, -0.00036048, 0.00022083, 7.27294512, 0.99889889, 0.99941870, 0.49325386],
    8623                                                                                                  [      -6.27330570, -0.00036043, 0.00022080, 7.27294526, 0.99889902, 0.99941877, 0.49325387],
    8624                                                                                                  [      -6.27330580, -0.00036039, 0.00022077, 7.27294541, 0.99889915, 0.99941883, 0.49325384],
    8625                                                                                                  [      -6.27330590, -0.00036035, 0.00022075, 7.27294555, 0.99889928, 0.99941890, 0.49325392],
    8626                                                                                                  [      -6.27330600, -0.00036031, 0.00022072, 7.27294569, 0.99889940, 0.99941897, 0.49325387],
    8627                                                                                                  [      -6.27330610, -0.00036027, 0.00022070, 7.27294583, 0.99889953, 0.99941904, 0.49325390],
    8628                                                                                                  [      -6.27330620, -0.00036023, 0.00022067, 7.27294598, 0.99889966, 0.99941910, 0.49325400],
    8629                                                                                                  [      -6.27330630, -0.00036018, 0.00022065, 7.27294612, 0.99889979, 0.99941917, 0.49325409],
    8630                                                                                                  [      -6.27330640, -0.00036014, 0.00022062, 7.27294626, 0.99889992, 0.99941924, 0.49325386],
    8631                                                                                                  [      -6.27330650, -0.00036010, 0.00022059, 7.27294640, 0.99890004, 0.99941931, 0.49325408],
    8632                                                                                                  [      -6.27330660, -0.00036006, 0.00022057, 7.27294654, 0.99890017, 0.99941937, 0.49325391],
    8633                                                                                                  [      -6.27330670, -0.00036002, 0.00022054, 7.27294669, 0.99890030, 0.99941944, 0.49325389],
    8634                                                                                                  [      -6.27330680, -0.00035997, 0.00022052, 7.27294683, 0.99890043, 0.99941951, 0.49325379],
    8635                                                                                                  [      -6.27330690, -0.00035993, 0.00022049, 7.27294697, 0.99890056, 0.99941958, 0.49325409],
    8636                                                                                                  [      -6.27330700, -0.00035989, 0.00022047, 7.27294711, 0.99890068, 0.99941964, 0.49325388],
    8637                                                                                                  [      -6.27330710, -0.00035985, 0.00022044, 7.27294726, 0.99890081, 0.99941971, 0.49325402],
    8638                                                                                                  [      -6.27330720, -0.00035981, 0.00022041, 7.27294740, 0.99890094, 0.99941978, 0.49325423],
    8639                                                                                                  [      -6.27330730, -0.00035976, 0.00022039, 7.27294754, 0.99890107, 0.99941985, 0.49325405],
    8640                                                                                                  [      -6.27330740, -0.00035972, 0.00022036, 7.27294768, 0.99890119, 0.99941991, 0.49325402],
    8641                                                                                                  [      -6.27330750, -0.00035968, 0.00022034, 7.27294782, 0.99890132, 0.99941998, 0.49325409],
    8642                                                                                                  [      -6.27330760, -0.00035964, 0.00022031, 7.27294796, 0.99890145, 0.99942005, 0.49325408],
    8643                                                                                                  [      -6.27330770, -0.00035960, 0.00022029, 7.27294811, 0.99890158, 0.99942012, 0.49325430],
    8644                                                                                                  [      -6.27330780, -0.00035956, 0.00022026, 7.27294825, 0.99890171, 0.99942018, 0.49325412],
    8645                                                                                                  [      -6.27330790, -0.00035951, 0.00022024, 7.27294839, 0.99890183, 0.99942025, 0.49325410],
    8646                                                                                                  [      -6.27330800, -0.00035947, 0.00022021, 7.27294853, 0.99890196, 0.99942032, 0.49325444],
    8647                                                                                                  [      -6.27330810, -0.00035943, 0.00022018, 7.27294867, 0.99890209, 0.99942039, 0.49325431],
    8648                                                                                                  [      -6.27330820, -0.00035939, 0.00022016, 7.27294882, 0.99890222, 0.99942045, 0.49325422],
    8649                                                                                                  [      -6.27330830, -0.00035935, 0.00022013, 7.27294896, 0.99890234, 0.99942052, 0.49325435],
    8650                                                                                                  [      -6.27330840, -0.00035931, 0.00022011, 7.27294910, 0.99890247, 0.99942059, 0.49325426],
    8651                                                                                                  [      -6.27330850, -0.00035926, 0.00022008, 7.27294924, 0.99890260, 0.99942065, 0.49325433],
    8652                                                                                                  [      -6.27330860, -0.00035922, 0.00022006, 7.27294938, 0.99890273, 0.99942072, 0.49325432],
    8653                                                                                                  [      -6.27330870, -0.00035918, 0.00022003, 7.27294952, 0.99890285, 0.99942079, 0.49325444],
    8654                                                                                                  [      -6.27330880, -0.00035914, 0.00022001, 7.27294966, 0.99890298, 0.99942086, 0.49325435],
    8655                                                                                                  [      -6.27330890, -0.00035910, 0.00021998, 7.27294981, 0.99890311, 0.99942092, 0.49325422],
    8656                                                                                                  [      -6.27330900, -0.00035906, 0.00021995, 7.27294995, 0.99890323, 0.99942099, 0.49325439],
    8657                                                                                                  [      -6.27330910, -0.00035901, 0.00021993, 7.27295009, 0.99890336, 0.99942106, 0.49325438],
    8658                                                                                                  [      -6.27330920, -0.00035897, 0.00021990, 7.27295023, 0.99890349, 0.99942113, 0.49325454],
    8659                                                                                                  [      -6.27330930, -0.00035893, 0.00021988, 7.27295037, 0.99890362, 0.99942119, 0.49325448],
    8660                                                                                                  [      -6.27330940, -0.00035889, 0.00021985, 7.27295051, 0.99890374, 0.99942126, 0.49325441],
    8661                                                                                                  [      -6.27330950, -0.00035885, 0.00021983, 7.27295065, 0.99890387, 0.99942133, 0.49325438],
    8662                                                                                                  [      -6.27330960, -0.00035881, 0.00021980, 7.27295079, 0.99890400, 0.99942139, 0.49325444],
    8663                                                                                                  [      -6.27330970, -0.00035876, 0.00021978, 7.27295094, 0.99890412, 0.99942146, 0.49325455],
    8664                                                                                                  [      -6.27330980, -0.00035872, 0.00021975, 7.27295108, 0.99890425, 0.99942153, 0.49325435],
    8665                                                                                                  [      -6.27330990, -0.00035868, 0.00021972, 7.27295122, 0.99890438, 0.99942159, 0.49325446],
    8666                                                                                                  [      -6.27331000, -0.00035864, 0.00021970, 7.27295136, 0.99890451, 0.99942166, 0.49325463],
    8667                                                                                                  [      -6.27331010, -0.00035860, 0.00021967, 7.27295150, 0.99890463, 0.99942173, 0.49325459],
    8668                                                                                                  [      -6.27331020, -0.00035856, 0.00021965, 7.27295164, 0.99890476, 0.99942180, 0.49325444],
    8669                                                                                                  [      -6.27331030, -0.00035851, 0.00021962, 7.27295178, 0.99890489, 0.99942186, 0.49325446],
    8670                                                                                                  [      -6.27331040, -0.00035847, 0.00021960, 7.27295192, 0.99890501, 0.99942193, 0.49325470],
    8671                                                                                                  [      -6.27331050, -0.00035843, 0.00021957, 7.27295206, 0.99890514, 0.99942200, 0.49325447],
    8672                                                                                                  [      -6.27331059, -0.00035839, 0.00021955, 7.27295220, 0.99890527, 0.99942206, 0.49325451],
    8673                                                                                                  [      -6.27331069, -0.00035835, 0.00021952, 7.27295235, 0.99890539, 0.99942213, 0.49325471],
    8674                                                                                                  [      -6.27331079, -0.00035831, 0.00021950, 7.27295249, 0.99890552, 0.99942220, 0.49325479],
    8675                                                                                                  [      -6.27331089, -0.00035827, 0.00021947, 7.27295263, 0.99890565, 0.99942226, 0.49325465],
    8676                                                                                                  [      -6.27331099, -0.00035822, 0.00021944, 7.27295277, 0.99890577, 0.99942233, 0.49325460],
    8677                                                                                                  [      -6.27331109, -0.00035818, 0.00021942, 7.27295291, 0.99890590, 0.99942240, 0.49325463],
    8678                                                                                                  [      -6.27331119, -0.00035814, 0.00021939, 7.27295305, 0.99890603, 0.99942246, 0.49325475],
    8679                                                                                                  [      -6.27331129, -0.00035810, 0.00021937, 7.27295319, 0.99890615, 0.99942253, 0.49325484],
    8680                                                                                                  [      -6.27331139, -0.00035806, 0.00021934, 7.27295333, 0.99890628, 0.99942260, 0.49325478],
    8681                                                                                                  [      -6.27331149, -0.00035802, 0.00021932, 7.27295347, 0.99890641, 0.99942267, 0.49325476],
    8682                                                                                                  [      -6.27331159, -0.00035798, 0.00021929, 7.27295361, 0.99890653, 0.99942273, 0.49325474],
    8683                                                                                                  [      -6.27331169, -0.00035793, 0.00021927, 7.27295375, 0.99890666, 0.99942280, 0.49325471],
    8684                                                                                                  [      -6.27331179, -0.00035789, 0.00021924, 7.27295389, 0.99890679, 0.99942287, 0.49325479],
    8685                                                                                                  [      -6.27331188, -0.00035785, 0.00021922, 7.27295403, 0.99890691, 0.99942293, 0.49325475],
    8686                                                                                                  [      -6.27331198, -0.00035781, 0.00021919, 7.27295417, 0.99890704, 0.99942300, 0.49325483],
    8687                                                                                                  [      -6.27331208, -0.00035777, 0.00021917, 7.27295431, 0.99890717, 0.99942307, 0.49325488],
    8688                                                                                                  [      -6.27331218, -0.00035773, 0.00021914, 7.27295445, 0.99890729, 0.99942313, 0.49325468],
    8689                                                                                                  [      -6.27331228, -0.00035769, 0.00021911, 7.27295459, 0.99890742, 0.99942320, 0.49325487],
    8690                                                                                                  [      -6.27331238, -0.00035764, 0.00021909, 7.27295473, 0.99890754, 0.99942327, 0.49325491],
    8691                                                                                                  [      -6.27331248, -0.00035760, 0.00021906, 7.27295487, 0.99890767, 0.99942333, 0.49325485],
    8692                                                                                                  [      -6.27331258, -0.00035756, 0.00021904, 7.27295501, 0.99890780, 0.99942340, 0.49325494],
    8693                                                                                                  [      -6.27331268, -0.00035752, 0.00021901, 7.27295515, 0.99890792, 0.99942347, 0.49325489],
    8694                                                                                                  [      -6.27331277, -0.00035748, 0.00021899, 7.27295529, 0.99890805, 0.99942353, 0.49325507],
    8695                                                                                                  [      -6.27331287, -0.00035744, 0.00021896, 7.27295544, 0.99890818, 0.99942360, 0.49325487],
    8696                                                                                                  [      -6.27331297, -0.00035740, 0.00021894, 7.27295558, 0.99890830, 0.99942367, 0.49325485],
    8697                                                                                                  [      -6.27331307, -0.00035736, 0.00021891, 7.27295572, 0.99890843, 0.99942373, 0.49325494],
    8698                                                                                                  [      -6.27331317, -0.00035731, 0.00021889, 7.27295586, 0.99890855, 0.99942380, 0.49325502],
    8699                                                                                                  [      -6.27331327, -0.00035727, 0.00021886, 7.27295600, 0.99890868, 0.99942386, 0.49325506],
    8700                                                                                                  [      -6.27331337, -0.00035723, 0.00021884, 7.27295614, 0.99890881, 0.99942393, 0.49325501],
    8701                                                                                                  [      -6.27331347, -0.00035719, 0.00021881, 7.27295628, 0.99890893, 0.99942400, 0.49325503],
    8702                                                                                                  [      -6.27331356, -0.00035715, 0.00021879, 7.27295642, 0.99890906, 0.99942406, 0.49325490],
    8703                                                                                                  [      -6.27331366, -0.00035711, 0.00021876, 7.27295655, 0.99890918, 0.99942413, 0.49325500],
    8704                                                                                                  [      -6.27331376, -0.00035707, 0.00021874, 7.27295669, 0.99890931, 0.99942420, 0.49325510],
    8705                                                                                                  [      -6.27331386, -0.00035703, 0.00021871, 7.27295683, 0.99890943, 0.99942426, 0.49325499],
    8706                                                                                                  [      -6.27331396, -0.00035698, 0.00021869, 7.27295697, 0.99890956, 0.99942433, 0.49325505],
    8707                                                                                                  [      -6.27331406, -0.00035694, 0.00021866, 7.27295711, 0.99890969, 0.99942440, 0.49325506],
    8708                                                                                                  [      -6.27331416, -0.00035690, 0.00021863, 7.27295725, 0.99890981, 0.99942446, 0.49325523],
    8709                                                                                                  [      -6.27331425, -0.00035686, 0.00021861, 7.27295739, 0.99890994, 0.99942453, 0.49325511],
    8710                                                                                                  [      -6.27331435, -0.00035682, 0.00021858, 7.27295753, 0.99891006, 0.99942460, 0.49325502],
    8711                                                                                                  [      -6.27331445, -0.00035678, 0.00021856, 7.27295767, 0.99891019, 0.99942466, 0.49325512],
    8712                                                                                                  [      -6.27331455, -0.00035674, 0.00021853, 7.27295781, 0.99891032, 0.99942473, 0.49325535],
    8713                                                                                                  [      -6.27331465, -0.00035670, 0.00021851, 7.27295795, 0.99891044, 0.99942479, 0.49325526],
    8714                                                                                                  [      -6.27331475, -0.00035666, 0.00021848, 7.27295809, 0.99891057, 0.99942486, 0.49325504],
    8715                                                                                                  [      -6.27331485, -0.00035661, 0.00021846, 7.27295823, 0.99891069, 0.99942493, 0.49325512],
    8716                                                                                                  [      -6.27331494, -0.00035657, 0.00021843, 7.27295837, 0.99891082, 0.99942499, 0.49325533],
    8717                                                                                                  [      -6.27331504, -0.00035653, 0.00021841, 7.27295851, 0.99891094, 0.99942506, 0.49325523],
    8718                                                                                                  [      -6.27331514, -0.00035649, 0.00021838, 7.27295865, 0.99891107, 0.99942513, 0.49325528],
    8719                                                                                                  [      -6.27331524, -0.00035645, 0.00021836, 7.27295879, 0.99891119, 0.99942519, 0.49325526],
    8720                                                                                                  [      -6.27331534, -0.00035641, 0.00021833, 7.27295893, 0.99891132, 0.99942526, 0.49325527],
    8721                                                                                                  [      -6.27331543, -0.00035637, 0.00021831, 7.27295907, 0.99891144, 0.99942532, 0.49325541],
    8722                                                                                                  [      -6.27331553, -0.00035633, 0.00021828, 7.27295921, 0.99891157, 0.99942539, 0.49325526],
    8723                                                                                                  [      -6.27331563, -0.00035629, 0.00021826, 7.27295935, 0.99891169, 0.99942546, 0.49325518],
    8724                                                                                                  [      -6.27331573, -0.00035625, 0.00021823, 7.27295948, 0.99891182, 0.99942552, 0.49325527],
    8725                                                                                                  [      -6.27331583, -0.00035620, 0.00021821, 7.27295962, 0.99891195, 0.99942559, 0.49325543],
    8726                                                                                                  [      -6.27331593, -0.00035616, 0.00021818, 7.27295976, 0.99891207, 0.99942566, 0.49325535],
    8727                                                                                                  [      -6.27331602, -0.00035612, 0.00021816, 7.27295990, 0.99891220, 0.99942572, 0.49325531],
    8728                                                                                                  [      -6.27331612, -0.00035608, 0.00021813, 7.27296004, 0.99891232, 0.99942579, 0.49325537],
    8729                                                                                                  [      -6.27331622, -0.00035604, 0.00021811, 7.27296018, 0.99891245, 0.99942585, 0.49325536],
    8730                                                                                                  [      -6.27331632, -0.00035600, 0.00021808, 7.27296032, 0.99891257, 0.99942592, 0.49325546],
    8731                                                                                                  [      -6.27331642, -0.00035596, 0.00021806, 7.27296046, 0.99891270, 0.99942599, 0.49325549],
    8732                                                                                                  [      -6.27331651, -0.00035592, 0.00021803, 7.27296060, 0.99891282, 0.99942605, 0.49325546],
    8733                                                                                                  [      -6.27331661, -0.00035588, 0.00021801, 7.27296074, 0.99891295, 0.99942612, 0.49325542],
    8734                                                                                                  [      -6.27331671, -0.00035584, 0.00021798, 7.27296087, 0.99891307, 0.99942618, 0.49325537],
    8735                                                                                                  [      -6.27331681, -0.00035579, 0.00021796, 7.27296101, 0.99891320, 0.99942625, 0.49325535],
    8736                                                                                                  [      -6.27331691, -0.00035575, 0.00021793, 7.27296115, 0.99891332, 0.99942632, 0.49325540],
    8737                                                                                                  [      -6.27331700, -0.00035571, 0.00021791, 7.27296129, 0.99891345, 0.99942638, 0.49325546],
    8738                                                                                                  [      -6.27331710, -0.00035567, 0.00021788, 7.27296143, 0.99891357, 0.99942645, 0.49325545],
    8739                                                                                                  [      -6.27331720, -0.00035563, 0.00021786, 7.27296157, 0.99891370, 0.99942651, 0.49325569],
    8740                                                                                                  [      -6.27331730, -0.00035559, 0.00021783, 7.27296171, 0.99891382, 0.99942658, 0.49325550],
    8741                                                                                                  [      -6.27331740, -0.00035555, 0.00021781, 7.27296185, 0.99891395, 0.99942664, 0.49325563],
    8742                                                                                                  [      -6.27331749, -0.00035551, 0.00021778, 7.27296198, 0.99891407, 0.99942671, 0.49325568],
    8743                                                                                                  [      -6.27331759, -0.00035547, 0.00021776, 7.27296212, 0.99891420, 0.99942678, 0.49325547],
    8744                                                                                                  [      -6.27331769, -0.00035543, 0.00021773, 7.27296226, 0.99891432, 0.99942684, 0.49325550],
    8745                                                                                                  [      -6.27331779, -0.00035539, 0.00021771, 7.27296240, 0.99891444, 0.99942691, 0.49325571],
    8746                                                                                                  [      -6.27331788, -0.00035535, 0.00021768, 7.27296254, 0.99891457, 0.99942697, 0.49325568],
    8747                                                                                                  [      -6.27331798, -0.00035530, 0.00021766, 7.27296268, 0.99891469, 0.99942704, 0.49325562],
    8748                                                                                                  [      -6.27331808, -0.00035526, 0.00021763, 7.27296281, 0.99891482, 0.99942711, 0.49325569],
    8749                                                                                                  [      -6.27331818, -0.00035522, 0.00021761, 7.27296295, 0.99891494, 0.99942717, 0.49325576],
    8750                                                                                                  [      -6.27331827, -0.00035518, 0.00021758, 7.27296309, 0.99891507, 0.99942724, 0.49325584],
    8751                                                                                                  [      -6.27331837, -0.00035514, 0.00021756, 7.27296323, 0.99891519, 0.99942730, 0.49325572],
    8752                                                                                                  [      -6.27331847, -0.00035510, 0.00021753, 7.27296337, 0.99891532, 0.99942737, 0.49325557],
    8753                                                                                                  [      -6.27331857, -0.00035506, 0.00021751, 7.27296351, 0.99891544, 0.99942743, 0.49325555],
    8754                                                                                                  [      -6.27331866, -0.00035502, 0.00021748, 7.27296364, 0.99891557, 0.99942750, 0.49325590],
    8755                                                                                                  [      -6.27331876, -0.00035498, 0.00021746, 7.27296378, 0.99891569, 0.99942757, 0.49325582],
    8756                                                                                                  [      -6.27331886, -0.00035494, 0.00021743, 7.27296392, 0.99891581, 0.99942763, 0.49325599],
    8757                                                                                                  [      -6.27331896, -0.00035490, 0.00021741, 7.27296406, 0.99891594, 0.99942770, 0.49325596],
    8758                                                                                                  [      -6.27331905, -0.00035486, 0.00021738, 7.27296420, 0.99891606, 0.99942776, 0.49325600],
    8759                                                                                                  [      -6.27331915, -0.00035482, 0.00021736, 7.27296434, 0.99891619, 0.99942783, 0.49325578],
    8760                                                                                                  [      -6.27331925, -0.00035478, 0.00021733, 7.27296447, 0.99891631, 0.99942789, 0.49325597],
    8761                                                                                                  [      -6.27331935, -0.00035473, 0.00021731, 7.27296461, 0.99891644, 0.99942796, 0.49325578],
    8762                                                                                                  [      -6.27331944, -0.00035469, 0.00021728, 7.27296475, 0.99891656, 0.99942802, 0.49325601],
    8763                                                                                                  [      -6.27331954, -0.00035465, 0.00021726, 7.27296489, 0.99891668, 0.99942809, 0.49325574],
    8764                                                                                                  [      -6.27331964, -0.00035461, 0.00021723, 7.27296503, 0.99891681, 0.99942816, 0.49325598],
    8765                                                                                                  [      -6.27331974, -0.00035457, 0.00021721, 7.27296516, 0.99891693, 0.99942822, 0.49325602],
    8766                                                                                                  [      -6.27331983, -0.00035453, 0.00021718, 7.27296530, 0.99891706, 0.99942829, 0.49325595],
    8767                                                                                                  [      -6.27331993, -0.00035449, 0.00021716, 7.27296544, 0.99891718, 0.99942835, 0.49325608],
    8768                                                                                                  [      -6.27332003, -0.00035445, 0.00021713, 7.27296558, 0.99891730, 0.99942842, 0.49325597],
    8769                                                                                                  [      -6.27332012, -0.00035441, 0.00021711, 7.27296571, 0.99891743, 0.99942848, 0.49325598],
    8770                                                                                                  [      -6.27332022, -0.00035437, 0.00021708, 7.27296585, 0.99891755, 0.99942855, 0.49325613],
    8771                                                                                                  [      -6.27332032, -0.00035433, 0.00021706, 7.27296599, 0.99891768, 0.99942861, 0.49325588],
    8772                                                                                                  [      -6.27332042, -0.00035429, 0.00021703, 7.27296613, 0.99891780, 0.99942868, 0.49325598],
    8773                                                                                                  [      -6.27332051, -0.00035425, 0.00021701, 7.27296626, 0.99891792, 0.99942874, 0.49325592],
    8774                                                                                                  [      -6.27332061, -0.00035421, 0.00021698, 7.27296640, 0.99891805, 0.99942881, 0.49325612],
    8775                                                                                                  [      -6.27332071, -0.00035417, 0.00021696, 7.27296654, 0.99891817, 0.99942888, 0.49325620],
    8776                                                                                                  [      -6.27332080, -0.00035413, 0.00021693, 7.27296668, 0.99891830, 0.99942894, 0.49325610],
    8777                                                                                                  [      -6.27332090, -0.00035409, 0.00021691, 7.27296681, 0.99891842, 0.99942901, 0.49325614],
    8778                                                                                                  [      -6.27332100, -0.00035405, 0.00021688, 7.27296695, 0.99891854, 0.99942907, 0.49325612],
    8779                                                                                                  [      -6.27332109, -0.00035400, 0.00021686, 7.27296709, 0.99891867, 0.99942914, 0.49325613],
    8780                                                                                                  [      -6.27332119, -0.00035396, 0.00021683, 7.27296723, 0.99891879, 0.99942920, 0.49325604],
    8781                                                                                                  [      -6.27332129, -0.00035392, 0.00021681, 7.27296736, 0.99891891, 0.99942927, 0.49325626],
    8782                                                                                                  [      -6.27332139, -0.00035388, 0.00021678, 7.27296750, 0.99891904, 0.99942933, 0.49325625],
    8783                                                                                                  [      -6.27332148, -0.00035384, 0.00021676, 7.27296764, 0.99891916, 0.99942940, 0.49325605],
    8784                                                                                                  [      -6.27332158, -0.00035380, 0.00021673, 7.27296778, 0.99891928, 0.99942946, 0.49325626],
    8785                                                                                                  [      -6.27332168, -0.00035376, 0.00021671, 7.27296791, 0.99891941, 0.99942953, 0.49325629],
    8786                                                                                                  [      -6.27332177, -0.00035372, 0.00021669, 7.27296805, 0.99891953, 0.99942959, 0.49325630],
    8787                                                                                                  [      -6.27332187, -0.00035368, 0.00021666, 7.27296819, 0.99891966, 0.99942966, 0.49325628],
    8788                                                                                                  [      -6.27332197, -0.00035364, 0.00021664, 7.27296833, 0.99891978, 0.99942972, 0.49325635],
    8789                                                                                                  [      -6.27332206, -0.00035360, 0.00021661, 7.27296846, 0.99891990, 0.99942979, 0.49325625],
    8790                                                                                                  [      -6.27332216, -0.00035356, 0.00021659, 7.27296860, 0.99892003, 0.99942985, 0.49325617],
    8791                                                                                                  [      -6.27332226, -0.00035352, 0.00021656, 7.27296874, 0.99892015, 0.99942992, 0.49325641],
    8792                                                                                                  [      -6.27332235, -0.00035348, 0.00021654, 7.27296887, 0.99892027, 0.99942998, 0.49325636],
    8793                                                                                                  [      -6.27332245, -0.00035344, 0.00021651, 7.27296901, 0.99892040, 0.99943005, 0.49325630],
    8794                                                                                                  [      -6.27332255, -0.00035340, 0.00021649, 7.27296915, 0.99892052, 0.99943011, 0.49325637],
    8795                                                                                                  [      -6.27332264, -0.00035336, 0.00021646, 7.27296928, 0.99892064, 0.99943018, 0.49325631],
    8796                                                                                                  [      -6.27332274, -0.00035332, 0.00021644, 7.27296942, 0.99892077, 0.99943024, 0.49325656],
    8797                                                                                                  [      -6.27332284, -0.00035328, 0.00021641, 7.27296956, 0.99892089, 0.99943031, 0.49325631],
    8798                                                                                                  [      -6.27332293, -0.00035324, 0.00021639, 7.27296970, 0.99892101, 0.99943037, 0.49325638],
    8799                                                                                                  [      -6.27332303, -0.00035320, 0.00021636, 7.27296983, 0.99892114, 0.99943044, 0.49325647],
    8800                                                                                                  [      -6.27332313, -0.00035316, 0.00021634, 7.27296997, 0.99892126, 0.99943050, 0.49325639],
    8801                                                                                                  [      -6.27332322, -0.00035312, 0.00021631, 7.27297011, 0.99892138, 0.99943057, 0.49325638],
    8802                                                                                                  [      -6.27332332, -0.00035308, 0.00021629, 7.27297024, 0.99892150, 0.99943063, 0.49325638],
    8803                                                                                                  [      -6.27332341, -0.00035304, 0.00021626, 7.27297038, 0.99892163, 0.99943070, 0.49325643],
    8804                                                                                                  [      -6.27332351, -0.00035300, 0.00021624, 7.27297052, 0.99892175, 0.99943076, 0.49325659],
    8805                                                                                                  [      -6.27332361, -0.00035296, 0.00021622, 7.27297065, 0.99892187, 0.99943083, 0.49325672],
    8806                                                                                                  [      -6.27332370, -0.00035291, 0.00021619, 7.27297079, 0.99892200, 0.99943089, 0.49325654],
    8807                                                                                                  [      -6.27332380, -0.00035287, 0.00021617, 7.27297093, 0.99892212, 0.99943096, 0.49325642],
    8808                                                                                                  [      -6.27332390, -0.00035283, 0.00021614, 7.27297106, 0.99892224, 0.99943102, 0.49325660],
    8809                                                                                                  [      -6.27332399, -0.00035279, 0.00021612, 7.27297120, 0.99892237, 0.99943109, 0.49325667],
    8810                                                                                                  [      -6.27332409, -0.00035275, 0.00021609, 7.27297133, 0.99892249, 0.99943115, 0.49325649],
    8811                                                                                                  [      -6.27332418, -0.00035271, 0.00021607, 7.27297147, 0.99892261, 0.99943122, 0.49325655],
    8812                                                                                                  [      -6.27332428, -0.00035267, 0.00021604, 7.27297161, 0.99892273, 0.99943128, 0.49325662],
    8813                                                                                                  [      -6.27332438, -0.00035263, 0.00021602, 7.27297174, 0.99892286, 0.99943135, 0.49325664],
    8814                                                                                                  [      -6.27332447, -0.00035259, 0.00021599, 7.27297188, 0.99892298, 0.99943141, 0.49325657],
    8815                                                                                                  [      -6.27332457, -0.00035255, 0.00021597, 7.27297202, 0.99892310, 0.99943148, 0.49325670],
    8816                                                                                                  [      -6.27332467, -0.00035251, 0.00021594, 7.27297215, 0.99892322, 0.99943154, 0.49325664],
    8817                                                                                                  [      -6.27332476, -0.00035247, 0.00021592, 7.27297229, 0.99892335, 0.99943161, 0.49325680],
    8818                                                                                                  [      -6.27332486, -0.00035243, 0.00021590, 7.27297243, 0.99892347, 0.99943167, 0.49325677],
    8819                                                                                                  [      -6.27332495, -0.00035239, 0.00021587, 7.27297256, 0.99892359, 0.99943174, 0.49325674],
    8820                                                                                                  [      -6.27332505, -0.00035235, 0.00021585, 7.27297270, 0.99892371, 0.99943180, 0.49325673],
    8821                                                                                                  [      -6.27332515, -0.00035231, 0.00021582, 7.27297283, 0.99892384, 0.99943187, 0.49325687],
    8822                                                                                                  [      -6.27332524, -0.00035227, 0.00021580, 7.27297297, 0.99892396, 0.99943193, 0.49325676],
    8823                                                                                                  [      -6.27332534, -0.00035223, 0.00021577, 7.27297311, 0.99892408, 0.99943200, 0.49325694],
    8824                                                                                                  [      -6.27332543, -0.00035219, 0.00021575, 7.27297324, 0.99892420, 0.99943206, 0.49325684],
    8825                                                                                                  [      -6.27332553, -0.00035215, 0.00021572, 7.27297338, 0.99892433, 0.99943212, 0.49325673],
    8826                                                                                                  [      -6.27332563, -0.00035211, 0.00021570, 7.27297351, 0.99892445, 0.99943219, 0.49325679],
    8827                                                                                                  [      -6.27332572, -0.00035207, 0.00021567, 7.27297365, 0.99892457, 0.99943225, 0.49325687],
    8828                                                                                                  [      -6.27332582, -0.00035203, 0.00021565, 7.27297379, 0.99892469, 0.99943232, 0.49325682],
    8829                                                                                                  [      -6.27332591, -0.00035199, 0.00021563, 7.27297392, 0.99892482, 0.99943238, 0.49325693],
    8830                                                                                                  [      -6.27332601, -0.00035195, 0.00021560, 7.27297406, 0.99892494, 0.99943245, 0.49325706],
    8831                                                                                                  [      -6.27332611, -0.00035191, 0.00021558, 7.27297419, 0.99892506, 0.99943251, 0.49325679],
    8832                                                                                                  [      -6.27332620, -0.00035187, 0.00021555, 7.27297433, 0.99892518, 0.99943258, 0.49325693],
    8833                                                                                                  [      -6.27332630, -0.00035183, 0.00021553, 7.27297446, 0.99892531, 0.99943264, 0.49325690],
    8834                                                                                                  [      -6.27332639, -0.00035179, 0.00021550, 7.27297460, 0.99892543, 0.99943271, 0.49325679],
    8835                                                                                                  [      -6.27332649, -0.00035175, 0.00021548, 7.27297474, 0.99892555, 0.99943277, 0.49325703],
    8836                                                                                                  [      -6.27332658, -0.00035171, 0.00021545, 7.27297487, 0.99892567, 0.99943283, 0.49325709],
    8837                                                                                                  [      -6.27332668, -0.00035167, 0.00021543, 7.27297501, 0.99892579, 0.99943290, 0.49325716],
    8838                                                                                                  [      -6.27332678, -0.00035163, 0.00021540, 7.27297514, 0.99892592, 0.99943296, 0.49325688],
    8839                                                                                                  [      -6.27332687, -0.00035159, 0.00021538, 7.27297528, 0.99892604, 0.99943303, 0.49325701],
    8840                                                                                                  [      -6.27332697, -0.00035155, 0.00021536, 7.27297541, 0.99892616, 0.99943309, 0.49325699],
    8841                                                                                                  [      -6.27332706, -0.00035151, 0.00021533, 7.27297555, 0.99892628, 0.99943316, 0.49325716],
    8842                                                                                                  [      -6.27332716, -0.00035147, 0.00021531, 7.27297569, 0.99892640, 0.99943322, 0.49325705],
    8843                                                                                                  [      -6.27332725, -0.00035143, 0.00021528, 7.27297582, 0.99892653, 0.99943329, 0.49325714],
    8844                                                                                                  [      -6.27332735, -0.00035139, 0.00021526, 7.27297596, 0.99892665, 0.99943335, 0.49325697],
    8845                                                                                                  [      -6.27332744, -0.00035135, 0.00021523, 7.27297609, 0.99892677, 0.99943341, 0.49325706],
    8846                                                                                                  [      -6.27332754, -0.00035131, 0.00021521, 7.27297623, 0.99892689, 0.99943348, 0.49325710],
    8847                                                                                                  [      -6.27332763, -0.00035127, 0.00021518, 7.27297636, 0.99892701, 0.99943354, 0.49325718],
    8848                                                                                                  [      -6.27332773, -0.00035123, 0.00021516, 7.27297650, 0.99892714, 0.99943361, 0.49325714],
    8849                                                                                                  [      -6.27332783, -0.00035119, 0.00021514, 7.27297663, 0.99892726, 0.99943367, 0.49325704],
    8850                                                                                                  [      -6.27332792, -0.00035115, 0.00021511, 7.27297677, 0.99892738, 0.99943374, 0.49325724],
    8851                                                                                                  [      -6.27332802, -0.00035111, 0.00021509, 7.27297690, 0.99892750, 0.99943380, 0.49325727],
    8852                                                                                                  [      -6.27332811, -0.00035107, 0.00021506, 7.27297704, 0.99892762, 0.99943386, 0.49325718],
    8853                                                                                                  [      -6.27332821, -0.00035103, 0.00021504, 7.27297717, 0.99892774, 0.99943393, 0.49325715],
    8854                                                                                                  [      -6.27332830, -0.00035099, 0.00021501, 7.27297731, 0.99892787, 0.99943399, 0.49325736],
    8855                                                                                                  [      -6.27332840, -0.00035095, 0.00021499, 7.27297744, 0.99892799, 0.99943406, 0.49325725],
    8856                                                                                                  [      -6.27332849, -0.00035091, 0.00021496, 7.27297758, 0.99892811, 0.99943412, 0.49325737],
    8857                                                                                                  [      -6.27332859, -0.00035087, 0.00021494, 7.27297771, 0.99892823, 0.99943418, 0.49325733],
    8858                                                                                                  [      -6.27332868, -0.00035084, 0.00021492, 7.27297785, 0.99892835, 0.99943425, 0.49325727],
    8859                                                                                                  [      -6.27332878, -0.00035080, 0.00021489, 7.27297798, 0.99892847, 0.99943431, 0.49325722],
    8860                                                                                                  [      -6.27332887, -0.00035076, 0.00021487, 7.27297812, 0.99892859, 0.99943438, 0.49325726],
    8861                                                                                                  [      -6.27332897, -0.00035072, 0.00021484, 7.27297825, 0.99892872, 0.99943444, 0.49325746],
    8862                                                                                                  [      -6.27332906, -0.00035068, 0.00021482, 7.27297839, 0.99892884, 0.99943451, 0.49325735],
    8863                                                                                                  [      -6.27332916, -0.00035064, 0.00021479, 7.27297852, 0.99892896, 0.99943457, 0.49325729],
    8864                                                                                                  [      -6.27332925, -0.00035060, 0.00021477, 7.27297866, 0.99892908, 0.99943463, 0.49325733],
    8865                                                                                                  [      -6.27332935, -0.00035056, 0.00021475, 7.27297879, 0.99892920, 0.99943470, 0.49325743],
    8866                                                                                                  [      -6.27332944, -0.00035052, 0.00021472, 7.27297893, 0.99892932, 0.99943476, 0.49325745],
    8867                                                                                                  [      -6.27332954, -0.00035048, 0.00021470, 7.27297906, 0.99892944, 0.99943483, 0.49325763],
    8868                                                                                                  [      -6.27332963, -0.00035044, 0.00021467, 7.27297920, 0.99892956, 0.99943489, 0.49325734],
    8869                                                                                                  [      -6.27332973, -0.00035040, 0.00021465, 7.27297933, 0.99892969, 0.99943495, 0.49325743],
    8870                                                                                                  [      -6.27332982, -0.00035036, 0.00021462, 7.27297947, 0.99892981, 0.99943502, 0.49325746],
    8871                                                                                                  [      -6.27332992, -0.00035032, 0.00021460, 7.27297960, 0.99892993, 0.99943508, 0.49325750],
    8872                                                                                                  [      -6.27333001, -0.00035028, 0.00021458, 7.27297973, 0.99893005, 0.99943515, 0.49325754],
    8873                                                                                                  [      -6.27333011, -0.00035024, 0.00021455, 7.27297987, 0.99893017, 0.99943521, 0.49325751],
    8874                                                                                                  [      -6.27333020, -0.00035020, 0.00021453, 7.27298000, 0.99893029, 0.99943527, 0.49325761],
    8875                                                                                                  [      -6.27333030, -0.00035016, 0.00021450, 7.27298014, 0.99893041, 0.99943534, 0.49325752],
    8876                                                                                                  [      -6.27333039, -0.00035012, 0.00021448, 7.27298027, 0.99893053, 0.99943540, 0.49325748],
    8877                                                                                                  [      -6.27333049, -0.00035008, 0.00021445, 7.27298041, 0.99893065, 0.99943546, 0.49325770],
    8878                                                                                                  [      -6.27333058, -0.00035004, 0.00021443, 7.27298054, 0.99893078, 0.99943553, 0.49325749],
    8879                                                                                                  [      -6.27333068, -0.00035000, 0.00021441, 7.27298068, 0.99893090, 0.99943559, 0.49325754],
    8880                                                                                                  [      -6.27333077, -0.00034996, 0.00021438, 7.27298081, 0.99893102, 0.99943566, 0.49325757],
    8881                                                                                                  [      -6.27333087, -0.00034992, 0.00021436, 7.27298094, 0.99893114, 0.99943572, 0.49325772],
    8882                                                                                                  [      -6.27333096, -0.00034988, 0.00021433, 7.27298108, 0.99893126, 0.99943578, 0.49325749],
    8883                                                                                                  [      -6.27333106, -0.00034984, 0.00021431, 7.27298121, 0.99893138, 0.99943585, 0.49325746],
    8884                                                                                                  [      -6.27333115, -0.00034980, 0.00021428, 7.27298135, 0.99893150, 0.99943591, 0.49325763],
    8885                                                                                                  [      -6.27333125, -0.00034976, 0.00021426, 7.27298148, 0.99893162, 0.99943597, 0.49325780],
    8886                                                                                                  [      -6.27333134, -0.00034973, 0.00021424, 7.27298162, 0.99893174, 0.99943604, 0.49325773],
    8887                                                                                                  [      -6.27333144, -0.00034969, 0.00021421, 7.27298175, 0.99893186, 0.99943610, 0.49325774],
    8888                                                                                                  [      -6.27333153, -0.00034965, 0.00021419, 7.27298188, 0.99893198, 0.99943617, 0.49325768],
    8889                                                                                                  [      -6.27333162, -0.00034961, 0.00021416, 7.27298202, 0.99893210, 0.99943623, 0.49325772],
    8890                                                                                                  [      -6.27333172, -0.00034957, 0.00021414, 7.27298215, 0.99893223, 0.99943629, 0.49325780],
    8891                                                                                                  [      -6.27333181, -0.00034953, 0.00021412, 7.27298229, 0.99893235, 0.99943636, 0.49325790],
    8892                                                                                                  [      -6.27333191, -0.00034949, 0.00021409, 7.27298242, 0.99893247, 0.99943642, 0.49325769],
    8893                                                                                                  [      -6.27333200, -0.00034945, 0.00021407, 7.27298255, 0.99893259, 0.99943648, 0.49325784],
    8894                                                                                                  [      -6.27333210, -0.00034941, 0.00021404, 7.27298269, 0.99893271, 0.99943655, 0.49325781],
    8895                                                                                                  [      -6.27333219, -0.00034937, 0.00021402, 7.27298282, 0.99893283, 0.99943661, 0.49325781],
    8896                                                                                                  [      -6.27333229, -0.00034933, 0.00021399, 7.27298296, 0.99893295, 0.99943668, 0.49325775],
    8897                                                                                                  [      -6.27333238, -0.00034929, 0.00021397, 7.27298309, 0.99893307, 0.99943674, 0.49325777],
    8898                                                                                                  [      -6.27333247, -0.00034925, 0.00021395, 7.27298322, 0.99893319, 0.99943680, 0.49325794],
    8899                                                                                                  [      -6.27333257, -0.00034921, 0.00021392, 7.27298336, 0.99893331, 0.99943687, 0.49325786],
    8900                                                                                                  [      -6.27333266, -0.00034917, 0.00021390, 7.27298349, 0.99893343, 0.99943693, 0.49325783],
    8901                                                                                                  [      -6.27333276, -0.00034913, 0.00021387, 7.27298362, 0.99893355, 0.99943699, 0.49325777],
    8902                                                                                                  [      -6.27333285, -0.00034909, 0.00021385, 7.27298376, 0.99893367, 0.99943706, 0.49325800],
    8903                                                                                                  [      -6.27333295, -0.00034905, 0.00021383, 7.27298389, 0.99893379, 0.99943712, 0.49325788],
    8904                                                                                                  [      -6.27333304, -0.00034902, 0.00021380, 7.27298402, 0.99893391, 0.99943718, 0.49325796],
    8905                                                                                                  [      -6.27333313, -0.00034898, 0.00021378, 7.27298416, 0.99893403, 0.99943725, 0.49325777],
    8906                                                                                                  [      -6.27333323, -0.00034894, 0.00021375, 7.27298429, 0.99893415, 0.99943731, 0.49325803],
    8907                                                                                                  [      -6.27333332, -0.00034890, 0.00021373, 7.27298443, 0.99893427, 0.99943737, 0.49325799],
    8908                                                                                                  [      -6.27333342, -0.00034886, 0.00021370, 7.27298456, 0.99893439, 0.99943744, 0.49325815],
    8909                                                                                                  [      -6.27333351, -0.00034882, 0.00021368, 7.27298469, 0.99893451, 0.99943750, 0.49325810],
    8910                                                                                                  [      -6.27333360, -0.00034878, 0.00021366, 7.27298483, 0.99893463, 0.99943756, 0.49325805],
    8911                                                                                                  [      -6.27333370, -0.00034874, 0.00021363, 7.27298496, 0.99893475, 0.99943763, 0.49325805],
    8912                                                                                                  [      -6.27333379, -0.00034870, 0.00021361, 7.27298509, 0.99893487, 0.99943769, 0.49325810],
    8913                                                                                                  [      -6.27333389, -0.00034866, 0.00021358, 7.27298523, 0.99893499, 0.99943775, 0.49325812],
    8914                                                                                                  [      -6.27333398, -0.00034862, 0.00021356, 7.27298536, 0.99893511, 0.99943782, 0.49325800],
    8915                                                                                                  [      -6.27333408, -0.00034858, 0.00021354, 7.27298549, 0.99893523, 0.99943788, 0.49325798],
    8916                                                                                                  [      -6.27333417, -0.00034854, 0.00021351, 7.27298563, 0.99893535, 0.99943794, 0.49325819],
    8917                                                                                                  [      -6.27333426, -0.00034850, 0.00021349, 7.27298576, 0.99893547, 0.99943801, 0.49325809],
    8918                                                                                                  [      -6.27333436, -0.00034847, 0.00021346, 7.27298589, 0.99893559, 0.99943807, 0.49325811],
    8919                                                                                                  [      -6.27333445, -0.00034843, 0.00021344, 7.27298602, 0.99893571, 0.99943813, 0.49325804],
    8920                                                                                                  [      -6.27333454, -0.00034839, 0.00021342, 7.27298616, 0.99893583, 0.99943820, 0.49325814],
    8921                                                                                                  [      -6.27333464, -0.00034835, 0.00021339, 7.27298629, 0.99893595, 0.99943826, 0.49325817],
    8922                                                                                                  [      -6.27333473, -0.00034831, 0.00021337, 7.27298642, 0.99893607, 0.99943832, 0.49325810],
    8923                                                                                                  [      -6.27333483, -0.00034827, 0.00021334, 7.27298656, 0.99893619, 0.99943839, 0.49325810],
    8924                                                                                                  [      -6.27333492, -0.00034823, 0.00021332, 7.27298669, 0.99893631, 0.99943845, 0.49325813],
    8925                                                                                                  [      -6.27333501, -0.00034819, 0.00021330, 7.27298682, 0.99893643, 0.99943851, 0.49325821],
    8926                                                                                                  [      -6.27333511, -0.00034815, 0.00021327, 7.27298696, 0.99893655, 0.99943858, 0.49325825],
    8927                                                                                                  [      -6.27333520, -0.00034811, 0.00021325, 7.27298709, 0.99893667, 0.99943864, 0.49325802],
    8928                                                                                                  [      -6.27333530, -0.00034807, 0.00021322, 7.27298722, 0.99893679, 0.99943870, 0.49325839],
    8929                                                                                                  [      -6.27333539, -0.00034803, 0.00021320, 7.27298735, 0.99893691, 0.99943877, 0.49325824],
    8930                                                                                                  [      -6.27333548, -0.00034800, 0.00021318, 7.27298749, 0.99893703, 0.99943883, 0.49325827],
    8931                                                                                                  [      -6.27333558, -0.00034796, 0.00021315, 7.27298762, 0.99893715, 0.99943889, 0.49325830],
    8932                                                                                                  [      -6.27333567, -0.00034792, 0.00021313, 7.27298775, 0.99893727, 0.99943895, 0.49325817],
    8933                                                                                                  [      -6.27333576, -0.00034788, 0.00021310, 7.27298789, 0.99893739, 0.99943902, 0.49325841],
    8934                                                                                                  [      -6.27333586, -0.00034784, 0.00021308, 7.27298802, 0.99893751, 0.99943908, 0.49325836],
    8935                                                                                                  [      -6.27333595, -0.00034780, 0.00021306, 7.27298815, 0.99893763, 0.99943914, 0.49325836],
    8936                                                                                                  [      -6.27333604, -0.00034776, 0.00021303, 7.27298828, 0.99893774, 0.99943921, 0.49325838],
    8937                                                                                                  [      -6.27333614, -0.00034772, 0.00021301, 7.27298842, 0.99893786, 0.99943927, 0.49325845],
    8938                                                                                                  [      -6.27333623, -0.00034768, 0.00021298, 7.27298855, 0.99893798, 0.99943933, 0.49325848],
    8939                                                                                                  [      -6.27333632, -0.00034764, 0.00021296, 7.27298868, 0.99893810, 0.99943940, 0.49325833],
    8940                                                                                                  [      -6.27333642, -0.00034760, 0.00021294, 7.27298881, 0.99893822, 0.99943946, 0.49325843],
    8941                                                                                                  [      -6.27333651, -0.00034757, 0.00021291, 7.27298895, 0.99893834, 0.99943952, 0.49325849],
    8942                                                                                                  [      -6.27333661, -0.00034753, 0.00021289, 7.27298908, 0.99893846, 0.99943958, 0.49325841],
    8943                                                                                                  [      -6.27333670, -0.00034749, 0.00021286, 7.27298921, 0.99893858, 0.99943965, 0.49325856],
    8944                                                                                                  [      -6.27333679, -0.00034745, 0.00021284, 7.27298934, 0.99893870, 0.99943971, 0.49325841],
    8945                                                                                                  [      -6.27333689, -0.00034741, 0.00021282, 7.27298948, 0.99893882, 0.99943977, 0.49325845],
    8946                                                                                                  [      -6.27333698, -0.00034737, 0.00021279, 7.27298961, 0.99893894, 0.99943984, 0.49325852],
    8947                                                                                                  [      -6.27333707, -0.00034733, 0.00021277, 7.27298974, 0.99893906, 0.99943990, 0.49325863],
    8948                                                                                                  [      -6.27333717, -0.00034729, 0.00021275, 7.27298987, 0.99893918, 0.99943996, 0.49325866],
    8949                                                                                                  [      -6.27333726, -0.00034725, 0.00021272, 7.27299000, 0.99893929, 0.99944002, 0.49325856],
    8950                                                                                                  [      -6.27333735, -0.00034721, 0.00021270, 7.27299014, 0.99893941, 0.99944009, 0.49325854],
    8951                                                                                                  [      -6.27333745, -0.00034718, 0.00021267, 7.27299027, 0.99893953, 0.99944015, 0.49325858],
    8952                                                                                                  [      -6.27333754, -0.00034714, 0.00021265, 7.27299040, 0.99893965, 0.99944021, 0.49325856],
    8953                                                                                                  [      -6.27333763, -0.00034710, 0.00021263, 7.27299053, 0.99893977, 0.99944028, 0.49325873],
    8954                                                                                                  [      -6.27333772, -0.00034706, 0.00021260, 7.27299067, 0.99893989, 0.99944034, 0.49325877],
    8955                                                                                                  [      -6.27333782, -0.00034702, 0.00021258, 7.27299080, 0.99894001, 0.99944040, 0.49325864],
    8956                                                                                                  [      -6.27333791, -0.00034698, 0.00021255, 7.27299093, 0.99894013, 0.99944046, 0.49325857],
    8957                                                                                                  [      -6.27333800, -0.00034694, 0.00021253, 7.27299106, 0.99894025, 0.99944053, 0.49325852],
    8958                                                                                                  [      -6.27333810, -0.00034690, 0.00021251, 7.27299119, 0.99894036, 0.99944059, 0.49325872],
    8959                                                                                                  [      -6.27333819, -0.00034686, 0.00021248, 7.27299133, 0.99894048, 0.99944065, 0.49325865],
    8960                                                                                                  [      -6.27333828, -0.00034683, 0.00021246, 7.27299146, 0.99894060, 0.99944072, 0.49325884],
    8961                                                                                                  [      -6.27333838, -0.00034679, 0.00021244, 7.27299159, 0.99894072, 0.99944078, 0.49325864],
    8962                                                                                                  [      -6.27333847, -0.00034675, 0.00021241, 7.27299172, 0.99894084, 0.99944084, 0.49325865],
    8963                                                                                                  [      -6.27333856, -0.00034671, 0.00021239, 7.27299185, 0.99894096, 0.99944090, 0.49325871],
    8964                                                                                                  [      -6.27333866, -0.00034667, 0.00021236, 7.27299199, 0.99894108, 0.99944097, 0.49325862],
    8965                                                                                                  [      -6.27333875, -0.00034663, 0.00021234, 7.27299212, 0.99894120, 0.99944103, 0.49325892],
    8966                                                                                                  [      -6.27333884, -0.00034659, 0.00021232, 7.27299225, 0.99894131, 0.99944109, 0.49325886],
    8967                                                                                                  [      -6.27333893, -0.00034655, 0.00021229, 7.27299238, 0.99894143, 0.99944115, 0.49325892],
    8968                                                                                                  [      -6.27333903, -0.00034652, 0.00021227, 7.27299251, 0.99894155, 0.99944122, 0.49325878],
    8969                                                                                                  [      -6.27333912, -0.00034648, 0.00021225, 7.27299264, 0.99894167, 0.99944128, 0.49325893],
    8970                                                                                                  [      -6.27333921, -0.00034644, 0.00021222, 7.27299278, 0.99894179, 0.99944134, 0.49325882],
    8971                                                                                                  [      -6.27333931, -0.00034640, 0.00021220, 7.27299291, 0.99894191, 0.99944140, 0.49325880],
    8972                                                                                                  [      -6.27333940, -0.00034636, 0.00021217, 7.27299304, 0.99894202, 0.99944147, 0.49325884],
    8973                                                                                                  [      -6.27333949, -0.00034632, 0.00021215, 7.27299317, 0.99894214, 0.99944153, 0.49325871],
    8974                                                                                                  [      -6.27333958, -0.00034628, 0.00021213, 7.27299330, 0.99894226, 0.99944159, 0.49325888],
    8975                                                                                                  [      -6.27333968, -0.00034624, 0.00021210, 7.27299343, 0.99894238, 0.99944165, 0.49325907],
    8976                                                                                                  [      -6.27333977, -0.00034620, 0.00021208, 7.27299356, 0.99894250, 0.99944172, 0.49325884],
    8977                                                                                                  [      -6.27333986, -0.00034617, 0.00021206, 7.27299370, 0.99894262, 0.99944178, 0.49325906],
    8978                                                                                                  [      -6.27333995, -0.00034613, 0.00021203, 7.27299383, 0.99894273, 0.99944184, 0.49325903],
    8979                                                                                                  [      -6.27334005, -0.00034609, 0.00021201, 7.27299396, 0.99894285, 0.99944190, 0.49325895],
    8980                                                                                                  [      -6.27334014, -0.00034605, 0.00021198, 7.27299409, 0.99894297, 0.99944197, 0.49325883],
    8981                                                                                                  [      -6.27334023, -0.00034601, 0.00021196, 7.27299422, 0.99894309, 0.99944203, 0.49325893],
    8982                                                                                                  [      -6.27334033, -0.00034597, 0.00021194, 7.27299435, 0.99894321, 0.99944209, 0.49325903],
    8983                                                                                                  [      -6.27334042, -0.00034593, 0.00021191, 7.27299448, 0.99894333, 0.99944215, 0.49325919],
    8984                                                                                                  [      -6.27334051, -0.00034590, 0.00021189, 7.27299461, 0.99894344, 0.99944222, 0.49325911],
    8985                                                                                                  [      -6.27334060, -0.00034586, 0.00021187, 7.27299475, 0.99894356, 0.99944228, 0.49325916],
    8986                                                                                                  [      -6.27334070, -0.00034582, 0.00021184, 7.27299488, 0.99894368, 0.99944234, 0.49325910],
    8987                                                                                                  [      -6.27334079, -0.00034578, 0.00021182, 7.27299501, 0.99894380, 0.99944240, 0.49325905],
    8988                                                                                                  [      -6.27334088, -0.00034574, 0.00021179, 7.27299514, 0.99894392, 0.99944246, 0.49325907],
    8989                                                                                                  [      -6.27334097, -0.00034570, 0.00021177, 7.27299527, 0.99894403, 0.99944253, 0.49325918],
    8990                                                                                                  [      -6.27334107, -0.00034566, 0.00021175, 7.27299540, 0.99894415, 0.99944259, 0.49325910],
    8991                                                                                                  [      -6.27334116, -0.00034563, 0.00021172, 7.27299553, 0.99894427, 0.99944265, 0.49325909],
    8992                                                                                                  [      -6.27334125, -0.00034559, 0.00021170, 7.27299566, 0.99894439, 0.99944271, 0.49325903],
    8993                                                                                                  [      -6.27334134, -0.00034555, 0.00021168, 7.27299579, 0.99894451, 0.99944278, 0.49325934],
    8994                                                                                                  [      -6.27334143, -0.00034551, 0.00021165, 7.27299593, 0.99894462, 0.99944284, 0.49325921],
    8995                                                                                                  [      -6.27334153, -0.00034547, 0.00021163, 7.27299606, 0.99894474, 0.99944290, 0.49325916],
    8996                                                                                                  [      -6.27334162, -0.00034543, 0.00021161, 7.27299619, 0.99894486, 0.99944296, 0.49325905],
    8997                                                                                                  [      -6.27334171, -0.00034539, 0.00021158, 7.27299632, 0.99894498, 0.99944302, 0.49325932],
    8998                                                                                                  [      -6.27334180, -0.00034536, 0.00021156, 7.27299645, 0.99894509, 0.99944309, 0.49325918],
    8999                                                                                                  [      -6.27334190, -0.00034532, 0.00021153, 7.27299658, 0.99894521, 0.99944315, 0.49325928],
    9000                                                                                                  [      -6.27334199, -0.00034528, 0.00021151, 7.27299671, 0.99894533, 0.99944321, 0.49325927],
    9001                                                                                                  [      -6.27334208, -0.00034524, 0.00021149, 7.27299684, 0.99894545, 0.99944327, 0.49325910],
    9002                                                                                                  [      -6.27334217, -0.00034520, 0.00021146, 7.27299697, 0.99894557, 0.99944334, 0.49325933],
    9003                                                                                                  [      -6.27334226, -0.00034516, 0.00021144, 7.27299710, 0.99894568, 0.99944340, 0.49325931],
    9004                                                                                                  [      -6.27334236, -0.00034512, 0.00021142, 7.27299723, 0.99894580, 0.99944346, 0.49325913],
    9005                                                                                                  [      -6.27334245, -0.00034509, 0.00021139, 7.27299736, 0.99894592, 0.99944352, 0.49325935],
    9006                                                                                                  [      -6.27334254, -0.00034505, 0.00021137, 7.27299749, 0.99894604, 0.99944358, 0.49325926],
    9007                                                                                                  [      -6.27334263, -0.00034501, 0.00021135, 7.27299762, 0.99894615, 0.99944365, 0.49325931],
    9008                                                                                                  [      -6.27334273, -0.00034497, 0.00021132, 7.27299776, 0.99894627, 0.99944371, 0.49325923],
    9009                                                                                                  [      -6.27334282, -0.00034493, 0.00021130, 7.27299789, 0.99894639, 0.99944377, 0.49325932],
    9010                                                                                                  [      -6.27334291, -0.00034489, 0.00021128, 7.27299802, 0.99894651, 0.99944383, 0.49325937],
    9011                                                                                                  [      -6.27334300, -0.00034486, 0.00021125, 7.27299815, 0.99894662, 0.99944389, 0.49325925],
    9012                                                                                                  [      -6.27334309, -0.00034482, 0.00021123, 7.27299828, 0.99894674, 0.99944396, 0.49325938],
    9013                                                                                                  [      -6.27334319, -0.00034478, 0.00021120, 7.27299841, 0.99894686, 0.99944402, 0.49325937],
    9014                                                                                                  [      -6.27334328, -0.00034474, 0.00021118, 7.27299854, 0.99894697, 0.99944408, 0.49325933],
    9015                                                                                                  [      -6.27334337, -0.00034470, 0.00021116, 7.27299867, 0.99894709, 0.99944414, 0.49325964],
    9016                                                                                                  [      -6.27334346, -0.00034466, 0.00021113, 7.27299880, 0.99894721, 0.99944420, 0.49325932],
    9017                                                                                                  [      -6.27334355, -0.00034462, 0.00021111, 7.27299893, 0.99894733, 0.99944426, 0.49325939],
    9018                                                                                                  [      -6.27334364, -0.00034459, 0.00021109, 7.27299906, 0.99894744, 0.99944433, 0.49325953],
    9019                                                                                                  [      -6.27334374, -0.00034455, 0.00021106, 7.27299919, 0.99894756, 0.99944439, 0.49325955],
    9020                                                                                                  [      -6.27334383, -0.00034451, 0.00021104, 7.27299932, 0.99894768, 0.99944445, 0.49325952],
    9021                                                                                                  [      -6.27334392, -0.00034447, 0.00021102, 7.27299945, 0.99894780, 0.99944451, 0.49325957],
    9022                                                                                                  [      -6.27334401, -0.00034443, 0.00021099, 7.27299958, 0.99894791, 0.99944457, 0.49325952],
    9023                                                                                                  [      -6.27334410, -0.00034439, 0.00021097, 7.27299971, 0.99894803, 0.99944464, 0.49325948],
    9024                                                                                                  [      -6.27334420, -0.00034436, 0.00021095, 7.27299984, 0.99894815, 0.99944470, 0.49325953],
    9025                                                                                                  [      -6.27334429, -0.00034432, 0.00021092, 7.27299997, 0.99894826, 0.99944476, 0.49325969],
    9026                                                                                                  [      -6.27334438, -0.00034428, 0.00021090, 7.27300010, 0.99894838, 0.99944482, 0.49325951],
    9027                                                                                                  [      -6.27334447, -0.00034424, 0.00021088, 7.27300023, 0.99894850, 0.99944488, 0.49325964],
    9028                                                                                                  [      -6.27334456, -0.00034420, 0.00021085, 7.27300036, 0.99894861, 0.99944494, 0.49325959],
    9029                                                                                                  [      -6.27334465, -0.00034417, 0.00021083, 7.27300049, 0.99894873, 0.99944501, 0.49325984],
    9030                                                                                                  [      -6.27334475, -0.00034413, 0.00021081, 7.27300062, 0.99894885, 0.99944507, 0.49325961],
    9031                                                                                                  [      -6.27334484, -0.00034409, 0.00021078, 7.27300075, 0.99894897, 0.99944513, 0.49325970],
    9032                                                                                                  [      -6.27334493, -0.00034405, 0.00021076, 7.27300088, 0.99894908, 0.99944519, 0.49325973],
    9033                                                                                                  [      -6.27334502, -0.00034401, 0.00021073, 7.27300101, 0.99894920, 0.99944525, 0.49325965],
    9034                                                                                                  [      -6.27334511, -0.00034397, 0.00021071, 7.27300114, 0.99894932, 0.99944531, 0.49325961],
    9035                                                                                                  [      -6.27334520, -0.00034394, 0.00021069, 7.27300127, 0.99894943, 0.99944538, 0.49325970],
    9036                                                                                                  [      -6.27334529, -0.00034390, 0.00021066, 7.27300140, 0.99894955, 0.99944544, 0.49325947],
    9037                                                                                                  [      -6.27334539, -0.00034386, 0.00021064, 7.27300153, 0.99894967, 0.99944550, 0.49325970],
    9038                                                                                                  [      -6.27334548, -0.00034382, 0.00021062, 7.27300166, 0.99894978, 0.99944556, 0.49325986],
    9039                                                                                                  [      -6.27334557, -0.00034378, 0.00021059, 7.27300179, 0.99894990, 0.99944562, 0.49325975],
    9040                                                                                                  [      -6.27334566, -0.00034374, 0.00021057, 7.27300192, 0.99895002, 0.99944568, 0.49325973],
    9041                                                                                                  [      -6.27334575, -0.00034371, 0.00021055, 7.27300205, 0.99895013, 0.99944575, 0.49325990],
    9042                                                                                                  [      -6.27334584, -0.00034367, 0.00021052, 7.27300217, 0.99895025, 0.99944581, 0.49325987],
    9043                                                                                                  [      -6.27334593, -0.00034363, 0.00021050, 7.27300230, 0.99895037, 0.99944587, 0.49325975],
    9044                                                                                                  [      -6.27334603, -0.00034359, 0.00021048, 7.27300243, 0.99895048, 0.99944593, 0.49325986],
    9045                                                                                                  [      -6.27334612, -0.00034355, 0.00021045, 7.27300256, 0.99895060, 0.99944599, 0.49325980],
    9046                                                                                                  [      -6.27334621, -0.00034352, 0.00021043, 7.27300269, 0.99895072, 0.99944605, 0.49325999],
    9047                                                                                                  [      -6.27334630, -0.00034348, 0.00021041, 7.27300282, 0.99895083, 0.99944611, 0.49326005],
    9048                                                                                                  [      -6.27334639, -0.00034344, 0.00021038, 7.27300295, 0.99895095, 0.99944618, 0.49325989],
    9049                                                                                                  [      -6.27334648, -0.00034340, 0.00021036, 7.27300308, 0.99895106, 0.99944624, 0.49325982],
    9050                                                                                                  [      -6.27334657, -0.00034336, 0.00021034, 7.27300321, 0.99895118, 0.99944630, 0.49326004],
    9051                                                                                                  [      -6.27334666, -0.00034333, 0.00021031, 7.27300334, 0.99895130, 0.99944636, 0.49325987],
    9052                                                                                                  [      -6.27334676, -0.00034329, 0.00021029, 7.27300347, 0.99895141, 0.99944642, 0.49326003],
    9053                                                                                                  [      -6.27334685, -0.00034325, 0.00021027, 7.27300360, 0.99895153, 0.99944648, 0.49325986],
    9054                                                                                                  [      -6.27334694, -0.00034321, 0.00021024, 7.27300373, 0.99895165, 0.99944654, 0.49326013],
    9055                                                                                                  [      -6.27334703, -0.00034317, 0.00021022, 7.27300386, 0.99895176, 0.99944661, 0.49326001],
    9056                                                                                                  [      -6.27334712, -0.00034313, 0.00021020, 7.27300399, 0.99895188, 0.99944667, 0.49325997],
    9057                                                                                                  [      -6.27334721, -0.00034310, 0.00021017, 7.27300411, 0.99895199, 0.99944673, 0.49325982],
    9058                                                                                                  [      -6.27334730, -0.00034306, 0.00021015, 7.27300424, 0.99895211, 0.99944679, 0.49326004],
    9059                                                                                                  [      -6.27334739, -0.00034302, 0.00021013, 7.27300437, 0.99895223, 0.99944685, 0.49326000],
    9060                                                                                                  [      -6.27334748, -0.00034298, 0.00021010, 7.27300450, 0.99895234, 0.99944691, 0.49326002],
    9061                                                                                                  [      -6.27334758, -0.00034294, 0.00021008, 7.27300463, 0.99895246, 0.99944697, 0.49326019],
    9062                                                                                                  [      -6.27334767, -0.00034291, 0.00021006, 7.27300476, 0.99895258, 0.99944704, 0.49326022],
    9063                                                                                                  [      -6.27334776, -0.00034287, 0.00021003, 7.27300489, 0.99895269, 0.99944710, 0.49325991],
    9064                                                                                                  [      -6.27334785, -0.00034283, 0.00021001, 7.27300502, 0.99895281, 0.99944716, 0.49326017],
    9065                                                                                                  [      -6.27334794, -0.00034279, 0.00020999, 7.27300515, 0.99895292, 0.99944722, 0.49326012],
    9066                                                                                                  [      -6.27334803, -0.00034276, 0.00020996, 7.27300527, 0.99895304, 0.99944728, 0.49326022],
    9067                                                                                                  [      -6.27334812, -0.00034272, 0.00020994, 7.27300540, 0.99895316, 0.99944734, 0.49326001],
    9068                                                                                                  [      -6.27334821, -0.00034268, 0.00020992, 7.27300553, 0.99895327, 0.99944740, 0.49326024],
    9069                                                                                                  [      -6.27334830, -0.00034264, 0.00020989, 7.27300566, 0.99895339, 0.99944746, 0.49326021],
    9070                                                                                                  [      -6.27334839, -0.00034260, 0.00020987, 7.27300579, 0.99895350, 0.99944753, 0.49326029],
    9071                                                                                                  [      -6.27334848, -0.00034257, 0.00020985, 7.27300592, 0.99895362, 0.99944759, 0.49326016],
    9072                                                                                                  [      -6.27334857, -0.00034253, 0.00020983, 7.27300605, 0.99895373, 0.99944765, 0.49326016],
    9073                                                                                                  [      -6.27334867, -0.00034249, 0.00020980, 7.27300618, 0.99895385, 0.99944771, 0.49326045],
    9074                                                                                                  [      -6.27334876, -0.00034245, 0.00020978, 7.27300630, 0.99895397, 0.99944777, 0.49326011],
    9075                                                                                                  [      -6.27334885, -0.00034241, 0.00020976, 7.27300643, 0.99895408, 0.99944783, 0.49326023],
    9076                                                                                                  [      -6.27334894, -0.00034238, 0.00020973, 7.27300656, 0.99895420, 0.99944789, 0.49326007],
    9077                                                                                                  [      -6.27334903, -0.00034234, 0.00020971, 7.27300669, 0.99895431, 0.99944795, 0.49326021],
    9078                                                                                                  [      -6.27334912, -0.00034230, 0.00020969, 7.27300682, 0.99895443, 0.99944801, 0.49326027],
    9079                                                                                                  [      -6.27334921, -0.00034226, 0.00020966, 7.27300695, 0.99895454, 0.99944807, 0.49326040],
    9080                                                                                                  [      -6.27334930, -0.00034222, 0.00020964, 7.27300708, 0.99895466, 0.99944814, 0.49326032],
    9081                                                                                                  [      -6.27334939, -0.00034219, 0.00020962, 7.27300720, 0.99895478, 0.99944820, 0.49326028],
    9082                                                                                                  [      -6.27334948, -0.00034215, 0.00020959, 7.27300733, 0.99895489, 0.99944826, 0.49326022],
    9083                                                                                                  [      -6.27334957, -0.00034211, 0.00020957, 7.27300746, 0.99895501, 0.99944832, 0.49326044],
    9084                                                                                                  [      -6.27334966, -0.00034207, 0.00020955, 7.27300759, 0.99895512, 0.99944838, 0.49326036],
    9085                                                                                                  [      -6.27334975, -0.00034204, 0.00020952, 7.27300772, 0.99895524, 0.99944844, 0.49326052],
    9086                                                                                                  [      -6.27334984, -0.00034200, 0.00020950, 7.27300785, 0.99895535, 0.99944850, 0.49326050],
    9087                                                                                                  [      -6.27334993, -0.00034196, 0.00020948, 7.27300797, 0.99895547, 0.99944856, 0.49326047],
    9088                                                                                                  [      -6.27335002, -0.00034192, 0.00020945, 7.27300810, 0.99895558, 0.99944862, 0.49326049],
    9089                                                                                                  [      -6.27335011, -0.00034188, 0.00020943, 7.27300823, 0.99895570, 0.99944868, 0.49326038],
    9090                                                                                                  [      -6.27335021, -0.00034185, 0.00020941, 7.27300836, 0.99895582, 0.99944875, 0.49326054],
    9091                                                                                                  [      -6.27335030, -0.00034181, 0.00020938, 7.27300849, 0.99895593, 0.99944881, 0.49326041],
    9092                                                                                                  [      -6.27335039, -0.00034177, 0.00020936, 7.27300861, 0.99895605, 0.99944887, 0.49326059],
    9093                                                                                                  [      -6.27335048, -0.00034173, 0.00020934, 7.27300874, 0.99895616, 0.99944893, 0.49326058],
    9094                                                                                                  [      -6.27335057, -0.00034170, 0.00020932, 7.27300887, 0.99895628, 0.99944899, 0.49326043],
    9095                                                                                                  [      -6.27335066, -0.00034166, 0.00020929, 7.27300900, 0.99895639, 0.99944905, 0.49326062],
    9096                                                                                                  [      -6.27335075, -0.00034162, 0.00020927, 7.27300913, 0.99895651, 0.99944911, 0.49326067],
    9097                                                                                                  [      -6.27335084, -0.00034158, 0.00020925, 7.27300925, 0.99895662, 0.99944917, 0.49326078],
    9098                                                                                                  [      -6.27335093, -0.00034154, 0.00020922, 7.27300938, 0.99895674, 0.99944923, 0.49326065],
    9099                                                                                                  [      -6.27335102, -0.00034151, 0.00020920, 7.27300951, 0.99895685, 0.99944929, 0.49326059],
    9100                                                                                                  [      -6.27335111, -0.00034147, 0.00020918, 7.27300964, 0.99895697, 0.99944935, 0.49326055],
    9101                                                                                                  [      -6.27335120, -0.00034143, 0.00020915, 7.27300977, 0.99895708, 0.99944941, 0.49326066],
    9102                                                                                                  [      -6.27335129, -0.00034139, 0.00020913, 7.27300989, 0.99895720, 0.99944948, 0.49326077],
    9103                                                                                                  [      -6.27335138, -0.00034136, 0.00020911, 7.27301002, 0.99895731, 0.99944954, 0.49326066],
    9104                                                                                                  [      -6.27335147, -0.00034132, 0.00020908, 7.27301015, 0.99895743, 0.99944960, 0.49326075],
    9105                                                                                                  [      -6.27335156, -0.00034128, 0.00020906, 7.27301028, 0.99895754, 0.99944966, 0.49326055],
    9106                                                                                                  [      -6.27335165, -0.00034124, 0.00020904, 7.27301040, 0.99895766, 0.99944972, 0.49326086],
    9107                                                                                                  [      -6.27335174, -0.00034121, 0.00020902, 7.27301053, 0.99895777, 0.99944978, 0.49326055],
    9108                                                                                                  [      -6.27335183, -0.00034117, 0.00020899, 7.27301066, 0.99895789, 0.99944984, 0.49326069],
    9109                                                                                                  [      -6.27335192, -0.00034113, 0.00020897, 7.27301079, 0.99895800, 0.99944990, 0.49326076],
    9110                                                                                                  [      -6.27335201, -0.00034109, 0.00020895, 7.27301092, 0.99895812, 0.99944996, 0.49326064],
    9111                                                                                                  [      -6.27335210, -0.00034106, 0.00020892, 7.27301104, 0.99895823, 0.99945002, 0.49326064],
    9112                                                                                                  [      -6.27335219, -0.00034102, 0.00020890, 7.27301117, 0.99895835, 0.99945008, 0.49326079],
    9113                                                                                                  [      -6.27335228, -0.00034098, 0.00020888, 7.27301130, 0.99895846, 0.99945014, 0.49326094],
    9114                                                                                                  [      -6.27335237, -0.00034094, 0.00020885, 7.27301143, 0.99895858, 0.99945020, 0.49326073],
    9115                                                                                                  [      -6.27335246, -0.00034091, 0.00020883, 7.27301155, 0.99895869, 0.99945026, 0.49326067],
    9116                                                                                                  [      -6.27335255, -0.00034087, 0.00020881, 7.27301168, 0.99895881, 0.99945032, 0.49326096],
    9117                                                                                                  [      -6.27335264, -0.00034083, 0.00020878, 7.27301181, 0.99895892, 0.99945038, 0.49326074],
    9118                                                                                                  [      -6.27335273, -0.00034079, 0.00020876, 7.27301194, 0.99895903, 0.99945045, 0.49326072],
    9119                                                                                                  [      -6.27335282, -0.00034076, 0.00020874, 7.27301206, 0.99895915, 0.99945051, 0.49326097],
    9120                                                                                                  [      -6.27335291, -0.00034072, 0.00020872, 7.27301219, 0.99895926, 0.99945057, 0.49326095],
    9121                                                                                                  [      -6.27335300, -0.00034068, 0.00020869, 7.27301232, 0.99895938, 0.99945063, 0.49326083],
    9122                                                                                                  [      -6.27335309, -0.00034064, 0.00020867, 7.27301244, 0.99895949, 0.99945069, 0.49326094],
    9123                                                                                                  [      -6.27335318, -0.00034061, 0.00020865, 7.27301257, 0.99895961, 0.99945075, 0.49326071],
    9124                                                                                                  [      -6.27335327, -0.00034057, 0.00020862, 7.27301270, 0.99895972, 0.99945081, 0.49326094],
    9125                                                                                                  [      -6.27335336, -0.00034053, 0.00020860, 7.27301283, 0.99895984, 0.99945087, 0.49326119],
    9126                                                                                                  [      -6.27335345, -0.00034049, 0.00020858, 7.27301295, 0.99895995, 0.99945093, 0.49326102],
    9127                                                                                                  [      -6.27335354, -0.00034046, 0.00020856, 7.27301308, 0.99896007, 0.99945099, 0.49326095],
    9128                                                                                                  [      -6.27335363, -0.00034042, 0.00020853, 7.27301321, 0.99896018, 0.99945105, 0.49326111],
    9129                                                                                                  [      -6.27335372, -0.00034038, 0.00020851, 7.27301333, 0.99896029, 0.99945111, 0.49326093],
    9130                                                                                                  [      -6.27335380, -0.00034034, 0.00020849, 7.27301346, 0.99896041, 0.99945117, 0.49326092],
    9131                                                                                                  [      -6.27335389, -0.00034031, 0.00020846, 7.27301359, 0.99896052, 0.99945123, 0.49326086],
    9132                                                                                                  [      -6.27335398, -0.00034027, 0.00020844, 7.27301372, 0.99896064, 0.99945129, 0.49326111],
    9133                                                                                                  [      -6.27335407, -0.00034023, 0.00020842, 7.27301384, 0.99896075, 0.99945135, 0.49326085],
    9134                                                                                                  [      -6.27335416, -0.00034019, 0.00020839, 7.27301397, 0.99896087, 0.99945141, 0.49326107],
    9135                                                                                                  [      -6.27335425, -0.00034016, 0.00020837, 7.27301410, 0.99896098, 0.99945147, 0.49326138],
    9136                                                                                                  [      -6.27335434, -0.00034012, 0.00020835, 7.27301422, 0.99896109, 0.99945153, 0.49326107],
    9137                                                                                                  [      -6.27335443, -0.00034008, 0.00020833, 7.27301435, 0.99896121, 0.99945159, 0.49326110],
    9138                                                                                                  [      -6.27335452, -0.00034004, 0.00020830, 7.27301448, 0.99896132, 0.99945165, 0.49326107],
    9139                                                                                                  [      -6.27335461, -0.00034001, 0.00020828, 7.27301460, 0.99896144, 0.99945171, 0.49326111],
    9140                                                                                                  [      -6.27335470, -0.00033997, 0.00020826, 7.27301473, 0.99896155, 0.99945177, 0.49326094],
    9141                                                                                                  [      -6.27335479, -0.00033993, 0.00020823, 7.27301486, 0.99896166, 0.99945183, 0.49326116],
    9142                                                                                                  [      -6.27335488, -0.00033989, 0.00020821, 7.27301498, 0.99896178, 0.99945189, 0.49326119],
    9143                                                                                                  [      -6.27335497, -0.00033986, 0.00020819, 7.27301511, 0.99896189, 0.99945195, 0.49326130],
    9144                                                                                                  [      -6.27335506, -0.00033982, 0.00020817, 7.27301524, 0.99896201, 0.99945201, 0.49326119],
    9145                                                                                                  [      -6.27335515, -0.00033978, 0.00020814, 7.27301536, 0.99896212, 0.99945207, 0.49326105],
    9146                                                                                                  [      -6.27335524, -0.00033975, 0.00020812, 7.27301549, 0.99896223, 0.99945213, 0.49326119],
    9147                                                                                                  [      -6.27335533, -0.00033971, 0.00020810, 7.27301562, 0.99896235, 0.99945219, 0.49326118],
    9148                                                                                                  [      -6.27335541, -0.00033967, 0.00020807, 7.27301574, 0.99896246, 0.99945225, 0.49326126],
    9149                                                                                                  [      -6.27335550, -0.00033963, 0.00020805, 7.27301587, 0.99896258, 0.99945231, 0.49326104],
    9150                                                                                                  [      -6.27335559, -0.00033960, 0.00020803, 7.27301600, 0.99896269, 0.99945237, 0.49326124],
    9151                                                                                                  [      -6.27335568, -0.00033956, 0.00020801, 7.27301612, 0.99896280, 0.99945243, 0.49326121],
    9152                                                                                                  [      -6.27335577, -0.00033952, 0.00020798, 7.27301625, 0.99896292, 0.99945249, 0.49326126],
    9153                                                                                                  [      -6.27335586, -0.00033948, 0.00020796, 7.27301638, 0.99896303, 0.99945255, 0.49326146],
    9154                                                                                                  [      -6.27335595, -0.00033945, 0.00020794, 7.27301650, 0.99896315, 0.99945261, 0.49326123],
    9155                                                                                                  [      -6.27335604, -0.00033941, 0.00020791, 7.27301663, 0.99896326, 0.99945267, 0.49326137],
    9156                                                                                                  [      -6.27335613, -0.00033937, 0.00020789, 7.27301675, 0.99896337, 0.99945274, 0.49326124],
    9157                                                                                                  [      -6.27335622, -0.00033934, 0.00020787, 7.27301688, 0.99896349, 0.99945279, 0.49326144],
    9158                                                                                                  [      -6.27335631, -0.00033930, 0.00020785, 7.27301701, 0.99896360, 0.99945286, 0.49326118],
    9159                                                                                                  [      -6.27335639, -0.00033926, 0.00020782, 7.27301713, 0.99896371, 0.99945291, 0.49326131],
    9160                                                                                                  [      -6.27335648, -0.00033922, 0.00020780, 7.27301726, 0.99896383, 0.99945297, 0.49326131],
    9161                                                                                                  [      -6.27335657, -0.00033919, 0.00020778, 7.27301739, 0.99896394, 0.99945303, 0.49326137],
    9162                                                                                                  [      -6.27335666, -0.00033915, 0.00020776, 7.27301751, 0.99896405, 0.99945309, 0.49326160],
    9163                                                                                                  [      -6.27335675, -0.00033911, 0.00020773, 7.27301764, 0.99896417, 0.99945315, 0.49326160],
    9164                                                                                                  [      -6.27335684, -0.00033908, 0.00020771, 7.27301776, 0.99896428, 0.99945321, 0.49326123],
    9165                                                                                                  [      -6.27335693, -0.00033904, 0.00020769, 7.27301789, 0.99896439, 0.99945327, 0.49326161],
    9166                                                                                                  [      -6.27335702, -0.00033900, 0.00020766, 7.27301802, 0.99896451, 0.99945333, 0.49326152],
    9167                                                                                                  [      -6.27335711, -0.00033896, 0.00020764, 7.27301814, 0.99896462, 0.99945339, 0.49326143],
    9168                                                                                                  [      -6.27335720, -0.00033893, 0.00020762, 7.27301827, 0.99896473, 0.99945345, 0.49326145],
    9169                                                                                                  [      -6.27335728, -0.00033889, 0.00020760, 7.27301839, 0.99896485, 0.99945351, 0.49326173],
    9170                                                                                                  [      -6.27335737, -0.00033885, 0.00020757, 7.27301852, 0.99896496, 0.99945357, 0.49326144],
    9171                                                                                                  [      -6.27335746, -0.00033882, 0.00020755, 7.27301865, 0.99896507, 0.99945363, 0.49326151],
    9172                                                                                                  [      -6.27335755, -0.00033878, 0.00020753, 7.27301877, 0.99896519, 0.99945369, 0.49326137],
    9173                                                                                                  [      -6.27335764, -0.00033874, 0.00020751, 7.27301890, 0.99896530, 0.99945375, 0.49326159],
    9174                                                                                                  [      -6.27335773, -0.00033870, 0.00020748, 7.27301902, 0.99896541, 0.99945381, 0.49326170],
    9175                                                                                                  [      -6.27335782, -0.00033867, 0.00020746, 7.27301915, 0.99896553, 0.99945387, 0.49326167],
    9176                                                                                                  [      -6.27335791, -0.00033863, 0.00020744, 7.27301927, 0.99896564, 0.99945393, 0.49326166],
    9177                                                                                                  [      -6.27335799, -0.00033859, 0.00020741, 7.27301940, 0.99896575, 0.99945399, 0.49326169],
    9178                                                                                                  [      -6.27335808, -0.00033856, 0.00020739, 7.27301953, 0.99896587, 0.99945405, 0.49326162],
    9179                                                                                                  [      -6.27335817, -0.00033852, 0.00020737, 7.27301965, 0.99896598, 0.99945411, 0.49326183],
    9180                                                                                                  [      -6.27335826, -0.00033848, 0.00020735, 7.27301978, 0.99896609, 0.99945417, 0.49326173],
    9181                                                                                                  [      -6.27335835, -0.00033845, 0.00020732, 7.27301990, 0.99896621, 0.99945423, 0.49326171],
    9182                                                                                                  [      -6.27335844, -0.00033841, 0.00020730, 7.27302003, 0.99896632, 0.99945429, 0.49326166],
    9183                                                                                                  [      -6.27335853, -0.00033837, 0.00020728, 7.27302015, 0.99896643, 0.99945435, 0.49326165],
    9184                                                                                                  [      -6.27335861, -0.00033833, 0.00020726, 7.27302028, 0.99896655, 0.99945441, 0.49326181],
    9185                                                                                                  [      -6.27335870, -0.00033830, 0.00020723, 7.27302041, 0.99896666, 0.99945447, 0.49326156],
    9186                                                                                                  [      -6.27335879, -0.00033826, 0.00020721, 7.27302053, 0.99896677, 0.99945453, 0.49326193],
    9187                                                                                                  [      -6.27335888, -0.00033822, 0.00020719, 7.27302066, 0.99896688, 0.99945459, 0.49326181],
    9188                                                                                                  [      -6.27335897, -0.00033819, 0.00020716, 7.27302078, 0.99896700, 0.99945465, 0.49326163],
    9189                                                                                                  [      -6.27335906, -0.00033815, 0.00020714, 7.27302091, 0.99896711, 0.99945471, 0.49326173],
    9190                                                                                                  [      -6.27335915, -0.00033811, 0.00020712, 7.27302103, 0.99896722, 0.99945477, 0.49326188],
    9191                                                                                                  [      -6.27335923, -0.00033808, 0.00020710, 7.27302116, 0.99896734, 0.99945483, 0.49326193],
    9192                                                                                                  [      -6.27335932, -0.00033804, 0.00020707, 7.27302128, 0.99896745, 0.99945489, 0.49326203],
    9193                                                                                                  [      -6.27335941, -0.00033800, 0.00020705, 7.27302141, 0.99896756, 0.99945495, 0.49326181],
    9194                                                                                                  [      -6.27335950, -0.00033797, 0.00020703, 7.27302153, 0.99896767, 0.99945501, 0.49326178],
    9195                                                                                                  [      -6.27335959, -0.00033793, 0.00020701, 7.27302166, 0.99896779, 0.99945507, 0.49326183],
    9196                                                                                                  [      -6.27335968, -0.00033789, 0.00020698, 7.27302178, 0.99896790, 0.99945512, 0.49326183],
    9197                                                                                                  [      -6.27335976, -0.00033785, 0.00020696, 7.27302191, 0.99896801, 0.99945518, 0.49326190],
    9198                                                                                                  [      -6.27335985, -0.00033782, 0.00020694, 7.27302203, 0.99896813, 0.99945524, 0.49326204],
    9199                                                                                                  [      -6.27335994, -0.00033778, 0.00020692, 7.27302216, 0.99896824, 0.99945530, 0.49326197],
    9200                                                                                                  [      -6.27336003, -0.00033774, 0.00020689, 7.27302228, 0.99896835, 0.99945536, 0.49326200],
    9201                                                                                                  [      -6.27336012, -0.00033771, 0.00020687, 7.27302241, 0.99896846, 0.99945542, 0.49326187],
    9202                                                                                                  [      -6.27336021, -0.00033767, 0.00020685, 7.27302253, 0.99896858, 0.99945548, 0.49326214],
    9203                                                                                                  [      -6.27336029, -0.00033763, 0.00020683, 7.27302266, 0.99896869, 0.99945554, 0.49326210],
    9204                                                                                                  [      -6.27336038, -0.00033760, 0.00020680, 7.27302278, 0.99896880, 0.99945560, 0.49326210],
    9205                                                                                                  [      -6.27336047, -0.00033756, 0.00020678, 7.27302291, 0.99896891, 0.99945566, 0.49326201],
    9206                                                                                                  [      -6.27336056, -0.00033752, 0.00020676, 7.27302303, 0.99896903, 0.99945572, 0.49326223],
    9207                                                                                                  [      -6.27336065, -0.00033749, 0.00020674, 7.27302316, 0.99896914, 0.99945578, 0.49326214],
    9208                                                                                                  [      -6.27336073, -0.00033745, 0.00020671, 7.27302328, 0.99896925, 0.99945584, 0.49326184],
    9209                                                                                                  [      -6.27336082, -0.00033741, 0.00020669, 7.27302341, 0.99896936, 0.99945590, 0.49326190],
    9210                                                                                                  [      -6.27336091, -0.00033738, 0.00020667, 7.27302353, 0.99896948, 0.99945596, 0.49326192],
    9211                                                                                                  [      -6.27336100, -0.00033734, 0.00020665, 7.27302366, 0.99896959, 0.99945602, 0.49326215],
    9212                                                                                                  [      -6.27336109, -0.00033730, 0.00020662, 7.27302378, 0.99896970, 0.99945607, 0.49326198],
    9213                                                                                                  [      -6.27336117, -0.00033727, 0.00020660, 7.27302391, 0.99896981, 0.99945613, 0.49326211],
    9214                                                                                                  [      -6.27336126, -0.00033723, 0.00020658, 7.27302403, 0.99896992, 0.99945619, 0.49326202],
    9215                                                                                                  [      -6.27336135, -0.00033719, 0.00020656, 7.27302416, 0.99897004, 0.99945625, 0.49326208],
    9216                                                                                                  [      -6.27336144, -0.00033716, 0.00020653, 7.27302428, 0.99897015, 0.99945631, 0.49326216],
    9217                                                                                                  [      -6.27336153, -0.00033712, 0.00020651, 7.27302441, 0.99897026, 0.99945637, 0.49326199],
    9218                                                                                                  [      -6.27336161, -0.00033708, 0.00020649, 7.27302453, 0.99897037, 0.99945643, 0.49326218],
    9219                                                                                                  [      -6.27336170, -0.00033705, 0.00020647, 7.27302466, 0.99897049, 0.99945649, 0.49326214],
    9220                                                                                                  [      -6.27336179, -0.00033701, 0.00020644, 7.27302478, 0.99897060, 0.99945655, 0.49326240],
    9221                                                                                                  [      -6.27336188, -0.00033697, 0.00020642, 7.27302491, 0.99897071, 0.99945661, 0.49326199],
    9222                                                                                                  [      -6.27336197, -0.00033694, 0.00020640, 7.27302503, 0.99897082, 0.99945667, 0.49326203],
    9223                                                                                                  [      -6.27336205, -0.00033690, 0.00020638, 7.27302515, 0.99897093, 0.99945673, 0.49326224],
    9224                                                                                                  [      -6.27336214, -0.00033686, 0.00020635, 7.27302528, 0.99897105, 0.99945679, 0.49326220],
    9225                                                                                                  [      -6.27336223, -0.00033683, 0.00020633, 7.27302540, 0.99897116, 0.99945684, 0.49326222],
    9226                                                                                                  [      -6.27336232, -0.00033679, 0.00020631, 7.27302553, 0.99897127, 0.99945690, 0.49326242],
    9227                                                                                                  [      -6.27336240, -0.00033675, 0.00020629, 7.27302565, 0.99897138, 0.99945696, 0.49326213],
    9228                                                                                                  [      -6.27336249, -0.00033672, 0.00020626, 7.27302578, 0.99897149, 0.99945702, 0.49326219],
    9229                                                                                                  [      -6.27336258, -0.00033668, 0.00020624, 7.27302590, 0.99897161, 0.99945708, 0.49326219],
    9230                                                                                                  [      -6.27336267, -0.00033664, 0.00020622, 7.27302603, 0.99897172, 0.99945714, 0.49326250],
    9231                                                                                                  [      -6.27336275, -0.00033661, 0.00020620, 7.27302615, 0.99897183, 0.99945720, 0.49326244],
    9232                                                                                                  [      -6.27336284, -0.00033657, 0.00020617, 7.27302627, 0.99897194, 0.99945726, 0.49326221],
    9233                                                                                                  [      -6.27336293, -0.00033653, 0.00020615, 7.27302640, 0.99897205, 0.99945732, 0.49326264],
    9234                                                                                                  [      -6.27336302, -0.00033650, 0.00020613, 7.27302652, 0.99897216, 0.99945738, 0.49326232],
    9235                                                                                                  [      -6.27336311, -0.00033646, 0.00020611, 7.27302665, 0.99897228, 0.99945743, 0.49326230],
    9236                                                                                                  [      -6.27336319, -0.00033642, 0.00020608, 7.27302677, 0.99897239, 0.99945749, 0.49326227],
    9237                                                                                                  [      -6.27336328, -0.00033639, 0.00020606, 7.27302689, 0.99897250, 0.99945755, 0.49326245],
    9238                                                                                                  [      -6.27336337, -0.00033635, 0.00020604, 7.27302702, 0.99897261, 0.99945761, 0.49326242],
    9239                                                                                                  [      -6.27336346, -0.00033631, 0.00020602, 7.27302714, 0.99897272, 0.99945767, 0.49326246],
    9240                                                                                                  [      -6.27336354, -0.00033628, 0.00020599, 7.27302727, 0.99897283, 0.99945773, 0.49326241],
    9241                                                                                                  [      -6.27336363, -0.00033624, 0.00020597, 7.27302739, 0.99897295, 0.99945779, 0.49326240],
    9242                                                                                                  [      -6.27336372, -0.00033620, 0.00020595, 7.27302751, 0.99897306, 0.99945785, 0.49326249],
    9243                                                                                                  [      -6.27336381, -0.00033617, 0.00020593, 7.27302764, 0.99897317, 0.99945791, 0.49326270],
    9244                                                                                                  [      -6.27336389, -0.00033613, 0.00020590, 7.27302776, 0.99897328, 0.99945797, 0.49326235],
    9245                                                                                                  [      -6.27336398, -0.00033609, 0.00020588, 7.27302789, 0.99897339, 0.99945802, 0.49326239],
    9246                                                                                                  [      -6.27336407, -0.00033606, 0.00020586, 7.27302801, 0.99897350, 0.99945808, 0.49326248],
    9247                                                                                                  [      -6.27336415, -0.00033602, 0.00020584, 7.27302813, 0.99897362, 0.99945814, 0.49326264],
    9248                                                                                                  [      -6.27336424, -0.00033598, 0.00020582, 7.27302826, 0.99897373, 0.99945820, 0.49326263],
    9249                                                                                                  [      -6.27336433, -0.00033595, 0.00020579, 7.27302838, 0.99897384, 0.99945826, 0.49326243],
    9250                                                                                                  [      -6.27336442, -0.00033591, 0.00020577, 7.27302851, 0.99897395, 0.99945832, 0.49326267],
    9251                                                                                                  [      -6.27336450, -0.00033587, 0.00020575, 7.27302863, 0.99897406, 0.99945838, 0.49326234],
    9252                                                                                                  [      -6.27336459, -0.00033584, 0.00020573, 7.27302875, 0.99897417, 0.99945844, 0.49326251],
    9253                                                                                                  [      -6.27336468, -0.00033580, 0.00020570, 7.27302888, 0.99897428, 0.99945849, 0.49326259],
    9254                                                                                                  [      -6.27336477, -0.00033577, 0.00020568, 7.27302900, 0.99897439, 0.99945855, 0.49326266],
    9255                                                                                                  [      -6.27336485, -0.00033573, 0.00020566, 7.27302912, 0.99897451, 0.99945861, 0.49326257],
    9256                                                                                                  [      -6.27336494, -0.00033569, 0.00020564, 7.27302925, 0.99897462, 0.99945867, 0.49326257],
    9257                                                                                                  [      -6.27336503, -0.00033566, 0.00020561, 7.27302937, 0.99897473, 0.99945873, 0.49326264],
    9258                                                                                                  [      -6.27336511, -0.00033562, 0.00020559, 7.27302949, 0.99897484, 0.99945879, 0.49326274],
    9259                                                                                                  [      -6.27336520, -0.00033558, 0.00020557, 7.27302962, 0.99897495, 0.99945885, 0.49326286],
    9260                                                                                                  [      -6.27336529, -0.00033555, 0.00020555, 7.27302974, 0.99897506, 0.99945891, 0.49326289],
    9261                                                                                                  [      -6.27336538, -0.00033551, 0.00020553, 7.27302986, 0.99897517, 0.99945896, 0.49326274],
    9262                                                                                                  [      -6.27336546, -0.00033547, 0.00020550, 7.27302999, 0.99897528, 0.99945902, 0.49326267],
    9263                                                                                                  [      -6.27336555, -0.00033544, 0.00020548, 7.27303011, 0.99897540, 0.99945908, 0.49326282],
    9264                                                                                                  [      -6.27336564, -0.00033540, 0.00020546, 7.27303023, 0.99897551, 0.99945914, 0.49326268],
    9265                                                                                                  [      -6.27336572, -0.00033537, 0.00020544, 7.27303036, 0.99897562, 0.99945920, 0.49326305],
    9266                                                                                                  [      -6.27336581, -0.00033533, 0.00020541, 7.27303048, 0.99897573, 0.99945926, 0.49326276],
    9267                                                                                                  [      -6.27336590, -0.00033529, 0.00020539, 7.27303060, 0.99897584, 0.99945932, 0.49326281],
    9268                                                                                                  [      -6.27336598, -0.00033526, 0.00020537, 7.27303073, 0.99897595, 0.99945937, 0.49326294],
    9269                                                                                                  [      -6.27336607, -0.00033522, 0.00020535, 7.27303085, 0.99897606, 0.99945943, 0.49326286],
    9270                                                                                                  [      -6.27336616, -0.00033518, 0.00020532, 7.27303097, 0.99897617, 0.99945949, 0.49326281],
    9271                                                                                                  [      -6.27336625, -0.00033515, 0.00020530, 7.27303110, 0.99897628, 0.99945955, 0.49326286],
    9272                                                                                                  [      -6.27336633, -0.00033511, 0.00020528, 7.27303122, 0.99897639, 0.99945961, 0.49326297],
    9273                                                                                                  [      -6.27336642, -0.00033508, 0.00020526, 7.27303134, 0.99897650, 0.99945967, 0.49326279],
    9274                                                                                                  [      -6.27336651, -0.00033504, 0.00020524, 7.27303147, 0.99897662, 0.99945973, 0.49326311],
    9275                                                                                                  [      -6.27336659, -0.00033500, 0.00020521, 7.27303159, 0.99897673, 0.99945978, 0.49326289],
    9276                                                                                                  [      -6.27336668, -0.00033497, 0.00020519, 7.27303171, 0.99897684, 0.99945984, 0.49326305],
    9277                                                                                                  [      -6.27336677, -0.00033493, 0.00020517, 7.27303184, 0.99897695, 0.99945990, 0.49326297],
    9278                                                                                                  [      -6.27336685, -0.00033489, 0.00020515, 7.27303196, 0.99897706, 0.99945996, 0.49326277],
    9279                                                                                                  [      -6.27336694, -0.00033486, 0.00020512, 7.27303208, 0.99897717, 0.99946002, 0.49326308],
    9280                                                                                                  [      -6.27336703, -0.00033482, 0.00020510, 7.27303221, 0.99897728, 0.99946008, 0.49326289],
    9281                                                                                                  [      -6.27336711, -0.00033479, 0.00020508, 7.27303233, 0.99897739, 0.99946013, 0.49326298],
    9282                                                                                                  [      -6.27336720, -0.00033475, 0.00020506, 7.27303245, 0.99897750, 0.99946019, 0.49326300],
    9283                                                                                                  [      -6.27336729, -0.00033471, 0.00020504, 7.27303257, 0.99897761, 0.99946025, 0.49326304],
    9284                                                                                                  [      -6.27336737, -0.00033468, 0.00020501, 7.27303270, 0.99897772, 0.99946031, 0.49326311],
    9285                                                                                                  [      -6.27336746, -0.00033464, 0.00020499, 7.27303282, 0.99897783, 0.99946037, 0.49326309],
    9286                                                                                                  [      -6.27336755, -0.00033460, 0.00020497, 7.27303294, 0.99897794, 0.99946043, 0.49326303],
    9287                                                                                                  [      -6.27336763, -0.00033457, 0.00020495, 7.27303306, 0.99897805, 0.99946048, 0.49326308],
    9288                                                                                                  [      -6.27336772, -0.00033453, 0.00020493, 7.27303319, 0.99897816, 0.99946054, 0.49326287],
    9289                                                                                                  [      -6.27336781, -0.00033450, 0.00020490, 7.27303331, 0.99897827, 0.99946060, 0.49326314],
    9290                                                                                                  [      -6.27336789, -0.00033446, 0.00020488, 7.27303343, 0.99897839, 0.99946066, 0.49326307],
    9291                                                                                                  [      -6.27336798, -0.00033442, 0.00020486, 7.27303356, 0.99897850, 0.99946072, 0.49326307],
    9292                                                                                                  [      -6.27336807, -0.00033439, 0.00020484, 7.27303368, 0.99897861, 0.99946078, 0.49326322],
    9293                                                                                                  [      -6.27336815, -0.00033435, 0.00020481, 7.27303380, 0.99897872, 0.99946083, 0.49326311],
    9294                                                                                                  [      -6.27336824, -0.00033432, 0.00020479, 7.27303392, 0.99897883, 0.99946089, 0.49326322],
    9295                                                                                                  [      -6.27336833, -0.00033428, 0.00020477, 7.27303405, 0.99897894, 0.99946095, 0.49326339],
    9296                                                                                                  [      -6.27336841, -0.00033424, 0.00020475, 7.27303417, 0.99897905, 0.99946101, 0.49326319],
    9297                                                                                                  [      -6.27336850, -0.00033421, 0.00020473, 7.27303429, 0.99897916, 0.99946107, 0.49326315],
    9298                                                                                                  [      -6.27336858, -0.00033417, 0.00020470, 7.27303441, 0.99897927, 0.99946113, 0.49326326],
    9299                                                                                                  [      -6.27336867, -0.00033413, 0.00020468, 7.27303454, 0.99897938, 0.99946118, 0.49326320],
    9300                                                                                                  [      -6.27336876, -0.00033410, 0.00020466, 7.27303466, 0.99897949, 0.99946124, 0.49326335],
    9301                                                                                                  [      -6.27336884, -0.00033406, 0.00020464, 7.27303478, 0.99897960, 0.99946130, 0.49326321],
    9302                                                                                                  [      -6.27336893, -0.00033403, 0.00020462, 7.27303490, 0.99897971, 0.99946136, 0.49326341],
    9303                                                                                                  [      -6.27336902, -0.00033399, 0.00020459, 7.27303503, 0.99897982, 0.99946142, 0.49326319],
    9304                                                                                                  [      -6.27336910, -0.00033395, 0.00020457, 7.27303515, 0.99897993, 0.99946147, 0.49326349],
    9305                                                                                                  [      -6.27336919, -0.00033392, 0.00020455, 7.27303527, 0.99898004, 0.99946153, 0.49326330],
    9306                                                                                                  [      -6.27336927, -0.00033388, 0.00020453, 7.27303539, 0.99898015, 0.99946159, 0.49326316],
    9307                                                                                                  [      -6.27336936, -0.00033385, 0.00020451, 7.27303551, 0.99898026, 0.99946165, 0.49326319],
    9308                                                                                                  [      -6.27336945, -0.00033381, 0.00020448, 7.27303564, 0.99898037, 0.99946171, 0.49326337],
    9309                                                                                                  [      -6.27336953, -0.00033377, 0.00020446, 7.27303576, 0.99898048, 0.99946176, 0.49326350],
    9310                                                                                                  [      -6.27336962, -0.00033374, 0.00020444, 7.27303588, 0.99898059, 0.99946182, 0.49326333],
    9311                                                                                                  [      -6.27336971, -0.00033370, 0.00020442, 7.27303600, 0.99898070, 0.99946188, 0.49326343],
    9312                                                                                                  [      -6.27336979, -0.00033367, 0.00020439, 7.27303613, 0.99898081, 0.99946194, 0.49326342],
    9313                                                                                                  [      -6.27336988, -0.00033363, 0.00020437, 7.27303625, 0.99898092, 0.99946200, 0.49326348],
    9314                                                                                                  [      -6.27336996, -0.00033359, 0.00020435, 7.27303637, 0.99898103, 0.99946205, 0.49326358],
    9315                                                                                                  [      -6.27337005, -0.00033356, 0.00020433, 7.27303649, 0.99898114, 0.99946211, 0.49326344],
    9316                                                                                                  [      -6.27337014, -0.00033352, 0.00020431, 7.27303661, 0.99898125, 0.99946217, 0.49326333],
    9317                                                                                                  [      -6.27337022, -0.00033349, 0.00020428, 7.27303674, 0.99898136, 0.99946223, 0.49326344],
    9318                                                                                                  [      -6.27337031, -0.00033345, 0.00020426, 7.27303686, 0.99898147, 0.99946229, 0.49326346],
    9319                                                                                                  [      -6.27337039, -0.00033342, 0.00020424, 7.27303698, 0.99898158, 0.99946234, 0.49326354],
    9320                                                                                                  [      -6.27337048, -0.00033338, 0.00020422, 7.27303710, 0.99898169, 0.99946240, 0.49326336],
    9321                                                                                                  [      -6.27337057, -0.00033334, 0.00020420, 7.27303722, 0.99898180, 0.99946246, 0.49326349],
    9322                                                                                                  [      -6.27337065, -0.00033331, 0.00020417, 7.27303734, 0.99898191, 0.99946252, 0.49326348],
    9323                                                                                                  [      -6.27337074, -0.00033327, 0.00020415, 7.27303747, 0.99898202, 0.99946258, 0.49326342],
    9324                                                                                                  [      -6.27337082, -0.00033324, 0.00020413, 7.27303759, 0.99898213, 0.99946263, 0.49326343],
    9325                                                                                                  [      -6.27337091, -0.00033320, 0.00020411, 7.27303771, 0.99898224, 0.99946269, 0.49326362],
    9326                                                                                                  [      -6.27337100, -0.00033316, 0.00020409, 7.27303783, 0.99898234, 0.99946275, 0.49326356],
    9327                                                                                                  [      -6.27337108, -0.00033313, 0.00020406, 7.27303795, 0.99898245, 0.99946281, 0.49326362],
    9328                                                                                                  [      -6.27337117, -0.00033309, 0.00020404, 7.27303808, 0.99898256, 0.99946287, 0.49326353],
    9329                                                                                                  [      -6.27337125, -0.00033306, 0.00020402, 7.27303820, 0.99898267, 0.99946292, 0.49326384],
    9330                                                                                                  [      -6.27337134, -0.00033302, 0.00020400, 7.27303832, 0.99898278, 0.99946298, 0.49326355],
    9331                                                                                                  [      -6.27337142, -0.00033298, 0.00020398, 7.27303844, 0.99898289, 0.99946304, 0.49326361],
    9332                                                                                                  [      -6.27337151, -0.00033295, 0.00020395, 7.27303856, 0.99898300, 0.99946310, 0.49326362],
    9333                                                                                                  [      -6.27337160, -0.00033291, 0.00020393, 7.27303868, 0.99898311, 0.99946315, 0.49326349],
    9334                                                                                                  [      -6.27337168, -0.00033288, 0.00020391, 7.27303880, 0.99898322, 0.99946321, 0.49326369],
    9335                                                                                                  [      -6.27337177, -0.00033284, 0.00020389, 7.27303893, 0.99898333, 0.99946327, 0.49326369],
    9336                                                                                                  [      -6.27337185, -0.00033281, 0.00020387, 7.27303905, 0.99898344, 0.99946333, 0.49326369],
    9337                                                                                                  [      -6.27337194, -0.00033277, 0.00020385, 7.27303917, 0.99898355, 0.99946338, 0.49326367],
    9338                                                                                                  [      -6.27337202, -0.00033273, 0.00020382, 7.27303929, 0.99898366, 0.99946344, 0.49326359],
    9339                                                                                                  [      -6.27337211, -0.00033270, 0.00020380, 7.27303941, 0.99898377, 0.99946350, 0.49326376],
    9340                                                                                                  [      -6.27337220, -0.00033266, 0.00020378, 7.27303953, 0.99898388, 0.99946356, 0.49326382],
    9341                                                                                                  [      -6.27337228, -0.00033263, 0.00020376, 7.27303965, 0.99898399, 0.99946362, 0.49326384],
    9342                                                                                                  [      -6.27337237, -0.00033259, 0.00020374, 7.27303978, 0.99898409, 0.99946367, 0.49326379],
    9343                                                                                                  [      -6.27337245, -0.00033256, 0.00020371, 7.27303990, 0.99898420, 0.99946373, 0.49326389],
    9344                                                                                                  [      -6.27337254, -0.00033252, 0.00020369, 7.27304002, 0.99898431, 0.99946379, 0.49326390],
    9345                                                                                                  [      -6.27337262, -0.00033248, 0.00020367, 7.27304014, 0.99898442, 0.99946385, 0.49326379],
    9346                                                                                                  [      -6.27337271, -0.00033245, 0.00020365, 7.27304026, 0.99898453, 0.99946390, 0.49326384],
    9347                                                                                                  [      -6.27337279, -0.00033241, 0.00020363, 7.27304038, 0.99898464, 0.99946396, 0.49326381],
    9348                                                                                                  [      -6.27337288, -0.00033238, 0.00020360, 7.27304050, 0.99898475, 0.99946402, 0.49326372],
    9349                                                                                                  [      -6.27337297, -0.00033234, 0.00020358, 7.27304062, 0.99898486, 0.99946408, 0.49326377],
    9350                                                                                                  [      -6.27337305, -0.00033231, 0.00020356, 7.27304075, 0.99898497, 0.99946413, 0.49326406],
    9351                                                                                                  [      -6.27337314, -0.00033227, 0.00020354, 7.27304087, 0.99898508, 0.99946419, 0.49326380],
    9352                                                                                                  [      -6.27337322, -0.00033223, 0.00020352, 7.27304099, 0.99898519, 0.99946425, 0.49326407],
    9353                                                                                                  [      -6.27337331, -0.00033220, 0.00020350, 7.27304111, 0.99898529, 0.99946431, 0.49326377],
    9354                                                                                                  [      -6.27337339, -0.00033216, 0.00020347, 7.27304123, 0.99898540, 0.99946436, 0.49326399],
    9355                                                                                                  [      -6.27337348, -0.00033213, 0.00020345, 7.27304135, 0.99898551, 0.99946442, 0.49326392],
    9356                                                                                                  [      -6.27337356, -0.00033209, 0.00020343, 7.27304147, 0.99898562, 0.99946448, 0.49326402],
    9357                                                                                                  [      -6.27337365, -0.00033206, 0.00020341, 7.27304159, 0.99898573, 0.99946454, 0.49326407],
    9358                                                                                                  [      -6.27337373, -0.00033202, 0.00020339, 7.27304171, 0.99898584, 0.99946459, 0.49326397],
    9359                                                                                                  [      -6.27337382, -0.00033198, 0.00020336, 7.27304183, 0.99898595, 0.99946465, 0.49326388],
    9360                                                                                                  [      -6.27337390, -0.00033195, 0.00020334, 7.27304196, 0.99898606, 0.99946471, 0.49326400],
    9361                                                                                                  [      -6.27337399, -0.00033191, 0.00020332, 7.27304208, 0.99898616, 0.99946477, 0.49326405],
    9362                                                                                                  [      -6.27337407, -0.00033188, 0.00020330, 7.27304220, 0.99898627, 0.99946482, 0.49326405],
    9363                                                                                                  [      -6.27337416, -0.00033184, 0.00020328, 7.27304232, 0.99898638, 0.99946488, 0.49326395],
    9364                                                                                                  [      -6.27337425, -0.00033181, 0.00020326, 7.27304244, 0.99898649, 0.99946494, 0.49326406],
    9365                                                                                                  [      -6.27337433, -0.00033177, 0.00020323, 7.27304256, 0.99898660, 0.99946500, 0.49326412],
    9366                                                                                                  [      -6.27337442, -0.00033174, 0.00020321, 7.27304268, 0.99898671, 0.99946505, 0.49326418],
    9367                                                                                                  [      -6.27337450, -0.00033170, 0.00020319, 7.27304280, 0.99898682, 0.99946511, 0.49326405],
    9368                                                                                                  [      -6.27337459, -0.00033166, 0.00020317, 7.27304292, 0.99898693, 0.99946517, 0.49326394],
    9369                                                                                                  [      -6.27337467, -0.00033163, 0.00020315, 7.27304304, 0.99898703, 0.99946522, 0.49326407],
    9370                                                                                                  [      -6.27337476, -0.00033159, 0.00020312, 7.27304316, 0.99898714, 0.99946528, 0.49326381],
    9371                                                                                                  [      -6.27337484, -0.00033156, 0.00020310, 7.27304328, 0.99898725, 0.99946534, 0.49326400],
    9372                                                                                                  [      -6.27337493, -0.00033152, 0.00020308, 7.27304340, 0.99898736, 0.99946540, 0.49326414],
    9373                                                                                                  [      -6.27337501, -0.00033149, 0.00020306, 7.27304352, 0.99898747, 0.99946545, 0.49326426],
    9374                                                                                                  [      -6.27337510, -0.00033145, 0.00020304, 7.27304364, 0.99898758, 0.99946551, 0.49326422],
    9375                                                                                                  [      -6.27337518, -0.00033142, 0.00020302, 7.27304376, 0.99898768, 0.99946557, 0.49326412],
    9376                                                                                                  [      -6.27337527, -0.00033138, 0.00020299, 7.27304389, 0.99898779, 0.99946563, 0.49326410],
    9377                                                                                                  [      -6.27337535, -0.00033135, 0.00020297, 7.27304401, 0.99898790, 0.99946568, 0.49326415],
    9378                                                                                                  [      -6.27337544, -0.00033131, 0.00020295, 7.27304413, 0.99898801, 0.99946574, 0.49326422],
    9379                                                                                                  [      -6.27337552, -0.00033127, 0.00020293, 7.27304425, 0.99898812, 0.99946580, 0.49326416],
    9380                                                                                                  [      -6.27337561, -0.00033124, 0.00020291, 7.27304437, 0.99898823, 0.99946585, 0.49326449],
    9381                                                                                                  [      -6.27337569, -0.00033120, 0.00020289, 7.27304449, 0.99898833, 0.99946591, 0.49326425],
    9382                                                                                                  [      -6.27337578, -0.00033117, 0.00020286, 7.27304461, 0.99898844, 0.99946597, 0.49326435],
    9383                                                                                                  [      -6.27337586, -0.00033113, 0.00020284, 7.27304473, 0.99898855, 0.99946603, 0.49326445],
    9384                                                                                                  [      -6.27337594, -0.00033110, 0.00020282, 7.27304485, 0.99898866, 0.99946608, 0.49326455],
    9385                                                                                                  [      -6.27337603, -0.00033106, 0.00020280, 7.27304497, 0.99898877, 0.99946614, 0.49326433],
    9386                                                                                                  [      -6.27337611, -0.00033103, 0.00020278, 7.27304509, 0.99898888, 0.99946620, 0.49326418],
    9387                                                                                                  [      -6.27337620, -0.00033099, 0.00020275, 7.27304521, 0.99898898, 0.99946625, 0.49326429],
    9388                                                                                                  [      -6.27337628, -0.00033096, 0.00020273, 7.27304533, 0.99898909, 0.99946631, 0.49326433],
    9389                                                                                                  [      -6.27337637, -0.00033092, 0.00020271, 7.27304545, 0.99898920, 0.99946637, 0.49326438],
    9390                                                                                                  [      -6.27337645, -0.00033088, 0.00020269, 7.27304557, 0.99898931, 0.99946643, 0.49326440],
    9391                                                                                                  [      -6.27337654, -0.00033085, 0.00020267, 7.27304569, 0.99898942, 0.99946648, 0.49326448],
    9392                                                                                                  [      -6.27337662, -0.00033081, 0.00020265, 7.27304581, 0.99898952, 0.99946654, 0.49326440],
    9393                                                                                                  [      -6.27337671, -0.00033078, 0.00020262, 7.27304593, 0.99898963, 0.99946660, 0.49326441],
    9394                                                                                                  [      -6.27337679, -0.00033074, 0.00020260, 7.27304605, 0.99898974, 0.99946665, 0.49326439],
    9395                                                                                                  [      -6.27337688, -0.00033071, 0.00020258, 7.27304617, 0.99898985, 0.99946671, 0.49326444],
    9396                                                                                                  [      -6.27337696, -0.00033067, 0.00020256, 7.27304629, 0.99898996, 0.99946677, 0.49326437],
    9397                                                                                                  [      -6.27337705, -0.00033064, 0.00020254, 7.27304641, 0.99899006, 0.99946682, 0.49326463],
    9398                                                                                                  [      -6.27337713, -0.00033060, 0.00020252, 7.27304653, 0.99899017, 0.99946688, 0.49326433],
    9399                                                                                                  [      -6.27337721, -0.00033057, 0.00020250, 7.27304665, 0.99899028, 0.99946694, 0.49326452],
    9400                                                                                                  [      -6.27337730, -0.00033053, 0.00020247, 7.27304677, 0.99899039, 0.99946700, 0.49326464],
    9401                                                                                                  [      -6.27337738, -0.00033050, 0.00020245, 7.27304689, 0.99899050, 0.99946705, 0.49326462],
    9402                                                                                                  [      -6.27337747, -0.00033046, 0.00020243, 7.27304701, 0.99899060, 0.99946711, 0.49326446],
    9403                                                                                                  [      -6.27337755, -0.00033043, 0.00020241, 7.27304713, 0.99899071, 0.99946717, 0.49326448],
    9404                                                                                                  [      -6.27337764, -0.00033039, 0.00020239, 7.27304725, 0.99899082, 0.99946722, 0.49326479],
    9405                                                                                                  [      -6.27337772, -0.00033035, 0.00020237, 7.27304737, 0.99899093, 0.99946728, 0.49326445],
    9406                                                                                                  [      -6.27337781, -0.00033032, 0.00020234, 7.27304749, 0.99899103, 0.99946734, 0.49326446],
    9407                                                                                                  [      -6.27337789, -0.00033028, 0.00020232, 7.27304761, 0.99899114, 0.99946739, 0.49326446],
    9408                                                                                                  [      -6.27337797, -0.00033025, 0.00020230, 7.27304773, 0.99899125, 0.99946745, 0.49326456],
    9409                                                                                                  [      -6.27337806, -0.00033021, 0.00020228, 7.27304785, 0.99899136, 0.99946751, 0.49326462],
    9410                                                                                                  [      -6.27337814, -0.00033018, 0.00020226, 7.27304796, 0.99899146, 0.99946756, 0.49326466],
    9411                                                                                                  [      -6.27337823, -0.00033014, 0.00020224, 7.27304808, 0.99899157, 0.99946762, 0.49326469],
    9412                                                                                                  [      -6.27337831, -0.00033011, 0.00020221, 7.27304820, 0.99899168, 0.99946768, 0.49326455],
    9413                                                                                                  [      -6.27337840, -0.00033007, 0.00020219, 7.27304832, 0.99899179, 0.99946773, 0.49326445],
    9414                                                                                                  [      -6.27337848, -0.00033004, 0.00020217, 7.27304844, 0.99899190, 0.99946779, 0.49326466],
    9415                                                                                                  [      -6.27337856, -0.00033000, 0.00020215, 7.27304856, 0.99899200, 0.99946785, 0.49326467],
    9416                                                                                                  [      -6.27337865, -0.00032997, 0.00020213, 7.27304868, 0.99899211, 0.99946790, 0.49326472],
    9417                                                                                                  [      -6.27337873, -0.00032993, 0.00020211, 7.27304880, 0.99899222, 0.99946796, 0.49326465],
    9418                                                                                                  [      -6.27337882, -0.00032990, 0.00020208, 7.27304892, 0.99899233, 0.99946802, 0.49326487],
    9419                                                                                                  [      -6.27337890, -0.00032986, 0.00020206, 7.27304904, 0.99899243, 0.99946807, 0.49326453],
    9420                                                                                                  [      -6.27337899, -0.00032983, 0.00020204, 7.27304916, 0.99899254, 0.99946813, 0.49326462],
    9421                                                                                                  [      -6.27337907, -0.00032979, 0.00020202, 7.27304928, 0.99899265, 0.99946819, 0.49326466],
    9422                                                                                                  [      -6.27337915, -0.00032976, 0.00020200, 7.27304940, 0.99899275, 0.99946824, 0.49326470],
    9423                                                                                                  [      -6.27337924, -0.00032972, 0.00020198, 7.27304952, 0.99899286, 0.99946830, 0.49326485],
    9424                                                                                                  [      -6.27337932, -0.00032969, 0.00020196, 7.27304964, 0.99899297, 0.99946836, 0.49326493],
    9425                                                                                                  [      -6.27337941, -0.00032965, 0.00020193, 7.27304976, 0.99899308, 0.99946841, 0.49326472],
    9426                                                                                                  [      -6.27337949, -0.00032962, 0.00020191, 7.27304987, 0.99899318, 0.99946847, 0.49326466],
    9427                                                                                                  [      -6.27337957, -0.00032958, 0.00020189, 7.27304999, 0.99899329, 0.99946853, 0.49326475],
    9428                                                                                                  [      -6.27337966, -0.00032955, 0.00020187, 7.27305011, 0.99899340, 0.99946858, 0.49326474],
    9429                                                                                                  [      -6.27337974, -0.00032951, 0.00020185, 7.27305023, 0.99899351, 0.99946864, 0.49326494],
    9430                                                                                                  [      -6.27337983, -0.00032948, 0.00020183, 7.27305035, 0.99899361, 0.99946870, 0.49326475],
    9431                                                                                                  [      -6.27337991, -0.00032944, 0.00020181, 7.27305047, 0.99899372, 0.99946875, 0.49326504],
    9432                                                                                                  [      -6.27337999, -0.00032941, 0.00020178, 7.27305059, 0.99899383, 0.99946881, 0.49326510],
    9433                                                                                                  [      -6.27338008, -0.00032937, 0.00020176, 7.27305071, 0.99899393, 0.99946887, 0.49326506],
    9434                                                                                                  [      -6.27338016, -0.00032934, 0.00020174, 7.27305083, 0.99899404, 0.99946892, 0.49326491],
    9435                                                                                                  [      -6.27338025, -0.00032930, 0.00020172, 7.27305095, 0.99899415, 0.99946898, 0.49326495],
    9436                                                                                                  [      -6.27338033, -0.00032927, 0.00020170, 7.27305106, 0.99899425, 0.99946904, 0.49326488],
    9437                                                                                                  [      -6.27338041, -0.00032923, 0.00020168, 7.27305118, 0.99899436, 0.99946909, 0.49326492],
    9438                                                                                                  [      -6.27338050, -0.00032920, 0.00020165, 7.27305130, 0.99899447, 0.99946915, 0.49326492],
    9439                                                                                                  [      -6.27338058, -0.00032916, 0.00020163, 7.27305142, 0.99899458, 0.99946921, 0.49326493],
    9440                                                                                                  [      -6.27338067, -0.00032913, 0.00020161, 7.27305154, 0.99899468, 0.99946926, 0.49326498],
    9441                                                                                                  [      -6.27338075, -0.00032909, 0.00020159, 7.27305166, 0.99899479, 0.99946932, 0.49326509],
    9442                                                                                                  [      -6.27338083, -0.00032906, 0.00020157, 7.27305178, 0.99899490, 0.99946938, 0.49326511],
    9443                                                                                                  [      -6.27338092, -0.00032902, 0.00020155, 7.27305190, 0.99899500, 0.99946943, 0.49326491],
    9444                                                                                                  [      -6.27338100, -0.00032899, 0.00020153, 7.27305201, 0.99899511, 0.99946949, 0.49326497],
    9445                                                                                                  [      -6.27338108, -0.00032895, 0.00020150, 7.27305213, 0.99899522, 0.99946954, 0.49326517],
    9446                                                                                                  [      -6.27338117, -0.00032892, 0.00020148, 7.27305225, 0.99899532, 0.99946960, 0.49326501],
    9447                                                                                                  [      -6.27338125, -0.00032888, 0.00020146, 7.27305237, 0.99899543, 0.99946966, 0.49326506],
    9448                                                                                                  [      -6.27338134, -0.00032885, 0.00020144, 7.27305249, 0.99899554, 0.99946971, 0.49326507],
    9449                                                                                                  [      -6.27338142, -0.00032881, 0.00020142, 7.27305261, 0.99899564, 0.99946977, 0.49326497],
    9450                                                                                                  [      -6.27338150, -0.00032878, 0.00020140, 7.27305273, 0.99899575, 0.99946983, 0.49326508],
    9451                                                                                                  [      -6.27338159, -0.00032874, 0.00020138, 7.27305284, 0.99899586, 0.99946988, 0.49326522],
    9452                                                                                                  [      -6.27338167, -0.00032871, 0.00020135, 7.27305296, 0.99899596, 0.99946994, 0.49326525],
    9453                                                                                                  [      -6.27338175, -0.00032867, 0.00020133, 7.27305308, 0.99899607, 0.99946999, 0.49326527],
    9454                                                                                                  [      -6.27338184, -0.00032864, 0.00020131, 7.27305320, 0.99899618, 0.99947005, 0.49326512],
    9455                                                                                                  [      -6.27338192, -0.00032860, 0.00020129, 7.27305332, 0.99899628, 0.99947011, 0.49326544],
    9456                                                                                                  [      -6.27338200, -0.00032857, 0.00020127, 7.27305344, 0.99899639, 0.99947016, 0.49326511],
    9457                                                                                                  [      -6.27338209, -0.00032853, 0.00020125, 7.27305356, 0.99899650, 0.99947022, 0.49326525],
    9458                                                                                                  [      -6.27338217, -0.00032850, 0.00020123, 7.27305367, 0.99899660, 0.99947028, 0.49326517],
    9459                                                                                                  [      -6.27338225, -0.00032846, 0.00020121, 7.27305379, 0.99899671, 0.99947033, 0.49326515],
    9460                                                                                                  [      -6.27338234, -0.00032843, 0.00020118, 7.27305391, 0.99899682, 0.99947039, 0.49326512],
    9461                                                                                                  [      -6.27338242, -0.00032839, 0.00020116, 7.27305403, 0.99899692, 0.99947045, 0.49326510],
    9462                                                                                                  [      -6.27338250, -0.00032836, 0.00020114, 7.27305415, 0.99899703, 0.99947050, 0.49326538],
    9463                                                                                                  [      -6.27338259, -0.00032832, 0.00020112, 7.27305427, 0.99899714, 0.99947056, 0.49326526],
    9464                                                                                                  [      -6.27338267, -0.00032829, 0.00020110, 7.27305438, 0.99899724, 0.99947061, 0.49326555],
    9465                                                                                                  [      -6.27338275, -0.00032825, 0.00020108, 7.27305450, 0.99899735, 0.99947067, 0.49326559],
    9466                                                                                                  [      -6.27338284, -0.00032822, 0.00020106, 7.27305462, 0.99899745, 0.99947073, 0.49326528],
    9467                                                                                                  [      -6.27338292, -0.00032818, 0.00020103, 7.27305474, 0.99899756, 0.99947078, 0.49326542],
    9468                                                                                                  [      -6.27338300, -0.00032815, 0.00020101, 7.27305486, 0.99899767, 0.99947084, 0.49326519],
    9469                                                                                                  [      -6.27338309, -0.00032811, 0.00020099, 7.27305497, 0.99899777, 0.99947089, 0.49326536],
    9470                                                                                                  [      -6.27338317, -0.00032808, 0.00020097, 7.27305509, 0.99899788, 0.99947095, 0.49326533],
    9471                                                                                                  [      -6.27338325, -0.00032804, 0.00020095, 7.27305521, 0.99899799, 0.99947101, 0.49326540],
    9472                                                                                                  [      -6.27338334, -0.00032801, 0.00020093, 7.27305533, 0.99899809, 0.99947106, 0.49326552],
    9473                                                                                                  [      -6.27338342, -0.00032797, 0.00020091, 7.27305545, 0.99899820, 0.99947112, 0.49326543],
    9474                                                                                                  [      -6.27338350, -0.00032794, 0.00020089, 7.27305556, 0.99899830, 0.99947117, 0.49326548],
    9475                                                                                                  [      -6.27338359, -0.00032791, 0.00020086, 7.27305568, 0.99899841, 0.99947123, 0.49326555],
    9476                                                                                                  [      -6.27338367, -0.00032787, 0.00020084, 7.27305580, 0.99899852, 0.99947129, 0.49326550],
    9477                                                                                                  [      -6.27338375, -0.00032784, 0.00020082, 7.27305592, 0.99899862, 0.99947134, 0.49326539],
    9478                                                                                                  [      -6.27338384, -0.00032780, 0.00020080, 7.27305604, 0.99899873, 0.99947140, 0.49326537],
    9479                                                                                                  [      -6.27338392, -0.00032777, 0.00020078, 7.27305615, 0.99899884, 0.99947145, 0.49326540],
    9480                                                                                                  [      -6.27338400, -0.00032773, 0.00020076, 7.27305627, 0.99899894, 0.99947151, 0.49326552],
    9481                                                                                                  [      -6.27338409, -0.00032770, 0.00020074, 7.27305639, 0.99899905, 0.99947157, 0.49326544],
    9482                                                                                                  [      -6.27338417, -0.00032766, 0.00020072, 7.27305651, 0.99899915, 0.99947162, 0.49326541],
    9483                                                                                                  [      -6.27338425, -0.00032763, 0.00020069, 7.27305662, 0.99899926, 0.99947168, 0.49326544],
    9484                                                                                                  [      -6.27338433, -0.00032759, 0.00020067, 7.27305674, 0.99899937, 0.99947173, 0.49326555],
    9485                                                                                                  [      -6.27338442, -0.00032756, 0.00020065, 7.27305686, 0.99899947, 0.99947179, 0.49326592],
    9486                                                                                                  [      -6.27338450, -0.00032752, 0.00020063, 7.27305698, 0.99899958, 0.99947185, 0.49326555],
    9487                                                                                                  [      -6.27338458, -0.00032749, 0.00020061, 7.27305709, 0.99899968, 0.99947190, 0.49326556],
    9488                                                                                                  [      -6.27338467, -0.00032745, 0.00020059, 7.27305721, 0.99899979, 0.99947196, 0.49326577],
    9489                                                                                                  [      -6.27338475, -0.00032742, 0.00020057, 7.27305733, 0.99899989, 0.99947201, 0.49326572],
    9490                                                                                                  [      -6.27338483, -0.00032739, 0.00020055, 7.27305745, 0.99900000, 0.99947207, 0.49326564],
    9491                                                                                                  [      -6.27338492, -0.00032735, 0.00020052, 7.27305756, 0.99900011, 0.99947213, 0.49326574],
    9492                                                                                                  [      -6.27338500, -0.00032732, 0.00020050, 7.27305768, 0.99900021, 0.99947218, 0.49326570],
    9493                                                                                                  [      -6.27338508, -0.00032728, 0.00020048, 7.27305780, 0.99900032, 0.99947224, 0.49326585],
    9494                                                                                                  [      -6.27338516, -0.00032725, 0.00020046, 7.27305792, 0.99900042, 0.99947229, 0.49326561],
    9495                                                                                                  [      -6.27338525, -0.00032721, 0.00020044, 7.27305804, 0.99900053, 0.99947235, 0.49326554],
    9496                                                                                                  [      -6.27338533, -0.00032718, 0.00020042, 7.27305815, 0.99900063, 0.99947240, 0.49326565],
    9497                                                                                                  [      -6.27338541, -0.00032714, 0.00020040, 7.27305827, 0.99900074, 0.99947246, 0.49326560],
    9498                                                                                                  [      -6.27338550, -0.00032711, 0.00020038, 7.27305839, 0.99900085, 0.99947252, 0.49326561],
    9499                                                                                                  [      -6.27338558, -0.00032707, 0.00020035, 7.27305850, 0.99900095, 0.99947257, 0.49326588],
    9500                                                                                                  [      -6.27338566, -0.00032704, 0.00020033, 7.27305862, 0.99900106, 0.99947263, 0.49326567],
    9501                                                                                                  [      -6.27338574, -0.00032700, 0.00020031, 7.27305874, 0.99900116, 0.99947268, 0.49326573],
    9502                                                                                                  [      -6.27338583, -0.00032697, 0.00020029, 7.27305886, 0.99900127, 0.99947274, 0.49326588],
    9503                                                                                                  [      -6.27338591, -0.00032694, 0.00020027, 7.27305897, 0.99900137, 0.99947279, 0.49326587],
    9504                                                                                                  [      -6.27338599, -0.00032690, 0.00020025, 7.27305909, 0.99900148, 0.99947285, 0.49326591],
    9505                                                                                                  [      -6.27338607, -0.00032687, 0.00020023, 7.27305921, 0.99900158, 0.99947291, 0.49326568],
    9506                                                                                                  [      -6.27338616, -0.00032683, 0.00020021, 7.27305932, 0.99900169, 0.99947296, 0.49326586],
    9507                                                                                                  [      -6.27338624, -0.00032680, 0.00020019, 7.27305944, 0.99900180, 0.99947302, 0.49326595],
    9508                                                                                                  [      -6.27338632, -0.00032676, 0.00020016, 7.27305956, 0.99900190, 0.99947307, 0.49326594],
    9509                                                                                                  [      -6.27338640, -0.00032673, 0.00020014, 7.27305968, 0.99900201, 0.99947313, 0.49326576],
    9510                                                                                                  [      -6.27338649, -0.00032669, 0.00020012, 7.27305979, 0.99900211, 0.99947318, 0.49326600],
    9511                                                                                                  [      -6.27338657, -0.00032666, 0.00020010, 7.27305991, 0.99900222, 0.99947324, 0.49326567],
    9512                                                                                                  [      -6.27338665, -0.00032663, 0.00020008, 7.27306003, 0.99900232, 0.99947330, 0.49326591],
    9513                                                                                                  [      -6.27338674, -0.00032659, 0.00020006, 7.27306014, 0.99900243, 0.99947335, 0.49326584],
    9514                                                                                                  [      -6.27338682, -0.00032656, 0.00020004, 7.27306026, 0.99900253, 0.99947341, 0.49326591],
    9515                                                                                                  [      -6.27338690, -0.00032652, 0.00020002, 7.27306038, 0.99900264, 0.99947346, 0.49326598],
    9516                                                                                                  [      -6.27338698, -0.00032649, 0.00020000, 7.27306050, 0.99900274, 0.99947352, 0.49326605],
    9517                                                                                                  [      -6.27338706, -0.00032645, 0.00019997, 7.27306061, 0.99900285, 0.99947357, 0.49326584],
    9518                                                                                                  [      -6.27338715, -0.00032642, 0.00019995, 7.27306073, 0.99900295, 0.99947363, 0.49326610],
    9519                                                                                                  [      -6.27338723, -0.00032638, 0.00019993, 7.27306085, 0.99900306, 0.99947368, 0.49326584],
    9520                                                                                                  [      -6.27338731, -0.00032635, 0.00019991, 7.27306096, 0.99900316, 0.99947374, 0.49326595],
    9521                                                                                                  [      -6.27338739, -0.00032632, 0.00019989, 7.27306108, 0.99900327, 0.99947379, 0.49326574],
    9522                                                                                                  [      -6.27338748, -0.00032628, 0.00019987, 7.27306120, 0.99900337, 0.99947385, 0.49326593],
    9523                                                                                                  [      -6.27338756, -0.00032625, 0.00019985, 7.27306131, 0.99900348, 0.99947391, 0.49326617],
    9524                                                                                                  [      -6.27338764, -0.00032621, 0.00019983, 7.27306143, 0.99900358, 0.99947396, 0.49326608],
    9525                                                                                                  [      -6.27338772, -0.00032618, 0.00019981, 7.27306155, 0.99900369, 0.99947402, 0.49326601],
    9526                                                                                                  [      -6.27338781, -0.00032614, 0.00019978, 7.27306166, 0.99900379, 0.99947407, 0.49326595],
    9527                                                                                                  [      -6.27338789, -0.00032611, 0.00019976, 7.27306178, 0.99900390, 0.99947413, 0.49326615],
    9528                                                                                                  [      -6.27338797, -0.00032607, 0.00019974, 7.27306190, 0.99900400, 0.99947418, 0.49326594],
    9529                                                                                                  [      -6.27338805, -0.00032604, 0.00019972, 7.27306201, 0.99900411, 0.99947424, 0.49326623],
    9530                                                                                                  [      -6.27338814, -0.00032601, 0.00019970, 7.27306213, 0.99900421, 0.99947429, 0.49326628],
    9531                                                                                                  [      -6.27338822, -0.00032597, 0.00019968, 7.27306225, 0.99900432, 0.99947435, 0.49326618],
    9532                                                                                                  [      -6.27338830, -0.00032594, 0.00019966, 7.27306236, 0.99900442, 0.99947440, 0.49326621],
    9533                                                                                                  [      -6.27338838, -0.00032590, 0.00019964, 7.27306248, 0.99900453, 0.99947446, 0.49326598],
    9534                                                                                                  [      -6.27338846, -0.00032587, 0.00019962, 7.27306260, 0.99900463, 0.99947452, 0.49326615],
    9535                                                                                                  [      -6.27338855, -0.00032583, 0.00019960, 7.27306271, 0.99900474, 0.99947457, 0.49326647],
    9536                                                                                                  [      -6.27338863, -0.00032580, 0.00019957, 7.27306283, 0.99900484, 0.99947463, 0.49326621],
    9537                                                                                                  [      -6.27338871, -0.00032577, 0.00019955, 7.27306294, 0.99900495, 0.99947468, 0.49326643],
    9538                                                                                                  [      -6.27338879, -0.00032573, 0.00019953, 7.27306306, 0.99900505, 0.99947474, 0.49326629],
    9539                                                                                                  [      -6.27338887, -0.00032570, 0.00019951, 7.27306318, 0.99900516, 0.99947479, 0.49326635],
    9540                                                                                                  [      -6.27338896, -0.00032566, 0.00019949, 7.27306329, 0.99900526, 0.99947485, 0.49326632],
    9541                                                                                                  [      -6.27338904, -0.00032563, 0.00019947, 7.27306341, 0.99900537, 0.99947490, 0.49326626],
    9542                                                                                                  [      -6.27338912, -0.00032559, 0.00019945, 7.27306353, 0.99900547, 0.99947496, 0.49326639],
    9543                                                                                                  [      -6.27338920, -0.00032556, 0.00019943, 7.27306364, 0.99900558, 0.99947501, 0.49326627],
    9544                                                                                                  [      -6.27338928, -0.00032553, 0.00019941, 7.27306376, 0.99900568, 0.99947507, 0.49326645],
    9545                                                                                                  [      -6.27338937, -0.00032549, 0.00019939, 7.27306387, 0.99900578, 0.99947512, 0.49326623],
    9546                                                                                                  [      -6.27338945, -0.00032546, 0.00019936, 7.27306399, 0.99900589, 0.99947518, 0.49326607],
    9547                                                                                                  [      -6.27338953, -0.00032542, 0.00019934, 7.27306411, 0.99900599, 0.99947523, 0.49326641],
    9548                                                                                                  [      -6.27338961, -0.00032539, 0.00019932, 7.27306422, 0.99900610, 0.99947529, 0.49326644],
    9549                                                                                                  [      -6.27338969, -0.00032536, 0.00019930, 7.27306434, 0.99900620, 0.99947534, 0.49326635],
    9550                                                                                                  [      -6.27338978, -0.00032532, 0.00019928, 7.27306446, 0.99900631, 0.99947540, 0.49326617],
    9551                                                                                                  [      -6.27338986, -0.00032529, 0.00019926, 7.27306457, 0.99900641, 0.99947545, 0.49326647],
    9552                                                                                                  [      -6.27338994, -0.00032525, 0.00019924, 7.27306469, 0.99900652, 0.99947551, 0.49326638],
    9553                                                                                                  [      -6.27339002, -0.00032522, 0.00019922, 7.27306480, 0.99900662, 0.99947556, 0.49326625],
    9554                                                                                                  [      -6.27339010, -0.00032518, 0.00019920, 7.27306492, 0.99900673, 0.99947562, 0.49326654],
    9555                                                                                                  [      -6.27339019, -0.00032515, 0.00019918, 7.27306504, 0.99900683, 0.99947567, 0.49326643],
    9556                                                                                                  [      -6.27339027, -0.00032512, 0.00019915, 7.27306515, 0.99900693, 0.99947573, 0.49326639],
    9557                                                                                                  [      -6.27339035, -0.00032508, 0.00019913, 7.27306527, 0.99900704, 0.99947578, 0.49326643],
    9558                                                                                                  [      -6.27339043, -0.00032505, 0.00019911, 7.27306538, 0.99900714, 0.99947584, 0.49326613],
    9559                                                                                                  [      -6.27339051, -0.00032501, 0.00019909, 7.27306550, 0.99900725, 0.99947589, 0.49326635],
    9560                                                                                                  [      -6.27339059, -0.00032498, 0.00019907, 7.27306561, 0.99900735, 0.99947595, 0.49326654],
    9561                                                                                                  [      -6.27339068, -0.00032495, 0.00019905, 7.27306573, 0.99900746, 0.99947600, 0.49326649],
    9562                                                                                                  [      -6.27339076, -0.00032491, 0.00019903, 7.27306585, 0.99900756, 0.99947606, 0.49326645],
    9563                                                                                                  [      -6.27339084, -0.00032488, 0.00019901, 7.27306596, 0.99900766, 0.99947611, 0.49326635],
    9564                                                                                                  [      -6.27339092, -0.00032484, 0.00019899, 7.27306608, 0.99900777, 0.99947617, 0.49326646],
    9565                                                                                                  [      -6.27339100, -0.00032481, 0.00019897, 7.27306619, 0.99900787, 0.99947622, 0.49326660],
    9566                                                                                                  [      -6.27339108, -0.00032477, 0.00019895, 7.27306631, 0.99900798, 0.99947628, 0.49326653],
    9567                                                                                                  [      -6.27339117, -0.00032474, 0.00019892, 7.27306642, 0.99900808, 0.99947633, 0.49326655],
    9568                                                                                                  [      -6.27339125, -0.00032471, 0.00019890, 7.27306654, 0.99900818, 0.99947639, 0.49326642],
    9569                                                                                                  [      -6.27339133, -0.00032467, 0.00019888, 7.27306666, 0.99900829, 0.99947644, 0.49326648],
    9570                                                                                                  [      -6.27339141, -0.00032464, 0.00019886, 7.27306677, 0.99900839, 0.99947650, 0.49326679],
    9571                                                                                                  [      -6.27339149, -0.00032460, 0.00019884, 7.27306689, 0.99900850, 0.99947655, 0.49326686],
    9572                                                                                                  [      -6.27339157, -0.00032457, 0.00019882, 7.27306700, 0.99900860, 0.99947661, 0.49326656],
    9573                                                                                                  [      -6.27339165, -0.00032454, 0.00019880, 7.27306712, 0.99900870, 0.99947666, 0.49326662],
    9574                                                                                                  [      -6.27339174, -0.00032450, 0.00019878, 7.27306723, 0.99900881, 0.99947672, 0.49326679],
    9575                                                                                                  [      -6.27339182, -0.00032447, 0.00019876, 7.27306735, 0.99900891, 0.99947677, 0.49326673],
    9576                                                                                                  [      -6.27339190, -0.00032443, 0.00019874, 7.27306746, 0.99900902, 0.99947683, 0.49326675],
    9577                                                                                                  [      -6.27339198, -0.00032440, 0.00019872, 7.27306758, 0.99900912, 0.99947688, 0.49326682],
    9578                                                                                                  [      -6.27339206, -0.00032437, 0.00019870, 7.27306770, 0.99900922, 0.99947694, 0.49326647],
    9579                                                                                                  [      -6.27339214, -0.00032433, 0.00019867, 7.27306781, 0.99900933, 0.99947699, 0.49326653],
    9580                                                                                                  [      -6.27339222, -0.00032430, 0.00019865, 7.27306793, 0.99900943, 0.99947705, 0.49326669],
    9581                                                                                                  [      -6.27339231, -0.00032426, 0.00019863, 7.27306804, 0.99900954, 0.99947710, 0.49326657],
    9582                                                                                                  [      -6.27339239, -0.00032423, 0.00019861, 7.27306816, 0.99900964, 0.99947716, 0.49326679],
    9583                                                                                                  [      -6.27339247, -0.00032420, 0.00019859, 7.27306827, 0.99900974, 0.99947721, 0.49326690],
    9584                                                                                                  [      -6.27339255, -0.00032416, 0.00019857, 7.27306839, 0.99900985, 0.99947727, 0.49326680],
    9585                                                                                                  [      -6.27339263, -0.00032413, 0.00019855, 7.27306850, 0.99900995, 0.99947732, 0.49326670],
    9586                                                                                                  [      -6.27339271, -0.00032409, 0.00019853, 7.27306862, 0.99901005, 0.99947738, 0.49326690],
    9587                                                                                                  [      -6.27339279, -0.00032406, 0.00019851, 7.27306873, 0.99901016, 0.99947743, 0.49326682],
    9588                                                                                                  [      -6.27339287, -0.00032403, 0.00019849, 7.27306885, 0.99901026, 0.99947749, 0.49326670],
    9589                                                                                                  [      -6.27339296, -0.00032399, 0.00019847, 7.27306896, 0.99901036, 0.99947754, 0.49326689],
    9590                                                                                                  [      -6.27339304, -0.00032396, 0.00019845, 7.27306908, 0.99901047, 0.99947760, 0.49326683],
    9591                                                                                                  [      -6.27339312, -0.00032393, 0.00019843, 7.27306919, 0.99901057, 0.99947765, 0.49326682],
    9592                                                                                                  [      -6.27339320, -0.00032389, 0.00019840, 7.27306931, 0.99901068, 0.99947770, 0.49326694],
    9593                                                                                                  [      -6.27339328, -0.00032386, 0.00019838, 7.27306942, 0.99901078, 0.99947776, 0.49326682],
    9594                                                                                                  [      -6.27339336, -0.00032382, 0.00019836, 7.27306954, 0.99901088, 0.99947781, 0.49326696],
    9595                                                                                                  [      -6.27339344, -0.00032379, 0.00019834, 7.27306965, 0.99901099, 0.99947787, 0.49326703],
    9596                                                                                                  [      -6.27339352, -0.00032376, 0.00019832, 7.27306977, 0.99901109, 0.99947792, 0.49326705],
    9597                                                                                                  [      -6.27339360, -0.00032372, 0.00019830, 7.27306988, 0.99901119, 0.99947798, 0.49326683],
    9598                                                                                                  [      -6.27339369, -0.00032369, 0.00019828, 7.27307000, 0.99901130, 0.99947803, 0.49326692],
    9599                                                                                                  [      -6.27339377, -0.00032365, 0.00019826, 7.27307011, 0.99901140, 0.99947809, 0.49326694],
    9600                                                                                                  [      -6.27339385, -0.00032362, 0.00019824, 7.27307023, 0.99901150, 0.99947814, 0.49326688],
    9601                                                                                                  [      -6.27339393, -0.00032359, 0.00019822, 7.27307034, 0.99901161, 0.99947820, 0.49326687],
    9602                                                                                                  [      -6.27339401, -0.00032355, 0.00019820, 7.27307046, 0.99901171, 0.99947825, 0.49326697],
    9603                                                                                                  [      -6.27339409, -0.00032352, 0.00019818, 7.27307057, 0.99901181, 0.99947830, 0.49326717],
    9604                                                                                                  [      -6.27339417, -0.00032349, 0.00019816, 7.27307069, 0.99901192, 0.99947836, 0.49326712],
    9605                                                                                                  [      -6.27339425, -0.00032345, 0.00019813, 7.27307080, 0.99901202, 0.99947841, 0.49326703],
    9606                                                                                                  [      -6.27339433, -0.00032342, 0.00019811, 7.27307092, 0.99901212, 0.99947847, 0.49326706],
    9607                                                                                                  [      -6.27339441, -0.00032338, 0.00019809, 7.27307103, 0.99901223, 0.99947852, 0.49326716],
    9608                                                                                                  [      -6.27339450, -0.00032335, 0.00019807, 7.27307115, 0.99901233, 0.99947858, 0.49326689],
    9609                                                                                                  [      -6.27339458, -0.00032332, 0.00019805, 7.27307126, 0.99901243, 0.99947863, 0.49326699],
    9610                                                                                                  [      -6.27339466, -0.00032328, 0.00019803, 7.27307137, 0.99901254, 0.99947869, 0.49326696],
    9611                                                                                                  [      -6.27339474, -0.00032325, 0.00019801, 7.27307149, 0.99901264, 0.99947874, 0.49326718],
    9612                                                                                                  [      -6.27339482, -0.00032321, 0.00019799, 7.27307160, 0.99901274, 0.99947880, 0.49326717],
    9613                                                                                                  [      -6.27339490, -0.00032318, 0.00019797, 7.27307172, 0.99901285, 0.99947885, 0.49326705],
    9614                                                                                                  [      -6.27339498, -0.00032315, 0.00019795, 7.27307183, 0.99901295, 0.99947890, 0.49326716],
    9615                                                                                                  [      -6.27339506, -0.00032311, 0.00019793, 7.27307195, 0.99901305, 0.99947896, 0.49326730],
    9616                                                                                                  [      -6.27339514, -0.00032308, 0.00019791, 7.27307206, 0.99901315, 0.99947901, 0.49326718],
    9617                                                                                                  [      -6.27339522, -0.00032305, 0.00019789, 7.27307218, 0.99901326, 0.99947907, 0.49326722],
    9618                                                                                                  [      -6.27339530, -0.00032301, 0.00019787, 7.27307229, 0.99901336, 0.99947912, 0.49326715],
    9619                                                                                                  [      -6.27339538, -0.00032298, 0.00019785, 7.27307241, 0.99901346, 0.99947918, 0.49326728],
    9620                                                                                                  [      -6.27339546, -0.00032295, 0.00019782, 7.27307252, 0.99901357, 0.99947923, 0.49326724],
    9621                                                                                                  [      -6.27339555, -0.00032291, 0.00019780, 7.27307263, 0.99901367, 0.99947928, 0.49326701],
    9622                                                                                                  [      -6.27339563, -0.00032288, 0.00019778, 7.27307275, 0.99901377, 0.99947934, 0.49326708],
    9623                                                                                                  [      -6.27339571, -0.00032284, 0.00019776, 7.27307286, 0.99901388, 0.99947939, 0.49326726],
    9624                                                                                                  [      -6.27339579, -0.00032281, 0.00019774, 7.27307298, 0.99901398, 0.99947945, 0.49326720],
    9625                                                                                                  [      -6.27339587, -0.00032278, 0.00019772, 7.27307309, 0.99901408, 0.99947950, 0.49326714],
    9626                                                                                                  [      -6.27339595, -0.00032274, 0.00019770, 7.27307321, 0.99901418, 0.99947956, 0.49326729],
    9627                                                                                                  [      -6.27339603, -0.00032271, 0.00019768, 7.27307332, 0.99901429, 0.99947961, 0.49326744],
    9628                                                                                                  [      -6.27339611, -0.00032268, 0.00019766, 7.27307343, 0.99901439, 0.99947966, 0.49326726],
    9629                                                                                                  [      -6.27339619, -0.00032264, 0.00019764, 7.27307355, 0.99901449, 0.99947972, 0.49326746],
    9630                                                                                                  [      -6.27339627, -0.00032261, 0.00019762, 7.27307366, 0.99901459, 0.99947977, 0.49326747],
    9631                                                                                                  [      -6.27339635, -0.00032258, 0.00019760, 7.27307378, 0.99901470, 0.99947983, 0.49326746],
    9632                                                                                                  [      -6.27339643, -0.00032254, 0.00019758, 7.27307389, 0.99901480, 0.99947988, 0.49326737],
    9633                                                                                                  [      -6.27339651, -0.00032251, 0.00019756, 7.27307400, 0.99901490, 0.99947994, 0.49326725],
    9634                                                                                                  [      -6.27339659, -0.00032247, 0.00019754, 7.27307412, 0.99901501, 0.99947999, 0.49326744],
    9635                                                                                                  [      -6.27339667, -0.00032244, 0.00019752, 7.27307423, 0.99901511, 0.99948004, 0.49326734],
    9636                                                                                                  [      -6.27339675, -0.00032241, 0.00019749, 7.27307435, 0.99901521, 0.99948010, 0.49326748],
    9637                                                                                                  [      -6.27339683, -0.00032237, 0.00019747, 7.27307446, 0.99901531, 0.99948015, 0.49326735],
    9638                                                                                                  [      -6.27339691, -0.00032234, 0.00019745, 7.27307457, 0.99901542, 0.99948021, 0.49326718],
    9639                                                                                                  [      -6.27339699, -0.00032231, 0.00019743, 7.27307469, 0.99901552, 0.99948026, 0.49326726],
    9640                                                                                                  [      -6.27339708, -0.00032227, 0.00019741, 7.27307480, 0.99901562, 0.99948031, 0.49326739],
    9641                                                                                                  [      -6.27339716, -0.00032224, 0.00019739, 7.27307492, 0.99901572, 0.99948037, 0.49326736],
    9642                                                                                                  [      -6.27339724, -0.00032221, 0.00019737, 7.27307503, 0.99901583, 0.99948042, 0.49326751],
    9643                                                                                                  [      -6.27339732, -0.00032217, 0.00019735, 7.27307514, 0.99901593, 0.99948048, 0.49326746],
    9644                                                                                                  [      -6.27339740, -0.00032214, 0.00019733, 7.27307526, 0.99901603, 0.99948053, 0.49326750],
    9645                                                                                                  [      -6.27339748, -0.00032210, 0.00019731, 7.27307537, 0.99901613, 0.99948059, 0.49326720],
    9646                                                                                                  [      -6.27339756, -0.00032207, 0.00019729, 7.27307549, 0.99901624, 0.99948064, 0.49326742],
    9647                                                                                                  [      -6.27339764, -0.00032204, 0.00019727, 7.27307560, 0.99901634, 0.99948069, 0.49326770],
    9648                                                                                                  [      -6.27339772, -0.00032200, 0.00019725, 7.27307571, 0.99901644, 0.99948075, 0.49326757],
    9649                                                                                                  [      -6.27339780, -0.00032197, 0.00019723, 7.27307583, 0.99901654, 0.99948080, 0.49326750],
    9650                                                                                                  [      -6.27339788, -0.00032194, 0.00019721, 7.27307594, 0.99901664, 0.99948086, 0.49326781],
    9651                                                                                                  [      -6.27339796, -0.00032190, 0.00019719, 7.27307605, 0.99901675, 0.99948091, 0.49326776],
    9652                                                                                                  [      -6.27339804, -0.00032187, 0.00019717, 7.27307617, 0.99901685, 0.99948096, 0.49326747],
    9653                                                                                                  [      -6.27339812, -0.00032184, 0.00019715, 7.27307628, 0.99901695, 0.99948102, 0.49326778],
    9654                                                                                                  [      -6.27339820, -0.00032180, 0.00019713, 7.27307639, 0.99901705, 0.99948107, 0.49326749],
    9655                                                                                                  [      -6.27339828, -0.00032177, 0.00019710, 7.27307651, 0.99901716, 0.99948113, 0.49326751],
    9656                                                                                                  [      -6.27339836, -0.00032174, 0.00019708, 7.27307662, 0.99901726, 0.99948118, 0.49326780],
    9657                                                                                                  [      -6.27339844, -0.00032170, 0.00019706, 7.27307674, 0.99901736, 0.99948123, 0.49326747],
    9658                                                                                                  [      -6.27339852, -0.00032167, 0.00019704, 7.27307685, 0.99901746, 0.99948129, 0.49326772],
    9659                                                                                                  [      -6.27339860, -0.00032164, 0.00019702, 7.27307696, 0.99901756, 0.99948134, 0.49326768],
    9660                                                                                                  [      -6.27339868, -0.00032160, 0.00019700, 7.27307708, 0.99901767, 0.99948139, 0.49326756],
    9661                                                                                                  [      -6.27339876, -0.00032157, 0.00019698, 7.27307719, 0.99901777, 0.99948145, 0.49326753],
    9662                                                                                                  [      -6.27339884, -0.00032154, 0.00019696, 7.27307730, 0.99901787, 0.99948150, 0.49326754],
    9663                                                                                                  [      -6.27339892, -0.00032150, 0.00019694, 7.27307742, 0.99901797, 0.99948156, 0.49326763],
    9664                                                                                                  [      -6.27339900, -0.00032147, 0.00019692, 7.27307753, 0.99901807, 0.99948161, 0.49326773],
    9665                                                                                                  [      -6.27339908, -0.00032144, 0.00019690, 7.27307764, 0.99901818, 0.99948166, 0.49326760],
    9666                                                                                                  [      -6.27339916, -0.00032140, 0.00019688, 7.27307776, 0.99901828, 0.99948172, 0.49326795],
    9667                                                                                                  [      -6.27339924, -0.00032137, 0.00019686, 7.27307787, 0.99901838, 0.99948177, 0.49326781],
    9668                                                                                                  [      -6.27339932, -0.00032134, 0.00019684, 7.27307798, 0.99901848, 0.99948183, 0.49326791],
    9669                                                                                                  [      -6.27339940, -0.00032130, 0.00019682, 7.27307810, 0.99901858, 0.99948188, 0.49326782],
    9670                                                                                                  [      -6.27339948, -0.00032127, 0.00019680, 7.27307821, 0.99901869, 0.99948193, 0.49326774],
    9671                                                                                                  [      -6.27339956, -0.00032124, 0.00019678, 7.27307832, 0.99901879, 0.99948199, 0.49326801],
    9672                                                                                                  [      -6.27339964, -0.00032120, 0.00019676, 7.27307843, 0.99901889, 0.99948204, 0.49326796],
    9673                                                                                                  [      -6.27339972, -0.00032117, 0.00019674, 7.27307855, 0.99901899, 0.99948209, 0.49326796],
    9674                                                                                                  [      -6.27339980, -0.00032114, 0.00019672, 7.27307866, 0.99901909, 0.99948215, 0.49326764],
    9675                                                                                                  [      -6.27339988, -0.00032110, 0.00019670, 7.27307877, 0.99901920, 0.99948220, 0.49326786],
    9676                                                                                                  [      -6.27339996, -0.00032107, 0.00019668, 7.27307889, 0.99901930, 0.99948226, 0.49326797],
    9677                                                                                                  [      -6.27340004, -0.00032104, 0.00019665, 7.27307900, 0.99901940, 0.99948231, 0.49326772],
    9678                                                                                                  [      -6.27340012, -0.00032100, 0.00019663, 7.27307911, 0.99901950, 0.99948236, 0.49326808],
    9679                                                                                                  [      -6.27340020, -0.00032097, 0.00019661, 7.27307923, 0.99901960, 0.99948242, 0.49326793],
    9680                                                                                                  [      -6.27340028, -0.00032094, 0.00019659, 7.27307934, 0.99901970, 0.99948247, 0.49326800],
    9681                                                                                                  [      -6.27340036, -0.00032090, 0.00019657, 7.27307945, 0.99901981, 0.99948252, 0.49326818],
    9682                                                                                                  [      -6.27340043, -0.00032087, 0.00019655, 7.27307956, 0.99901991, 0.99948258, 0.49326800],
    9683                                                                                                  [      -6.27340051, -0.00032084, 0.00019653, 7.27307968, 0.99902001, 0.99948263, 0.49326833],
    9684                                                                                                  [      -6.27340059, -0.00032080, 0.00019651, 7.27307979, 0.99902011, 0.99948268, 0.49326799],
    9685                                                                                                  [      -6.27340067, -0.00032077, 0.00019649, 7.27307990, 0.99902021, 0.99948274, 0.49326805],
    9686                                                                                                  [      -6.27340075, -0.00032074, 0.00019647, 7.27308002, 0.99902031, 0.99948279, 0.49326790],
    9687                                                                                                  [      -6.27340083, -0.00032070, 0.00019645, 7.27308013, 0.99902042, 0.99948285, 0.49326822],
    9688                                                                                                  [      -6.27340091, -0.00032067, 0.00019643, 7.27308024, 0.99902052, 0.99948290, 0.49326817],
    9689                                                                                                  [      -6.27340099, -0.00032064, 0.00019641, 7.27308035, 0.99902062, 0.99948295, 0.49326820],
    9690                                                                                                  [      -6.27340107, -0.00032060, 0.00019639, 7.27308047, 0.99902072, 0.99948301, 0.49326814],
    9691                                                                                                  [      -6.27340115, -0.00032057, 0.00019637, 7.27308058, 0.99902082, 0.99948306, 0.49326794],
    9692                                                                                                  [      -6.27340123, -0.00032054, 0.00019635, 7.27308069, 0.99902092, 0.99948311, 0.49326788],
    9693                                                                                                  [      -6.27340131, -0.00032050, 0.00019633, 7.27308081, 0.99902102, 0.99948317, 0.49326824],
    9694                                                                                                  [      -6.27340139, -0.00032047, 0.00019631, 7.27308092, 0.99902113, 0.99948322, 0.49326821],
    9695                                                                                                  [      -6.27340147, -0.00032044, 0.00019629, 7.27308103, 0.99902123, 0.99948327, 0.49326804],
    9696                                                                                                  [      -6.27340155, -0.00032040, 0.00019627, 7.27308114, 0.99902133, 0.99948333, 0.49326826],
    9697                                                                                                  [      -6.27340163, -0.00032037, 0.00019625, 7.27308126, 0.99902143, 0.99948338, 0.49326837],
    9698                                                                                                  [      -6.27340171, -0.00032034, 0.00019623, 7.27308137, 0.99902153, 0.99948343, 0.49326808],
    9699                                                                                                  [      -6.27340179, -0.00032031, 0.00019621, 7.27308148, 0.99902163, 0.99948349, 0.49326814],
    9700                                                                                                  [      -6.27340187, -0.00032027, 0.00019619, 7.27308159, 0.99902173, 0.99948354, 0.49326823],
    9701                                                                                                  [      -6.27340194, -0.00032024, 0.00019617, 7.27308171, 0.99902183, 0.99948359, 0.49326820],
    9702                                                                                                  [      -6.27340202, -0.00032021, 0.00019615, 7.27308182, 0.99902194, 0.99948365, 0.49326819],
    9703                                                                                                  [      -6.27340210, -0.00032017, 0.00019613, 7.27308193, 0.99902204, 0.99948370, 0.49326828],
    9704                                                                                                  [      -6.27340218, -0.00032014, 0.00019611, 7.27308204, 0.99902214, 0.99948376, 0.49326815],
    9705                                                                                                  [      -6.27340226, -0.00032011, 0.00019608, 7.27308216, 0.99902224, 0.99948381, 0.49326833],
    9706                                                                                                  [      -6.27340234, -0.00032007, 0.00019606, 7.27308227, 0.99902234, 0.99948386, 0.49326820],
    9707                                                                                                  [      -6.27340242, -0.00032004, 0.00019604, 7.27308238, 0.99902244, 0.99948392, 0.49326839],
    9708                                                                                                  [      -6.27340250, -0.00032001, 0.00019602, 7.27308249, 0.99902254, 0.99948397, 0.49326825],
    9709                                                                                                  [      -6.27340258, -0.00031997, 0.00019600, 7.27308261, 0.99902264, 0.99948402, 0.49326820],
    9710                                                                                                  [      -6.27340266, -0.00031994, 0.00019598, 7.27308272, 0.99902274, 0.99948408, 0.49326829],
    9711                                                                                                  [      -6.27340274, -0.00031991, 0.00019596, 7.27308283, 0.99902285, 0.99948413, 0.49326838],
    9712                                                                                                  [      -6.27340282, -0.00031987, 0.00019594, 7.27308294, 0.99902295, 0.99948418, 0.49326829],
    9713                                                                                                  [      -6.27340290, -0.00031984, 0.00019592, 7.27308305, 0.99902305, 0.99948424, 0.49326812],
    9714                                                                                                  [      -6.27340297, -0.00031981, 0.00019590, 7.27308317, 0.99902315, 0.99948429, 0.49326825],
    9715                                                                                                  [      -6.27340305, -0.00031978, 0.00019588, 7.27308328, 0.99902325, 0.99948434, 0.49326844],
    9716                                                                                                  [      -6.27340313, -0.00031974, 0.00019586, 7.27308339, 0.99902335, 0.99948440, 0.49326822],
    9717                                                                                                  [      -6.27340321, -0.00031971, 0.00019584, 7.27308350, 0.99902345, 0.99948445, 0.49326848],
    9718                                                                                                  [      -6.27340329, -0.00031968, 0.00019582, 7.27308361, 0.99902355, 0.99948450, 0.49326823],
    9719                                                                                                  [      -6.27340337, -0.00031964, 0.00019580, 7.27308373, 0.99902365, 0.99948455, 0.49326831],
    9720                                                                                                  [      -6.27340345, -0.00031961, 0.00019578, 7.27308384, 0.99902375, 0.99948461, 0.49326842],
    9721                                                                                                  [      -6.27340353, -0.00031958, 0.00019576, 7.27308395, 0.99902385, 0.99948466, 0.49326833],
    9722                                                                                                  [      -6.27340361, -0.00031954, 0.00019574, 7.27308406, 0.99902396, 0.99948471, 0.49326844],
    9723                                                                                                  [      -6.27340369, -0.00031951, 0.00019572, 7.27308417, 0.99902406, 0.99948477, 0.49326841],
    9724                                                                                                  [      -6.27340377, -0.00031948, 0.00019570, 7.27308429, 0.99902416, 0.99948482, 0.49326813],
    9725                                                                                                  [      -6.27340384, -0.00031945, 0.00019568, 7.27308440, 0.99902426, 0.99948487, 0.49326861],
    9726                                                                                                  [      -6.27340392, -0.00031941, 0.00019566, 7.27308451, 0.99902436, 0.99948493, 0.49326836],
    9727                                                                                                  [      -6.27340400, -0.00031938, 0.00019564, 7.27308462, 0.99902446, 0.99948498, 0.49326869],
    9728                                                                                                  [      -6.27340408, -0.00031935, 0.00019562, 7.27308473, 0.99902456, 0.99948503, 0.49326883],
    9729                                                                                                  [      -6.27340416, -0.00031931, 0.00019560, 7.27308485, 0.99902466, 0.99948509, 0.49326857],
    9730                                                                                                  [      -6.27340424, -0.00031928, 0.00019558, 7.27308496, 0.99902476, 0.99948514, 0.49326861],
    9731                                                                                                  [      -6.27340432, -0.00031925, 0.00019556, 7.27308507, 0.99902486, 0.99948519, 0.49326841],
    9732                                                                                                  [      -6.27340440, -0.00031922, 0.00019554, 7.27308518, 0.99902496, 0.99948525, 0.49326856],
    9733                                                                                                  [      -6.27340448, -0.00031918, 0.00019552, 7.27308529, 0.99902506, 0.99948530, 0.49326867],
    9734                                                                                                  [      -6.27340455, -0.00031915, 0.00019550, 7.27308540, 0.99902516, 0.99948535, 0.49326859],
    9735                                                                                                  [      -6.27340463, -0.00031912, 0.00019548, 7.27308552, 0.99902526, 0.99948541, 0.49326854],
    9736                                                                                                  [      -6.27340471, -0.00031908, 0.00019546, 7.27308563, 0.99902536, 0.99948546, 0.49326869],
    9737                                                                                                  [      -6.27340479, -0.00031905, 0.00019544, 7.27308574, 0.99902546, 0.99948551, 0.49326853],
    9738                                                                                                  [      -6.27340487, -0.00031902, 0.00019542, 7.27308585, 0.99902557, 0.99948556, 0.49326880],
    9739                                                                                                  [      -6.27340495, -0.00031899, 0.00019540, 7.27308596, 0.99902567, 0.99948562, 0.49326872],
    9740                                                                                                  [      -6.27340503, -0.00031895, 0.00019538, 7.27308607, 0.99902577, 0.99948567, 0.49326861],
    9741                                                                                                  [      -6.27340511, -0.00031892, 0.00019536, 7.27308619, 0.99902587, 0.99948572, 0.49326878],
    9742                                                                                                  [      -6.27340518, -0.00031889, 0.00019534, 7.27308630, 0.99902597, 0.99948578, 0.49326876],
    9743                                                                                                  [      -6.27340526, -0.00031885, 0.00019532, 7.27308641, 0.99902607, 0.99948583, 0.49326873],
    9744                                                                                                  [      -6.27340534, -0.00031882, 0.00019530, 7.27308652, 0.99902617, 0.99948588, 0.49326869],
    9745                                                                                                  [      -6.27340542, -0.00031879, 0.00019528, 7.27308663, 0.99902627, 0.99948594, 0.49326868],
    9746                                                                                                  [      -6.27340550, -0.00031876, 0.00019526, 7.27308674, 0.99902637, 0.99948599, 0.49326886],
    9747                                                                                                  [      -6.27340558, -0.00031872, 0.00019524, 7.27308685, 0.99902647, 0.99948604, 0.49326868],
    9748                                                                                                  [      -6.27340566, -0.00031869, 0.00019522, 7.27308697, 0.99902657, 0.99948609, 0.49326883],
    9749                                                                                                  [      -6.27340573, -0.00031866, 0.00019520, 7.27308708, 0.99902667, 0.99948615, 0.49326876],
    9750                                                                                                  [      -6.27340581, -0.00031862, 0.00019518, 7.27308719, 0.99902677, 0.99948620, 0.49326874],
    9751                                                                                                  [      -6.27340589, -0.00031859, 0.00019516, 7.27308730, 0.99902687, 0.99948625, 0.49326882],
    9752                                                                                                  [      -6.27340597, -0.00031856, 0.00019514, 7.27308741, 0.99902697, 0.99948631, 0.49326866],
    9753                                                                                                  [      -6.27340605, -0.00031853, 0.00019512, 7.27308752, 0.99902707, 0.99948636, 0.49326860],
    9754                                                                                                  [      -6.27340613, -0.00031849, 0.00019510, 7.27308763, 0.99902717, 0.99948641, 0.49326865],
    9755                                                                                                  [      -6.27340621, -0.00031846, 0.00019508, 7.27308775, 0.99902727, 0.99948646, 0.49326872],
    9756                                                                                                  [      -6.27340628, -0.00031843, 0.00019506, 7.27308786, 0.99902737, 0.99948652, 0.49326863],
    9757                                                                                                  [      -6.27340636, -0.00031839, 0.00019504, 7.27308797, 0.99902747, 0.99948657, 0.49326869],
    9758                                                                                                  [      -6.27340644, -0.00031836, 0.00019502, 7.27308808, 0.99902757, 0.99948662, 0.49326888],
    9759                                                                                                  [      -6.27340652, -0.00031833, 0.00019500, 7.27308819, 0.99902767, 0.99948668, 0.49326895],
    9760                                                                                                  [      -6.27340660, -0.00031830, 0.00019498, 7.27308830, 0.99902777, 0.99948673, 0.49326876],
    9761                                                                                                  [      -6.27340668, -0.00031826, 0.00019496, 7.27308841, 0.99902787, 0.99948678, 0.49326889],
    9762                                                                                                  [      -6.27340675, -0.00031823, 0.00019494, 7.27308852, 0.99902797, 0.99948683, 0.49326878],
    9763                                                                                                  [      -6.27340683, -0.00031820, 0.00019492, 7.27308863, 0.99902807, 0.99948689, 0.49326887],
    9764                                                                                                  [      -6.27340691, -0.00031817, 0.00019490, 7.27308875, 0.99902817, 0.99948694, 0.49326916],
    9765                                                                                                  [      -6.27340699, -0.00031813, 0.00019488, 7.27308886, 0.99902827, 0.99948699, 0.49326908],
    9766                                                                                                  [      -6.27340707, -0.00031810, 0.00019486, 7.27308897, 0.99902837, 0.99948704, 0.49326893],
    9767                                                                                                  [      -6.27340715, -0.00031807, 0.00019484, 7.27308908, 0.99902847, 0.99948710, 0.49326890],
    9768                                                                                                  [      -6.27340722, -0.00031803, 0.00019482, 7.27308919, 0.99902857, 0.99948715, 0.49326887],
    9769                                                                                                  [      -6.27340730, -0.00031800, 0.00019480, 7.27308930, 0.99902867, 0.99948720, 0.49326878],
    9770                                                                                                  [      -6.27340738, -0.00031797, 0.00019478, 7.27308941, 0.99902877, 0.99948726, 0.49326894],
    9771                                                                                                  [      -6.27340746, -0.00031794, 0.00019476, 7.27308952, 0.99902887, 0.99948731, 0.49326894],
    9772                                                                                                  [      -6.27340754, -0.00031790, 0.00019474, 7.27308963, 0.99902897, 0.99948736, 0.49326908],
    9773                                                                                                  [      -6.27340761, -0.00031787, 0.00019472, 7.27308974, 0.99902907, 0.99948741, 0.49326876],
    9774                                                                                                  [      -6.27340769, -0.00031784, 0.00019470, 7.27308985, 0.99902917, 0.99948747, 0.49326912],
    9775                                                                                                  [      -6.27340777, -0.00031781, 0.00019468, 7.27308996, 0.99902927, 0.99948752, 0.49326904],
    9776                                                                                                  [      -6.27340785, -0.00031777, 0.00019466, 7.27309008, 0.99902937, 0.99948757, 0.49326901],
    9777                                                                                                  [      -6.27340793, -0.00031774, 0.00019464, 7.27309019, 0.99902947, 0.99948762, 0.49326930],
    9778                                                                                                  [      -6.27340801, -0.00031771, 0.00019462, 7.27309030, 0.99902957, 0.99948768, 0.49326907],
    9779                                                                                                  [      -6.27340808, -0.00031768, 0.00019460, 7.27309041, 0.99902967, 0.99948773, 0.49326924],
    9780                                                                                                  [      -6.27340816, -0.00031764, 0.00019458, 7.27309052, 0.99902977, 0.99948778, 0.49326904],
    9781                                                                                                  [      -6.27340824, -0.00031761, 0.00019456, 7.27309063, 0.99902987, 0.99948783, 0.49326893],
    9782                                                                                                  [      -6.27340832, -0.00031758, 0.00019454, 7.27309074, 0.99902997, 0.99948789, 0.49326909],
    9783                                                                                                  [      -6.27340840, -0.00031755, 0.00019452, 7.27309085, 0.99903006, 0.99948794, 0.49326930],
    9784                                                                                                  [      -6.27340847, -0.00031751, 0.00019450, 7.27309096, 0.99903016, 0.99948799, 0.49326922],
    9785                                                                                                  [      -6.27340855, -0.00031748, 0.00019448, 7.27309107, 0.99903026, 0.99948804, 0.49326913],
    9786                                                                                                  [      -6.27340863, -0.00031745, 0.00019446, 7.27309118, 0.99903036, 0.99948810, 0.49326905],
    9787                                                                                                  [      -6.27340871, -0.00031742, 0.00019444, 7.27309129, 0.99903046, 0.99948815, 0.49326923],
    9788                                                                                                  [      -6.27340879, -0.00031738, 0.00019442, 7.27309140, 0.99903056, 0.99948820, 0.49326938],
    9789                                                                                                  [      -6.27340886, -0.00031735, 0.00019440, 7.27309151, 0.99903066, 0.99948825, 0.49326909],
    9790                                                                                                  [      -6.27340894, -0.00031732, 0.00019438, 7.27309162, 0.99903076, 0.99948831, 0.49326912],
    9791                                                                                                  [      -6.27340902, -0.00031728, 0.00019436, 7.27309173, 0.99903086, 0.99948836, 0.49326920],
    9792                                                                                                  [      -6.27340910, -0.00031725, 0.00019434, 7.27309184, 0.99903096, 0.99948841, 0.49326917],
    9793                                                                                                  [      -6.27340917, -0.00031722, 0.00019432, 7.27309196, 0.99903106, 0.99948846, 0.49326921],
    9794                                                                                                  [      -6.27340925, -0.00031719, 0.00019430, 7.27309207, 0.99903116, 0.99948852, 0.49326919],
    9795                                                                                                  [      -6.27340933, -0.00031715, 0.00019428, 7.27309218, 0.99903126, 0.99948857, 0.49326928],
    9796                                                                                                  [      -6.27340941, -0.00031712, 0.00019426, 7.27309229, 0.99903136, 0.99948862, 0.49326918],
    9797                                                                                                  [      -6.27340949, -0.00031709, 0.00019424, 7.27309240, 0.99903146, 0.99948867, 0.49326958],
    9798                                                                                                  [      -6.27340956, -0.00031706, 0.00019422, 7.27309251, 0.99903156, 0.99948873, 0.49326936],
    9799                                                                                                  [      -6.27340964, -0.00031702, 0.00019420, 7.27309262, 0.99903165, 0.99948878, 0.49326927],
    9800                                                                                                  [      -6.27340972, -0.00031699, 0.00019418, 7.27309273, 0.99903175, 0.99948883, 0.49326942],
    9801                                                                                                  [      -6.27340980, -0.00031696, 0.00019416, 7.27309284, 0.99903185, 0.99948888, 0.49326912],
    9802                                                                                                  [      -6.27340987, -0.00031693, 0.00019414, 7.27309295, 0.99903195, 0.99948894, 0.49326924],
    9803                                                                                                  [      -6.27340995, -0.00031690, 0.00019412, 7.27309306, 0.99903205, 0.99948899, 0.49326951],
    9804                                                                                                  [      -6.27341003, -0.00031686, 0.00019410, 7.27309317, 0.99903215, 0.99948904, 0.49326942],
    9805                                                                                                  [      -6.27341011, -0.00031683, 0.00019408, 7.27309328, 0.99903225, 0.99948909, 0.49326925],
    9806                                                                                                  [      -6.27341019, -0.00031680, 0.00019406, 7.27309339, 0.99903235, 0.99948914, 0.49326927],
    9807                                                                                                  [      -6.27341026, -0.00031677, 0.00019404, 7.27309350, 0.99903245, 0.99948920, 0.49326936],
    9808                                                                                                  [      -6.27341034, -0.00031673, 0.00019402, 7.27309361, 0.99903255, 0.99948925, 0.49326944],
    9809                                                                                                  [      -6.27341042, -0.00031670, 0.00019400, 7.27309372, 0.99903265, 0.99948930, 0.49326949],
    9810                                                                                                  [      -6.27341050, -0.00031667, 0.00019398, 7.27309383, 0.99903274, 0.99948935, 0.49326915],
    9811                                                                                                  [      -6.27341057, -0.00031664, 0.00019396, 7.27309394, 0.99903284, 0.99948941, 0.49326929],
    9812                                                                                                  [      -6.27341065, -0.00031660, 0.00019394, 7.27309405, 0.99903294, 0.99948946, 0.49326955],
    9813                                                                                                  [      -6.27341073, -0.00031657, 0.00019392, 7.27309416, 0.99903304, 0.99948951, 0.49326921],
    9814                                                                                                  [      -6.27341081, -0.00031654, 0.00019390, 7.27309427, 0.99903314, 0.99948956, 0.49326941],
    9815                                                                                                  [      -6.27341088, -0.00031651, 0.00019388, 7.27309438, 0.99903324, 0.99948961, 0.49326954],
    9816                                                                                                  [      -6.27341096, -0.00031647, 0.00019386, 7.27309449, 0.99903334, 0.99948967, 0.49326935],
    9817                                                                                                  [      -6.27341104, -0.00031644, 0.00019384, 7.27309460, 0.99903344, 0.99948972, 0.49326969],
    9818                                                                                                  [      -6.27341112, -0.00031641, 0.00019382, 7.27309471, 0.99903354, 0.99948977, 0.49326971],
    9819                                                                                                  [      -6.27341119, -0.00031638, 0.00019380, 7.27309482, 0.99903363, 0.99948982, 0.49326945],
    9820                                                                                                  [      -6.27341127, -0.00031634, 0.00019378, 7.27309493, 0.99903373, 0.99948988, 0.49326964],
    9821                                                                                                  [      -6.27341135, -0.00031631, 0.00019376, 7.27309504, 0.99903383, 0.99948993, 0.49326955],
    9822                                                                                                  [      -6.27341143, -0.00031628, 0.00019374, 7.27309515, 0.99903393, 0.99948998, 0.49326931],
    9823                                                                                                  [      -6.27341150, -0.00031625, 0.00019372, 7.27309526, 0.99903403, 0.99949003, 0.49326939],
    9824                                                                                                  [      -6.27341158, -0.00031622, 0.00019370, 7.27309537, 0.99903413, 0.99949008, 0.49326953],
    9825                                                                                                  [      -6.27341166, -0.00031618, 0.00019368, 7.27309547, 0.99903423, 0.99949014, 0.49326974],
    9826                                                                                                  [      -6.27341173, -0.00031615, 0.00019366, 7.27309558, 0.99903433, 0.99949019, 0.49326980],
    9827                                                                                                  [      -6.27341181, -0.00031612, 0.00019364, 7.27309569, 0.99903442, 0.99949024, 0.49326965],
    9828                                                                                                  [      -6.27341189, -0.00031609, 0.00019362, 7.27309580, 0.99903452, 0.99949029, 0.49326969],
    9829                                                                                                  [      -6.27341197, -0.00031605, 0.00019360, 7.27309591, 0.99903462, 0.99949034, 0.49326954],
    9830                                                                                                  [      -6.27341204, -0.00031602, 0.00019358, 7.27309602, 0.99903472, 0.99949040, 0.49326953],
    9831                                                                                                  [      -6.27341212, -0.00031599, 0.00019356, 7.27309613, 0.99903482, 0.99949045, 0.49326986],
    9832                                                                                                  [      -6.27341220, -0.00031596, 0.00019354, 7.27309624, 0.99903492, 0.99949050, 0.49326990],
    9833                                                                                                  [      -6.27341228, -0.00031592, 0.00019352, 7.27309635, 0.99903502, 0.99949055, 0.49326950],
    9834                                                                                                  [      -6.27341235, -0.00031589, 0.00019350, 7.27309646, 0.99903511, 0.99949060, 0.49326968],
    9835                                                                                                  [      -6.27341243, -0.00031586, 0.00019348, 7.27309657, 0.99903521, 0.99949066, 0.49326946],
    9836                                                                                                  [      -6.27341251, -0.00031583, 0.00019346, 7.27309668, 0.99903531, 0.99949071, 0.49326958],
    9837                                                                                                  [      -6.27341258, -0.00031580, 0.00019344, 7.27309679, 0.99903541, 0.99949076, 0.49326990],
    9838                                                                                                  [      -6.27341266, -0.00031576, 0.00019342, 7.27309690, 0.99903551, 0.99949081, 0.49326972],
    9839                                                                                                  [      -6.27341274, -0.00031573, 0.00019340, 7.27309701, 0.99903561, 0.99949086, 0.49326980],
    9840                                                                                                  [      -6.27341282, -0.00031570, 0.00019338, 7.27309712, 0.99903570, 0.99949092, 0.49327001],
    9841                                                                                                  [      -6.27341289, -0.00031567, 0.00019336, 7.27309723, 0.99903580, 0.99949097, 0.49326985],
    9842                                                                                                  [      -6.27341297, -0.00031563, 0.00019334, 7.27309734, 0.99903590, 0.99949102, 0.49326983],
    9843                                                                                                  [      -6.27341305, -0.00031560, 0.00019333, 7.27309744, 0.99903600, 0.99949107, 0.49326985],
    9844                                                                                                  [      -6.27341312, -0.00031557, 0.00019331, 7.27309755, 0.99903610, 0.99949112, 0.49327005],
    9845                                                                                                  [      -6.27341320, -0.00031554, 0.00019329, 7.27309766, 0.99903620, 0.99949118, 0.49326985],
    9846                                                                                                  [      -6.27341328, -0.00031551, 0.00019327, 7.27309777, 0.99903629, 0.99949123, 0.49326980],
    9847                                                                                                  [      -6.27341336, -0.00031547, 0.00019325, 7.27309788, 0.99903639, 0.99949128, 0.49326990],
    9848                                                                                                  [      -6.27341343, -0.00031544, 0.00019323, 7.27309799, 0.99903649, 0.99949133, 0.49326985],
    9849                                                                                                  [      -6.27341351, -0.00031541, 0.00019321, 7.27309810, 0.99903659, 0.99949138, 0.49326999],
    9850                                                                                                  [      -6.27341359, -0.00031538, 0.00019319, 7.27309821, 0.99903669, 0.99949144, 0.49326989],
    9851                                                                                                  [      -6.27341366, -0.00031535, 0.00019317, 7.27309832, 0.99903679, 0.99949149, 0.49326987],
    9852                                                                                                  [      -6.27341374, -0.00031531, 0.00019315, 7.27309843, 0.99903688, 0.99949154, 0.49327012],
    9853                                                                                                  [      -6.27341382, -0.00031528, 0.00019313, 7.27309854, 0.99903698, 0.99949159, 0.49326994],
    9854                                                                                                  [      -6.27341389, -0.00031525, 0.00019311, 7.27309864, 0.99903708, 0.99949164, 0.49327001],
    9855                                                                                                  [      -6.27341397, -0.00031522, 0.00019309, 7.27309875, 0.99903718, 0.99949169, 0.49327008],
    9856                                                                                                  [      -6.27341405, -0.00031519, 0.00019307, 7.27309886, 0.99903728, 0.99949175, 0.49327008],
    9857                                                                                                  [      -6.27341412, -0.00031515, 0.00019305, 7.27309897, 0.99903737, 0.99949180, 0.49326970],
    9858                                                                                                  [      -6.27341420, -0.00031512, 0.00019303, 7.27309908, 0.99903747, 0.99949185, 0.49326989],
    9859                                                                                                  [      -6.27341428, -0.00031509, 0.00019301, 7.27309919, 0.99903757, 0.99949190, 0.49326992],
    9860                                                                                                  [      -6.27341435, -0.00031506, 0.00019299, 7.27309930, 0.99903767, 0.99949195, 0.49327000],
    9861                                                                                                  [      -6.27341443, -0.00031502, 0.00019297, 7.27309941, 0.99903777, 0.99949200, 0.49327006],
    9862                                                                                                  [      -6.27341451, -0.00031499, 0.00019295, 7.27309952, 0.99903786, 0.99949206, 0.49327023],
    9863                                                                                                  [      -6.27341459, -0.00031496, 0.00019293, 7.27309962, 0.99903796, 0.99949211, 0.49327002],
    9864                                                                                                  [      -6.27341466, -0.00031493, 0.00019291, 7.27309973, 0.99903806, 0.99949216, 0.49327004],
    9865                                                                                                  [      -6.27341474, -0.00031490, 0.00019289, 7.27309984, 0.99903816, 0.99949221, 0.49327010],
    9866                                                                                                  [      -6.27341482, -0.00031486, 0.00019287, 7.27309995, 0.99903826, 0.99949226, 0.49327000],
    9867                                                                                                  [      -6.27341489, -0.00031483, 0.00019285, 7.27310006, 0.99903835, 0.99949231, 0.49326994],
    9868                                                                                                  [      -6.27341497, -0.00031480, 0.00019283, 7.27310017, 0.99903845, 0.99949237, 0.49327008],
    9869                                                                                                  [      -6.27341505, -0.00031477, 0.00019281, 7.27310028, 0.99903855, 0.99949242, 0.49327002],
    9870                                                                                                  [      -6.27341512, -0.00031474, 0.00019279, 7.27310039, 0.99903865, 0.99949247, 0.49327015],
    9871                                                                                                  [      -6.27341520, -0.00031470, 0.00019277, 7.27310049, 0.99903874, 0.99949252, 0.49326998],
    9872                                                                                                  [      -6.27341528, -0.00031467, 0.00019275, 7.27310060, 0.99903884, 0.99949257, 0.49327030],
    9873                                                                                                  [      -6.27341535, -0.00031464, 0.00019274, 7.27310071, 0.99903894, 0.99949262, 0.49326995],
    9874                                                                                                  [      -6.27341543, -0.00031461, 0.00019272, 7.27310082, 0.99903904, 0.99949268, 0.49327013],
    9875                                                                                                  [      -6.27341550, -0.00031458, 0.00019270, 7.27310093, 0.99903914, 0.99949273, 0.49327030],
    9876                                                                                                  [      -6.27341558, -0.00031454, 0.00019268, 7.27310104, 0.99903923, 0.99949278, 0.49327016],
    9877                                                                                                  [      -6.27341566, -0.00031451, 0.00019266, 7.27310115, 0.99903933, 0.99949283, 0.49327003],
    9878                                                                                                  [      -6.27341573, -0.00031448, 0.00019264, 7.27310125, 0.99903943, 0.99949288, 0.49327020],
    9879                                                                                                  [      -6.27341581, -0.00031445, 0.00019262, 7.27310136, 0.99903953, 0.99949293, 0.49327016],
    9880                                                                                                  [      -6.27341589, -0.00031442, 0.00019260, 7.27310147, 0.99903962, 0.99949298, 0.49327038],
    9881                                                                                                  [      -6.27341596, -0.00031438, 0.00019258, 7.27310158, 0.99903972, 0.99949304, 0.49327020],
    9882                                                                                                  [      -6.27341604, -0.00031435, 0.00019256, 7.27310169, 0.99903982, 0.99949309, 0.49326989],
    9883                                                                                                  [      -6.27341612, -0.00031432, 0.00019254, 7.27310180, 0.99903992, 0.99949314, 0.49327033],
    9884                                                                                                  [      -6.27341619, -0.00031429, 0.00019252, 7.27310190, 0.99904001, 0.99949319, 0.49327021],
    9885                                                                                                  [      -6.27341627, -0.00031426, 0.00019250, 7.27310201, 0.99904011, 0.99949324, 0.49327047],
    9886                                                                                                  [      -6.27341635, -0.00031423, 0.00019248, 7.27310212, 0.99904021, 0.99949329, 0.49327024],
    9887                                                                                                  [      -6.27341642, -0.00031419, 0.00019246, 7.27310223, 0.99904031, 0.99949335, 0.49327034],
    9888                                                                                                  [      -6.27341650, -0.00031416, 0.00019244, 7.27310234, 0.99904040, 0.99949340, 0.49327024],
    9889                                                                                                  [      -6.27341658, -0.00031413, 0.00019242, 7.27310245, 0.99904050, 0.99949345, 0.49327049],
    9890                                                                                                  [      -6.27341665, -0.00031410, 0.00019240, 7.27310255, 0.99904060, 0.99949350, 0.49327029],
    9891                                                                                                  [      -6.27341673, -0.00031407, 0.00019238, 7.27310266, 0.99904070, 0.99949355, 0.49327027],
    9892                                                                                                  [      -6.27341680, -0.00031403, 0.00019236, 7.27310277, 0.99904079, 0.99949360, 0.49327052],
    9893                                                                                                  [      -6.27341688, -0.00031400, 0.00019234, 7.27310288, 0.99904089, 0.99949365, 0.49327062],
    9894                                                                                                  [      -6.27341696, -0.00031397, 0.00019232, 7.27310299, 0.99904099, 0.99949370, 0.49327051],
    9895                                                                                                  [      -6.27341703, -0.00031394, 0.00019231, 7.27310309, 0.99904108, 0.99949376, 0.49327035],
    9896                                                                                                  [      -6.27341711, -0.00031391, 0.00019229, 7.27310320, 0.99904118, 0.99949381, 0.49327029],
    9897                                                                                                  [      -6.27341719, -0.00031387, 0.00019227, 7.27310331, 0.99904128, 0.99949386, 0.49327040],
    9898                                                                                                  [      -6.27341726, -0.00031384, 0.00019225, 7.27310342, 0.99904138, 0.99949391, 0.49327054],
    9899                                                                                                  [      -6.27341734, -0.00031381, 0.00019223, 7.27310353, 0.99904147, 0.99949396, 0.49327057],
    9900                                                                                                  [      -6.27341741, -0.00031378, 0.00019221, 7.27310363, 0.99904157, 0.99949401, 0.49327065],
    9901                                                                                                  [      -6.27341749, -0.00031375, 0.00019219, 7.27310374, 0.99904167, 0.99949406, 0.49327055],
    9902                                                                                                  [      -6.27341757, -0.00031372, 0.00019217, 7.27310385, 0.99904177, 0.99949412, 0.49327044],
    9903                                                                                                  [      -6.27341764, -0.00031368, 0.00019215, 7.27310396, 0.99904186, 0.99949417, 0.49327060],
    9904                                                                                                  [      -6.27341772, -0.00031365, 0.00019213, 7.27310407, 0.99904196, 0.99949422, 0.49327062],
    9905                                                                                                  [      -6.27341779, -0.00031362, 0.00019211, 7.27310417, 0.99904206, 0.99949427, 0.49327057],
    9906                                                                                                  [      -6.27341787, -0.00031359, 0.00019209, 7.27310428, 0.99904215, 0.99949432, 0.49327068],
    9907                                                                                                  [      -6.27341795, -0.00031356, 0.00019207, 7.27310439, 0.99904225, 0.99949437, 0.49327087],
    9908                                                                                                  [      -6.27341802, -0.00031353, 0.00019205, 7.27310450, 0.99904235, 0.99949442, 0.49327065],
    9909                                                                                                  [      -6.27341810, -0.00031349, 0.00019203, 7.27310461, 0.99904244, 0.99949447, 0.49327040],
    9910                                                                                                  [      -6.27341817, -0.00031346, 0.00019201, 7.27310471, 0.99904254, 0.99949453, 0.49327056],
    9911                                                                                                  [      -6.27341825, -0.00031343, 0.00019199, 7.27310482, 0.99904264, 0.99949458, 0.49327057],
    9912                                                                                                  [      -6.27341833, -0.00031340, 0.00019197, 7.27310493, 0.99904274, 0.99949463, 0.49327059],
    9913                                                                                                  [      -6.27341840, -0.00031337, 0.00019195, 7.27310504, 0.99904283, 0.99949468, 0.49327075],
    9914                                                                                                  [      -6.27341848, -0.00031333, 0.00019194, 7.27310514, 0.99904293, 0.99949473, 0.49327058],
    9915                                                                                                  [      -6.27341855, -0.00031330, 0.00019192, 7.27310525, 0.99904303, 0.99949478, 0.49327073],
    9916                                                                                                  [      -6.27341863, -0.00031327, 0.00019190, 7.27310536, 0.99904312, 0.99949483, 0.49327054],
    9917                                                                                                  [      -6.27341871, -0.00031324, 0.00019188, 7.27310547, 0.99904322, 0.99949488, 0.49327048],
    9918                                                                                                  [      -6.27341878, -0.00031321, 0.00019186, 7.27310557, 0.99904332, 0.99949493, 0.49327086],
    9919                                                                                                  [      -6.27341886, -0.00031318, 0.00019184, 7.27310568, 0.99904341, 0.99949499, 0.49327056],
    9920                                                                                                  [      -6.27341893, -0.00031314, 0.00019182, 7.27310579, 0.99904351, 0.99949504, 0.49327071],
    9921                                                                                                  [      -6.27341901, -0.00031311, 0.00019180, 7.27310590, 0.99904361, 0.99949509, 0.49327045],
    9922                                                                                                  [      -6.27341909, -0.00031308, 0.00019178, 7.27310600, 0.99904370, 0.99949514, 0.49327067],
    9923                                                                                                  [      -6.27341916, -0.00031305, 0.00019176, 7.27310611, 0.99904380, 0.99949519, 0.49327067],
    9924                                                                                                  [      -6.27341924, -0.00031302, 0.00019174, 7.27310622, 0.99904390, 0.99949524, 0.49327074],
    9925                                                                                                  [      -6.27341931, -0.00031299, 0.00019172, 7.27310633, 0.99904399, 0.99949529, 0.49327107],
    9926                                                                                                  [      -6.27341939, -0.00031295, 0.00019170, 7.27310643, 0.99904409, 0.99949534, 0.49327064],
    9927                                                                                                  [      -6.27341946, -0.00031292, 0.00019168, 7.27310654, 0.99904419, 0.99949539, 0.49327063],
    9928                                                                                                  [      -6.27341954, -0.00031289, 0.00019166, 7.27310665, 0.99904428, 0.99949545, 0.49327050],
    9929                                                                                                  [      -6.27341962, -0.00031286, 0.00019164, 7.27310676, 0.99904438, 0.99949550, 0.49327069],
    9930                                                                                                  [      -6.27341969, -0.00031283, 0.00019162, 7.27310686, 0.99904448, 0.99949555, 0.49327081],
    9931                                                                                                  [      -6.27341977, -0.00031280, 0.00019161, 7.27310697, 0.99904457, 0.99949560, 0.49327077],
    9932                                                                                                  [      -6.27341984, -0.00031276, 0.00019159, 7.27310708, 0.99904467, 0.99949565, 0.49327081],
    9933                                                                                                  [      -6.27341992, -0.00031273, 0.00019157, 7.27310719, 0.99904477, 0.99949570, 0.49327088],
    9934                                                                                                  [      -6.27341999, -0.00031270, 0.00019155, 7.27310729, 0.99904486, 0.99949575, 0.49327082],
    9935                                                                                                  [      -6.27342007, -0.00031267, 0.00019153, 7.27310740, 0.99904496, 0.99949580, 0.49327067],
    9936                                                                                                  [      -6.27342015, -0.00031264, 0.00019151, 7.27310751, 0.99904506, 0.99949585, 0.49327061],
    9937                                                                                                  [      -6.27342022, -0.00031261, 0.00019149, 7.27310761, 0.99904515, 0.99949590, 0.49327079],
    9938                                                                                                  [      -6.27342030, -0.00031258, 0.00019147, 7.27310772, 0.99904525, 0.99949595, 0.49327103],
    9939                                                                                                  [      -6.27342037, -0.00031254, 0.00019145, 7.27310783, 0.99904535, 0.99949601, 0.49327107],
    9940                                                                                                  [      -6.27342045, -0.00031251, 0.00019143, 7.27310794, 0.99904544, 0.99949606, 0.49327084],
    9941                                                                                                  [      -6.27342052, -0.00031248, 0.00019141, 7.27310804, 0.99904554, 0.99949611, 0.49327096],
    9942                                                                                                  [      -6.27342060, -0.00031245, 0.00019139, 7.27310815, 0.99904563, 0.99949616, 0.49327062],
    9943                                                                                                  [      -6.27342067, -0.00031242, 0.00019137, 7.27310826, 0.99904573, 0.99949621, 0.49327088],
    9944                                                                                                  [      -6.27342075, -0.00031239, 0.00019135, 7.27310836, 0.99904583, 0.99949626, 0.49327094],
    9945                                                                                                  [      -6.27342083, -0.00031235, 0.00019133, 7.27310847, 0.99904592, 0.99949631, 0.49327095],
    9946                                                                                                  [      -6.27342090, -0.00031232, 0.00019132, 7.27310858, 0.99904602, 0.99949636, 0.49327111],
    9947                                                                                                  [      -6.27342098, -0.00031229, 0.00019130, 7.27310869, 0.99904612, 0.99949641, 0.49327066],
    9948                                                                                                  [      -6.27342105, -0.00031226, 0.00019128, 7.27310879, 0.99904621, 0.99949646, 0.49327112],
    9949                                                                                                  [      -6.27342113, -0.00031223, 0.00019126, 7.27310890, 0.99904631, 0.99949651, 0.49327094],
    9950                                                                                                  [      -6.27342120, -0.00031220, 0.00019124, 7.27310901, 0.99904641, 0.99949656, 0.49327097],
    9951                                                                                                  [      -6.27342128, -0.00031217, 0.00019122, 7.27310911, 0.99904650, 0.99949662, 0.49327094],
    9952                                                                                                  [      -6.27342135, -0.00031213, 0.00019120, 7.27310922, 0.99904660, 0.99949667, 0.49327120],
    9953                                                                                                  [      -6.27342143, -0.00031210, 0.00019118, 7.27310933, 0.99904669, 0.99949672, 0.49327123],
    9954                                                                                                  [      -6.27342150, -0.00031207, 0.00019116, 7.27310943, 0.99904679, 0.99949677, 0.49327124],
    9955                                                                                                  [      -6.27342158, -0.00031204, 0.00019114, 7.27310954, 0.99904689, 0.99949682, 0.49327089],
    9956                                                                                                  [      -6.27342166, -0.00031201, 0.00019112, 7.27310965, 0.99904698, 0.99949687, 0.49327096],
    9957                                                                                                  [      -6.27342173, -0.00031198, 0.00019110, 7.27310975, 0.99904708, 0.99949692, 0.49327093],
    9958                                                                                                  [      -6.27342181, -0.00031195, 0.00019108, 7.27310986, 0.99904717, 0.99949697, 0.49327128],
    9959                                                                                                  [      -6.27342188, -0.00031191, 0.00019106, 7.27310997, 0.99904727, 0.99949702, 0.49327122],
    9960                                                                                                  [      -6.27342196, -0.00031188, 0.00019105, 7.27311007, 0.99904737, 0.99949707, 0.49327128],
    9961                                                                                                  [      -6.27342203, -0.00031185, 0.00019103, 7.27311018, 0.99904746, 0.99949712, 0.49327113],
    9962                                                                                                  [      -6.27342211, -0.00031182, 0.00019101, 7.27311029, 0.99904756, 0.99949717, 0.49327121],
    9963                                                                                                  [      -6.27342218, -0.00031179, 0.00019099, 7.27311039, 0.99904765, 0.99949722, 0.49327115],
    9964                                                                                                  [      -6.27342226, -0.00031176, 0.00019097, 7.27311050, 0.99904775, 0.99949727, 0.49327114],
    9965                                                                                                  [      -6.27342233, -0.00031173, 0.00019095, 7.27311061, 0.99904785, 0.99949733, 0.49327102],
    9966                                                                                                  [      -6.27342241, -0.00031169, 0.00019093, 7.27311071, 0.99904794, 0.99949738, 0.49327120],
    9967                                                                                                  [      -6.27342248, -0.00031166, 0.00019091, 7.27311082, 0.99904804, 0.99949743, 0.49327130],
    9968                                                                                                  [      -6.27342256, -0.00031163, 0.00019089, 7.27311093, 0.99904813, 0.99949748, 0.49327109],
    9969                                                                                                  [      -6.27342263, -0.00031160, 0.00019087, 7.27311103, 0.99904823, 0.99949753, 0.49327132],
    9970                                                                                                  [      -6.27342271, -0.00031157, 0.00019085, 7.27311114, 0.99904833, 0.99949758, 0.49327146],
    9971                                                                                                  [      -6.27342278, -0.00031154, 0.00019083, 7.27311125, 0.99904842, 0.99949763, 0.49327090],
    9972                                                                                                  [      -6.27342286, -0.00031151, 0.00019081, 7.27311135, 0.99904852, 0.99949768, 0.49327123],
    9973                                                                                                  [      -6.27342293, -0.00031147, 0.00019080, 7.27311146, 0.99904861, 0.99949773, 0.49327134],
    9974                                                                                                  [      -6.27342301, -0.00031144, 0.00019078, 7.27311156, 0.99904871, 0.99949778, 0.49327133],
    9975                                                                                                  [      -6.27342308, -0.00031141, 0.00019076, 7.27311167, 0.99904880, 0.99949783, 0.49327117],
    9976                                                                                                  [      -6.27342316, -0.00031138, 0.00019074, 7.27311178, 0.99904890, 0.99949788, 0.49327124],
    9977                                                                                                  [      -6.27342323, -0.00031135, 0.00019072, 7.27311188, 0.99904900, 0.99949793, 0.49327116],
    9978                                                                                                  [      -6.27342331, -0.00031132, 0.00019070, 7.27311199, 0.99904909, 0.99949798, 0.49327125],
    9979                                                                                                  [      -6.27342338, -0.00031129, 0.00019068, 7.27311210, 0.99904919, 0.99949803, 0.49327132],
    9980                                                                                                  [      -6.27342346, -0.00031126, 0.00019066, 7.27311220, 0.99904928, 0.99949808, 0.49327161],
    9981                                                                                                  [      -6.27342353, -0.00031122, 0.00019064, 7.27311231, 0.99904938, 0.99949813, 0.49327137],
    9982                                                                                                  [      -6.27342361, -0.00031119, 0.00019062, 7.27311242, 0.99904947, 0.99949818, 0.49327141],
    9983                                                                                                  [      -6.27342368, -0.00031116, 0.00019060, 7.27311252, 0.99904957, 0.99949824, 0.49327151],
    9984                                                                                                  [      -6.27342376, -0.00031113, 0.00019058, 7.27311263, 0.99904966, 0.99949829, 0.49327147],
    9985                                                                                                  [      -6.27342383, -0.00031110, 0.00019057, 7.27311273, 0.99904976, 0.99949834, 0.49327157],
    9986                                                                                                  [      -6.27342391, -0.00031107, 0.00019055, 7.27311284, 0.99904986, 0.99949839, 0.49327158],
    9987                                                                                                  [      -6.27342398, -0.00031104, 0.00019053, 7.27311295, 0.99904995, 0.99949844, 0.49327140],
    9988                                                                                                  [      -6.27342406, -0.00031101, 0.00019051, 7.27311305, 0.99905005, 0.99949849, 0.49327149],
    9989                                                                                                  [      -6.27342413, -0.00031097, 0.00019049, 7.27311316, 0.99905014, 0.99949854, 0.49327130],
    9990                                                                                                  [      -6.27342421, -0.00031094, 0.00019047, 7.27311326, 0.99905024, 0.99949859, 0.49327138],
    9991                                                                                                  [      -6.27342428, -0.00031091, 0.00019045, 7.27311337, 0.99905033, 0.99949864, 0.49327154],
    9992                                                                                                  [      -6.27342436, -0.00031088, 0.00019043, 7.27311348, 0.99905043, 0.99949869, 0.49327144],
    9993                                                                                                  [      -6.27342443, -0.00031085, 0.00019041, 7.27311358, 0.99905052, 0.99949874, 0.49327149],
    9994                                                                                                  [      -6.27342451, -0.00031082, 0.00019039, 7.27311369, 0.99905062, 0.99949879, 0.49327160],
    9995                                                                                                  [      -6.27342458, -0.00031079, 0.00019037, 7.27311379, 0.99905071, 0.99949884, 0.49327162],
    9996                                                                                                  [      -6.27342466, -0.00031076, 0.00019035, 7.27311390, 0.99905081, 0.99949889, 0.49327146],
    9997                                                                                                  [      -6.27342473, -0.00031072, 0.00019034, 7.27311401, 0.99905091, 0.99949894, 0.49327178],
    9998                                                                                                  [      -6.27342480, -0.00031069, 0.00019032, 7.27311411, 0.99905100, 0.99949899, 0.49327156],
    9999                                                                                                  [      -6.27342488, -0.00031066, 0.00019030, 7.27311422, 0.99905110, 0.99949904, 0.49327151],
    10000                                                                                                  [      -6.27342495, -0.00031063, 0.00019028, 7.27311432, 0.99905119, 0.99949909, 0.49327157],
    10001                                                                                                  [      -6.27342503, -0.00031060, 0.00019026, 7.27311443, 0.99905129, 0.99949914, 0.49327162],
    10002                                                                                                  [      -6.27342510, -0.00031057, 0.00019024, 7.27311453, 0.99905138, 0.99949919, 0.49327180],
    10003                                                                                                  [      -6.27342518, -0.00031054, 0.00019022, 7.27311464, 0.99905148, 0.99949924, 0.49327153],
    10004                                                                                                  [      -6.27342525, -0.00031051, 0.00019020, 7.27311475, 0.99905157, 0.99949929, 0.49327170],
    10005                                                                                                  [      -6.27342533, -0.00031047, 0.00019018, 7.27311485, 0.99905167, 0.99949934, 0.49327164],
    10006                                                                                                  [      -6.27342540, -0.00031044, 0.00019016, 7.27311496, 0.99905176, 0.99949939, 0.49327177],
    10007                                                                                                  [      -6.27342548, -0.00031041, 0.00019014, 7.27311506, 0.99905186, 0.99949944, 0.49327171],
    10008                                                                                                  [      -6.27342555, -0.00031038, 0.00019013, 7.27311517, 0.99905195, 0.99949949, 0.49327163],
    10009                                                                                                  [      -6.27342563, -0.00031035, 0.00019011, 7.27311527, 0.99905205, 0.99949954, 0.49327148],
    10010                                                                                                  [      -6.27342570, -0.00031032, 0.00019009, 7.27311538, 0.99905214, 0.99949959, 0.49327177],
    10011                                                                                                  [      -6.27342577, -0.00031029, 0.00019007, 7.27311549, 0.99905224, 0.99949964, 0.49327190],
    10012                                                                                                  [      -6.27342585, -0.00031026, 0.00019005, 7.27311559, 0.99905233, 0.99949969, 0.49327174],
    10013                                                                                                  [      -6.27342592, -0.00031023, 0.00019003, 7.27311570, 0.99905243, 0.99949974, 0.49327179],
    10014                                                                                                  [      -6.27342600, -0.00031019, 0.00019001, 7.27311580, 0.99905252, 0.99949979, 0.49327165],
    10015                                                                                                  [      -6.27342607, -0.00031016, 0.00018999, 7.27311591, 0.99905262, 0.99949984, 0.49327180],
    10016                                                                                                  [      -6.27342615, -0.00031013, 0.00018997, 7.27311601, 0.99905271, 0.99949989, 0.49327176],
    10017                                                                                                  [      -6.27342622, -0.00031010, 0.00018995, 7.27311612, 0.99905281, 0.99949994, 0.49327155],
    10018                                                                                                  [      -6.27342630, -0.00031007, 0.00018993, 7.27311622, 0.99905290, 0.99949999, 0.49327169],
    10019                                                                                                  [      -6.27342637, -0.00031004, 0.00018992, 7.27311633, 0.99905300, 0.99950004, 0.49327184],
    10020                                                                                                  [      -6.27342644, -0.00031001, 0.00018990, 7.27311644, 0.99905309, 0.99950009, 0.49327184],
    10021                                                                                                  [      -6.27342652, -0.00030998, 0.00018988, 7.27311654, 0.99905319, 0.99950014, 0.49327176],
    10022                                                                                                  [      -6.27342659, -0.00030995, 0.00018986, 7.27311665, 0.99905328, 0.99950019, 0.49327184],
    10023                                                                                                  [      -6.27342667, -0.00030992, 0.00018984, 7.27311675, 0.99905338, 0.99950024, 0.49327166],
    10024                                                                                                  [      -6.27342674, -0.00030988, 0.00018982, 7.27311686, 0.99905347, 0.99950029, 0.49327222],
    10025                                                                                                  [      -6.27342682, -0.00030985, 0.00018980, 7.27311696, 0.99905357, 0.99950034, 0.49327211],
    10026                                                                                                  [      -6.27342689, -0.00030982, 0.00018978, 7.27311707, 0.99905366, 0.99950039, 0.49327202],
    10027                                                                                                  [      -6.27342696, -0.00030979, 0.00018976, 7.27311717, 0.99905376, 0.99950044, 0.49327179],
    10028                                                                                                  [      -6.27342704, -0.00030976, 0.00018974, 7.27311728, 0.99905385, 0.99950049, 0.49327176],
    10029                                                                                                  [      -6.27342711, -0.00030973, 0.00018973, 7.27311738, 0.99905394, 0.99950054, 0.49327202],
    10030                                                                                                  [      -6.27342719, -0.00030970, 0.00018971, 7.27311749, 0.99905404, 0.99950059, 0.49327184],
    10031                                                                                                  [      -6.27342726, -0.00030967, 0.00018969, 7.27311759, 0.99905413, 0.99950064, 0.49327198],
    10032                                                                                                  [      -6.27342733, -0.00030964, 0.00018967, 7.27311770, 0.99905423, 0.99950069, 0.49327205],
    10033                                                                                                  [      -6.27342741, -0.00030961, 0.00018965, 7.27311780, 0.99905432, 0.99950074, 0.49327200],
    10034                                                                                                  [      -6.27342748, -0.00030957, 0.00018963, 7.27311791, 0.99905442, 0.99950079, 0.49327197],
    10035                                                                                                  [      -6.27342756, -0.00030954, 0.00018961, 7.27311801, 0.99905451, 0.99950084, 0.49327183],
    10036                                                                                                  [      -6.27342763, -0.00030951, 0.00018959, 7.27311812, 0.99905461, 0.99950089, 0.49327208],
    10037                                                                                                  [      -6.27342771, -0.00030948, 0.00018957, 7.27311822, 0.99905470, 0.99950094, 0.49327205],
    10038                                                                                                  [      -6.27342778, -0.00030945, 0.00018956, 7.27311833, 0.99905480, 0.99950099, 0.49327194]]);
    10039                                                                                                  
    10040     if value=='h':
    10041         series=love_numbers[:,0];
    10042     elif value=='k':
    10043         series=love_numbers[:,1];
    10044     elif value=='l':
    10045         series=love_numbers[:,2];
    10046     elif value=='gamma':
    10047         series=love_numbers[:,3];
    10048     elif value=='lambda':
    10049         series=love_numbers[:,4];
     30        raise RuntimeError('love_numbers error message: bad usage')
     31
     32    if value not in ['h', 'k', 'l', 'gamma', 'lambda']:
     33        raise RuntimeError('value should be one of ''h'', ''k'', ''l'', ''gamma'' and ''lambda''')
     34
     35    if len(varargin) > 1:
     36        raise RuntimeError('love_numbers error message: wrong usage')
     37
     38    love_numbers = np.array([[0, 0, 0, 0, 0, 0, 0],
     39                             [- 1.28740059, - 1.00000000, - 0.89858519, 1.28740059, 0.42519882, 0.89858519, 0.00000000],
     40                             [- 1.00025365, - 0.30922675, 0.02060926, 1.69102690, 0.46358648, 0.67016399, 0.61829668],
     41                             [- 1.06243501, - 0.19927948, 0.06801636, 1.86315553, 0.55741597, 0.73270416, 0.56270589],
     42                             [- 1.06779588, - 0.13649834, 0.05667027, 1.93129754, 0.63672498, 0.80683140, 0.51132745],
     43                             [- 1.10365923, - 0.10736896, 0.04401221, 1.99629027, 0.68737906, 0.84861883, 0.48642259],
     44                             [- 1.16440348, - 0.09295485, 0.03638747, 2.07144863, 0.72031283, 0.87065768, 0.47898268],
     45                             [- 1.23634156, - 0.08469861, 0.03202759, 2.15164295, 0.74355796, 0.88327380, 0.47955214],
     46                             [- 1.31140380, - 0.07921412, 0.02937593, 2.23218968, 0.76126493, 0.89140995, 0.48323250],
     47                             [- 1.38582399, - 0.07513541, 0.02762338, 2.31068858, 0.77552290, 0.89724121, 0.48795424],
     48                             [- 1.45807465, - 0.07187005, 0.02638627, 2.38620460, 0.78744212, 0.90174369, 0.49291061],
     49                             [- 1.52763314, - 0.06913154, 0.02547640, 2.45850160, 0.79766475, 0.90539206, 0.49779422],
     50                             [- 1.59437866, - 0.06676258, 0.02479080, 2.52761607, 0.80659635, 0.90844662, 0.50248477],
     51                             [- 1.65833071, - 0.06466619, 0.02426511, 2.59366452, 0.81451271, 0.91106870, 0.50693175],
     52                             [- 1.71954820, - 0.06277732, 0.02385464, 2.65677088, 0.82161167, 0.91336804, 0.51111243],
     53                             [- 1.77809640, - 0.06105001, 0.02352654, 2.71704639, 0.82804049, 0.91542346, 0.51501712],
     54                             [- 1.83403970, - 0.05945081, 0.02325609, 2.77458889, 0.83391153, 0.91729309, 0.51864363],
     55                             [- 1.88744242, - 0.05795502, 0.02302469, 2.82948740, 0.83931209, 0.91902029, 0.52199490],
     56                             [- 1.93837115, - 0.05654418, 0.02281843, 2.88182697, 0.84431095, 0.92063739, 0.52507761],
     57                             [- 1.98689666, - 0.05520447, 0.02262706, 2.93169219, 0.84896295, 0.92216847, 0.52790108],
     58                             [- 2.03309477, - 0.05392545, 0.02244322, 2.97916932, 0.85331225, 0.92363132, 0.53047654],
     59                             [- 2.07704643, - 0.05269926, 0.02226173, 3.02434717, 0.85739480, 0.92503902, 0.53281639],
     60                             [- 2.11883714, - 0.05151988, 0.02207909, 3.06731726, 0.86124014, 0.92640103, 0.53493369],
     61                             [- 2.15855611, - 0.05038274, 0.02189307, 3.10817337, 0.86487276, 0.92772419, 0.53684176],
     62                             [- 2.19629514, - 0.04928430, 0.02170238, 3.14701084, 0.86831322, 0.92901331, 0.53855386],
     63                             [- 2.23214747, - 0.04822179, 0.02150643, 3.18392568, 0.87157886, 0.93027178, 0.54008294],
     64                             [- 2.26620674, - 0.04719301, 0.02130509, 3.21901373, 0.87468453, 0.93150190, 0.54144148],
     65                             [- 2.29856595, - 0.04619619, 0.02109858, 3.25236976, 0.87764301, 0.93270523, 0.54264140],
     66                             [- 2.32931659, - 0.04522983, 0.02088735, 3.28408675, 0.88046543, 0.93388282, 0.54369397],
     67                             [- 2.35854794, - 0.04429270, 0.02067197, 3.31425524, 0.88316156, 0.93503533, 0.54460979],
     68                             [- 2.38634650, - 0.04338368, 0.02045310, 3.34296281, 0.88574004, 0.93616321, 0.54539877],
     69                             [- 2.41279547, - 0.04250179, 0.02023142, 3.37029367, 0.88820859, 0.93726678, 0.54607015],
     70                             [- 2.43797451, - 0.04164613, 0.02000761, 3.39632839, 0.89057416, 0.93834626, 0.54663248],
     71                             [- 2.46195951, - 0.04081583, 0.01978231, 3.42114367, 0.89284301, 0.93940185, 0.54709369],
     72                             [- 2.48482241, - 0.04001011, 0.01955614, 3.44481230, 0.89502085, 0.94043375, 0.54746112],
     73                             [- 2.50663126, - 0.03922817, 0.01932966, 3.46740309, 0.89711291, 0.94144217, 0.54774153],
     74                             [- 2.52745016, - 0.03846928, 0.01910337, 3.48898088, 0.89912397, 0.94242735, 0.54794114],
     75                             [- 2.54733938, - 0.03773269, 0.01887774, 3.50960670, 0.90105847, 0.94338957, 0.54806571],
     76                             [- 2.56635547, - 0.03701769, 0.01865317, 3.52933779, 0.90292050, 0.94432915, 0.54812051],
     77                             [- 2.58455138, - 0.03632358, 0.01843000, 3.54822780, 0.90471386, 0.94524642, 0.54811044],
     78                             [- 2.60197665, - 0.03564968, 0.01820854, 3.56632697, 0.90644209, 0.94614178, 0.54803997],
     79                             [- 2.61867756, - 0.03499532, 0.01798905, 3.58368224, 0.90810850, 0.94701563, 0.54791326],
     80                             [- 2.63469733, - 0.03435985, 0.01777176, 3.60033748, 0.90971616, 0.94786840, 0.54773413],
     81                             [- 2.65007629, - 0.03374263, 0.01755683, 3.61633367, 0.91126798, 0.94870054, 0.54750610],
     82                             [- 2.66485208, - 0.03314303, 0.01734443, 3.63170905, 0.91276665, 0.94951253, 0.54723245],
     83                             [- 2.67905981, - 0.03256047, 0.01713468, 3.64649934, 0.91421471, 0.95030485, 0.54691620],
     84                             [- 2.69273222, - 0.03199435, 0.01692767, 3.66073787, 0.91561457, 0.95107798, 0.54656015],
     85                             [- 2.70589990, - 0.03144411, 0.01672347, 3.67445580, 0.91696845, 0.95183242, 0.54616691],
     86                             [- 2.71859139, - 0.03090919, 0.01652215, 3.68768220, 0.91827849, 0.95256866, 0.54573889],
     87                             [- 2.73083334, - 0.03038907, 0.01632374, 3.70044427, 0.91954667, 0.95328719, 0.54527835],
     88                             [- 2.74265068, - 0.02988323, 0.01612826, 3.71276745, 0.92077487, 0.95398851, 0.54478739],
     89                             [- 2.75406669, - 0.02939118, 0.01593573, 3.72467551, 0.92196486, 0.95467309, 0.54426797],
     90                             [- 2.76510320, - 0.02891245, 0.01574615, 3.73619076, 0.92311833, 0.95534141, 0.54372191],
     91                             [- 2.77578063, - 0.02844656, 0.01555950, 3.74733406, 0.92423685, 0.95599393, 0.54315095],
     92                             [- 2.78611812, - 0.02799309, 0.01537578, 3.75812503, 0.92532192, 0.95663113, 0.54255669],
     93                             [- 2.79613364, - 0.02755161, 0.01519496, 3.76858203, 0.92637496, 0.95725343, 0.54194065],
     94                             [- 2.80584405, - 0.02712170, 0.01501701, 3.77872235, 0.92739730, 0.95786128, 0.54130424],
     95                             [- 2.81526521, - 0.02670298, 0.01484191, 3.78856223, 0.92839022, 0.95845511, 0.54064880],
     96                             [- 2.82441204, - 0.02629506, 0.01466961, 3.79811697, 0.92935491, 0.95903532, 0.53997561],
     97                             [- 2.83329857, - 0.02589759, 0.01450009, 3.80740098, 0.93029251, 0.95960232, 0.53928586],
     98                             [- 2.84193804, - 0.02551021, 0.01433329, 3.81642782, 0.93120412, 0.96015649, 0.53858067],
     99                             [- 2.85034293, - 0.02513260, 0.01416919, 3.82521033, 0.93209074, 0.96069821, 0.53786112],
     100                             [- 2.85852503, - 0.02476443, 0.01400773, 3.83376061, 0.93295337, 0.96122784, 0.53712821],
     101                             [- 2.86649548, - 0.02440538, 0.01384888, 3.84209010, 0.93379291, 0.96174574, 0.53638291],
     102                             [- 2.87426481, - 0.02405518, 0.01369258, 3.85020963, 0.93461026, 0.96225224, 0.53562612],
     103                             [- 2.88184299, - 0.02371352, 0.01353880, 3.85812947, 0.93540625, 0.96274768, 0.53485873],
     104                             [- 2.88923945, - 0.02338014, 0.01338749, 3.86585931, 0.93618168, 0.96323236, 0.53408154],
     105                             [- 2.89646316, - 0.02305478, 0.01323861, 3.87340838, 0.93693730, 0.96370661, 0.53329534],
     106                             [- 2.90352261, - 0.02273718, 0.01309211, 3.88078542, 0.93767383, 0.96417071, 0.53250089],
     107                             [- 2.91042585, - 0.02242710, 0.01294795, 3.88799874, 0.93839197, 0.96462494, 0.53169888],
     108                             [- 2.91718054, - 0.02212431, 0.01280609, 3.89505623, 0.93909236, 0.96506960, 0.53089002],
     109                             [- 2.92379397, - 0.02182859, 0.01266648, 3.90196538, 0.93977564, 0.96550493, 0.53007493],
     110                             [- 2.93027306, - 0.02153971, 0.01252908, 3.90873334, 0.94044240, 0.96593120, 0.52925424],
     111                             [- 2.93662439, - 0.02125748, 0.01239386, 3.91536691, 0.94109322, 0.96634866, 0.52842854],
     112                             [- 2.94285425, - 0.02098169, 0.01226077, 3.92187256, 0.94172863, 0.96675754, 0.52759839],
     113                             [- 2.94896860, - 0.02071215, 0.01212977, 3.92825645, 0.94234915, 0.96715808, 0.52676434],
     114                             [- 2.95497314, - 0.02044868, 0.01200082, 3.93452446, 0.94295529, 0.96755050, 0.52592690],
     115                             [- 2.96087331, - 0.02019110, 0.01187388, 3.94068220, 0.94354752, 0.96793501, 0.52508656],
     116                             [- 2.96667427, - 0.01993924, 0.01174893, 3.94673503, 0.94412630, 0.96831183, 0.52424380],
     117                             [- 2.97238097, - 0.01969293, 0.01162591, 3.95268804, 0.94469206, 0.96868116, 0.52339906],
     118                             [- 2.97799813, - 0.01945201, 0.01150481, 3.95854612, 0.94524521, 0.96904318, 0.52255277],
     119                             [- 2.98353025, - 0.01921634, 0.01138557, 3.96431391, 0.94578617, 0.96939809, 0.52170535],
     120                             [- 2.98898162, - 0.01898576, 0.01126817, 3.96999586, 0.94631531, 0.96974607, 0.52085719],
     121                             [- 2.99435636, - 0.01876014, 0.01115257, 3.97559622, 0.94683300, 0.97008729, 0.52000868],
     122                             [- 2.99965838, - 0.01853932, 0.01103875, 3.98111905, 0.94733959, 0.97042193, 0.51916016],
     123                             [- 3.00489143, - 0.01832319, 0.01092666, 3.98656824, 0.94783543, 0.97075015, 0.51831198],
     124                             [- 3.01005909, - 0.01811161, 0.01081628, 3.99194748, 0.94832084, 0.97107211, 0.51746448],
     125                             [- 3.01516479, - 0.01790446, 0.01070757, 3.99726033, 0.94879613, 0.97138796, 0.51661796],
     126                             [- 3.02021180, - 0.01770162, 0.01060052, 4.00251017, 0.94926160, 0.97169786, 0.51577273],
     127                             [- 3.02520323, - 0.01750298, 0.01049508, 4.00770025, 0.94971755, 0.97200194, 0.51492908],
     128                             [- 3.03014209, - 0.01730842, 0.01039123, 4.01283367, 0.95016424, 0.97230035, 0.51408727],
     129                             [- 3.03503122, - 0.01711783, 0.01028894, 4.01791339, 0.95060195, 0.97259323, 0.51324758],
     130                             [- 3.03987336, - 0.01693111, 0.01018819, 4.02294225, 0.95103094, 0.97288070, 0.51241024],
     131                             [- 3.04467112, - 0.01674816, 0.01008894, 4.02792295, 0.95145145, 0.97316290, 0.51157550],
     132                             [- 3.04942699, - 0.01656889, 0.00999117, 4.03285810, 0.95186373, 0.97343995, 0.51074358],
     133                             [- 3.05414335, - 0.01639319, 0.00989485, 4.03775017, 0.95226799, 0.97371196, 0.50991471],
     134                             [- 3.05882250, - 0.01622097, 0.00979997, 4.04260153, 0.95266447, 0.97397906, 0.50908908],
     135                             [- 3.06346660, - 0.01605215, 0.00970649, 4.04741445, 0.95305338, 0.97424136, 0.50826689],
     136                             [- 3.06807773, - 0.01588664, 0.00961439, 4.05219109, 0.95343492, 0.97449897, 0.50744832],
     137                             [- 3.07265789, - 0.01572436, 0.00952364, 4.05693353, 0.95380929, 0.97475200, 0.50663356],
     138                             [- 3.07720897, - 0.01556522, 0.00943423, 4.06164375, 0.95417670, 0.97500055, 0.50582277],
     139                             [- 3.08173279, - 0.01540916, 0.00934613, 4.06632364, 0.95453731, 0.97524472, 0.50501611],
     140                             [- 3.08623109, - 0.01525608, 0.00925931, 4.07097501, 0.95489131, 0.97548461, 0.50421372],
     141                             [- 3.09070551, - 0.01510592, 0.00917376, 4.07559959, 0.95523888, 0.97572032, 0.50341576],
     142                             [- 3.09515765, - 0.01495861, 0.00908946, 4.08019904, 0.95558018, 0.97595193, 0.50262236],
     143                             [- 3.09958899, - 0.01481408, 0.00900637, 4.08477492, 0.95591537, 0.97617955, 0.50183364],
     144                             [- 3.10400100, - 0.01467225, 0.00892449, 4.08932875, 0.95624461, 0.97640325, 0.50104973],
     145                             [- 3.10839504, - 0.01453308, 0.00884379, 4.09386196, 0.95656806, 0.97662313, 0.50027073],
     146                             [- 3.11277241, - 0.01439648, 0.00876425, 4.09837593, 0.95688585, 0.97683927, 0.49949676],
     147                             [- 3.11713438, - 0.01426240, 0.00868586, 4.10287198, 0.95719812, 0.97705174, 0.49872791],
     148                             [- 3.12148213, - 0.01413079, 0.00860858, 4.10735134, 0.95750503, 0.97726063, 0.49796429],
     149                             [- 3.12581680, - 0.01400157, 0.00853241, 4.11181522, 0.95780669, 0.97746601, 0.49720597],
     150                             [- 3.13013947, - 0.01387471, 0.00845733, 4.11626476, 0.95810324, 0.97766796, 0.49645304],
     151                             [- 3.13445117, - 0.01375013, 0.00838331, 4.12070104, 0.95839480, 0.97786656, 0.49570558],
     152                             [- 3.13875289, - 0.01362779, 0.00831034, 4.12512510, 0.95868150, 0.97806186, 0.49496366],
     153                             [- 3.14304556, - 0.01350764, 0.00823841, 4.12953792, 0.95896344, 0.97825395, 0.49422734],
     154                             [- 3.14733008, - 0.01338963, 0.00816748, 4.13394045, 0.95924075, 0.97844289, 0.49349669],
     155                             [- 3.15160728, - 0.01327370, 0.00809756, 4.13833358, 0.95951352, 0.97862874, 0.49277177],
     156                             [- 3.15587797, - 0.01315981, 0.00802862, 4.14271816, 0.95978188, 0.97881157, 0.49205262],
     157                             [- 3.16014293, - 0.01304792, 0.00796064, 4.14709501, 0.96004592, 0.97899144, 0.49133930],
     158                             [- 3.16440288, - 0.01293797, 0.00789361, 4.15146491, 0.96030574, 0.97916842, 0.49063185],
     159                             [- 3.16865852, - 0.01282993, 0.00782751, 4.15582858, 0.96056144, 0.97934256, 0.48993030],
     160                             [- 3.17291049, - 0.01272375, 0.00776233, 4.16018673, 0.96081312, 0.97951392, 0.48923471],
     161                             [- 3.17715942, - 0.01261940, 0.00769805, 4.16454003, 0.96106086, 0.97968255, 0.48854509],
     162                             [- 3.18140591, - 0.01251682, 0.00763466, 4.16888910, 0.96130476, 0.97984852, 0.48786148],
     163                             [- 3.18565052, - 0.01241598, 0.00757215, 4.17323454, 0.96154490, 0.98001187, 0.48718390],
     164                             [- 3.18989378, - 0.01231685, 0.00751049, 4.17757693, 0.96178137, 0.98017266, 0.48651237],
     165                             [- 3.19413619, - 0.01221938, 0.00744968, 4.18191681, 0.96201424, 0.98033094, 0.48584692],
     166                             [- 3.19837823, - 0.01212354, 0.00738970, 4.18625469, 0.96224360, 0.98048676, 0.48518756],
     167                             [- 3.20262035, - 0.01202930, 0.00733053, 4.19059105, 0.96246952, 0.98064017, 0.48453431],
     168                             [- 3.20686298, - 0.01193661, 0.00727217, 4.19492637, 0.96269208, 0.98079121, 0.48388717],
     169                             [- 3.21110653, - 0.01184546, 0.00721461, 4.19926107, 0.96291135, 0.98093994, 0.48324615],
     170                             [- 3.21535137, - 0.01175579, 0.00715782, 4.20359557, 0.96312741, 0.98108639, 0.48261126],
     171                             [- 3.21959786, - 0.01166759, 0.00710179, 4.20793027, 0.96334031, 0.98123062, 0.48198250],
     172                             [- 3.22384634, - 0.01158082, 0.00704652, 4.21226552, 0.96355014, 0.98137266, 0.48135988],
     173                             [- 3.22809714, - 0.01149545, 0.00699199, 4.21660169, 0.96375694, 0.98151256, 0.48074338],
     174                             [- 3.23235055, - 0.01141146, 0.00693819, 4.22093909, 0.96396080, 0.98165035, 0.48013301],
     175                             [- 3.23660685, - 0.01132880, 0.00688511, 4.22527805, 0.96416176, 0.98178609, 0.47952876],
     176                             [- 3.24086631, - 0.01124746, 0.00683273, 4.22961885, 0.96435989, 0.98191980, 0.47893063],
     177                             [- 3.24512918, - 0.01116741, 0.00678105, 4.23396177, 0.96455525, 0.98205153, 0.47833860],
     178                             [- 3.24939569, - 0.01108862, 0.00673005, 4.23830707, 0.96474789, 0.98218132, 0.47775267],
     179                             [- 3.25366606, - 0.01101107, 0.00667973, 4.24265499, 0.96493787, 0.98230920, 0.47717282],
     180                             [- 3.25794050, - 0.01093473, 0.00663007, 4.24700577, 0.96512525, 0.98243520, 0.47659903],
     181                             [- 3.26221918, - 0.01085957, 0.00658106, 4.25135961, 0.96531007, 0.98255937, 0.47603130],
     182                             [- 3.26650230, - 0.01078557, 0.00653269, 4.25571672, 0.96549239, 0.98268174, 0.47546960],
     183                             [- 3.27079000, - 0.01071272, 0.00648495, 4.26007729, 0.96567225, 0.98280233, 0.47491391],
     184                             [- 3.27508246, - 0.01064097, 0.00643784, 4.26444149, 0.96584971, 0.98292119, 0.47436422],
     185                             [- 3.27937980, - 0.01057032, 0.00639134, 4.26880948, 0.96602482, 0.98303834, 0.47382051],
     186                             [- 3.28368216, - 0.01050074, 0.00634544, 4.27318141, 0.96619761, 0.98315382, 0.47328275],
     187                             [- 3.28798965, - 0.01043222, 0.00630013, 4.27755743, 0.96636814, 0.98326765, 0.47275091],
     188                             [- 3.29230239, - 0.01036472, 0.00625541, 4.28193767, 0.96653645, 0.98337988, 0.47222499],
     189                             [- 3.29662047, - 0.01029823, 0.00621126, 4.28632224, 0.96670258, 0.98349051, 0.47170494],
     190                             [- 3.30094399, - 0.01023273, 0.00616768, 4.29071126, 0.96686657, 0.98359960, 0.47119074],
     191                             [- 3.30527303, - 0.01016819, 0.00612465, 4.29510483, 0.96702847, 0.98370715, 0.47068237],
     192                             [- 3.30960766, - 0.01010461, 0.00608218, 4.29950304, 0.96718831, 0.98381321, 0.47017979],
     193                             [- 3.31394795, - 0.01004197, 0.00604024, 4.30390598, 0.96734614, 0.98391779, 0.46968299],
     194                             [- 3.31829395, - 0.00998024, 0.00599883, 4.30831372, 0.96750198, 0.98402093, 0.46919192],
     195                             [- 3.32264573, - 0.00991940, 0.00595795, 4.31272633, 0.96765588, 0.98412265, 0.46870656],
     196                             [- 3.32700331, - 0.00985945, 0.00591759, 4.31714387, 0.96780788, 0.98422297, 0.46822687],
     197                             [- 3.33136675, - 0.00980035, 0.00587773, 4.32156640, 0.96795801, 0.98432191, 0.46775284],
     198                             [- 3.33573607, - 0.00974211, 0.00583838, 4.32599396, 0.96810630, 0.98441951, 0.46728441],
     199                             [- 3.34011130, - 0.00968470, 0.00579951, 4.33042660, 0.96825278, 0.98451579, 0.46682157],
     200                             [- 3.34449246, - 0.00962810, 0.00576113, 4.33486436, 0.96839750, 0.98461077, 0.46636427],
     201                             [- 3.34887956, - 0.00957230, 0.00572323, 4.33930726, 0.96854048, 0.98470447, 0.46591248],
     202                             [- 3.35327261, - 0.00951729, 0.00568581, 4.34375533, 0.96868175, 0.98479691, 0.46546617],
     203                             [- 3.35767163, - 0.00946304, 0.00564884, 4.34820858, 0.96882135, 0.98488812, 0.46502531],
     204                             [- 3.36207660, - 0.00940956, 0.00561233, 4.35266704, 0.96895930, 0.98497811, 0.46458986],
     205                             [- 3.36648753, - 0.00935681, 0.00557627, 4.35713071, 0.96909563, 0.98506691, 0.46415977],
     206                             [- 3.37090440, - 0.00930480, 0.00554066, 4.36159960, 0.96923037, 0.98515454, 0.46373503],
     207                             [- 3.37532721, - 0.00925350, 0.00550548, 4.36607371, 0.96936355, 0.98524102, 0.46331559],
     208                             [- 3.37975593, - 0.00920290, 0.00547073, 4.37055303, 0.96949520, 0.98532636, 0.46290141],
     209                             [- 3.38419056, - 0.00915300, 0.00543641, 4.37503756, 0.96962535, 0.98541059, 0.46249246],
     210                             [- 3.38863105, - 0.00910377, 0.00540251, 4.37952729, 0.96975401, 0.98549373, 0.46208870],
     211                             [- 3.39307740, - 0.00905520, 0.00536901, 4.38402220, 0.96988122, 0.98557578, 0.46169009],
     212                             [- 3.39752956, - 0.00900729, 0.00533593, 4.38852227, 0.97000699, 0.98565678, 0.46129660],
     213                             [- 3.40198751, - 0.00896002, 0.00530324, 4.39302749, 0.97013137, 0.98573674, 0.46090819],
     214                             [- 3.40645121, - 0.00891338, 0.00527095, 4.39753783, 0.97025435, 0.98581567, 0.46052482],
     215                             [- 3.41092063, - 0.00886736, 0.00523904, 4.40205326, 0.97037598, 0.98589360, 0.46014645],
     216                             [- 3.41539571, - 0.00882195, 0.00520752, 4.40657376, 0.97049628, 0.98597053, 0.45977305],
     217                             [- 3.41987643, - 0.00877713, 0.00517637, 4.41109929, 0.97061526, 0.98604649, 0.45940458],
     218                             [- 3.42436272, - 0.00873290, 0.00514560, 4.41562982, 0.97073295, 0.98612149, 0.45904100],
     219                             [- 3.42885456, - 0.00868925, 0.00511520, 4.42016531, 0.97084936, 0.98619555, 0.45868227],
     220                             [- 3.43335188, - 0.00864617, 0.00508515, 4.42470571, 0.97096453, 0.98626868, 0.45832835],
     221                             [- 3.43785464, - 0.00860364, 0.00505546, 4.42925100, 0.97107847, 0.98634090, 0.45797921],
     222                             [- 3.44236278, - 0.00856166, 0.00502613, 4.43380112, 0.97119120, 0.98641222, 0.45763480],
     223                             [- 3.44687625, - 0.00852021, 0.00499714, 4.43835604, 0.97130274, 0.98648265, 0.45729509],
     224                             [- 3.45139500, - 0.00847930, 0.00496849, 4.44291570, 0.97141311, 0.98655221, 0.45696005],
     225                             [- 3.45591895, - 0.00843890, 0.00494017, 4.44748005, 0.97152233, 0.98662092, 0.45662962],
     226                             [- 3.46044807, - 0.00839902, 0.00491219, 4.45204905, 0.97163042, 0.98668879, 0.45630378],
     227                             [- 3.46498227, - 0.00835964, 0.00488454, 4.45662264, 0.97173739, 0.98675583, 0.45598249],
     228                             [- 3.46952151, - 0.00832075, 0.00485721, 4.46120077, 0.97184326, 0.98682205, 0.45566570],
     229                             [- 3.47406572, - 0.00828234, 0.00483019, 4.46578338, 0.97194805, 0.98688746, 0.45535338],
     230                             [- 3.47861484, - 0.00824442, 0.00480349, 4.47037042, 0.97205179, 0.98695209, 0.45504550],
     231                             [- 3.48316880, - 0.00820696, 0.00477710, 4.47496184, 0.97215447, 0.98701594, 0.45474201],
     232                             [- 3.48772753, - 0.00816996, 0.00475102, 4.47955756, 0.97225612, 0.98707902, 0.45444287],
     233                             [- 3.49229097, - 0.00813342, 0.00472523, 4.48415755, 0.97235676, 0.98714134, 0.45414806],
     234                             [- 3.49685904, - 0.00809733, 0.00469975, 4.48876172, 0.97245640, 0.98720293, 0.45385753],
     235                             [- 3.50143169, - 0.00806167, 0.00467455, 4.49337002, 0.97255506, 0.98726378, 0.45357123],
     236                             [- 3.50600884, - 0.00802644, 0.00464964, 4.49798240, 0.97265275, 0.98732391, 0.45328915],
     237                             [- 3.51059042, - 0.00799164, 0.00462502, 4.50259878, 0.97274949, 0.98738333, 0.45301123],
     238                             [- 3.51517637, - 0.00795726, 0.00460068, 4.50721911, 0.97284528, 0.98744206, 0.45273745],
     239                             [- 3.51976660, - 0.00792329, 0.00457662, 4.51184331, 0.97294015, 0.98750009, 0.45246776],
     240                             [- 3.52436105, - 0.00788972, 0.00455283, 4.51647133, 0.97303411, 0.98755745, 0.45220214],
     241                             [- 3.52895964, - 0.00785655, 0.00452930, 4.52110309, 0.97312718, 0.98761414, 0.45194053],
     242                             [- 3.53356231, - 0.00782377, 0.00450605, 4.52573854, 0.97321936, 0.98767018, 0.45168291],
     243                             [- 3.53816898, - 0.00779138, 0.00448306, 4.53037760, 0.97331067, 0.98772556, 0.45142923],
     244                             [- 3.54277957, - 0.00775937, 0.00446032, 4.53502021, 0.97340111, 0.98778031, 0.45117947],
     245                             [- 3.54739402, - 0.00772773, 0.00443784, 4.53966629, 0.97349072, 0.98783443, 0.45093359],
     246                             [- 3.55201224, - 0.00769645, 0.00441562, 4.54431579, 0.97357949, 0.98788793, 0.45069155],
     247                             [- 3.55663417, - 0.00766554, 0.00439364, 4.54896864, 0.97366744, 0.98794082, 0.45045331],
     248                             [- 3.56125973, - 0.00763498, 0.00437190, 4.55362475, 0.97375458, 0.98799311, 0.45021885],
     249                             [- 3.56588885, - 0.00760478, 0.00435041, 4.55828407, 0.97384092, 0.98804481, 0.44998812],
     250                             [- 3.57052145, - 0.00757491, 0.00432916, 4.56294653, 0.97392648, 0.98809593, 0.44976109],
     251                             [- 3.57515745, - 0.00754539, 0.00430814, 4.56761206, 0.97401126, 0.98814646, 0.44953772],
     252                             [- 3.57979678, - 0.00751620, 0.00428736, 4.57228058, 0.97409528, 0.98819644, 0.44931799],
     253                             [- 3.58443937, - 0.00748734, 0.00426681, 4.57695203, 0.97417854, 0.98824585, 0.44910185],
     254                             [- 3.58908514, - 0.00745880, 0.00424648, 4.58162633, 0.97426107, 0.98829472, 0.44888928],
     255                             [- 3.59373401, - 0.00743059, 0.00422637, 4.58630343, 0.97434286, 0.98834304, 0.44868023],
     256                             [- 3.59838592, - 0.00740268, 0.00420649, 4.59098323, 0.97442393, 0.98839083, 0.44847468],
     257                             [- 3.60304078, - 0.00737509, 0.00418682, 4.59566569, 0.97450428, 0.98843809, 0.44827259],
     258                             [- 3.60769852, - 0.00734780, 0.00416737, 4.60035072, 0.97458394, 0.98848483, 0.44807392],
     259                             [- 3.61235907, - 0.00732081, 0.00414813, 4.60503826, 0.97466290, 0.98853106, 0.44787865],
     260                             [- 3.61702235, - 0.00729411, 0.00412910, 4.60972823, 0.97474118, 0.98857678, 0.44768674],
     261                             [- 3.62168828, - 0.00726771, 0.00411028, 4.61442057, 0.97481879, 0.98862201, 0.44749816],
     262                             [- 3.62635680, - 0.00724159, 0.00409166, 4.61911521, 0.97489573, 0.98866675, 0.44731288],
     263                             [- 3.63102782, - 0.00721575, 0.00407325, 4.62381207, 0.97497202, 0.98871100, 0.44713086],
     264                             [- 3.63570128, - 0.00719020, 0.00405503, 4.62851108, 0.97504766, 0.98875478, 0.44695207],
     265                             [- 3.64037709, - 0.00716491, 0.00403700, 4.63321218, 0.97512267, 0.98879808, 0.44677649],
     266                             [- 3.64505519, - 0.00713990, 0.00401918, 4.63791530, 0.97519704, 0.98884093, 0.44660407],
     267                             [- 3.64973550, - 0.00711515, 0.00400154, 4.64262036, 0.97527080, 0.98888331, 0.44643478],
     268                             [- 3.65441795, - 0.00709066, 0.00398409, 4.64732729, 0.97534394, 0.98892525, 0.44626861],
     269                             [- 3.65910247, - 0.00706643, 0.00396683, 4.65203604, 0.97541648, 0.98896674, 0.44610551],
     270                             [- 3.66378898, - 0.00704246, 0.00394975, 4.65674652, 0.97548842, 0.98900779, 0.44594545],
     271                             [- 3.66847740, - 0.00701873, 0.00393286, 4.66145867, 0.97555978, 0.98904841, 0.44578841],
     272                             [- 3.67316767, - 0.00699526, 0.00391614, 4.66617242, 0.97563055, 0.98908860, 0.44563435],
     273                             [- 3.67785972, - 0.00697202, 0.00389960, 4.67088770, 0.97570076, 0.98912838, 0.44548324],
     274                             [- 3.68255347, - 0.00694903, 0.00388324, 4.67560444, 0.97577039, 0.98916773, 0.44533506],
     275                             [- 3.68724885, - 0.00692627, 0.00386705, 4.68032258, 0.97583947, 0.98920668, 0.44518977],
     276                             [- 3.69194579, - 0.00690374, 0.00385103, 4.68504204, 0.97590800, 0.98924523, 0.44504735],
     277                             [- 3.69664421, - 0.00688145, 0.00383518, 4.68976277, 0.97597598, 0.98928338, 0.44490776],
     278                             [- 3.70134406, - 0.00685938, 0.00381949, 4.69448468, 0.97604342, 0.98932113, 0.44477099],
     279                             [- 3.70604525, - 0.00683753, 0.00380397, 4.69920772, 0.97611034, 0.98935850, 0.44463698],
     280                             [- 3.71074772, - 0.00681590, 0.00378861, 4.70393182, 0.97617673, 0.98939548, 0.44450573],
     281                             [- 3.71545140, - 0.00679449, 0.00377342, 4.70865691, 0.97624261, 0.98943209, 0.44437720],
     282                             [- 3.72015622, - 0.00677330, 0.00375838, 4.71338292, 0.97630797, 0.98946833, 0.44425137],
     283                             [- 3.72486211, - 0.00675231, 0.00374349, 4.71810980, 0.97637283, 0.98950420, 0.44412820],
     284                             [- 3.72956899, - 0.00673153, 0.00372877, 4.72283746, 0.97643720, 0.98953970, 0.44400767],
     285                             [- 3.73427682, - 0.00671096, 0.00371419, 4.72756585, 0.97650107, 0.98957485, 0.44388975],
     286                             [- 3.73898550, - 0.00669059, 0.00369976, 4.73229491, 0.97656446, 0.98960965, 0.44377441],
     287                             [- 3.74369498, - 0.00667042, 0.00368549, 4.73702457, 0.97662737, 0.98964409, 0.44366163],
     288                             [- 3.74840519, - 0.00665044, 0.00367136, 4.74175475, 0.97668980, 0.98967820, 0.44355139],
     289                             [- 3.75311607, - 0.00663066, 0.00365738, 4.74648541, 0.97675177, 0.98971196, 0.44344364],
     290                             [- 3.75782754, - 0.00661107, 0.00364354, 4.75121648, 0.97681327, 0.98974540, 0.44333838],
     291                             [- 3.76253955, - 0.00659167, 0.00362984, 4.75594788, 0.97687432, 0.98977850, 0.44323557],
     292                             [- 3.76725202, - 0.00657245, 0.00361628, 4.76067957, 0.97693492, 0.98981127, 0.44313518],
     293                             [- 3.77196489, - 0.00655341, 0.00360286, 4.76541147, 0.97699508, 0.98984372, 0.44303720],
     294                             [- 3.77667809, - 0.00653456, 0.00358958, 4.77014353, 0.97705479, 0.98987586, 0.44294159],
     295                             [- 3.78139156, - 0.00651589, 0.00357643, 4.77487568, 0.97711407, 0.98990768, 0.44284833],
     296                             [- 3.78610525, - 0.00649739, 0.00356342, 4.77960786, 0.97717292, 0.98993920, 0.44275740],
     297                             [- 3.79081907, - 0.00647906, 0.00355053, 4.78434001, 0.97723134, 0.98997040, 0.44266877],
     298                             [- 3.79553298, - 0.00646091, 0.00353778, 4.78907207, 0.97728935, 0.99000131, 0.44258241],
     299                             [- 3.80024690, - 0.00644292, 0.00352516, 4.79380398, 0.97734694, 0.99003192, 0.44249831],
     300                             [- 3.80496078, - 0.00642510, 0.00351266, 4.79853567, 0.97740413, 0.99006223, 0.44241644],
     301                             [- 3.80967455, - 0.00640745, 0.00350029, 4.80326710, 0.97746090, 0.99009226, 0.44233677],
     302                             [- 3.81438815, - 0.00638996, 0.00348804, 4.80799819, 0.97751728, 0.99012200, 0.44225928],
     303                             [- 3.81910152, - 0.00637262, 0.00347592, 4.81272889, 0.97757326, 0.99015145, 0.44218395],
     304                             [- 3.82381460, - 0.00635545, 0.00346392, 4.81745915, 0.97762886, 0.99018063, 0.44211076],
     305                             [- 3.82852732, - 0.00633843, 0.00345204, 4.82218889, 0.97768406, 0.99020953, 0.44203968],
     306                             [- 3.83323964, - 0.00632157, 0.00344027, 4.82691808, 0.97773889, 0.99023816, 0.44197068],
     307                             [- 3.83795149, - 0.00630485, 0.00342863, 4.83164664, 0.97779333, 0.99026652, 0.44190376],
     308                             [- 3.84266280, - 0.00628829, 0.00341709, 4.83637452, 0.97784741, 0.99029462, 0.44183887],
     309                             [- 3.84737353, - 0.00627187, 0.00340568, 4.84110166, 0.97790111, 0.99032245, 0.44177601],
     310                             [- 3.85208361, - 0.00625560, 0.00339437, 4.84582801, 0.97795446, 0.99035003, 0.44171515],
     311                             [- 3.85679299, - 0.00623948, 0.00338318, 4.85055351, 0.97800744, 0.99037735, 0.44165627],
     312                             [- 3.86150160, - 0.00622349, 0.00337210, 4.85527811, 0.97806006, 0.99040441, 0.44159934],
     313                             [- 3.86620939, - 0.00620765, 0.00336112, 4.86000175, 0.97811233, 0.99043123, 0.44154435],
     314                             [- 3.87091631, - 0.00619194, 0.00335026, 4.86472437, 0.97816426, 0.99045780, 0.44149127],
     315                             [- 3.87562229, - 0.00617637, 0.00333950, 4.86944592, 0.97821584, 0.99048413, 0.44144009],
     316                             [- 3.88032729, - 0.00616094, 0.00332885, 4.87416635, 0.97826708, 0.99051022, 0.44139078],
     317                             [- 3.88503124, - 0.00614564, 0.00331830, 4.87888561, 0.97831798, 0.99053607, 0.44134332],
     318                             [- 3.88973410, - 0.00613047, 0.00330785, 4.88360363, 0.97836855, 0.99056168, 0.44129769],
     319                             [- 3.89443580, - 0.00611543, 0.00329750, 4.88832037, 0.97841879, 0.99058707, 0.44125387],
     320                             [- 3.89913629, - 0.00610051, 0.00328726, 4.89303577, 0.97846870, 0.99061223, 0.44121185],
     321                             [- 3.90383552, - 0.00608573, 0.00327711, 4.89774979, 0.97851829, 0.99063716, 0.44117159],
     322                             [- 3.90853343, - 0.00607107, 0.00326707, 4.90246236, 0.97856756, 0.99066187, 0.44113309],
     323                             [- 3.91322998, - 0.00605653, 0.00325712, 4.90717345, 0.97861652, 0.99068635, 0.44109632],
     324                             [- 3.91792511, - 0.00604212, 0.00324726, 4.91188299, 0.97866516, 0.99071062, 0.44106126],
     325                             [- 3.92261876, - 0.00602782, 0.00323750, 4.91659094, 0.97871350, 0.99073468, 0.44102790],
     326                             [- 3.92731089, - 0.00601364, 0.00322784, 4.92129724, 0.97876153, 0.99075852, 0.44099621],
     327                             [- 3.93200144, - 0.00599958, 0.00321826, 4.92600186, 0.97880926, 0.99078215, 0.44096618],
     328                             [- 3.93669036, - 0.00598564, 0.00320878, 4.93070472, 0.97885669, 0.99080558, 0.44093779],
     329                             [- 3.94137761, - 0.00597181, 0.00319939, 4.93540580, 0.97890383, 0.99082880, 0.44091101],
     330                             [- 3.94606313, - 0.00595809, 0.00319009, 4.94010504, 0.97895067, 0.99085182, 0.44088584],
     331                             [- 3.95074687, - 0.00594449, 0.00318088, 4.94480238, 0.97899722, 0.99087463, 0.44086225],
     332                             [- 3.95542878, - 0.00593099, 0.00317175, 4.94949779, 0.97904349, 0.99089725, 0.44084022],
     333                             [- 3.96010882, - 0.00591761, 0.00316271, 4.95419121, 0.97908947, 0.99091968, 0.44081975],
     334                             [- 3.96478693, - 0.00590433, 0.00315376, 4.95888260, 0.97913517, 0.99094191, 0.44080080],
     335                             [- 3.96946306, - 0.00589116, 0.00314489, 4.96357191, 0.97918060, 0.99096395, 0.44078336],
     336                             [- 3.97413718, - 0.00587809, 0.00313611, 4.96825909, 0.97922575, 0.99098581, 0.44076742],
     337                             [- 3.97880922, - 0.00586512, 0.00312740, 4.97294410, 0.97927063, 0.99100747, 0.44075296],
     338                             [- 3.98347915, - 0.00585226, 0.00311878, 4.97762689, 0.97931524, 0.99102895, 0.44073996],
     339                             [- 3.98814692, - 0.00583950, 0.00311024, 4.98230742, 0.97935959, 0.99105026, 0.44072841],
     340                             [- 3.99281247, - 0.00582684, 0.00310178, 4.98698564, 0.97940367, 0.99107138, 0.44071828],
     341                             [- 3.99747577, - 0.00581428, 0.00309340, 4.99166150, 0.97944749, 0.99109232, 0.44070956],
     342                             [- 4.00213677, - 0.00580181, 0.00308510, 4.99633496, 0.97949105, 0.99111309, 0.44070224],
     343                             [- 4.00679542, - 0.00578944, 0.00307688, 5.00100598, 0.97953436, 0.99113368, 0.44069630],
     344                             [- 4.01145168, - 0.00577717, 0.00306873, 5.00567451, 0.97957741, 0.99115410, 0.44069173],
     345                             [- 4.01610551, - 0.00576499, 0.00306065, 5.01034052, 0.97962021, 0.99117436, 0.44068850],
     346                             [- 4.02075685, - 0.00575290, 0.00305266, 5.01500395, 0.97966277, 0.99119444, 0.44068660],
     347                             [- 4.02540567, - 0.00574091, 0.00304473, 5.01966476, 0.97970508, 0.99121436, 0.44068602],
     348                             [- 4.03005191, - 0.00572900, 0.00303688, 5.02432291, 0.97974715, 0.99123412, 0.44068674],
     349                             [- 4.03469555, - 0.00571719, 0.00302910, 5.02897837, 0.97978897, 0.99125371, 0.44068875],
     350                             [- 4.03933654, - 0.00570546, 0.00302139, 5.03363108, 0.97983056, 0.99127315, 0.44069203],
     351                             [- 4.04397482, - 0.00569382, 0.00301375, 5.03828100, 0.97987192, 0.99129242, 0.44069657],
     352                             [- 4.04861037, - 0.00568227, 0.00300619, 5.04292810, 0.97991304, 0.99131154, 0.44070234],
     353                             [- 4.05324314, - 0.00567080, 0.00299869, 5.04757234, 0.97995393, 0.99133051, 0.44070935],
     354                             [- 4.05787308, - 0.00565942, 0.00299126, 5.05221367, 0.97999459, 0.99134932, 0.44071756],
     355                             [- 4.06250017, - 0.00564812, 0.00298390, 5.05685205, 0.98003502, 0.99136799, 0.44072698],
     356                             [- 4.06712435, - 0.00563690, 0.00297660, 5.06148744, 0.98007523, 0.99138650, 0.44073757],
     357                             [- 4.07174558, - 0.00562577, 0.00296937, 5.06611981, 0.98011522, 0.99140486, 0.44074934],
     358                             [- 4.07636383, - 0.00561471, 0.00296221, 5.07074912, 0.98015498, 0.99142308, 0.44076227],
     359                             [- 4.08097906, - 0.00560374, 0.00295511, 5.07537532, 0.98019453, 0.99144116, 0.44077633],
     360                             [- 4.08559122, - 0.00559284, 0.00294807, 5.07999838, 0.98023386, 0.99145909, 0.44079153],
     361                             [- 4.09020028, - 0.00558202, 0.00294110, 5.08461826, 0.98027298, 0.99147688, 0.44080784],
     362                             [- 4.09480620, - 0.00557128, 0.00293419, 5.08923492, 0.98031189, 0.99149453, 0.44082525],
     363                             [- 4.09940894, - 0.00556061, 0.00292734, 5.09384833, 0.98035059, 0.99151204, 0.44084375],
     364                             [- 4.10400846, - 0.00555002, 0.00292056, 5.09845844, 0.98038908, 0.99152942, 0.44086333],
     365                             [- 4.10860473, - 0.00553950, 0.00291383, 5.10306522, 0.98042736, 0.99154666, 0.44088396],
     366                             [- 4.11319770, - 0.00552906, 0.00290717, 5.10766864, 0.98046544, 0.99156377, 0.44090565],
     367                             [- 4.11778734, - 0.00551869, 0.00290056, 5.11226865, 0.98050332, 0.99158075, 0.44092838],
     368                             [- 4.12237362, - 0.00550839, 0.00289401, 5.11686523, 0.98054100, 0.99159760, 0.44095213],
     369                             [- 4.12695649, - 0.00549816, 0.00288752, 5.12145833, 0.98057848, 0.99161431, 0.44097689],
     370                             [- 4.13153592, - 0.00548801, 0.00288109, 5.12604792, 0.98061577, 0.99163090, 0.44100265],
     371                             [- 4.13611188, - 0.00547792, 0.00287471, 5.13063396, 0.98065286, 0.99164737, 0.44102940],
     372                             [- 4.14068433, - 0.00546790, 0.00286839, 5.13521643, 0.98068975, 0.99166371, 0.44105712],
     373                             [- 4.14525323, - 0.00545795, 0.00286213, 5.13979528, 0.98072646, 0.99167992, 0.44108581],
     374                             [- 4.14981854, - 0.00544806, 0.00285592, 5.14437048, 0.98076298, 0.99169602, 0.44111544],
     375                             [- 4.15438025, - 0.00543824, 0.00284976, 5.14894200, 0.98079931, 0.99171199, 0.44114602],
     376                             [- 4.15893830, - 0.00542849, 0.00284366, 5.15350981, 0.98083545, 0.99172785, 0.44117753],
     377                             [- 4.16349267, - 0.00541880, 0.00283761, 5.15807386, 0.98087141, 0.99174358, 0.44120995],
     378                             [- 4.16804332, - 0.00540918, 0.00283162, 5.16263414, 0.98090719, 0.99175920, 0.44124328],
     379                             [- 4.17259021, - 0.00539962, 0.00282567, 5.16719060, 0.98094278, 0.99177471, 0.44127750],
     380                             [- 4.17713333, - 0.00539012, 0.00281978, 5.17174321, 0.98097820, 0.99179010, 0.44131260],
     381                             [- 4.18167262, - 0.00538069, 0.00281394, 5.17629194, 0.98101344, 0.99180537, 0.44134857],
     382                             [- 4.18620807, - 0.00537131, 0.00280815, 5.18083676, 0.98104851, 0.99182054, 0.44138541],
     383                             [- 4.19073963, - 0.00536200, 0.00280241, 5.18537763, 0.98108340, 0.99183560, 0.44142309],
     384                             [- 4.19526728, - 0.00535274, 0.00279671, 5.18991453, 0.98111811, 0.99185054, 0.44146162],
     385                             [- 4.19979098, - 0.00534355, 0.00279107, 5.19444743, 0.98115266, 0.99186538, 0.44150097],
     386                             [- 4.20431070, - 0.00533441, 0.00278548, 5.19897629, 0.98118704, 0.99188011, 0.44154114],
     387                             [- 4.20882641, - 0.00532534, 0.00277993, 5.20350108, 0.98122125, 0.99189474, 0.44158211],
     388                             [- 4.21333809, - 0.00531632, 0.00277443, 5.20802177, 0.98125529, 0.99190926, 0.44162389],
     389                             [- 4.21784569, - 0.00530735, 0.00276897, 5.21253834, 0.98128916, 0.99192367, 0.44166645],
     390                             [- 4.22234919, - 0.00529845, 0.00276357, 5.21705075, 0.98132288, 0.99193799, 0.44170979],
     391                             [- 4.22684856, - 0.00528959, 0.00275820, 5.22155897, 0.98135643, 0.99195220, 0.44175389],
     392                             [- 4.23134377, - 0.00528080, 0.00275289, 5.22606297, 0.98138982, 0.99196631, 0.44179875],
     393                             [- 4.23583479, - 0.00527206, 0.00274762, 5.23056273, 0.98142305, 0.99198033, 0.44184436],
     394                             [- 4.24032159, - 0.00526337, 0.00274239, 5.23505822, 0.98145612, 0.99199424, 0.44189070],
     395                             [- 4.24480413, - 0.00525473, 0.00273720, 5.23954940, 0.98148904, 0.99200806, 0.44193777],
     396                             [- 4.24928241, - 0.00524615, 0.00273206, 5.24403626, 0.98152180, 0.99202179, 0.44198557],
     397                             [- 4.25375637, - 0.00523762, 0.00272697, 5.24851875, 0.98155440, 0.99203541, 0.44203406],
     398                             [- 4.25822600, - 0.00522914, 0.00272191, 5.25299686, 0.98158685, 0.99204895, 0.44208326],
     399                             [- 4.26269127, - 0.00522071, 0.00271690, 5.25747055, 0.98161916, 0.99206239, 0.44213315],
     400                             [- 4.26715214, - 0.00521233, 0.00271193, 5.26193981, 0.98165131, 0.99207574, 0.44218372],
     401                             [- 4.27160860, - 0.00520401, 0.00270700, 5.26640459, 0.98168331, 0.99208900, 0.44223496],
     402                             [- 4.27606061, - 0.00519573, 0.00270211, 5.27086489, 0.98171516, 0.99210217, 0.44228686],
     403                             [- 4.28050816, - 0.00518750, 0.00269726, 5.27532066, 0.98174687, 0.99211524, 0.44233942],
     404                             [- 4.28495120, - 0.00517932, 0.00269245, 5.27977188, 0.98177844, 0.99212824, 0.44239262],
     405                             [- 4.28938971, - 0.00517119, 0.00268767, 5.28421853, 0.98180986, 0.99214114, 0.44244646],
     406                             [- 4.29382368, - 0.00516310, 0.00268294, 5.28866058, 0.98184113, 0.99215396, 0.44250093],
     407                             [- 4.29825306, - 0.00515506, 0.00267825, 5.29309800, 0.98187227, 0.99216669, 0.44255601],
     408                             [- 4.30267785, - 0.00514707, 0.00267359, 5.29753078, 0.98190326, 0.99217934, 0.44261171],
     409                             [- 4.30709800, - 0.00513912, 0.00266898, 5.30195888, 0.98193412, 0.99219190, 0.44266801],
     410                             [- 4.31151350, - 0.00513122, 0.00266440, 5.30638227, 0.98196483, 0.99220438, 0.44272490],
     411                             [- 4.31592431, - 0.00512337, 0.00265985, 5.31080095, 0.98199542, 0.99221678, 0.44278238],
     412                             [- 4.32033043, - 0.00511555, 0.00265535, 5.31521487, 0.98202586, 0.99222910, 0.44284044],
     413                             [- 4.32473181, - 0.00510779, 0.00265088, 5.31962403, 0.98205617, 0.99224134, 0.44289907],
     414                             [- 4.32912844, - 0.00510006, 0.00264644, 5.32402838, 0.98208635, 0.99225350, 0.44295825],
     415                             [- 4.33352030, - 0.00509238, 0.00264204, 5.32842792, 0.98211639, 0.99226558, 0.44301800],
     416                             [- 4.33790735, - 0.00508474, 0.00263768, 5.33282261, 0.98214630, 0.99227758, 0.44307829],
     417                             [- 4.34228957, - 0.00507715, 0.00263335, 5.33721243, 0.98217609, 0.99228950, 0.44313911],
     418                             [- 4.34666695, - 0.00506959, 0.00262906, 5.34159736, 0.98220574, 0.99230135, 0.44320047],
     419                             [- 4.35103946, - 0.00506208, 0.00262479, 5.34597738, 0.98223526, 0.99231313, 0.44326235],
     420                             [- 4.35540706, - 0.00505461, 0.00262057, 5.35035246, 0.98226466, 0.99232483, 0.44332475],
     421                             [- 4.35976976, - 0.00504718, 0.00261637, 5.35472258, 0.98229393, 0.99233645, 0.44338766],
     422                             [- 4.36412751, - 0.00503978, 0.00261221, 5.35908772, 0.98232308, 0.99234800, 0.44345107],
     423                             [- 4.36848029, - 0.00503243, 0.00260808, 5.36344786, 0.98235210, 0.99235949, 0.44351497],
     424                             [- 4.37282810, - 0.00502512, 0.00260399, 5.36780298, 0.98238100, 0.99237089, 0.44357936],
     425                             [- 4.37717089, - 0.00501785, 0.00259992, 5.37215304, 0.98240977, 0.99238223, 0.44364422],
     426                             [- 4.38150866, - 0.00501061, 0.00259589, 5.37649804, 0.98243843, 0.99239350, 0.44370956],
     427                             [- 4.38584137, - 0.00500341, 0.00259189, 5.38083796, 0.98246696, 0.99240470, 0.44377537],
     428                             [- 4.39016901, - 0.00499626, 0.00258792, 5.38517276, 0.98249538, 0.99241583, 0.44384163],
     429                             [- 4.39449156, - 0.00498913, 0.00258397, 5.38950243, 0.98252368, 0.99242689, 0.44390835],
     430                             [- 4.39880900, - 0.00498205, 0.00258006, 5.39382695, 0.98255186, 0.99243789, 0.44397551],
     431                             [- 4.40312130, - 0.00497500, 0.00257618, 5.39814630, 0.98257992, 0.99244881, 0.44404311],
     432                             [- 4.40742845, - 0.00496799, 0.00257233, 5.40246046, 0.98260787, 0.99245968, 0.44411114],
     433                             [- 4.41173042, - 0.00496101, 0.00256851, 5.40676940, 0.98263570, 0.99247047, 0.44417960],
     434                             [- 4.41602719, - 0.00495407, 0.00256472, 5.41107312, 0.98266342, 0.99248121, 0.44424847],
     435                             [- 4.42031875, - 0.00494717, 0.00256096, 5.41537158, 0.98269102, 0.99249187, 0.44431776],
     436                             [- 4.42460508, - 0.00494030, 0.00255722, 5.41966478, 0.98271852, 0.99250248, 0.44438745],
     437                             [- 4.42888615, - 0.00493346, 0.00255351, 5.42395268, 0.98274590, 0.99251302, 0.44445755],
     438                             [- 4.43316194, - 0.00492666, 0.00254984, 5.42823528, 0.98277317, 0.99252350, 0.44452803],
     439                             [- 4.43743244, - 0.00491989, 0.00254618, 5.43251255, 0.98280033, 0.99253392, 0.44459891],
     440                             [- 4.44169763, - 0.00491316, 0.00254256, 5.43678447, 0.98282738, 0.99254428, 0.44467016],
     441                             [- 4.44595749, - 0.00490646, 0.00253896, 5.44105103, 0.98285433, 0.99255458, 0.44474179],
     442                             [- 4.45021200, - 0.00489979, 0.00253539, 5.44531221, 0.98288117, 0.99256482, 0.44481379],
     443                             [- 4.45446115, - 0.00489316, 0.00253185, 5.44956799, 0.98290790, 0.99257500, 0.44488616],
     444                             [- 4.45870490, - 0.00488655, 0.00252833, 5.45381835, 0.98293452, 0.99258512, 0.44495888],
     445                             [- 4.46294326, - 0.00487998, 0.00252484, 5.45806327, 0.98296105, 0.99259518, 0.44503195],
     446                             [- 4.46717619, - 0.00487344, 0.00252137, 5.46230275, 0.98298746, 0.99260519, 0.44510537],
     447                             [- 4.47140368, - 0.00486693, 0.00251793, 5.46653675, 0.98301378, 0.99261514, 0.44517912],
     448                             [- 4.47562571, - 0.00486046, 0.00251451, 5.47076526, 0.98303999, 0.99262503, 0.44525322],
     449                             [- 4.47984227, - 0.00485401, 0.00251112, 5.47498827, 0.98306610, 0.99263487, 0.44532764],
     450                             [- 4.48405334, - 0.00484759, 0.00250775, 5.47920575, 0.98309211, 0.99264465, 0.44540238],
     451                             [- 4.48825891, - 0.00484121, 0.00250441, 5.48341770, 0.98311802, 0.99265438, 0.44547744],
     452                             [- 4.49245894, - 0.00483485, 0.00250109, 5.48762409, 0.98314383, 0.99266406, 0.44555282],
     453                             [- 4.49665344, - 0.00482852, 0.00249780, 5.49182492, 0.98316954, 0.99267368, 0.44562850],
     454                             [- 4.50084238, - 0.00482223, 0.00249453, 5.49602015, 0.98319515, 0.99268325, 0.44570449],
     455                             [- 4.50502575, - 0.00481596, 0.00249128, 5.50020979, 0.98322067, 0.99269277, 0.44578077],
     456                             [- 4.50920352, - 0.00480972, 0.00248805, 5.50439380, 0.98324609, 0.99270223, 0.44585734],
     457                             [- 4.51337569, - 0.00480350, 0.00248485, 5.50857219, 0.98327141, 0.99271164, 0.44593420],
     458                             [- 4.51754224, - 0.00479732, 0.00248167, 5.51274492, 0.98329664, 0.99272101, 0.44601134],
     459                             [- 4.52170315, - 0.00479117, 0.00247851, 5.51691199, 0.98332177, 0.99273032, 0.44608876],
     460                             [- 4.52585842, - 0.00478504, 0.00247538, 5.52107338, 0.98334681, 0.99273958, 0.44616645],
     461                             [- 4.53000801, - 0.00477894, 0.00247227, 5.52522907, 0.98337176, 0.99274880, 0.44624440],
     462                             [- 4.53415192, - 0.00477286, 0.00246917, 5.52937906, 0.98339661, 0.99275796, 0.44632262],
     463                             [- 4.53829014, - 0.00476682, 0.00246610, 5.53352332, 0.98342137, 0.99276708, 0.44640109],
     464                             [- 4.54242264, - 0.00476080, 0.00246306, 5.53766184, 0.98344605, 0.99277615, 0.44647982],
     465                             [- 4.54654942, - 0.00475480, 0.00246003, 5.54179461, 0.98347063, 0.99278517, 0.44655879],
     466                             [- 4.55067046, - 0.00474884, 0.00245702, 5.54592162, 0.98349512, 0.99279414, 0.44663801],
     467                             [- 4.55478574, - 0.00474290, 0.00245404, 5.55004285, 0.98351952, 0.99280307, 0.44671746],
     468                             [- 4.55889526, - 0.00473698, 0.00245107, 5.55415828, 0.98354383, 0.99281195, 0.44679715],
     469                             [- 4.56299899, - 0.00473109, 0.00244812, 5.55826790, 0.98356806, 0.99282079, 0.44687706],
     470                             [- 4.56709693, - 0.00472522, 0.00244520, 5.56237170, 0.98359219, 0.99282958, 0.44695720],
     471                             [- 4.57118906, - 0.00471938, 0.00244229, 5.56646967, 0.98361625, 0.99283832, 0.44703756],
     472                             [- 4.57527536, - 0.00471357, 0.00243940, 5.57056179, 0.98364021, 0.99284703, 0.44711814],
     473                             [- 4.57935583, - 0.00470778, 0.00243654, 5.57464806, 0.98366409, 0.99285569, 0.44719893],
     474                             [- 4.58343045, - 0.00470201, 0.00243369, 5.57872844, 0.98368788, 0.99286430, 0.44727992],
     475                             [- 4.58749921, - 0.00469627, 0.00243086, 5.58280295, 0.98371159, 0.99287287, 0.44736112],
     476                             [- 4.59156210, - 0.00469055, 0.00242805, 5.58687155, 0.98373522, 0.99288140, 0.44744252],
     477                             [- 4.59561910, - 0.00468485, 0.00242526, 5.59093424, 0.98375876, 0.99288989, 0.44752411],
     478                             [- 4.59967020, - 0.00467918, 0.00242248, 5.59499102, 0.98378222, 0.99289833, 0.44760589],
     479                             [- 4.60371538, - 0.00467353, 0.00241973, 5.59904185, 0.98380560, 0.99290674, 0.44768785],
     480                             [- 4.60775465, - 0.00466791, 0.00241699, 5.60308674, 0.98382890, 0.99291510, 0.44777000],
     481                             [- 4.61178797, - 0.00466230, 0.00241427, 5.60712567, 0.98385211, 0.99292343, 0.44785233],
     482                             [- 4.61581536, - 0.00465672, 0.00241157, 5.61115863, 0.98387525, 0.99293171, 0.44793483],
     483                             [- 4.61983678, - 0.00465116, 0.00240889, 5.61518561, 0.98389830, 0.99293995, 0.44801750],
     484                             [- 4.62385223, - 0.00464563, 0.00240622, 5.61920660, 0.98392128, 0.99294815, 0.44810034],
     485                             [- 4.62786170, - 0.00464011, 0.00240357, 5.62322158, 0.98394418, 0.99295632, 0.44818334],
     486                             [- 4.63186517, - 0.00463462, 0.00240093, 5.62723055, 0.98396700, 0.99296444, 0.44826650],
     487                             [- 4.63586264, - 0.00462915, 0.00239832, 5.63123349, 0.98398974, 0.99297253, 0.44834982],
     488                             [- 4.63985410, - 0.00462370, 0.00239572, 5.63523040, 0.98401240, 0.99298058, 0.44843328],
     489                             [- 4.64383953, - 0.00461827, 0.00239313, 5.63922126, 0.98403499, 0.99298859, 0.44851690],
     490                             [- 4.64781892, - 0.00461286, 0.00239057, 5.64320606, 0.98405750, 0.99299657, 0.44860066],
     491                             [- 4.65179227, - 0.00460748, 0.00238802, 5.64718479, 0.98407993, 0.99300451, 0.44868455],
     492                             [- 4.65575956, - 0.00460211, 0.00238548, 5.65115744, 0.98410229, 0.99301241, 0.44876859],
     493                             [- 4.65972078, - 0.00459677, 0.00238296, 5.65512401, 0.98412458, 0.99302027, 0.44885276],
     494                             [- 4.66367592, - 0.00459144, 0.00238046, 5.65908448, 0.98414679, 0.99302810, 0.44893706],
     495                             [- 4.66762497, - 0.00458614, 0.00237797, 5.66303884, 0.98416893, 0.99303590, 0.44902148],
     496                             [- 4.67156793, - 0.00458085, 0.00237549, 5.66698708, 0.98419099, 0.99304366, 0.44910603],
     497                             [- 4.67550478, - 0.00457558, 0.00237303, 5.67092920, 0.98421298, 0.99305138, 0.44919070],
     498                             [- 4.67943552, - 0.00457034, 0.00237059, 5.67486518, 0.98423490, 0.99305907, 0.44927549],
     499                             [- 4.68336012, - 0.00456511, 0.00236816, 5.67879501, 0.98425675, 0.99306673, 0.44936038],
     500                             [- 4.68727860, - 0.00455990, 0.00236575, 5.68271869, 0.98427852, 0.99307435, 0.44944539],
     501                             [- 4.69119092, - 0.00455472, 0.00236335, 5.68663621, 0.98430023, 0.99308194, 0.44953051],
     502                             [- 4.69509710, - 0.00454955, 0.00236096, 5.69054755, 0.98432186, 0.99308949, 0.44961572],
     503                             [- 4.69899711, - 0.00454440, 0.00235859, 5.69445271, 0.98434343, 0.99309701, 0.44970104],
     504                             [- 4.70289095, - 0.00453926, 0.00235623, 5.69835168, 0.98436492, 0.99310450, 0.44978646],
     505                             [- 4.70677861, - 0.00453415, 0.00235389, 5.70224446, 0.98438635, 0.99311196, 0.44987197],
     506                             [- 4.71066008, - 0.00452905, 0.00235156, 5.70613103, 0.98440771, 0.99311939, 0.44995757],
     507                             [- 4.71453535, - 0.00452398, 0.00234924, 5.71001138, 0.98442899, 0.99312678, 0.45004326],
     508                             [- 4.71840442, - 0.00451892, 0.00234694, 5.71388551, 0.98445021, 0.99313414, 0.45012903],
     509                             [- 4.72226728, - 0.00451387, 0.00234465, 5.71775341, 0.98447137, 0.99314147, 0.45021488],
     510                             [- 4.72612392, - 0.00450885, 0.00234237, 5.72161507, 0.98449245, 0.99314877, 0.45030082],
     511                             [- 4.72997433, - 0.00450384, 0.00234011, 5.72547048, 0.98451347, 0.99315604, 0.45038683],
     512                             [- 4.73381850, - 0.00449885, 0.00233786, 5.72931964, 0.98453443, 0.99316328, 0.45047291],
     513                             [- 4.73765643, - 0.00449388, 0.00233562, 5.73316254, 0.98455532, 0.99317049, 0.45055907],
     514                             [- 4.74148810, - 0.00448893, 0.00233340, 5.73699917, 0.98457614, 0.99317767, 0.45064529],
     515                             [- 4.74531352, - 0.00448399, 0.00233119, 5.74082953, 0.98459690, 0.99318483, 0.45073158],
     516                             [- 4.74913267, - 0.00447907, 0.00232899, 5.74465360, 0.98461759, 0.99319195, 0.45081792],
     517                             [- 4.75294555, - 0.00447416, 0.00232680, 5.74847138, 0.98463822, 0.99319904, 0.45090433],
     518                             [- 4.75675214, - 0.00446927, 0.00232462, 5.75228287, 0.98465878, 0.99320610, 0.45099080],
     519                             [- 4.76055246, - 0.00446440, 0.00232246, 5.75608805, 0.98467929, 0.99321314, 0.45107732],
     520                             [- 4.76434647, - 0.00445955, 0.00232031, 5.75988693, 0.98469973, 0.99322015, 0.45116389],
     521                             [- 4.76813419, - 0.00445471, 0.00231816, 5.76367948, 0.98472010, 0.99322713, 0.45125051],
     522                             [- 4.77191560, - 0.00444988, 0.00231604, 5.76746572, 0.98474042, 0.99323408, 0.45133717],
     523                             [- 4.77569070, - 0.00444507, 0.00231392, 5.77124562, 0.98476067, 0.99324101, 0.45142388],
     524                             [- 4.77945947, - 0.00444028, 0.00231181, 5.77501919, 0.98478086, 0.99324791, 0.45151063],
     525                             [- 4.78322192, - 0.00443550, 0.00230972, 5.77878642, 0.98480099, 0.99325478, 0.45159742],
     526                             [- 4.78697804, - 0.00443074, 0.00230763, 5.78254730, 0.98482106, 0.99326162, 0.45168425],
     527                             [- 4.79072783, - 0.00442600, 0.00230556, 5.78630183, 0.98484107, 0.99326844, 0.45177111],
     528                             [- 4.79447127, - 0.00442127, 0.00230350, 5.79005000, 0.98486102, 0.99327523, 0.45185800],
     529                             [- 4.79820836, - 0.00441655, 0.00230145, 5.79379181, 0.98488091, 0.99328200, 0.45194492],
     530                             [- 4.80193909, - 0.00441185, 0.00229941, 5.79752724, 0.98490074, 0.99328874, 0.45203187],
     531                             [- 4.80566347, - 0.00440716, 0.00229738, 5.80125630, 0.98492051, 0.99329546, 0.45211884],
     532                             [- 4.80938148, - 0.00440249, 0.00229536, 5.80497899, 0.98494022, 0.99330215, 0.45220583],
     533                             [- 4.81309312, - 0.00439783, 0.00229335, 5.80869528, 0.98495988, 0.99330881, 0.45229285],
     534                             [- 4.81679838, - 0.00439319, 0.00229135, 5.81240519, 0.98497947, 0.99331546, 0.45237988],
     535                             [- 4.82049726, - 0.00438856, 0.00228937, 5.81610870, 0.98499901, 0.99332207, 0.45246692],
     536                             [- 4.82418976, - 0.00438395, 0.00228739, 5.81980581, 0.98501850, 0.99332866, 0.45255398],
     537                             [- 4.82787587, - 0.00437935, 0.00228542, 5.82349652, 0.98503792, 0.99333523, 0.45264105],
     538                             [- 4.83155558, - 0.00437476, 0.00228346, 5.82718082, 0.98505729, 0.99334178, 0.45272813],
     539                             [- 4.83522889, - 0.00437019, 0.00228151, 5.83085870, 0.98507660, 0.99334830, 0.45281521],
     540                             [- 4.83889580, - 0.00436563, 0.00227957, 5.83453017, 0.98509586, 0.99335480, 0.45290231],
     541                             [- 4.84255630, - 0.00436109, 0.00227764, 5.83819521, 0.98511506, 0.99336127, 0.45298940],
     542                             [- 4.84621038, - 0.00435656, 0.00227572, 5.84185383, 0.98513421, 0.99336772, 0.45307649],
     543                             [- 4.84985805, - 0.00435204, 0.00227381, 5.84550601, 0.98515330, 0.99337415, 0.45316358],
     544                             [- 4.85349930, - 0.00434753, 0.00227191, 5.84915177, 0.98517233, 0.99338056, 0.45325067],
     545                             [- 4.85713412, - 0.00434304, 0.00227002, 5.85279108, 0.98519132, 0.99338694, 0.45333775],
     546                             [- 4.86076252, - 0.00433856, 0.00226813, 5.85642396, 0.98521024, 0.99339330, 0.45342482],
     547                             [- 4.86438448, - 0.00433410, 0.00226626, 5.86005038, 0.98522912, 0.99339964, 0.45351189],
     548                             [- 4.86800001, - 0.00432965, 0.00226439, 5.86367036, 0.98524794, 0.99340596, 0.45359894],
     549                             [- 4.87160909, - 0.00432521, 0.00226253, 5.86728389, 0.98526671, 0.99341226, 0.45368598],
     550                             [- 4.87521174, - 0.00432078, 0.00226069, 5.87089096, 0.98528542, 0.99341853, 0.45377301],
     551                             [- 4.87880793, - 0.00431637, 0.00225885, 5.87449157, 0.98530409, 0.99342479, 0.45386001],
     552                             [- 4.88239768, - 0.00431196, 0.00225701, 5.87808572, 0.98532270, 0.99343102, 0.45394700],
     553                             [- 4.88598098, - 0.00430758, 0.00225519, 5.88167340, 0.98534126, 0.99343723, 0.45403397],
     554                             [- 4.88955781, - 0.00430320, 0.00225338, 5.88525462, 0.98535976, 0.99344342, 0.45412092],
     555                             [- 4.89312819, - 0.00429883, 0.00225157, 5.88882936, 0.98537822, 0.99344960, 0.45420784],
     556                             [- 4.89669211, - 0.00429448, 0.00224977, 5.89239763, 0.98539662, 0.99345575, 0.45429473],
     557                             [- 4.90024957, - 0.00429014, 0.00224798, 5.89595942, 0.98541498, 0.99346188, 0.45438160],
     558                             [- 4.90380055, - 0.00428581, 0.00224620, 5.89951474, 0.98543328, 0.99346799, 0.45446844],
     559                             [- 4.90734507, - 0.00428150, 0.00224442, 5.90306357, 0.98545154, 0.99347408, 0.45455524],
     560                             [- 4.91088312, - 0.00427719, 0.00224266, 5.90660592, 0.98546974, 0.99348015, 0.45464201],
     561                             [- 4.91441469, - 0.00427290, 0.00224090, 5.91014179, 0.98548790, 0.99348620, 0.45472875],
     562                             [- 4.91793978, - 0.00426862, 0.00223915, 5.91367116, 0.98550600, 0.99349224, 0.45481546],
     563                             [- 4.92145840, - 0.00426435, 0.00223740, 5.91719405, 0.98552406, 0.99349825, 0.45490212],
     564                             [- 4.92497053, - 0.00426009, 0.00223566, 5.92071044, 0.98554206, 0.99350425, 0.45498875],
     565                             [- 4.92847618, - 0.00425584, 0.00223394, 5.92422034, 0.98556002, 0.99351022, 0.45507533],
     566                             [- 4.93197535, - 0.00425160, 0.00223221, 5.92772375, 0.98557793, 0.99351618, 0.45516187],
     567                             [- 4.93546803, - 0.00424738, 0.00223050, 5.93122065, 0.98559579, 0.99352212, 0.45524837],
     568                             [- 4.93895423, - 0.00424317, 0.00222879, 5.93471106, 0.98561361, 0.99352804, 0.45533482],
     569                             [- 4.94243393, - 0.00423896, 0.00222709, 5.93819497, 0.98563138, 0.99353395, 0.45542123],
     570                             [- 4.94590714, - 0.00423477, 0.00222540, 5.94167237, 0.98564910, 0.99353983, 0.45550758],
     571                             [- 4.94937386, - 0.00423059, 0.00222371, 5.94514327, 0.98566677, 0.99354570, 0.45559389],
     572                             [- 4.95283409, - 0.00422642, 0.00222203, 5.94860767, 0.98568439, 0.99355155, 0.45568014],
     573                             [- 4.95628782, - 0.00422226, 0.00222036, 5.95206556, 0.98570197, 0.99355738, 0.45576634],
     574                             [- 4.95973505, - 0.00421811, 0.00221869, 5.95551694, 0.98571951, 0.99356320, 0.45585249],
     575                             [- 4.96317579, - 0.00421397, 0.00221703, 5.95896181, 0.98573699, 0.99356900, 0.45593858],
     576                             [- 4.96661002, - 0.00420984, 0.00221538, 5.96240018, 0.98575444, 0.99357478, 0.45602462],
     577                             [- 4.97003776, - 0.00420573, 0.00221373, 5.96583204, 0.98577183, 0.99358054, 0.45611059],
     578                             [- 4.97345900, - 0.00420162, 0.00221209, 5.96925738, 0.98578918, 0.99358629, 0.45619651],
     579                             [- 4.97687374, - 0.00419752, 0.00221046, 5.97267622, 0.98580649, 0.99359202, 0.45628236],
     580                             [- 4.98028197, - 0.00419344, 0.00220883, 5.97608854, 0.98582375, 0.99359774, 0.45636816],
     581                             [- 4.98368371, - 0.00418936, 0.00220721, 5.97949435, 0.98584096, 0.99360343, 0.45645388],
     582                             [- 4.98707894, - 0.00418529, 0.00220559, 5.98289365, 0.98585814, 0.99360912, 0.45653955],
     583                             [- 4.99046767, - 0.00418123, 0.00220398, 5.98628643, 0.98587526, 0.99361478, 0.45662514],
     584                             [- 4.99384989, - 0.00417719, 0.00220238, 5.98967270, 0.98589235, 0.99362043, 0.45671067],
     585                             [- 4.99722561, - 0.00417315, 0.00220078, 5.99305246, 0.98590939, 0.99362607, 0.45679613],
     586                             [- 5.00059483, - 0.00416912, 0.00219919, 5.99642571, 0.98592638, 0.99363169, 0.45688152],
     587                             [- 5.00395754, - 0.00416511, 0.00219761, 5.99979244, 0.98594334, 0.99363729, 0.45696684],
     588                             [- 5.00731375, - 0.00416110, 0.00219603, 6.00315266, 0.98596025, 0.99364288, 0.45705209],
     589                             [- 5.01066346, - 0.00415710, 0.00219445, 6.00650636, 0.98597712, 0.99364845, 0.45713726],
     590                             [- 5.01400667, - 0.00415311, 0.00219288, 6.00985356, 0.98599394, 0.99365401, 0.45722236],
     591                             [- 5.01734337, - 0.00414913, 0.00219132, 6.01319424, 0.98601072, 0.99365955, 0.45730738],
     592                             [- 5.02067356, - 0.00414516, 0.00218976, 6.01652841, 0.98602746, 0.99366508, 0.45739233],
     593                             [- 5.02399726, - 0.00414120, 0.00218821, 6.01985606, 0.98604416, 0.99367059, 0.45747719],
     594                             [- 5.02731445, - 0.00413724, 0.00218666, 6.02317721, 0.98606082, 0.99367609, 0.45756198],
     595                             [- 5.03062515, - 0.00413330, 0.00218512, 6.02649184, 0.98607744, 0.99368157, 0.45764669],
     596                             [- 5.03392934, - 0.00412937, 0.00218359, 6.02979997, 0.98609401, 0.99368704, 0.45773131],
     597                             [- 5.03722703, - 0.00412544, 0.00218206, 6.03310159, 0.98611054, 0.99369250, 0.45781585],
     598                             [- 5.04051822, - 0.00412153, 0.00218053, 6.03639670, 0.98612704, 0.99369794, 0.45790031],
     599                             [- 5.04380292, - 0.00411762, 0.00217901, 6.03968530, 0.98614349, 0.99370337, 0.45798469],
     600                             [- 5.04708112, - 0.00411372, 0.00217750, 6.04296739, 0.98615990, 0.99370878, 0.45806897],
     601                             [- 5.05035282, - 0.00410983, 0.00217599, 6.04624299, 0.98617627, 0.99371418, 0.45815318],
     602                             [- 5.05361802, - 0.00410595, 0.00217448, 6.04951207, 0.98619260, 0.99371957, 0.45823729],
     603                             [- 5.05687674, - 0.00410208, 0.00217298, 6.05277466, 0.98620889, 0.99372494, 0.45832131],
     604                             [- 5.06012896, - 0.00409821, 0.00217148, 6.05603074, 0.98622514, 0.99373030, 0.45840525],
     605                             [- 5.06337469, - 0.00409436, 0.00216999, 6.05928033, 0.98624135, 0.99373565, 0.45848909],
     606                             [- 5.06661393, - 0.00409051, 0.00216851, 6.06252341, 0.98625753, 0.99374098, 0.45857285],
     607                             [- 5.06984668, - 0.00408668, 0.00216703, 6.06576000, 0.98627366, 0.99374630, 0.45865651],
     608                             [- 5.07307294, - 0.00408285, 0.00216555, 6.06899010, 0.98628975, 0.99375161, 0.45874007],
     609                             [- 5.07629272, - 0.00407902, 0.00216408, 6.07221370, 0.98630581, 0.99375690, 0.45882355],
     610                             [- 5.07950602, - 0.00407521, 0.00216261, 6.07543081, 0.98632182, 0.99376218, 0.45890693],
     611                             [- 5.08271283, - 0.00407141, 0.00216115, 6.07864143, 0.98633780, 0.99376745, 0.45899021],
     612                             [- 5.08591317, - 0.00406761, 0.00215969, 6.08184556, 0.98635374, 0.99377270, 0.45907339],
     613                             [- 5.08910703, - 0.00406382, 0.00215823, 6.08504321, 0.98636965, 0.99377795, 0.45915648],
     614                             [- 5.09229441, - 0.00406004, 0.00215678, 6.08823437, 0.98638551, 0.99378318, 0.45923947],
     615                             [- 5.09547532, - 0.00405627, 0.00215534, 6.09141905, 0.98640134, 0.99378840, 0.45932235],
     616                             [- 5.09864975, - 0.00405250, 0.00215390, 6.09459725, 0.98641713, 0.99379360, 0.45940514],
     617                             [- 5.10181772, - 0.00404874, 0.00215246, 6.09776897, 0.98643288, 0.99379880, 0.45948783],
     618                             [- 5.10497922, - 0.00404500, 0.00215102, 6.10093422, 0.98644859, 0.99380398, 0.45957041],
     619                             [- 5.10813425, - 0.00404125, 0.00214960, 6.10409300, 0.98646427, 0.99380915, 0.45965289],
     620                             [- 5.11128282, - 0.00403752, 0.00214817, 6.10724530, 0.98647991, 0.99381431, 0.45973527],
     621                             [- 5.11442494, - 0.00403379, 0.00214675, 6.11039114, 0.98649552, 0.99381946, 0.45981755],
     622                             [- 5.11756059, - 0.00403008, 0.00214533, 6.11353051, 0.98651108, 0.99382459, 0.45989972],
     623                             [- 5.12068979, - 0.00402637, 0.00214392, 6.11666343, 0.98652662, 0.99382971, 0.45998178],
     624                             [- 5.12381254, - 0.00402266, 0.00214251, 6.11978988, 0.98654211, 0.99383483, 0.46006373],
     625                             [- 5.12692884, - 0.00401897, 0.00214110, 6.12290987, 0.98655757, 0.99383993, 0.46014558],
     626                             [- 5.13003869, - 0.00401528, 0.00213970, 6.12602341, 0.98657300, 0.99384502, 0.46022732],
     627                             [- 5.13314210, - 0.00401160, 0.00213831, 6.12913050, 0.98658838, 0.99385010, 0.46030896],
     628                             [- 5.13623906, - 0.00400792, 0.00213691, 6.13223114, 0.98660374, 0.99385516, 0.46039048],
     629                             [- 5.13932959, - 0.00400426, 0.00213552, 6.13532533, 0.98661906, 0.99386022, 0.46047189],
     630                             [- 5.14241368, - 0.00400060, 0.00213413, 6.13841308, 0.98663434, 0.99386527, 0.46055319],
     631                             [- 5.14549135, - 0.00399695, 0.00213275, 6.14149440, 0.98664959, 0.99387030, 0.46063438],
     632                             [- 5.14856258, - 0.00399330, 0.00213137, 6.14456928, 0.98666480, 0.99387532, 0.46071546],
     633                             [- 5.15162739, - 0.00398967, 0.00213000, 6.14763772, 0.98667998, 0.99388034, 0.46079643],
     634                             [- 5.15468577, - 0.00398604, 0.00212862, 6.15069974, 0.98669512, 0.99388534, 0.46087728],
     635                             [- 5.15773774, - 0.00398241, 0.00212725, 6.15375533, 0.98671023, 0.99389033, 0.46095802],
     636                             [- 5.16078329, - 0.00397880, 0.00212589, 6.15680449, 0.98672531, 0.99389532, 0.46103864],
     637                             [- 5.16382243, - 0.00397519, 0.00212453, 6.15984724, 0.98674035, 0.99390029, 0.46111915],
     638                             [- 5.16685516, - 0.00397159, 0.00212317, 6.16288358, 0.98675535, 0.99390525, 0.46119954],
     639                             [- 5.16988149, - 0.00396799, 0.00212181, 6.16591350, 0.98677033, 0.99391020, 0.46127982],
     640                             [- 5.17290141, - 0.00396440, 0.00212046, 6.16893701, 0.98678527, 0.99391514, 0.46135997],
     641                             [- 5.17591494, - 0.00396082, 0.00211911, 6.17195412, 0.98680017, 0.99392007, 0.46144001],
     642                             [- 5.17892208, - 0.00395724, 0.00211776, 6.17496483, 0.98681505, 0.99392499, 0.46151994],
     643                             [- 5.18192282, - 0.00395368, 0.00211642, 6.17796914, 0.98682989, 0.99392990, 0.46159974],
     644                             [- 5.18491718, - 0.00395011, 0.00211508, 6.18096706, 0.98684470, 0.99393481, 0.46167943],
     645                             [- 5.18790516, - 0.00394656, 0.00211374, 6.18395860, 0.98685947, 0.99393970, 0.46175899],
     646                             [- 5.19088675, - 0.00394301, 0.00211241, 6.18694374, 0.98687421, 0.99394458, 0.46183843],
     647                             [- 5.19386198, - 0.00393947, 0.00211108, 6.18992251, 0.98688892, 0.99394945, 0.46191776],
     648                             [- 5.19683083, - 0.00393593, 0.00210975, 6.19289490, 0.98690360, 0.99395432, 0.46199696],
     649                             [- 5.19979332, - 0.00393241, 0.00210843, 6.19586092, 0.98691824, 0.99395917, 0.46207604],
     650                             [- 5.20274945, - 0.00392888, 0.00210710, 6.19882057, 0.98693285, 0.99396401, 0.46215500],
     651                             [- 5.20569922, - 0.00392537, 0.00210578, 6.20177385, 0.98694743, 0.99396885, 0.46223383],
     652                             [- 5.20864264, - 0.00392186, 0.00210447, 6.20472078, 0.98696198, 0.99397367, 0.46231254],
     653                             [- 5.21157971, - 0.00391835, 0.00210315, 6.20766135, 0.98697650, 0.99397849, 0.46239113],
     654                             [- 5.21451043, - 0.00391486, 0.00210184, 6.21059558, 0.98699098, 0.99398330, 0.46246959],
     655                             [- 5.21743482, - 0.00391137, 0.00210054, 6.21352345, 0.98700544, 0.99398810, 0.46254793],
     656                             [- 5.22035287, - 0.00390788, 0.00209923, 6.21644499, 0.98701986, 0.99399289, 0.46262614],
     657                             [- 5.22326459, - 0.00390440, 0.00209793, 6.21936019, 0.98703425, 0.99399767, 0.46270423],
     658                             [- 5.22616999, - 0.00390093, 0.00209663, 6.22226905, 0.98704861, 0.99400244, 0.46278219],
     659                             [- 5.22906906, - 0.00389747, 0.00209533, 6.22517159, 0.98706294, 0.99400720, 0.46286003],
     660                             [- 5.23196182, - 0.00389401, 0.00209404, 6.22806781, 0.98707724, 0.99401196, 0.46293774],
     661                             [- 5.23484826, - 0.00389055, 0.00209274, 6.23095771, 0.98709151, 0.99401670, 0.46301532],
     662                             [- 5.23772840, - 0.00388711, 0.00209145, 6.23384129, 0.98710574, 0.99402144, 0.46309277],
     663                             [- 5.24060224, - 0.00388366, 0.00209017, 6.23671857, 0.98711995, 0.99402617, 0.46317009],
     664                             [- 5.24346978, - 0.00388023, 0.00208888, 6.23958955, 0.98713413, 0.99403089, 0.46324729],
     665                             [- 5.24633103, - 0.00387680, 0.00208760, 6.24245423, 0.98714827, 0.99403560, 0.46332436],
     666                             [- 5.24918599, - 0.00387338, 0.00208632, 6.24531261, 0.98716239, 0.99404030, 0.46340129],
     667                             [- 5.25203467, - 0.00386996, 0.00208504, 6.24816471, 0.98717648, 0.99404500, 0.46347810],
     668                             [- 5.25487707, - 0.00386655, 0.00208377, 6.25101053, 0.98719053, 0.99404969, 0.46355478],
     669                             [- 5.25771320, - 0.00386314, 0.00208250, 6.25385007, 0.98720456, 0.99405436, 0.46363133],
     670                             [- 5.26054307, - 0.00385974, 0.00208123, 6.25668333, 0.98721856, 0.99405904, 0.46370775],
     671                             [- 5.26336668, - 0.00385634, 0.00207996, 6.25951033, 0.98723253, 0.99406370, 0.46378403],
     672                             [- 5.26618402, - 0.00385295, 0.00207869, 6.26233107, 0.98724646, 0.99406835, 0.46386019],
     673                             [- 5.26899512, - 0.00384957, 0.00207743, 6.26514555, 0.98726037, 0.99407300, 0.46393621],
     674                             [- 5.27179998, - 0.00384619, 0.00207617, 6.26795379, 0.98727425, 0.99407764, 0.46401210],
     675                             [- 5.27459860, - 0.00384282, 0.00207491, 6.27075577, 0.98728810, 0.99408227, 0.46408786],
     676                             [- 5.27739098, - 0.00383945, 0.00207365, 6.27355152, 0.98730193, 0.99408689, 0.46416348],
     677                             [- 5.28017713, - 0.00383609, 0.00207240, 6.27634104, 0.98731572, 0.99409151, 0.46423898],
     678                             [- 5.28295706, - 0.00383274, 0.00207115, 6.27912432, 0.98732949, 0.99409612, 0.46431433],
     679                             [- 5.28573078, - 0.00382939, 0.00206989, 6.28190139, 0.98734322, 0.99410072, 0.46438956],
     680                             [- 5.28849828, - 0.00382604, 0.00206865, 6.28467224, 0.98735693, 0.99410531, 0.46446465],
     681                             [- 5.29125958, - 0.00382271, 0.00206740, 6.28743687, 0.98737061, 0.99410989, 0.46453961],
     682                             [- 5.29401468, - 0.00381937, 0.00206616, 6.29019530, 0.98738426, 0.99411447, 0.46461443],
     683                             [- 5.29676358, - 0.00381604, 0.00206491, 6.29294754, 0.98739789, 0.99411904, 0.46468912],
     684                             [- 5.29950630, - 0.00381272, 0.00206367, 6.29569358, 0.98741148, 0.99412361, 0.46476368],
     685                             [- 5.30224283, - 0.00380940, 0.00206243, 6.29843343, 0.98742505, 0.99412816, 0.46483809],
     686                             [- 5.30497319, - 0.00380609, 0.00206120, 6.30116710, 0.98743859, 0.99413271, 0.46491238],
     687                             [- 5.30769738, - 0.00380279, 0.00205996, 6.30389459, 0.98745210, 0.99413725, 0.46498652],
     688                             [- 5.31041540, - 0.00379948, 0.00205873, 6.30661592, 0.98746559, 0.99414179, 0.46506054],
     689                             [- 5.31312727, - 0.00379619, 0.00205750, 6.30933108, 0.98747905, 0.99414631, 0.46513441],
     690                             [- 5.31583299, - 0.00379290, 0.00205627, 6.31204009, 0.98749248, 0.99415083, 0.46520815],
     691                             [- 5.31853255, - 0.00378961, 0.00205504, 6.31474294, 0.98750588, 0.99415535, 0.46528175],
     692                             [- 5.32122598, - 0.00378633, 0.00205382, 6.31743965, 0.98751926, 0.99415985, 0.46535522],
     693                             [- 5.32391328, - 0.00378306, 0.00205259, 6.32013023, 0.98753261, 0.99416435, 0.46542855],
     694                             [- 5.32659445, - 0.00377979, 0.00205137, 6.32281466, 0.98754593, 0.99416884, 0.46550174],
     695                             [- 5.32926950, - 0.00377652, 0.00205015, 6.32549298, 0.98755923, 0.99417333, 0.46557479],
     696                             [- 5.33193843, - 0.00377326, 0.00204893, 6.32816517, 0.98757249, 0.99417781, 0.46564771],
     697                             [- 5.33460126, - 0.00377000, 0.00204772, 6.33083125, 0.98758574, 0.99418228, 0.46572049],
     698                             [- 5.33725798, - 0.00376675, 0.00204650, 6.33349123, 0.98759895, 0.99418674, 0.46579313],
     699                             [- 5.33990861, - 0.00376351, 0.00204529, 6.33614511, 0.98761214, 0.99419120, 0.46586563],
     700                             [- 5.34255316, - 0.00376027, 0.00204408, 6.33879289, 0.98762531, 0.99419565, 0.46593799],
     701                             [- 5.34519162, - 0.00375703, 0.00204287, 6.34143458, 0.98763844, 0.99420010, 0.46601022],
     702                             [- 5.34782400, - 0.00375380, 0.00204166, 6.34407020, 0.98765155, 0.99420454, 0.46608230],
     703                             [- 5.35045032, - 0.00375058, 0.00204045, 6.34669974, 0.98766464, 0.99420897, 0.46615425],
     704                             [- 5.35307057, - 0.00374736, 0.00203925, 6.34932321, 0.98767770, 0.99421340, 0.46622606],
     705                             [- 5.35568477, - 0.00374414, 0.00203804, 6.35194063, 0.98769073, 0.99421781, 0.46629773],
     706                             [- 5.35829292, - 0.00374093, 0.00203684, 6.35455199, 0.98770374, 0.99422223, 0.46636926],
     707                             [- 5.36089503, - 0.00373773, 0.00203564, 6.35715730, 0.98771672, 0.99422663, 0.46644065],
     708                             [- 5.36349110, - 0.00373453, 0.00203444, 6.35975657, 0.98772968, 0.99423103, 0.46651190],
     709                             [- 5.36608114, - 0.00373133, 0.00203324, 6.36234981, 0.98774261, 0.99423543, 0.46658301],
     710                             [- 5.36866517, - 0.00372814, 0.00203205, 6.36493703, 0.98775552, 0.99423982, 0.46665398],
     711                             [- 5.37124318, - 0.00372495, 0.00203085, 6.36751823, 0.98776840, 0.99424420, 0.46672482],
     712                             [- 5.37381518, - 0.00372177, 0.00202966, 6.37009341, 0.98778125, 0.99424857, 0.46679551],
     713                             [- 5.37638118, - 0.00371859, 0.00202847, 6.37266259, 0.98779408, 0.99425294, 0.46686606],
     714                             [- 5.37894119, - 0.00371542, 0.00202728, 6.37522577, 0.98780689, 0.99425730, 0.46693647],
     715                             [- 5.38149521, - 0.00371225, 0.00202609, 6.37778296, 0.98781967, 0.99426166, 0.46700674],
     716                             [- 5.38404325, - 0.00370909, 0.00202490, 6.38033416, 0.98783243, 0.99426601, 0.46707687],
     717                             [- 5.38658532, - 0.00370593, 0.00202371, 6.38287939, 0.98784516, 0.99427036, 0.46714686],
     718                             [- 5.38912142, - 0.00370278, 0.00202253, 6.38541865, 0.98785786, 0.99427470, 0.46721671],
     719                             [- 5.39165157, - 0.00369963, 0.00202134, 6.38795194, 0.98787055, 0.99427903, 0.46728642],
     720                             [- 5.39417576, - 0.00369648, 0.00202016, 6.39047928, 0.98788320, 0.99428336, 0.46735598],
     721                             [- 5.39669401, - 0.00369334, 0.00201898, 6.39300067, 0.98789584, 0.99428768, 0.46742541],
     722                             [- 5.39920633, - 0.00369021, 0.00201780, 6.39551612, 0.98790845, 0.99429200, 0.46749470],
     723                             [- 5.40171272, - 0.00368707, 0.00201662, 6.39802564, 0.98792103, 0.99429631, 0.46756384],
     724                             [- 5.40421318, - 0.00368395, 0.00201544, 6.40052923, 0.98793359, 0.99430061, 0.46763284],
     725                             [- 5.40670773, - 0.00368082, 0.00201427, 6.40302690, 0.98794613, 0.99430491, 0.46770170],
     726                             [- 5.40919637, - 0.00367771, 0.00201309, 6.40551867, 0.98795864, 0.99430920, 0.46777042],
     727                             [- 5.41167912, - 0.00367459, 0.00201192, 6.40800452, 0.98797113, 0.99431349, 0.46783900],
     728                             [- 5.41415597, - 0.00367148, 0.00201075, 6.41048448, 0.98798360, 0.99431777, 0.46790744],
     729                             [- 5.41662693, - 0.00366838, 0.00200957, 6.41295855, 0.98799604, 0.99432205, 0.46797574],
     730                             [- 5.41909202, - 0.00366528, 0.00200840, 6.41542674, 0.98800846, 0.99432632, 0.46804389],
     731                             [- 5.42155124, - 0.00366218, 0.00200724, 6.41788906, 0.98802085, 0.99433058, 0.46811190],
     732                             [- 5.42400460, - 0.00365909, 0.00200607, 6.42034551, 0.98803323, 0.99433484, 0.46817978],
     733                             [- 5.42645210, - 0.00365600, 0.00200490, 6.42279610, 0.98804557, 0.99433910, 0.46824751],
     734                             [- 5.42889376, - 0.00365292, 0.00200374, 6.42524084, 0.98805790, 0.99434334, 0.46831509],
     735                             [- 5.43132958, - 0.00364984, 0.00200257, 6.42767973, 0.98807020, 0.99434759, 0.46838254],
     736                             [- 5.43375956, - 0.00364677, 0.00200141, 6.43011279, 0.98808248, 0.99435183, 0.46844985],
     737                             [- 5.43618372, - 0.00364370, 0.00200024, 6.43254002, 0.98809474, 0.99435606, 0.46851701],
     738                             [- 5.43860207, - 0.00364063, 0.00199908, 6.43496143, 0.98810697, 0.99436029, 0.46858403],
     739                             [- 5.44101460, - 0.00363757, 0.00199792, 6.43737703, 0.98811918, 0.99436451, 0.46865091],
     740                             [- 5.44342134, - 0.00363451, 0.00199676, 6.43978683, 0.98813137, 0.99436872, 0.46871765],
     741                             [- 5.44582228, - 0.00363146, 0.00199561, 6.44219082, 0.98814353, 0.99437294, 0.46878424],
     742                             [- 5.44821744, - 0.00362841, 0.00199445, 6.44458903, 0.98815567, 0.99437714, 0.46885070],
     743                             [- 5.45060682, - 0.00362536, 0.00199329, 6.44698145, 0.98816779, 0.99438134, 0.46891701],
     744                             [- 5.45299043, - 0.00362232, 0.00199214, 6.44936811, 0.98817989, 0.99438554, 0.46898318],
     745                             [- 5.45536828, - 0.00361929, 0.00199098, 6.45174899, 0.98819196, 0.99438973, 0.46904921],
     746                             [- 5.45774037, - 0.00361625, 0.00198983, 6.45412412, 0.98820402, 0.99439392, 0.46911510],
     747                             [- 5.46010672, - 0.00361323, 0.00198868, 6.45649350, 0.98821605, 0.99439810, 0.46918084],
     748                             [- 5.46246734, - 0.00361020, 0.00198753, 6.45885714, 0.98822805, 0.99440227, 0.46924645],
     749                             [- 5.46482222, - 0.00360718, 0.00198638, 6.46121504, 0.98824004, 0.99440644, 0.46931191],
     750                             [- 5.46717138, - 0.00360417, 0.00198523, 6.46356722, 0.98825200, 0.99441061, 0.46937723],
     751                             [- 5.46951483, - 0.00360115, 0.00198408, 6.46591367, 0.98826395, 0.99441477, 0.46944241],
     752                             [- 5.47185257, - 0.00359814, 0.00198293, 6.46825442, 0.98827587, 0.99441892, 0.46950744],
     753                             [- 5.47418461, - 0.00359514, 0.00198178, 6.47058947, 0.98828776, 0.99442308, 0.46957234],
     754                             [- 5.47651097, - 0.00359214, 0.00198064, 6.47291883, 0.98829964, 0.99442722, 0.46963709],
     755                             [- 5.47883164, - 0.00358914, 0.00197949, 6.47524250, 0.98831150, 0.99443136, 0.46970170],
     756                             [- 5.48114664, - 0.00358615, 0.00197835, 6.47756049, 0.98832333, 0.99443550, 0.46976617],
     757                             [- 5.48345598, - 0.00358316, 0.00197721, 6.47987281, 0.98833514, 0.99443963, 0.46983050],
     758                             [- 5.48575966, - 0.00358018, 0.00197606, 6.48217948, 0.98834693, 0.99444376, 0.46989469],
     759                             [- 5.48805769, - 0.00357720, 0.00197492, 6.48448049, 0.98835870, 0.99444788, 0.46995873],
     760                             [- 5.49035007, - 0.00357422, 0.00197378, 6.48677585, 0.98837045, 0.99445200, 0.47002264],
     761                             [- 5.49263683, - 0.00357125, 0.00197264, 6.48906558, 0.98838217, 0.99445611, 0.47008640],
     762                             [- 5.49491797, - 0.00356828, 0.00197150, 6.49134968, 0.98839388, 0.99446022, 0.47015002],
     763                             [- 5.49719348, - 0.00356532, 0.00197036, 6.49362817, 0.98840556, 0.99446432, 0.47021350],
     764                             [- 5.49946339, - 0.00356236, 0.00196923, 6.49590104, 0.98841723, 0.99446842, 0.47027684],
     765                             [- 5.50172771, - 0.00355940, 0.00196809, 6.49816831, 0.98842887, 0.99447251, 0.47034004],
     766                             [- 5.50398643, - 0.00355645, 0.00196695, 6.50042998, 0.98844049, 0.99447660, 0.47040310],
     767                             [- 5.50623957, - 0.00355350, 0.00196582, 6.50268607, 0.98845209, 0.99448068, 0.47046602],
     768                             [- 5.50848713, - 0.00355055, 0.00196468, 6.50493658, 0.98846367, 0.99448476, 0.47052879],
     769                             [- 5.51072913, - 0.00354761, 0.00196355, 6.50718152, 0.98847523, 0.99448884, 0.47059143],
     770                             [- 5.51296557, - 0.00354467, 0.00196242, 6.50942090, 0.98848677, 0.99449291, 0.47065392],
     771                             [- 5.51519647, - 0.00354174, 0.00196129, 6.51165473, 0.98849828, 0.99449698, 0.47071627],
     772                             [- 5.51742182, - 0.00353881, 0.00196016, 6.51388301, 0.98850978, 0.99450104, 0.47077849],
     773                             [- 5.51964164, - 0.00353588, 0.00195902, 6.51610576, 0.98852126, 0.99450510, 0.47084056],
     774                             [- 5.52185594, - 0.00353296, 0.00195789, 6.51832298, 0.98853271, 0.99450915, 0.47090249],
     775                             [- 5.52406473, - 0.00353004, 0.00195677, 6.52053469, 0.98854415, 0.99451320, 0.47096428],
     776                             [- 5.52626800, - 0.00352712, 0.00195564, 6.52274088, 0.98855556, 0.99451724, 0.47102593],
     777                             [- 5.52846578, - 0.00352421, 0.00195451, 6.52494157, 0.98856696, 0.99452128, 0.47108744],
     778                             [- 5.53065808, - 0.00352130, 0.00195338, 6.52713677, 0.98857834, 0.99452532, 0.47114881],
     779                             [- 5.53284489, - 0.00351840, 0.00195226, 6.52932649, 0.98858969, 0.99452935, 0.47121004],
     780                             [- 5.53502623, - 0.00351550, 0.00195113, 6.53151073, 0.98860103, 0.99453337, 0.47127113],
     781                             [- 5.53720210, - 0.00351260, 0.00195001, 6.53368950, 0.98861234, 0.99453740, 0.47133208],
     782                             [- 5.53937252, - 0.00350971, 0.00194888, 6.53586282, 0.98862364, 0.99454141, 0.47139289],
     783                             [- 5.54153750, - 0.00350682, 0.00194776, 6.53803068, 0.98863491, 0.99454543, 0.47145356],
     784                             [- 5.54369704, - 0.00350393, 0.00194663, 6.54019311, 0.98864617, 0.99454944, 0.47151409],
     785                             [- 5.54585115, - 0.00350105, 0.00194551, 6.54235010, 0.98865740, 0.99455344, 0.47157449],
     786                             [- 5.54799984, - 0.00349817, 0.00194439, 6.54450167, 0.98866862, 0.99455744, 0.47163474],
     787                             [- 5.55014311, - 0.00349529, 0.00194327, 6.54664782, 0.98867982, 0.99456144, 0.47169485],
     788                             [- 5.55228099, - 0.00349242, 0.00194215, 6.54878857, 0.98869099, 0.99456543, 0.47175483],
     789                             [- 5.55441347, - 0.00348955, 0.00194103, 6.55092392, 0.98870215, 0.99456942, 0.47181466],
     790                             [- 5.55654057, - 0.00348669, 0.00193991, 6.55305388, 0.98871329, 0.99457340, 0.47187436],
     791                             [- 5.55866229, - 0.00348383, 0.00193879, 6.55517846, 0.98872441, 0.99457738, 0.47193391],
     792                             [- 5.56077864, - 0.00348097, 0.00193767, 6.55729767, 0.98873551, 0.99458136, 0.47199333],
     793                             [- 5.56288964, - 0.00347811, 0.00193655, 6.55941152, 0.98874659, 0.99458533, 0.47205261],
     794                             [- 5.56499528, - 0.00347526, 0.00193544, 6.56152002, 0.98875765, 0.99458930, 0.47211176],
     795                             [- 5.56709558, - 0.00347242, 0.00193432, 6.56362317, 0.98876869, 0.99459326, 0.47217076],
     796                             [- 5.56919055, - 0.00346957, 0.00193321, 6.56572098, 0.98877972, 0.99459722, 0.47222962],
     797                             [- 5.57128020, - 0.00346673, 0.00193209, 6.56781347, 0.98879072, 0.99460118, 0.47228835],
     798                             [- 5.57336453, - 0.00346390, 0.00193098, 6.56990064, 0.98880171, 0.99460513, 0.47234694],
     799                             [- 5.57544356, - 0.00346106, 0.00192986, 6.57198250, 0.98881267, 0.99460907, 0.47240539],
     800                             [- 5.57751729, - 0.00345823, 0.00192875, 6.57405906, 0.98882362, 0.99461302, 0.47246371],
     801                             [- 5.57958573, - 0.00345541, 0.00192764, 6.57613032, 0.98883455, 0.99461696, 0.47252188],
     802                             [- 5.58164889, - 0.00345259, 0.00192652, 6.57819631, 0.98884546, 0.99462089, 0.47257992],
     803                             [- 5.58370679, - 0.00344977, 0.00192541, 6.58025702, 0.98885635, 0.99462482, 0.47263782],
     804                             [- 5.58575942, - 0.00344695, 0.00192430, 6.58231247, 0.98886722, 0.99462875, 0.47269559],
     805                             [- 5.58780679, - 0.00344414, 0.00192319, 6.58436266, 0.98887808, 0.99463267, 0.47275321],
     806                             [- 5.58984893, - 0.00344133, 0.00192208, 6.58640760, 0.98888891, 0.99463659, 0.47281070],
     807                             [- 5.59188583, - 0.00343852, 0.00192097, 6.58844731, 0.98889973, 0.99464051, 0.47286806],
     808                             [- 5.59391750, - 0.00343572, 0.00191986, 6.59048178, 0.98891053, 0.99464442, 0.47292528],
     809                             [- 5.59594396, - 0.00343292, 0.00191875, 6.59251104, 0.98892131, 0.99464833, 0.47298236],
     810                             [- 5.59796521, - 0.00343013, 0.00191764, 6.59453508, 0.98893207, 0.99465223, 0.47303930],
     811                             [- 5.59998126, - 0.00342733, 0.00191653, 6.59655393, 0.98894281, 0.99465613, 0.47309611],
     812                             [- 5.60199212, - 0.00342455, 0.00191543, 6.59856758, 0.98895354, 0.99466003, 0.47315278],
     813                             [- 5.60399781, - 0.00342176, 0.00191432, 6.60057605, 0.98896425, 0.99466392, 0.47320932],
     814                             [- 5.60599831, - 0.00341898, 0.00191321, 6.60257934, 0.98897493, 0.99466781, 0.47326572],
     815                             [- 5.60799366, - 0.00341620, 0.00191211, 6.60457746, 0.98898561, 0.99467169, 0.47332198],
     816                             [- 5.60998385, - 0.00341342, 0.00191100, 6.60657043, 0.98899626, 0.99467557, 0.47337811],
     817                             [- 5.61196890, - 0.00341065, 0.00190990, 6.60855825, 0.98900689, 0.99467945, 0.47343411],
     818                             [- 5.61394881, - 0.00340788, 0.00190879, 6.61054093, 0.98901751, 0.99468332, 0.47348997],
     819                             [- 5.61592360, - 0.00340512, 0.00190769, 6.61251848, 0.98902811, 0.99468719, 0.47354569],
     820                             [- 5.61789327, - 0.00340235, 0.00190659, 6.61449091, 0.98903869, 0.99469106, 0.47360128],
     821                             [- 5.61985783, - 0.00339960, 0.00190548, 6.61645823, 0.98904926, 0.99469492, 0.47365674],
     822                             [- 5.62181729, - 0.00339684, 0.00190438, 6.61842045, 0.98905980, 0.99469878, 0.47371206],
     823                             [- 5.62377166, - 0.00339409, 0.00190328, 6.62037757, 0.98907033, 0.99470263, 0.47376724],
     824                             [- 5.62572095, - 0.00339134, 0.00190218, 6.62232961, 0.98908084, 0.99470648, 0.47382230],
     825                             [- 5.62766517, - 0.00338859, 0.00190108, 6.62427658, 0.98909133, 0.99471033, 0.47387721],
     826                             [- 5.62960432, - 0.00338585, 0.00189998, 6.62621847, 0.98910181, 0.99471417, 0.47393200],
     827                             [- 5.63153842, - 0.00338311, 0.00189888, 6.62815531, 0.98911227, 0.99471801, 0.47398665],
     828                             [- 5.63346748, - 0.00338037, 0.00189778, 6.63008711, 0.98912271, 0.99472185, 0.47404117],
     829                             [- 5.63539150, - 0.00337764, 0.00189668, 6.63201386, 0.98913313, 0.99472568, 0.47409555],
     830                             [- 5.63731050, - 0.00337491, 0.00189558, 6.63393558, 0.98914354, 0.99472951, 0.47414980],
     831                             [- 5.63922447, - 0.00337218, 0.00189448, 6.63585229, 0.98915393, 0.99473333, 0.47420392],
     832                             [- 5.64113344, - 0.00336946, 0.00189338, 6.63776398, 0.98916430, 0.99473716, 0.47425791],
     833                             [- 5.64303741, - 0.00336674, 0.00189229, 6.63967067, 0.98917466, 0.99474097, 0.47431176],
     834                             [- 5.64493639, - 0.00336402, 0.00189119, 6.64157237, 0.98918499, 0.99474479, 0.47436548],
     835                             [- 5.64683039, - 0.00336131, 0.00189009, 6.64346908, 0.98919531, 0.99474860, 0.47441907],
     836                             [- 5.64871942, - 0.00335860, 0.00188899, 6.64536082, 0.98920562, 0.99475241, 0.47447252],
     837                             [- 5.65060348, - 0.00335589, 0.00188790, 6.64724759, 0.98921590, 0.99475621, 0.47452585],
     838                             [- 5.65248259, - 0.00335319, 0.00188680, 6.64912941, 0.98922617, 0.99476001, 0.47457904],
     839                             [- 5.65435676, - 0.00335049, 0.00188571, 6.65100628, 0.98923642, 0.99476381, 0.47463210],
     840                             [- 5.65622600, - 0.00334779, 0.00188461, 6.65287821, 0.98924666, 0.99476760, 0.47468503],
     841                             [- 5.65809030, - 0.00334509, 0.00188352, 6.65474521, 0.98925688, 0.99477139, 0.47473783],
     842                             [- 5.65994970, - 0.00334240, 0.00188243, 6.65660729, 0.98926708, 0.99477517, 0.47479050],
     843                             [- 5.66180418, - 0.00333971, 0.00188133, 6.65846447, 0.98927727, 0.99477896, 0.47484303],
     844                             [- 5.66365377, - 0.00333703, 0.00188024, 6.66031674, 0.98928744, 0.99478273, 0.47489544],
     845                             [- 5.66549846, - 0.00333434, 0.00187915, 6.66216412, 0.98929759, 0.99478651, 0.47494772],
     846                             [- 5.66733828, - 0.00333166, 0.00187805, 6.66400662, 0.98930772, 0.99479028, 0.47499986],
     847                             [- 5.66917323, - 0.00332899, 0.00187696, 6.66584424, 0.98931784, 0.99479405, 0.47505187],
     848                             [- 5.67100331, - 0.00332631, 0.00187587, 6.66767700, 0.98932794, 0.99479781, 0.47510376],
     849                             [- 5.67282855, - 0.00332364, 0.00187478, 6.66950490, 0.98933803, 0.99480158, 0.47515552],
     850                             [- 5.67464894, - 0.00332098, 0.00187369, 6.67132796, 0.98934810, 0.99480533, 0.47520714],
     851                             [- 5.67646450, - 0.00331831, 0.00187260, 6.67314618, 0.98935815, 0.99480909, 0.47525864],
     852                             [- 5.67827523, - 0.00331565, 0.00187151, 6.67495958, 0.98936819, 0.99481284, 0.47531001],
     853                             [- 5.68008115, - 0.00331299, 0.00187042, 6.67676816, 0.98937821, 0.99481659, 0.47536125],
     854                             [- 5.68188226, - 0.00331034, 0.00186933, 6.67857192, 0.98938821, 0.99482033, 0.47541236],
     855                             [- 5.68367858, - 0.00330769, 0.00186824, 6.68037089, 0.98939820, 0.99482407, 0.47546334],
     856                             [- 5.68547011, - 0.00330504, 0.00186715, 6.68216507, 0.98940817, 0.99482781, 0.47551419],
     857                             [- 5.68725686, - 0.00330239, 0.00186606, 6.68395447, 0.98941813, 0.99483154, 0.47556492],
     858                             [- 5.68903884, - 0.00329975, 0.00186498, 6.68573909, 0.98942807, 0.99483527, 0.47561551],
     859                             [- 5.69081606, - 0.00329711, 0.00186389, 6.68751895, 0.98943799, 0.99483900, 0.47566598],
     860                             [- 5.69258853, - 0.00329447, 0.00186280, 6.68929406, 0.98944790, 0.99484272, 0.47571632],
     861                             [- 5.69435627, - 0.00329184, 0.00186172, 6.69106443, 0.98945779, 0.99484644, 0.47576654],
     862                             [- 5.69611926, - 0.00328921, 0.00186063, 6.69283005, 0.98946767, 0.99485016, 0.47581663],
     863                             [- 5.69787754, - 0.00328658, 0.00185954, 6.69459096, 0.98947753, 0.99485388, 0.47586659],
     864                             [- 5.69963110, - 0.00328396, 0.00185846, 6.69634715, 0.98948737, 0.99485759, 0.47591642],
     865                             [- 5.70137996, - 0.00328133, 0.00185737, 6.69809863, 0.98949720, 0.99486129, 0.47596613],
     866                             [- 5.70312413, - 0.00327872, 0.00185629, 6.69984541, 0.98950701, 0.99486500, 0.47601571],
     867                             [- 5.70486360, - 0.00327610, 0.00185520, 6.70158750, 0.98951681, 0.99486870, 0.47606516],
     868                             [- 5.70659840, - 0.00327349, 0.00185412, 6.70332492, 0.98952659, 0.99487239, 0.47611449],
     869                             [- 5.70832854, - 0.00327088, 0.00185304, 6.70505766, 0.98953636, 0.99487609, 0.47616370],
     870                             [- 5.71005402, - 0.00326827, 0.00185195, 6.70678575, 0.98954611, 0.99487978, 0.47621277],
     871                             [- 5.71177484, - 0.00326567, 0.00185087, 6.70850918, 0.98955584, 0.99488347, 0.47626172],
     872                             [- 5.71349103, - 0.00326306, 0.00184979, 6.71022797, 0.98956556, 0.99488715, 0.47631055],
     873                             [- 5.71520259, - 0.00326047, 0.00184870, 6.71194212, 0.98957526, 0.99489083, 0.47635925],
     874                             [- 5.71690953, - 0.00325787, 0.00184762, 6.71365166, 0.98958495, 0.99489451, 0.47640783],
     875                             [- 5.71861185, - 0.00325528, 0.00184654, 6.71535658, 0.98959462, 0.99489818, 0.47645628],
     876                             [- 5.72030958, - 0.00325269, 0.00184546, 6.71705689, 0.98960428, 0.99490185, 0.47650461],
     877                             [- 5.72200271, - 0.00325010, 0.00184438, 6.71875261, 0.98961392, 0.99490552, 0.47655282],
     878                             [- 5.72369126, - 0.00324752, 0.00184330, 6.72044374, 0.98962355, 0.99490918, 0.47660090],
     879                             [- 5.72537523, - 0.00324494, 0.00184222, 6.72213029, 0.98963316, 0.99491284, 0.47664886],
     880                             [- 5.72705463, - 0.00324236, 0.00184114, 6.72381227, 0.98964276, 0.99491650, 0.47669669],
     881                             [- 5.72872948, - 0.00323979, 0.00184006, 6.72548970, 0.98965234, 0.99492016, 0.47674440],
     882                             [- 5.73039979, - 0.00323721, 0.00183898, 6.72716257, 0.98966190, 0.99492381, 0.47679198],
     883                             [- 5.73206555, - 0.00323464, 0.00183790, 6.72883091, 0.98967145, 0.99492746, 0.47683945],
     884                             [- 5.73372679, - 0.00323208, 0.00183682, 6.73049471, 0.98968099, 0.99493110, 0.47688679],
     885                             [- 5.73538351, - 0.00322952, 0.00183574, 6.73215399, 0.98969051, 0.99493474, 0.47693401],
     886                             [- 5.73703572, - 0.00322695, 0.00183466, 6.73380876, 0.98970002, 0.99493838, 0.47698111],
     887                             [- 5.73868343, - 0.00322440, 0.00183359, 6.73545903, 0.98970951, 0.99494202, 0.47702808],
     888                             [- 5.74032664, - 0.00322184, 0.00183251, 6.73710480, 0.98971898, 0.99494565, 0.47707494],
     889                             [- 5.74196538, - 0.00321929, 0.00183143, 6.73874609, 0.98972844, 0.99494928, 0.47712167],
     890                             [- 5.74359964, - 0.00321674, 0.00183036, 6.74038290, 0.98973789, 0.99495290, 0.47716828],
     891                             [- 5.74522943, - 0.00321419, 0.00182928, 6.74201524, 0.98974732, 0.99495653, 0.47721477],
     892                             [- 5.74685478, - 0.00321165, 0.00182820, 6.74364312, 0.98975674, 0.99496014, 0.47726113],
     893                             [- 5.74847567, - 0.00320911, 0.00182713, 6.74526656, 0.98976614, 0.99496376, 0.47730738],
     894                             [- 5.75009213, - 0.00320657, 0.00182605, 6.74688556, 0.98977552, 0.99496737, 0.47735351],
     895                             [- 5.75170417, - 0.00320404, 0.00182498, 6.74850013, 0.98978490, 0.99497098, 0.47739952],
     896                             [- 5.75331179, - 0.00320151, 0.00182390, 6.75011028, 0.98979425, 0.99497459, 0.47744540],
     897                             [- 5.75491499, - 0.00319898, 0.00182283, 6.75171602, 0.98980360, 0.99497819, 0.47749117],
     898                             [- 5.75651380, - 0.00319645, 0.00182176, 6.75331735, 0.98981293, 0.99498179, 0.47753682],
     899                             [- 5.75810822, - 0.00319393, 0.00182068, 6.75491429, 0.98982224, 0.99498539, 0.47758234],
     900                             [- 5.75969826, - 0.00319141, 0.00181961, 6.75650685, 0.98983154, 0.99498899, 0.47762775],
     901                             [- 5.76128392, - 0.00318889, 0.00181854, 6.75809504, 0.98984082, 0.99499258, 0.47767304],
     902                             [- 5.76286523, - 0.00318637, 0.00181746, 6.75967886, 0.98985009, 0.99499616, 0.47771821],
     903                             [- 5.76444218, - 0.00318386, 0.00181639, 6.76125832, 0.98985935, 0.99499975, 0.47776327],
     904                             [- 5.76601479, - 0.00318135, 0.00181532, 6.76283343, 0.98986859, 0.99500333, 0.47780820],
     905                             [- 5.76758306, - 0.00317884, 0.00181425, 6.76440421, 0.98987782, 0.99500691, 0.47785302],
     906                             [- 5.76914700, - 0.00317634, 0.00181318, 6.76597066, 0.98988703, 0.99501049, 0.47789772],
     907                             [- 5.77070663, - 0.00317384, 0.00181210, 6.76753279, 0.98989623, 0.99501406, 0.47794230],
     908                             [- 5.77226195, - 0.00317134, 0.00181103, 6.76909061, 0.98990542, 0.99501763, 0.47798676],
     909                             [- 5.77381298, - 0.00316884, 0.00180996, 6.77064413, 0.98991459, 0.99502119, 0.47803110],
     910                             [- 5.77535971, - 0.00316635, 0.00180889, 6.77219336, 0.98992374, 0.99502476, 0.47807533],
     911                             [- 5.77690216, - 0.00316386, 0.00180782, 6.77373830, 0.98993289, 0.99502832, 0.47811945],
     912                             [- 5.77844035, - 0.00316137, 0.00180675, 6.77527898, 0.98994201, 0.99503187, 0.47816344],
     913                             [- 5.77997427, - 0.00315889, 0.00180569, 6.77681538, 0.98995113, 0.99503543, 0.47820732],
     914                             [- 5.78150394, - 0.00315640, 0.00180462, 6.77834753, 0.98996023, 0.99503898, 0.47825108],
     915                             [- 5.78302936, - 0.00315393, 0.00180355, 6.77987544, 0.98996931, 0.99504253, 0.47829473],
     916                             [- 5.78455056, - 0.00315145, 0.00180248, 6.78139911, 0.98997839, 0.99504607, 0.47833826],
     917                             [- 5.78606752, - 0.00314897, 0.00180141, 6.78291855, 0.98998744, 0.99504961, 0.47838168],
     918                             [- 5.78758027, - 0.00314650, 0.00180035, 6.78443377, 0.98999649, 0.99505315, 0.47842498],
     919                             [- 5.78908882, - 0.00314403, 0.00179928, 6.78594478, 0.99000552, 0.99505669, 0.47846816],
     920                             [- 5.79059316, - 0.00314157, 0.00179821, 6.78745159, 0.99001453, 0.99506022, 0.47851123],
     921                             [- 5.79209332, - 0.00313911, 0.00179715, 6.78895421, 0.99002354, 0.99506375, 0.47855419],
     922                             [- 5.79358930, - 0.00313665, 0.00179608, 6.79045265, 0.99003253, 0.99506727, 0.47859703],
     923                             [- 5.79508110, - 0.00313419, 0.00179501, 6.79194692, 0.99004150, 0.99507080, 0.47863976],
     924                             [- 5.79656875, - 0.00313173, 0.00179395, 6.79343702, 0.99005046, 0.99507432, 0.47868238],
     925                             [- 5.79805224, - 0.00312928, 0.00179288, 6.79492296, 0.99005941, 0.99507784, 0.47872487],
     926                             [- 5.79953159, - 0.00312683, 0.00179182, 6.79640476, 0.99006834, 0.99508135, 0.47876726],
     927                             [- 5.80100681, - 0.00312438, 0.00179075, 6.79788243, 0.99007726, 0.99508486, 0.47880954],
     928                             [- 5.80247790, - 0.00312194, 0.00178969, 6.79935596, 0.99008617, 0.99508837, 0.47885170],
     929                             [- 5.80394487, - 0.00311950, 0.00178863, 6.80082538, 0.99009506, 0.99509187, 0.47889374],
     930                             [- 5.80540774, - 0.00311706, 0.00178756, 6.80229068, 0.99010394, 0.99509538, 0.47893568],
     931                             [- 5.80686651, - 0.00311462, 0.00178650, 6.80375189, 0.99011281, 0.99509888, 0.47897750],
     932                             [- 5.80832119, - 0.00311219, 0.00178544, 6.80520900, 0.99012166, 0.99510237, 0.47901921],
     933                             [- 5.80977179, - 0.00310976, 0.00178438, 6.80666204, 0.99013050, 0.99510587, 0.47906081],
     934                             [- 5.81121832, - 0.00310733, 0.00178331, 6.80811099, 0.99013933, 0.99510936, 0.47910230],
     935                             [- 5.81266079, - 0.00310490, 0.00178225, 6.80955589, 0.99014814, 0.99511284, 0.47914367],
     936                             [- 5.81409921, - 0.00310248, 0.00178119, 6.81099673, 0.99015694, 0.99511633, 0.47918494],
     937                             [- 5.81553358, - 0.00310006, 0.00178013, 6.81243352, 0.99016573, 0.99511981, 0.47922609],
     938                             [- 5.81696392, - 0.00309764, 0.00177907, 6.81386627, 0.99017450, 0.99512329, 0.47926714],
     939                             [- 5.81839023, - 0.00309523, 0.00177801, 6.81529500, 0.99018326, 0.99512676, 0.47930807],
     940                             [- 5.81981252, - 0.00309282, 0.00177695, 6.81671970, 0.99019200, 0.99513024, 0.47934889],
     941                             [- 5.82123081, - 0.00309041, 0.00177589, 6.81814040, 0.99020074, 0.99513370, 0.47938960],
     942                             [- 5.82264509, - 0.00308800, 0.00177483, 6.81955709, 0.99020946, 0.99513717, 0.47943020],
     943                             [- 5.82405539, - 0.00308560, 0.00177377, 6.82096980, 0.99021816, 0.99514063, 0.47947070],
     944                             [- 5.82546171, - 0.00308319, 0.00177271, 6.82237851, 0.99022686, 0.99514410, 0.47951108],
     945                             [- 5.82686405, - 0.00308079, 0.00177165, 6.82378326, 0.99023554, 0.99514755, 0.47955135],
     946                             [- 5.82826243, - 0.00307840, 0.00177059, 6.82518403, 0.99024421, 0.99515101, 0.47959152],
     947                             [- 5.82965686, - 0.00307600, 0.00176954, 6.82658086, 0.99025286, 0.99515446, 0.47963157],
     948                             [- 5.83104734, - 0.00307361, 0.00176848, 6.82797373, 0.99026150, 0.99515791, 0.47967152],
     949                             [- 5.83243389, - 0.00307122, 0.00176742, 6.82936266, 0.99027013, 0.99516135, 0.47971136],
     950                             [- 5.83381650, - 0.00306884, 0.00176637, 6.83074767, 0.99027875, 0.99516480, 0.47975109],
     951                             [- 5.83519520, - 0.00306645, 0.00176531, 6.83212875, 0.99028735, 0.99516824, 0.47979072],
     952                             [- 5.83656999, - 0.00306407, 0.00176425, 6.83350592, 0.99029594, 0.99517167, 0.47983023],
     953                             [- 5.83794088, - 0.00306169, 0.00176320, 6.83487918, 0.99030451, 0.99517511, 0.47986964],
     954                             [- 5.83930788, - 0.00305932, 0.00176214, 6.83624856, 0.99031308, 0.99517854, 0.47990894],
     955                             [- 5.84067099, - 0.00305695, 0.00176109, 6.83761404, 0.99032163, 0.99518197, 0.47994814],
     956                             [- 5.84203023, - 0.00305458, 0.00176003, 6.83897565, 0.99033017, 0.99518539, 0.47998722],
     957                             [- 5.84338560, - 0.00305221, 0.00175898, 6.84033340, 0.99033869, 0.99518881, 0.48002620],
     958                             [- 5.84473712, - 0.00304984, 0.00175793, 6.84168728, 0.99034721, 0.99519223, 0.48006508],
     959                             [- 5.84608479, - 0.00304748, 0.00175687, 6.84303731, 0.99035571, 0.99519565, 0.48010385],
     960                             [- 5.84742862, - 0.00304512, 0.00175582, 6.84438350, 0.99036419, 0.99519906, 0.48014251],
     961                             [- 5.84876862, - 0.00304276, 0.00175477, 6.84572586, 0.99037267, 0.99520247, 0.48018107],
     962                             [- 5.85010480, - 0.00304041, 0.00175371, 6.84706439, 0.99038113, 0.99520588, 0.48021952],
     963                             [- 5.85143717, - 0.00303805, 0.00175266, 6.84839911, 0.99038958, 0.99520929, 0.48025787],
     964                             [- 5.85276573, - 0.00303570, 0.00175161, 6.84973003, 0.99039802, 0.99521269, 0.48029611],
     965                             [- 5.85409050, - 0.00303336, 0.00175056, 6.85105714, 0.99040644, 0.99521609, 0.48033425],
     966                             [- 5.85541148, - 0.00303101, 0.00174951, 6.85238047, 0.99041485, 0.99521948, 0.48037228],
     967                             [- 5.85672868, - 0.00302867, 0.00174846, 6.85370002, 0.99042325, 0.99522288, 0.48041021],
     968                             [- 5.85804212, - 0.00302633, 0.00174741, 6.85501579, 0.99043164, 0.99522627, 0.48044803],
     969                             [- 5.85935180, - 0.00302399, 0.00174636, 6.85632781, 0.99044002, 0.99522965, 0.48048575],
     970                             [- 5.86065772, - 0.00302166, 0.00174531, 6.85763607, 0.99044838, 0.99523304, 0.48052337],
     971                             [- 5.86195991, - 0.00301932, 0.00174426, 6.85894058, 0.99045673, 0.99523642, 0.48056088],
     972                             [- 5.86325835, - 0.00301699, 0.00174321, 6.86024136, 0.99046507, 0.99523980, 0.48059829],
     973                             [- 5.86455308, - 0.00301467, 0.00174216, 6.86153841, 0.99047339, 0.99524317, 0.48063560],
     974                             [- 5.86584409, - 0.00301234, 0.00174111, 6.86283174, 0.99048171, 0.99524655, 0.48067281],
     975                             [- 5.86713139, - 0.00301002, 0.00174006, 6.86412137, 0.99049001, 0.99524992, 0.48070991],
     976                             [- 5.86841499, - 0.00300770, 0.00173902, 6.86540729, 0.99049829, 0.99525328, 0.48074691],
     977                             [- 5.86969490, - 0.00300538, 0.00173797, 6.86668952, 0.99050657, 0.99525665, 0.48078381],
     978                             [- 5.87097113, - 0.00300307, 0.00173692, 6.86796806, 0.99051483, 0.99526001, 0.48082060],
     979                             [- 5.87224368, - 0.00300076, 0.00173588, 6.86924293, 0.99052309, 0.99526337, 0.48085730],
     980                             [- 5.87351257, - 0.00299845, 0.00173483, 6.87051413, 0.99053133, 0.99526672, 0.48089389],
     981                             [- 5.87477781, - 0.00299614, 0.00173378, 6.87178167, 0.99053955, 0.99527008, 0.48093038],
     982                             [- 5.87603940, - 0.00299383, 0.00173274, 6.87304557, 0.99054777, 0.99527343, 0.48096678],
     983                             [- 5.87729735, - 0.00299153, 0.00173169, 6.87430582, 0.99055597, 0.99527677, 0.48100307],
     984                             [- 5.87855167, - 0.00298923, 0.00173065, 6.87556244, 0.99056416, 0.99528012, 0.48103926],
     985                             [- 5.87980237, - 0.00298694, 0.00172961, 6.87681543, 0.99057234, 0.99528346, 0.48107535],
     986                             [- 5.88104946, - 0.00298464, 0.00172856, 6.87806482, 0.99058051, 0.99528680, 0.48111134],
     987                             [- 5.88229294, - 0.00298235, 0.00172752, 6.87931059, 0.99058867, 0.99529013, 0.48114723],
     988                             [- 5.88353283, - 0.00298006, 0.00172648, 6.88055277, 0.99059681, 0.99529347, 0.48118302],
     989                             [- 5.88476913, - 0.00297777, 0.00172543, 6.88179135, 0.99060494, 0.99529680, 0.48121871],
     990                             [- 5.88600185, - 0.00297549, 0.00172439, 6.88302636, 0.99061306, 0.99530012, 0.48125430],
     991                             [- 5.88723100, - 0.00297320, 0.00172335, 6.88425779, 0.99062117, 0.99530345, 0.48128980],
     992                             [- 5.88845659, - 0.00297093, 0.00172231, 6.88548566, 0.99062927, 0.99530677, 0.48132519],
     993                             [- 5.88967862, - 0.00296865, 0.00172127, 6.88670998, 0.99063735, 0.99531009, 0.48136049],
     994                             [- 5.89089712, - 0.00296637, 0.00172022, 6.88793074, 0.99064542, 0.99531340, 0.48139569],
     995                             [- 5.89211207, - 0.00296410, 0.00171918, 6.88914797, 0.99065348, 0.99531671, 0.48143079],
     996                             [- 5.89332350, - 0.00296183, 0.00171814, 6.89036167, 0.99066153, 0.99532002, 0.48146579],
     997                             [- 5.89453141, - 0.00295956, 0.00171710, 6.89157185, 0.99066957, 0.99532333, 0.48150069],
     998                             [- 5.89573581, - 0.00295730, 0.00171607, 6.89277851, 0.99067760, 0.99532664, 0.48153550],
     999                             [- 5.89693670, - 0.00295504, 0.00171503, 6.89398167, 0.99068561, 0.99532994, 0.48157021],
     1000                             [- 5.89813411, - 0.00295278, 0.00171399, 6.89518133, 0.99069361, 0.99533324, 0.48160482],
     1001                             [- 5.89932802, - 0.00295052, 0.00171295, 6.89637751, 0.99070160, 0.99533653, 0.48163934],
     1002                             [- 5.90051846, - 0.00294826, 0.00171191, 6.89757020, 0.99070958, 0.99533983, 0.48167376],
     1003                             [- 5.90170544, - 0.00294601, 0.00171088, 6.89875943, 0.99071755, 0.99534312, 0.48170809],
     1004                             [- 5.90288895, - 0.00294376, 0.00170984, 6.89994519, 0.99072550, 0.99534640, 0.48174231],
     1005                             [- 5.90406901, - 0.00294151, 0.00170880, 6.90112750, 0.99073345, 0.99534969, 0.48177645],
     1006                             [- 5.90524562, - 0.00293927, 0.00170777, 6.90230636, 0.99074138, 0.99535297, 0.48181048],
     1007                             [- 5.90641881, - 0.00293702, 0.00170673, 6.90348178, 0.99074930, 0.99535625, 0.48184443],
     1008                             [- 5.90758856, - 0.00293478, 0.00170569, 6.90465378, 0.99075721, 0.99535952, 0.48187827],
     1009                             [- 5.90875490, - 0.00293254, 0.00170466, 6.90582235, 0.99076511, 0.99536280, 0.48191202],
     1010                             [- 5.90991782, - 0.00293031, 0.00170363, 6.90698751, 0.99077300, 0.99536607, 0.48194568],
     1011                             [- 5.91107735, - 0.00292807, 0.00170259, 6.90814927, 0.99078087, 0.99536933, 0.48197924],
     1012                             [- 5.91223348, - 0.00292584, 0.00170156, 6.90930763, 0.99078874, 0.99537260, 0.48201271],
     1013                             [- 5.91338622, - 0.00292362, 0.00170052, 6.91046261, 0.99079659, 0.99537586, 0.48204608],
     1014                             [- 5.91453559, - 0.00292139, 0.00169949, 6.91161420, 0.99080443, 0.99537912, 0.48207936],
     1015                             [- 5.91568159, - 0.00291917, 0.00169846, 6.91276243, 0.99081226, 0.99538238, 0.48211255],
     1016                             [- 5.91682423, - 0.00291694, 0.00169743, 6.91390729, 0.99082008, 0.99538563, 0.48214564],
     1017                             [- 5.91796352, - 0.00291472, 0.00169639, 6.91504879, 0.99082789, 0.99538888, 0.48217864],
     1018                             [- 5.91909946, - 0.00291251, 0.00169536, 6.91618695, 0.99083569, 0.99539213, 0.48221155],
     1019                             [- 5.92023207, - 0.00291029, 0.00169433, 6.91732177, 0.99084347, 0.99539537, 0.48224436],
     1020                             [- 5.92136135, - 0.00290808, 0.00169330, 6.91845327, 0.99085124, 0.99539862, 0.48227709],
     1021                             [- 5.92248731, - 0.00290587, 0.00169227, 6.91958144, 0.99085901, 0.99540186, 0.48230971],
     1022                             [- 5.92360996, - 0.00290367, 0.00169124, 6.92070629, 0.99086676, 0.99540509, 0.48234225],
     1023                             [- 5.92472930, - 0.00290146, 0.00169021, 6.92182784, 0.99087450, 0.99540833, 0.48237470],
     1024                             [- 5.92584536, - 0.00289926, 0.00168918, 6.92294610, 0.99088223, 0.99541156, 0.48240705],
     1025                             [- 5.92695812, - 0.00289706, 0.00168816, 6.92406106, 0.99088995, 0.99541479, 0.48243931],
     1026                             [- 5.92806761, - 0.00289486, 0.00168713, 6.92517274, 0.99089766, 0.99541801, 0.48247148],
     1027                             [- 5.92917382, - 0.00289267, 0.00168610, 6.92628115, 0.99090535, 0.99542123, 0.48250356],
     1028                             [- 5.93027677, - 0.00289047, 0.00168507, 6.92738630, 0.99091304, 0.99542445, 0.48253555],
     1029                             [- 5.93137647, - 0.00288828, 0.00168405, 6.92848819, 0.99092071, 0.99542767, 0.48256745],
     1030                             [- 5.93247293, - 0.00288610, 0.00168302, 6.92958683, 0.99092837, 0.99543089, 0.48259926],
     1031                             [- 5.93356614, - 0.00288391, 0.00168199, 6.93068223, 0.99093603, 0.99543410, 0.48263098],
     1032                             [- 5.93465613, - 0.00288173, 0.00168097, 6.93177440, 0.99094367, 0.99543731, 0.48266260],
     1033                             [- 5.93574289, - 0.00287955, 0.00167994, 6.93286334, 0.99095130, 0.99544051, 0.48269414],
     1034                             [- 5.93682644, - 0.00287737, 0.00167892, 6.93394907, 0.99095892, 0.99544371, 0.48272559],
     1035                             [- 5.93790678, - 0.00287519, 0.00167789, 6.93503159, 0.99096653, 0.99544692, 0.48275695],
     1036                             [- 5.93898392, - 0.00287302, 0.00167687, 6.93611091, 0.99097412, 0.99545011, 0.48278822],
     1037                             [- 5.94005788, - 0.00287085, 0.00167585, 6.93718703, 0.99098171, 0.99545331, 0.48281940],
     1038                             [- 5.94112865, - 0.00286868, 0.00167482, 6.93825997, 0.99098929, 0.99545650, 0.48285049],
     1039                             [- 5.94219625, - 0.00286651, 0.00167380, 6.93932974, 0.99099685, 0.99545969, 0.48288150],
     1040                             [- 5.94326068, - 0.00286435, 0.00167278, 6.94039634, 0.99100441, 0.99546288, 0.48291241],
     1041                             [- 5.94432196, - 0.00286218, 0.00167176, 6.94145977, 0.99101195, 0.99546606, 0.48294324],
     1042                             [- 5.94538008, - 0.00286002, 0.00167074, 6.94252006, 0.99101949, 0.99546924, 0.48297398],
     1043                             [- 5.94643506, - 0.00285787, 0.00166971, 6.94357720, 0.99102701, 0.99547242, 0.48300463],
     1044                             [- 5.94748691, - 0.00285571, 0.00166869, 6.94463120, 0.99103452, 0.99547559, 0.48303520],
     1045                             [- 5.94853563, - 0.00285356, 0.00166767, 6.94568207, 0.99104202, 0.99547877, 0.48306568],
     1046                             [- 5.94958124, - 0.00285141, 0.00166666, 6.94672983, 0.99104951, 0.99548194, 0.48309607],
     1047                             [- 5.95062373, - 0.00284926, 0.00166564, 6.94777447, 0.99105699, 0.99548510, 0.48312637],
     1048                             [- 5.95166312, - 0.00284711, 0.00166462, 6.94881600, 0.99106446, 0.99548827, 0.48315659],
     1049                             [- 5.95269941, - 0.00284497, 0.00166360, 6.94985444, 0.99107192, 0.99549143, 0.48318672],
     1050                             [- 5.95373262, - 0.00284283, 0.00166258, 6.95088979, 0.99107937, 0.99549459, 0.48321676],
     1051                             [- 5.95476275, - 0.00284069, 0.00166156, 6.95192206, 0.99108681, 0.99549775, 0.48324672],
     1052                             [- 5.95578980, - 0.00283855, 0.00166055, 6.95295125, 0.99109423, 0.99550090, 0.48327660],
     1053                             [- 5.95681380, - 0.00283642, 0.00165953, 6.95397738, 0.99110165, 0.99550405, 0.48330638],
     1054                             [- 5.95783474, - 0.00283429, 0.00165852, 6.95500045, 0.99110906, 0.99550720, 0.48333609],
     1055                             [- 5.95885262, - 0.00283216, 0.00165750, 6.95602047, 0.99111645, 0.99551034, 0.48336571],
     1056                             [- 5.95986747, - 0.00283003, 0.00165648, 6.95703744, 0.99112384, 0.99551348, 0.48339524],
     1057                             [- 5.96087929, - 0.00282791, 0.00165547, 6.95805138, 0.99113121, 0.99551662, 0.48342469],
     1058                             [- 5.96188808, - 0.00282578, 0.00165446, 6.95906230, 0.99113858, 0.99551976, 0.48345405],
     1059                             [- 5.96289385, - 0.00282366, 0.00165344, 6.96007019, 0.99114593, 0.99552290, 0.48348333],
     1060                             [- 5.96389662, - 0.00282154, 0.00165243, 6.96107507, 0.99115327, 0.99552603, 0.48351252],
     1061                             [- 5.96489638, - 0.00281943, 0.00165142, 6.96207695, 0.99116061, 0.99552916, 0.48354163],
     1062                             [- 5.96589315, - 0.00281732, 0.00165040, 6.96307584, 0.99116793, 0.99553228, 0.48357066],
     1063                             [- 5.96688693, - 0.00281520, 0.00164939, 6.96407173, 0.99117524, 0.99553540, 0.48359961],
     1064                             [- 5.96787774, - 0.00281310, 0.00164838, 6.96506464, 0.99118255, 0.99553852, 0.48362846],
     1065                             [- 5.96886557, - 0.00281099, 0.00164737, 6.96605458, 0.99118984, 0.99554164, 0.48365724],
     1066                             [- 5.96985044, - 0.00280888, 0.00164636, 6.96704156, 0.99119712, 0.99554476, 0.48368594],
     1067                             [- 5.97083235, - 0.00280678, 0.00164535, 6.96802557, 0.99120439, 0.99554787, 0.48371455],
     1068                             [- 5.97181132, - 0.00280468, 0.00164434, 6.96900664, 0.99121165, 0.99555098, 0.48374308],
     1069                             [- 5.97278734, - 0.00280258, 0.00164333, 6.96998476, 0.99121891, 0.99555409, 0.48377153],
     1070                             [- 5.97376044, - 0.00280049, 0.00164232, 6.97095995, 0.99122615, 0.99555719, 0.48379989],
     1071                             [- 5.97473060, - 0.00279840, 0.00164131, 6.97193221, 0.99123338, 0.99556029, 0.48382818],
     1072                             [- 5.97569785, - 0.00279631, 0.00164031, 6.97290155, 0.99124060, 0.99556339, 0.48385638],
     1073                             [- 5.97666219, - 0.00279422, 0.00163930, 6.97386797, 0.99124781, 0.99556648, 0.48388450],
     1074                             [- 5.97762362, - 0.00279213, 0.00163829, 6.97483149, 0.99125501, 0.99556958, 0.48391254],
     1075                             [- 5.97858216, - 0.00279005, 0.00163729, 6.97579212, 0.99126220, 0.99557267, 0.48394050],
     1076                             [- 5.97953782, - 0.00278796, 0.00163628, 6.97674985, 0.99126938, 0.99557576, 0.48396837],
     1077                             [- 5.98049059, - 0.00278589, 0.00163527, 6.97770470, 0.99127655, 0.99557884, 0.48399617],
     1078                             [- 5.98144049, - 0.00278381, 0.00163427, 6.97865668, 0.99128371, 0.99558192, 0.48402389],
     1079                             [- 5.98238752, - 0.00278173, 0.00163326, 6.97960579, 0.99129087, 0.99558500, 0.48405152],
     1080                             [- 5.98333170, - 0.00277966, 0.00163226, 6.98055204, 0.99129801, 0.99558808, 0.48407908],
     1081                             [- 5.98427302, - 0.00277759, 0.00163126, 6.98149543, 0.99130514, 0.99559115, 0.48410655],
     1082                             [- 5.98521150, - 0.00277552, 0.00163025, 6.98243598, 0.99131226, 0.99559422, 0.48413395],
     1083                             [- 5.98614715, - 0.00277346, 0.00162925, 6.98337369, 0.99131937, 0.99559729, 0.48416127],
     1084                             [- 5.98707997, - 0.00277139, 0.00162825, 6.98430858, 0.99132647, 0.99560036, 0.48418851],
     1085                             [- 5.98800996, - 0.00276933, 0.00162725, 6.98524063, 0.99133356, 0.99560342, 0.48421567],
     1086                             [- 5.98893715, - 0.00276727, 0.00162625, 6.98616988, 0.99134064, 0.99560648, 0.48424275],
     1087                             [- 5.98986153, - 0.00276521, 0.00162525, 6.98709631, 0.99134771, 0.99560954, 0.48426975],
     1088                             [- 5.99078310, - 0.00276316, 0.00162425, 6.98801995, 0.99135477, 0.99561259, 0.48429667],
     1089                             [- 5.99170189, - 0.00276111, 0.00162325, 6.98894079, 0.99136183, 0.99561565, 0.48432352],
     1090                             [- 5.99261789, - 0.00275906, 0.00162225, 6.98985884, 0.99136887, 0.99561870, 0.48435028],
     1091                             [- 5.99353112, - 0.00275701, 0.00162125, 6.99077411, 0.99137590, 0.99562174, 0.48437697],
     1092                             [- 5.99444158, - 0.00275496, 0.00162025, 6.99168662, 0.99138292, 0.99562479, 0.48440358],
     1093                             [- 5.99534927, - 0.00275292, 0.00161925, 6.99259635, 0.99138994, 0.99562783, 0.48443012],
     1094                             [- 5.99625421, - 0.00275088, 0.00161826, 6.99350334, 0.99139694, 0.99563087, 0.48445657],
     1095                             [- 5.99715640, - 0.00274884, 0.00161726, 6.99440757, 0.99140393, 0.99563390, 0.48448295],
     1096                             [- 5.99805585, - 0.00274680, 0.00161626, 6.99530906, 0.99141092, 0.99563694, 0.48450926],
     1097                             [- 5.99895257, - 0.00274476, 0.00161527, 6.99620781, 0.99141789, 0.99563997, 0.48453548],
     1098                             [- 5.99984656, - 0.00274273, 0.00161427, 6.99710383, 0.99142485, 0.99564299, 0.48456163],
     1099                             [- 6.00073784, - 0.00274070, 0.00161328, 6.99799714, 0.99143181, 0.99564602, 0.48458771],
     1100                             [- 6.00162640, - 0.00273867, 0.00161228, 6.99888773, 0.99143875, 0.99564904, 0.48461370],
     1101                             [- 6.00251225, - 0.00273665, 0.00161129, 6.99977561, 0.99144569, 0.99565206, 0.48463962],
     1102                             [- 6.00339541, - 0.00273462, 0.00161030, 7.00066079, 0.99145261, 0.99565508, 0.48466547],
     1103                             [- 6.00427588, - 0.00273260, 0.00160931, 7.00154328, 0.99145953, 0.99565809, 0.48469124],
     1104                             [- 6.00515367, - 0.00273058, 0.00160831, 7.00242309, 0.99146644, 0.99566111, 0.48471693],
     1105                             [- 6.00602878, - 0.00272856, 0.00160732, 7.00330021, 0.99147334, 0.99566411, 0.48474255],
     1106                             [- 6.00690122, - 0.00272655, 0.00160633, 7.00417467, 0.99148022, 0.99566712, 0.48476810],
     1107                             [- 6.00777100, - 0.00272454, 0.00160534, 7.00504646, 0.99148710, 0.99567012, 0.48479357],
     1108                             [- 6.00863812, - 0.00272252, 0.00160435, 7.00591560, 0.99149397, 0.99567313, 0.48481896],
     1109                             [- 6.00950260, - 0.00272052, 0.00160336, 7.00678208, 0.99150083, 0.99567612, 0.48484429],
     1110                             [- 6.01036444, - 0.00271851, 0.00160237, 7.00764593, 0.99150768, 0.99567912, 0.48486953],
     1111                             [- 6.01122364, - 0.00271651, 0.00160138, 7.00850713, 0.99151452, 0.99568211, 0.48489471],
     1112                             [- 6.01208022, - 0.00271450, 0.00160039, 7.00936571, 0.99152135, 0.99568510, 0.48491980],
     1113                             [- 6.01293417, - 0.00271250, 0.00159941, 7.01022167, 0.99152817, 0.99568809, 0.48494483],
     1114                             [- 6.01378552, - 0.00271051, 0.00159842, 7.01107501, 0.99153498, 0.99569107, 0.48496978],
     1115                             [- 6.01463426, - 0.00270851, 0.00159743, 7.01192575, 0.99154179, 0.99569406, 0.48499466],
     1116                             [- 6.01548040, - 0.00270652, 0.00159645, 7.01277388, 0.99154858, 0.99569704, 0.48501947],
     1117                             [- 6.01632394, - 0.00270453, 0.00159546, 7.01361942, 0.99155537, 0.99570001, 0.48504420],
     1118                             [- 6.01716491, - 0.00270254, 0.00159448, 7.01446237, 0.99156214, 0.99570299, 0.48506886],
     1119                             [- 6.01800329, - 0.00270055, 0.00159349, 7.01530274, 0.99156891, 0.99570596, 0.48509345],
     1120                             [- 6.01883911, - 0.00269856, 0.00159251, 7.01614055, 0.99157566, 0.99570893, 0.48511797],
     1121                             [- 6.01967236, - 0.00269658, 0.00159153, 7.01697578, 0.99158241, 0.99571189, 0.48514241],
     1122                             [- 6.02050306, - 0.00269460, 0.00159054, 7.01780845, 0.99158915, 0.99571486, 0.48516678],
     1123                             [- 6.02133120, - 0.00269262, 0.00158956, 7.01863858, 0.99159588, 0.99571782, 0.48519108],
     1124                             [- 6.02215680, - 0.00269065, 0.00158858, 7.01946615, 0.99160260, 0.99572077, 0.48521531],
     1125                             [- 6.02297987, - 0.00268867, 0.00158760, 7.02029119, 0.99160931, 0.99572373, 0.48523947],
     1126                             [- 6.02380040, - 0.00268670, 0.00158662, 7.02111370, 0.99161601, 0.99572668, 0.48526355],
     1127                             [- 6.02461841, - 0.00268473, 0.00158564, 7.02193368, 0.99162270, 0.99572963, 0.48528757],
     1128                             [- 6.02543391, - 0.00268276, 0.00158466, 7.02275115, 0.99162938, 0.99573258, 0.48531151],
     1129                             [- 6.02624690, - 0.00268080, 0.00158368, 7.02356610, 0.99163606, 0.99573552, 0.48533539],
     1130                             [- 6.02705738, - 0.00267883, 0.00158270, 7.02437855, 0.99164272, 0.99573847, 0.48535919],
     1131                             [- 6.02786537, - 0.00267687, 0.00158172, 7.02518850, 0.99164938, 0.99574141, 0.48538292],
     1132                             [- 6.02867087, - 0.00267491, 0.00158074, 7.02599596, 0.99165602, 0.99574434, 0.48540659],
     1133                             [- 6.02947389, - 0.00267296, 0.00157977, 7.02680093, 0.99166266, 0.99574728, 0.48543018],
     1134                             [- 6.03027443, - 0.00267100, 0.00157879, 7.02760343, 0.99166929, 0.99575021, 0.48545370],
     1135                             [- 6.03107251, - 0.00266905, 0.00157781, 7.02840346, 0.99167591, 0.99575314, 0.48547716],
     1136                             [- 6.03186812, - 0.00266710, 0.00157684, 7.02920102, 0.99168252, 0.99575606, 0.48550054],
     1137                             [- 6.03266127, - 0.00266515, 0.00157586, 7.02999612, 0.99168912, 0.99575899, 0.48552386],
     1138                             [- 6.03345198, - 0.00266320, 0.00157489, 7.03078878, 0.99169571, 0.99576191, 0.48554710],
     1139                             [- 6.03424025, - 0.00266126, 0.00157391, 7.03157899, 0.99170230, 0.99576483, 0.48557028],
     1140                             [- 6.03502608, - 0.00265932, 0.00157294, 7.03236676, 0.99170887, 0.99576774, 0.48559339],
     1141                             [- 6.03580948, - 0.00265738, 0.00157197, 7.03315210, 0.99171544, 0.99577065, 0.48561643],
     1142                             [- 6.03659046, - 0.00265544, 0.00157100, 7.03393502, 0.99172199, 0.99577356, 0.48563940],
     1143                             [- 6.03736903, - 0.00265350, 0.00157002, 7.03471552, 0.99172854, 0.99577647, 0.48566231],
     1144                             [- 6.03814518, - 0.00265157, 0.00156905, 7.03549361, 0.99173508, 0.99577938, 0.48568514],
     1145                             [- 6.03891894, - 0.00264964, 0.00156808, 7.03626930, 0.99174161, 0.99578228, 0.48570791],
     1146                             [- 6.03969029, - 0.00264771, 0.00156711, 7.03704258, 0.99174813, 0.99578518, 0.48573061],
     1147                             [- 6.04045926, - 0.00264578, 0.00156614, 7.03781348, 0.99175464, 0.99578807, 0.48575324],
     1148                             [- 6.04122585, - 0.00264386, 0.00156517, 7.03858199, 0.99176115, 0.99579097, 0.48577581],
     1149                             [- 6.04199006, - 0.00264193, 0.00156421, 7.03934813, 0.99176764, 0.99579386, 0.48579831],
     1150                             [- 6.04275190, - 0.00264001, 0.00156324, 7.04011189, 0.99177413, 0.99579675, 0.48582075],
     1151                             [- 6.04351138, - 0.00263809, 0.00156227, 7.04087328, 0.99178061, 0.99579964, 0.48584311],
     1152                             [- 6.04426850, - 0.00263618, 0.00156130, 7.04163232, 0.99178707, 0.99580252, 0.48586541],
     1153                             [- 6.04502327, - 0.00263426, 0.00156034, 7.04238901, 0.99179353, 0.99580540, 0.48588765],
     1154                             [- 6.04577570, - 0.00263235, 0.00155937, 7.04314335, 0.99179998, 0.99580828, 0.48590981],
     1155                             [- 6.04652579, - 0.00263044, 0.00155841, 7.04389535, 0.99180643, 0.99581115, 0.48593191],
     1156                             [- 6.04727354, - 0.00262853, 0.00155744, 7.04464502, 0.99181286, 0.99581403, 0.48595395],
     1157                             [- 6.04801898, - 0.00262662, 0.00155648, 7.04539236, 0.99181929, 0.99581690, 0.48597592],
     1158                             [- 6.04876210, - 0.00262472, 0.00155552, 7.04613738, 0.99182570, 0.99581977, 0.48599782],
     1159                             [- 6.04950290, - 0.00262282, 0.00155455, 7.04688009, 0.99183211, 0.99582263, 0.48601966],
     1160                             [- 6.05024140, - 0.00262092, 0.00155359, 7.04762049, 0.99183851, 0.99582549, 0.48604144],
     1161                             [- 6.05097760, - 0.00261902, 0.00155263, 7.04835858, 0.99184490, 0.99582835, 0.48606315],
     1162                             [- 6.05171151, - 0.00261712, 0.00155167, 7.04909439, 0.99185128, 0.99583121, 0.48608479],
     1163                             [- 6.05244313, - 0.00261523, 0.00155071, 7.04982791, 0.99185765, 0.99583407, 0.48610637],
     1164                             [- 6.05317248, - 0.00261334, 0.00154975, 7.05055914, 0.99186402, 0.99583692, 0.48612789],
     1165                             [- 6.05389955, - 0.00261145, 0.00154879, 7.05128810, 0.99187037, 0.99583977, 0.48614934],
     1166                             [- 6.05462435, - 0.00260956, 0.00154783, 7.05201479, 0.99187672, 0.99584261, 0.48617073],
     1167                             [- 6.05534689, - 0.00260767, 0.00154687, 7.05273922, 0.99188306, 0.99584546, 0.48619205],
     1168                             [- 6.05606718, - 0.00260579, 0.00154591, 7.05346139, 0.99188939, 0.99584830, 0.48621331],
     1169                             [- 6.05678521, - 0.00260391, 0.00154495, 7.05418131, 0.99189571, 0.99585114, 0.48623450],
     1170                             [- 6.05750101, - 0.00260203, 0.00154400, 7.05489898, 0.99190203, 0.99585398, 0.48625564],
     1171                             [- 6.05821457, - 0.00260015, 0.00154304, 7.05561442, 0.99190833, 0.99585681, 0.48627671],
     1172                             [- 6.05892590, - 0.00259827, 0.00154209, 7.05632763, 0.99191463, 0.99585964, 0.48629772],
     1173                             [- 6.05963501, - 0.00259640, 0.00154113, 7.05703861, 0.99192092, 0.99586247, 0.48631866],
     1174                             [- 6.06034190, - 0.00259453, 0.00154018, 7.05774737, 0.99192720, 0.99586529, 0.48633954],
     1175                             [- 6.06104657, - 0.00259266, 0.00153922, 7.05845392, 0.99193347, 0.99586812, 0.48636036],
     1176                             [- 6.06174905, - 0.00259079, 0.00153827, 7.05915826, 0.99193973, 0.99587094, 0.48638112],
     1177                             [- 6.06244932, - 0.00258893, 0.00153732, 7.05986040, 0.99194598, 0.99587376, 0.48640181],
     1178                             [- 6.06314740, - 0.00258706, 0.00153637, 7.06056034, 0.99195223, 0.99587657, 0.48642244],
     1179                             [- 6.06384330, - 0.00258520, 0.00153541, 7.06125810, 0.99195847, 0.99587938, 0.48644301],
     1180                             [- 6.06453701, - 0.00258334, 0.00153446, 7.06195367, 0.99196470, 0.99588220, 0.48646352],
     1181                             [- 6.06522855, - 0.00258148, 0.00153351, 7.06264707, 0.99197092, 0.99588500, 0.48648397],
     1182                             [- 6.06591793, - 0.00257963, 0.00153256, 7.06333830, 0.99197713, 0.99588781, 0.48650436],
     1183                             [- 6.06660514, - 0.00257778, 0.00153161, 7.06402736, 0.99198334, 0.99589061, 0.48652468],
     1184                             [- 6.06729019, - 0.00257592, 0.00153067, 7.06471427, 0.99198953, 0.99589341, 0.48654494],
     1185                             [- 6.06797309, - 0.00257408, 0.00152972, 7.06539902, 0.99199572, 0.99589621, 0.48656515],
     1186                             [- 6.06865385, - 0.00257223, 0.00152877, 7.06608163, 0.99200190, 0.99589900, 0.48658529],
     1187                             [- 6.06933248, - 0.00257038, 0.00152782, 7.06676209, 0.99200807, 0.99590179, 0.48660537],
     1188                             [- 6.07000896, - 0.00256854, 0.00152688, 7.06744043, 0.99201424, 0.99590458, 0.48662539],
     1189                             [- 6.07068333, - 0.00256670, 0.00152593, 7.06811663, 0.99202039, 0.99590737, 0.48664535],
     1190                             [- 6.07135557, - 0.00256486, 0.00152499, 7.06879071, 0.99202654, 0.99591015, 0.48666525],
     1191                             [- 6.07202570, - 0.00256302, 0.00152404, 7.06946268, 0.99203268, 0.99591294, 0.48668509],
     1192                             [- 6.07269372, - 0.00256119, 0.00152310, 7.07013254, 0.99203881, 0.99591572, 0.48670487],
     1193                             [- 6.07335964, - 0.00255935, 0.00152215, 7.07080029, 0.99204493, 0.99591849, 0.48672460],
     1194                             [- 6.07402346, - 0.00255752, 0.00152121, 7.07146594, 0.99205104, 0.99592127, 0.48674426],
     1195                             [- 6.07468520, - 0.00255569, 0.00152027, 7.07212950, 0.99205715, 0.99592404, 0.48676386],
     1196                             [- 6.07534484, - 0.00255387, 0.00151933, 7.07279098, 0.99206325, 0.99592681, 0.48678341],
     1197                             [- 6.07600241, - 0.00255204, 0.00151839, 7.07345037, 0.99206934, 0.99592957, 0.48680289],
     1198                             [- 6.07665791, - 0.00255022, 0.00151745, 7.07410769, 0.99207542, 0.99593234, 0.48682232],
     1199                             [- 6.07731134, - 0.00254840, 0.00151651, 7.07476294, 0.99208149, 0.99593510, 0.48684169],
     1200                             [- 6.07796271, - 0.00254658, 0.00151557, 7.07541613, 0.99208756, 0.99593786, 0.48686100],
     1201                             [- 6.07861202, - 0.00254476, 0.00151463, 7.07606726, 0.99209362, 0.99594061, 0.48688025],
     1202                             [- 6.07925928, - 0.00254294, 0.00151369, 7.07671634, 0.99209967, 0.99594336, 0.48689944],
     1203                             [- 6.07990450, - 0.00254113, 0.00151275, 7.07736337, 0.99210571, 0.99594612, 0.48691858],
     1204                             [- 6.08054769, - 0.00253932, 0.00151182, 7.07800837, 0.99211174, 0.99594886, 0.48693766],
     1205                             [- 6.08118884, - 0.00253751, 0.00151088, 7.07865133, 0.99211777, 0.99595161, 0.48695668],
     1206                             [- 6.08182796, - 0.00253570, 0.00150994, 7.07929226, 0.99212379, 0.99595435, 0.48697564],
     1207                             [- 6.08246507, - 0.00253390, 0.00150901, 7.07993117, 0.99212980, 0.99595709, 0.48699454],
     1208                             [- 6.08310016, - 0.00253210, 0.00150807, 7.08056806, 0.99213580, 0.99595983, 0.48701339],
     1209                             [- 6.08373324, - 0.00253029, 0.00150714, 7.08120294, 0.99214179, 0.99596257, 0.48703218],
     1210                             [- 6.08436431, - 0.00252849, 0.00150621, 7.08183582, 0.99214778, 0.99596530, 0.48705092],
     1211                             [- 6.08499339, - 0.00252670, 0.00150527, 7.08246669, 0.99215376, 0.99596803, 0.48706960],
     1212                             [- 6.08562048, - 0.00252490, 0.00150434, 7.08309558, 0.99215973, 0.99597076, 0.48708821],
     1213                             [- 6.08624558, - 0.00252311, 0.00150341, 7.08372247, 0.99216569, 0.99597348, 0.48710678],
     1214                             [- 6.08686870, - 0.00252132, 0.00150248, 7.08434738, 0.99217164, 0.99597620, 0.48712529],
     1215                             [- 6.08748985, - 0.00251953, 0.00150155, 7.08497032, 0.99217759, 0.99597892, 0.48714374],
     1216                             [- 6.08810902, - 0.00251774, 0.00150062, 7.08559128, 0.99218353, 0.99598164, 0.48716214],
     1217                             [- 6.08872624, - 0.00251595, 0.00149969, 7.08621028, 0.99218946, 0.99598436, 0.48718048],
     1218                             [- 6.08934149, - 0.00251417, 0.00149876, 7.08682732, 0.99219538, 0.99598707, 0.48719876],
     1219                             [- 6.08995479, - 0.00251239, 0.00149784, 7.08744241, 0.99220130, 0.99598978, 0.48721699],
     1220                             [- 6.09056615, - 0.00251061, 0.00149691, 7.08805554, 0.99220721, 0.99599248, 0.48723517],
     1221                             [- 6.09117556, - 0.00250883, 0.00149598, 7.08866673, 0.99221310, 0.99599519, 0.48725329],
     1222                             [- 6.09178304, - 0.00250705, 0.00149506, 7.08927599, 0.99221900, 0.99599789, 0.48727135],
     1223                             [- 6.09238859, - 0.00250528, 0.00149413, 7.08988331, 0.99222488, 0.99600059, 0.48728936],
     1224                             [- 6.09299221, - 0.00250351, 0.00149320, 7.09048871, 0.99223076, 0.99600329, 0.48730732],
     1225                             [- 6.09359392, - 0.00250174, 0.00149228, 7.09109218, 0.99223663, 0.99600598, 0.48732522],
     1226                             [- 6.09419371, - 0.00249997, 0.00149136, 7.09169374, 0.99224249, 0.99600867, 0.48734306],
     1227                             [- 6.09479159, - 0.00249820, 0.00149043, 7.09229339, 0.99224834, 0.99601136, 0.48736085],
     1228                             [- 6.09538757, - 0.00249644, 0.00148951, 7.09289113, 0.99225419, 0.99601405, 0.48737859],
     1229                             [- 6.09598165, - 0.00249468, 0.00148859, 7.09348698, 0.99226003, 0.99601673, 0.48739628],
     1230                             [- 6.09657385, - 0.00249292, 0.00148767, 7.09408093, 0.99226586, 0.99601942, 0.48741390],
     1231                             [- 6.09716415, - 0.00249116, 0.00148675, 7.09467299, 0.99227168, 0.99602210, 0.48743148],
     1232                             [- 6.09775257, - 0.00248940, 0.00148583, 7.09526317, 0.99227749, 0.99602477, 0.48744900],
     1233                             [- 6.09833912, - 0.00248765, 0.00148491, 7.09585148, 0.99228330, 0.99602745, 0.48746647],
     1234                             [- 6.09892380, - 0.00248589, 0.00148399, 7.09643791, 0.99228910, 0.99603012, 0.48748389],
     1235                             [- 6.09950662, - 0.00248414, 0.00148307, 7.09702248, 0.99229489, 0.99603279, 0.48750125],
     1236                             [- 6.10008757, - 0.00248239, 0.00148215, 7.09760518, 0.99230068, 0.99603545, 0.48751856],
     1237                             [- 6.10066667, - 0.00248065, 0.00148124, 7.09818603, 0.99230646, 0.99603812, 0.48753582],
     1238                             [- 6.10124393, - 0.00247890, 0.00148032, 7.09876503, 0.99231223, 0.99604078, 0.48755302],
     1239                             [- 6.10181934, - 0.00247716, 0.00147941, 7.09934218, 0.99231799, 0.99604344, 0.48757018],
     1240                             [- 6.10239291, - 0.00247542, 0.00147849, 7.09991749, 0.99232374, 0.99604609, 0.48758728],
     1241                             [- 6.10296465, - 0.00247368, 0.00147758, 7.10049097, 0.99232949, 0.99604875, 0.48760432],
     1242                             [- 6.10353456, - 0.00247194, 0.00147666, 7.10106262, 0.99233523, 0.99605140, 0.48762132],
     1243                             [- 6.10410265, - 0.00247020, 0.00147575, 7.10163245, 0.99234096, 0.99605405, 0.48763826],
     1244                             [- 6.10466892, - 0.00246847, 0.00147484, 7.10220045, 0.99234669, 0.99605669, 0.48765516],
     1245                             [- 6.10523338, - 0.00246674, 0.00147393, 7.10276665, 0.99235240, 0.99605934, 0.48767200],
     1246                             [- 6.10579604, - 0.00246501, 0.00147301, 7.10333103, 0.99235811, 0.99606198, 0.48768879],
     1247                             [- 6.10635689, - 0.00246328, 0.00147210, 7.10389362, 0.99236382, 0.99606462, 0.48770552],
     1248                             [- 6.10691595, - 0.00246155, 0.00147119, 7.10445440, 0.99236951, 0.99606725, 0.48772221],
     1249                             [- 6.10747322, - 0.00245983, 0.00147028, 7.10501339, 0.99237520, 0.99606989, 0.48773885],
     1250                             [- 6.10802871, - 0.00245811, 0.00146937, 7.10557060, 0.99238088, 0.99607252, 0.48775543],
     1251                             [- 6.10858241, - 0.00245639, 0.00146847, 7.10612603, 0.99238655, 0.99607515, 0.48777197],
     1252                             [- 6.10913434, - 0.00245467, 0.00146756, 7.10667967, 0.99239222, 0.99607777, 0.48778845],
     1253                             [- 6.10968450, - 0.00245295, 0.00146665, 7.10723155, 0.99239787, 0.99608040, 0.48780488],
     1254                             [- 6.11023289, - 0.00245123, 0.00146575, 7.10778166, 0.99240353, 0.99608302, 0.48782127],
     1255                             [- 6.11077953, - 0.00244952, 0.00146484, 7.10833001, 0.99240917, 0.99608564, 0.48783760],
     1256                             [- 6.11132441, - 0.00244781, 0.00146393, 7.10887660, 0.99241480, 0.99608825, 0.48785388],
     1257                             [- 6.11186754, - 0.00244610, 0.00146303, 7.10942144, 0.99242043, 0.99609087, 0.48787012],
     1258                             [- 6.11240893, - 0.00244439, 0.00146213, 7.10996454, 0.99242605, 0.99609348, 0.48788630],
     1259                             [- 6.11294858, - 0.00244269, 0.00146122, 7.11050589, 0.99243167, 0.99609609, 0.48790243],
     1260                             [- 6.11348649, - 0.00244098, 0.00146032, 7.11104551, 0.99243728, 0.99609869, 0.48791852],
     1261                             [- 6.11402268, - 0.00243928, 0.00145942, 7.11158340, 0.99244288, 0.99610130, 0.48793455],
     1262                             [- 6.11455714, - 0.00243758, 0.00145852, 7.11211956, 0.99244847, 0.99610390, 0.48795053],
     1263                             [- 6.11508989, - 0.00243588, 0.00145762, 7.11265400, 0.99245405, 0.99610650, 0.48796647],
     1264                             [- 6.11562092, - 0.00243419, 0.00145672, 7.11318673, 0.99245963, 0.99610909, 0.48798236],
     1265                             [- 6.11615024, - 0.00243249, 0.00145582, 7.11371775, 0.99246520, 0.99611169, 0.48799820],
     1266                             [- 6.11667786, - 0.00243080, 0.00145492, 7.11424706, 0.99247077, 0.99611428, 0.48801399],
     1267                             [- 6.11720378, - 0.00242911, 0.00145402, 7.11477467, 0.99247632, 0.99611687, 0.48802973],
     1268                             [- 6.11772800, - 0.00242742, 0.00145312, 7.11530058, 0.99248187, 0.99611945, 0.48804543],
     1269                             [- 6.11825054, - 0.00242574, 0.00145223, 7.11582481, 0.99248741, 0.99612204, 0.48806107],
     1270                             [- 6.11877140, - 0.00242405, 0.00145133, 7.11634735, 0.99249295, 0.99612462, 0.48807667],
     1271                             [- 6.11929057, - 0.00242237, 0.00145043, 7.11686820, 0.99249847, 0.99612720, 0.48809222],
     1272                             [- 6.11980807, - 0.00242069, 0.00144954, 7.11738739, 0.99250400, 0.99612978, 0.48810772],
     1273                             [- 6.12032390, - 0.00241901, 0.00144864, 7.11790490, 0.99250951, 0.99613235, 0.48812317],
     1274                             [- 6.12083807, - 0.00241733, 0.00144775, 7.11842074, 0.99251501, 0.99613492, 0.48813858],
     1275                             [- 6.12135058, - 0.00241565, 0.00144686, 7.11893493, 0.99252051, 0.99613749, 0.48815394],
     1276                             [- 6.12186144, - 0.00241398, 0.00144597, 7.11944746, 0.99252601, 0.99614006, 0.48816925],
     1277                             [- 6.12237064, - 0.00241231, 0.00144507, 7.11995834, 0.99253149, 0.99614262, 0.48818451],
     1278                             [- 6.12287820, - 0.00241064, 0.00144418, 7.12046757, 0.99253697, 0.99614518, 0.48819973],
     1279                             [- 6.12338412, - 0.00240897, 0.00144329, 7.12097516, 0.99254244, 0.99614774, 0.48821490],
     1280                             [- 6.12388841, - 0.00240730, 0.00144240, 7.12148111, 0.99254790, 0.99615030, 0.48823002],
     1281                             [- 6.12439107, - 0.00240563, 0.00144151, 7.12198543, 0.99255336, 0.99615285, 0.48824510],
     1282                             [- 6.12489210, - 0.00240397, 0.00144062, 7.12248813, 0.99255881, 0.99615540, 0.48826013],
     1283                             [- 6.12539151, - 0.00240231, 0.00143974, 7.12298920, 0.99256425, 0.99615795, 0.48827512],
     1284                             [- 6.12588931, - 0.00240065, 0.00143885, 7.12348866, 0.99256969, 0.99616050, 0.48829005],
     1285                             [- 6.12638549, - 0.00239899, 0.00143796, 7.12398650, 0.99257512, 0.99616304, 0.48830495],
     1286                             [- 6.12688007, - 0.00239734, 0.00143708, 7.12448273, 0.99258054, 0.99616559, 0.48831979],
     1287                             [- 6.12737305, - 0.00239568, 0.00143619, 7.12497736, 0.99258596, 0.99616813, 0.48833460],
     1288                             [- 6.12786443, - 0.00239403, 0.00143531, 7.12547040, 0.99259136, 0.99617066, 0.48834935],
     1289                             [- 6.12835422, - 0.00239238, 0.00143442, 7.12596184, 0.99259676, 0.99617320, 0.48836406],
     1290                             [- 6.12884242, - 0.00239073, 0.00143354, 7.12645169, 0.99260216, 0.99617573, 0.48837872],
     1291                             [- 6.12932904, - 0.00238908, 0.00143266, 7.12693996, 0.99260755, 0.99617826, 0.48839334],
     1292                             [- 6.12981408, - 0.00238744, 0.00143177, 7.12742664, 0.99261293, 0.99618079, 0.48840792],
     1293                             [- 6.13029755, - 0.00238580, 0.00143089, 7.12791176, 0.99261830, 0.99618331, 0.48842244],
     1294                             [- 6.13077945, - 0.00238416, 0.00143001, 7.12839530, 0.99262367, 0.99618583, 0.48843693],
     1295                             [- 6.13125979, - 0.00238252, 0.00142913, 7.12887728, 0.99262903, 0.99618835, 0.48845136],
     1296                             [- 6.13173857, - 0.00238088, 0.00142825, 7.12935769, 0.99263438, 0.99619087, 0.48846576],
     1297                             [- 6.13221579, - 0.00237924, 0.00142737, 7.12983655, 0.99263972, 0.99619339, 0.48848011],
     1298                             [- 6.13269147, - 0.00237761, 0.00142649, 7.13031386, 0.99264506, 0.99619590, 0.48849441],
     1299                             [- 6.13316560, - 0.00237598, 0.00142562, 7.13078962, 0.99265040, 0.99619841, 0.48850867],
     1300                             [- 6.13363819, - 0.00237434, 0.00142474, 7.13126384, 0.99265572, 0.99620092, 0.48852289],
     1301                             [- 6.13410924, - 0.00237272, 0.00142386, 7.13173652, 0.99266104, 0.99620342, 0.48853706],
     1302                             [- 6.13457876, - 0.00237109, 0.00142299, 7.13220767, 0.99266635, 0.99620593, 0.48855119],
     1303                             [- 6.13504676, - 0.00236946, 0.00142211, 7.13267729, 0.99267166, 0.99620843, 0.48856528],
     1304                             [- 6.13551323, - 0.00236784, 0.00142124, 7.13314539, 0.99267696, 0.99621092, 0.48857932],
     1305                             [- 6.13597818, - 0.00236622, 0.00142036, 7.13361197, 0.99268225, 0.99621342, 0.48859332],
     1306                             [- 6.13644163, - 0.00236460, 0.00141949, 7.13407703, 0.99268753, 0.99621591, 0.48860727],
     1307                             [- 6.13690356, - 0.00236298, 0.00141862, 7.13454058, 0.99269281, 0.99621840, 0.48862118],
     1308                             [- 6.13736399, - 0.00236136, 0.00141774, 7.13500263, 0.99269808, 0.99622089, 0.48863505],
     1309                             [- 6.13782292, - 0.00235975, 0.00141687, 7.13546317, 0.99270335, 0.99622338, 0.48864888],
     1310                             [- 6.13828035, - 0.00235814, 0.00141600, 7.13592222, 0.99270861, 0.99622586, 0.48866266],
     1311                             [- 6.13873630, - 0.00235652, 0.00141513, 7.13637977, 0.99271386, 0.99622834, 0.48867640],
     1312                             [- 6.13919076, - 0.00235492, 0.00141426, 7.13683584, 0.99271910, 0.99623082, 0.48869010],
     1313                             [- 6.13964373, - 0.00235331, 0.00141339, 7.13729042, 0.99272434, 0.99623330, 0.48870375],
     1314                             [- 6.14009523, - 0.00235170, 0.00141253, 7.13774353, 0.99272957, 0.99623577, 0.48871736],
     1315                             [- 6.14054526, - 0.00235010, 0.00141166, 7.13819516, 0.99273480, 0.99623824, 0.48873093],
     1316                             [- 6.14099381, - 0.00234850, 0.00141079, 7.13864532, 0.99274001, 0.99624071, 0.48874446],
     1317                             [- 6.14144091, - 0.00234689, 0.00140993, 7.13909401, 0.99274523, 0.99624318, 0.48875794],
     1318                             [- 6.14188654, - 0.00234530, 0.00140906, 7.13954125, 0.99275043, 0.99624564, 0.48877139],
     1319                             [- 6.14233072, - 0.00234370, 0.00140820, 7.13998702, 0.99275563, 0.99624811, 0.48878479],
     1320                             [- 6.14277345, - 0.00234210, 0.00140733, 7.14043134, 0.99276082, 0.99625057, 0.48879815],
     1321                             [- 6.14321473, - 0.00234051, 0.00140647, 7.14087422, 0.99276601, 0.99625302, 0.48881147],
     1322                             [- 6.14365457, - 0.00233892, 0.00140561, 7.14131565, 0.99277118, 0.99625548, 0.48882475],
     1323                             [- 6.14409297, - 0.00233733, 0.00140474, 7.14175564, 0.99277636, 0.99625793, 0.48883798],
     1324                             [- 6.14452994, - 0.00233574, 0.00140388, 7.14219420, 0.99278152, 0.99626038, 0.48885118],
     1325                             [- 6.14496548, - 0.00233415, 0.00140302, 7.14263132, 0.99278668, 0.99626283, 0.48886433],
     1326                             [- 6.14539959, - 0.00233257, 0.00140216, 7.14306702, 0.99279183, 0.99626527, 0.48887745],
     1327                             [- 6.14583228, - 0.00233098, 0.00140130, 7.14350130, 0.99279698, 0.99626772, 0.48889052],
     1328                             [- 6.14626356, - 0.00232940, 0.00140044, 7.14393416, 0.99280212, 0.99627016, 0.48890355],
     1329                             [- 6.14669342, - 0.00232782, 0.00139958, 7.14436560, 0.99280725, 0.99627259, 0.48891654],
     1330                             [- 6.14712188, - 0.00232625, 0.00139873, 7.14479564, 0.99281238, 0.99627503, 0.48892949],
     1331                             [- 6.14754894, - 0.00232467, 0.00139787, 7.14522427, 0.99281750, 0.99627746, 0.48894240],
     1332                             [- 6.14797459, - 0.00232309, 0.00139701, 7.14565150, 0.99282261, 0.99627989, 0.48895527],
     1333                             [- 6.14839885, - 0.00232152, 0.00139616, 7.14607733, 0.99282772, 0.99628232, 0.48896810],
     1334                             [- 6.14882172, - 0.00231995, 0.00139530, 7.14650177, 0.99283282, 0.99628475, 0.48898089],
     1335                             [- 6.14924320, - 0.00231838, 0.00139445, 7.14692482, 0.99283791, 0.99628717, 0.48899364],
     1336                             [- 6.14966330, - 0.00231681, 0.00139359, 7.14734649, 0.99284300, 0.99628959, 0.48900634],
     1337                             [- 6.15008202, - 0.00231525, 0.00139274, 7.14776677, 0.99284808, 0.99629201, 0.48901902],
     1338                             [- 6.15049937, - 0.00231368, 0.00139189, 7.14818569, 0.99285316, 0.99629443, 0.48903165],
     1339                             [- 6.15091535, - 0.00231212, 0.00139104, 7.14860323, 0.99285823, 0.99629684, 0.48904424],
     1340                             [- 6.15132996, - 0.00231056, 0.00139018, 7.14901940, 0.99286329, 0.99629926, 0.48905679],
     1341                             [- 6.15174321, - 0.00230900, 0.00138933, 7.14943421, 0.99286834, 0.99630166, 0.48906930],
     1342                             [- 6.15215510, - 0.00230744, 0.00138848, 7.14984766, 0.99287339, 0.99630407, 0.48908178],
     1343                             [- 6.15256564, - 0.00230589, 0.00138763, 7.15025975, 0.99287844, 0.99630648, 0.48909421],
     1344                             [- 6.15297483, - 0.00230433, 0.00138679, 7.15067050, 0.99288347, 0.99630888, 0.48910661],
     1345                             [- 6.15338268, - 0.00230278, 0.00138594, 7.15107989, 0.99288850, 0.99631128, 0.48911897],
     1346                             [- 6.15378918, - 0.00230123, 0.00138509, 7.15148795, 0.99289353, 0.99631368, 0.48913128],
     1347                             [- 6.15419435, - 0.00229968, 0.00138424, 7.15189467, 0.99289855, 0.99631607, 0.48914356],
     1348                             [- 6.15459818, - 0.00229814, 0.00138340, 7.15230005, 0.99290356, 0.99631847, 0.48915581],
     1349                             [- 6.15500069, - 0.00229659, 0.00138255, 7.15270410, 0.99290856, 0.99632086, 0.48916801],
     1350                             [- 6.15540187, - 0.00229505, 0.00138171, 7.15310682, 0.99291356, 0.99632324, 0.48918017],
     1351                             [- 6.15580173, - 0.00229350, 0.00138087, 7.15350822, 0.99291855, 0.99632563, 0.48919230],
     1352                             [- 6.15620027, - 0.00229196, 0.00138002, 7.15390831, 0.99292354, 0.99632801, 0.48920439],
     1353                             [- 6.15659750, - 0.00229042, 0.00137918, 7.15430708, 0.99292852, 0.99633040, 0.48921644],
     1354                             [- 6.15699342, - 0.00228889, 0.00137834, 7.15470454, 0.99293349, 0.99633278, 0.48922846],
     1355                             [- 6.15738804, - 0.00228735, 0.00137750, 7.15510069, 0.99293846, 0.99633515, 0.48924043],
     1356                             [- 6.15778136, - 0.00228582, 0.00137666, 7.15549554, 0.99294342, 0.99633753, 0.48925237],
     1357                             [- 6.15817338, - 0.00228429, 0.00137582, 7.15588909, 0.99294838, 0.99633990, 0.48926427],
     1358                             [- 6.15856410, - 0.00228276, 0.00137498, 7.15628135, 0.99295333, 0.99634227, 0.48927613],
     1359                             [- 6.15895354, - 0.00228123, 0.00137414, 7.15667231, 0.99295827, 0.99634464, 0.48928796],
     1360                             [- 6.15934170, - 0.00227970, 0.00137330, 7.15706199, 0.99296321, 0.99634700, 0.48929975],
     1361                             [- 6.15972857, - 0.00227818, 0.00137246, 7.15745039, 0.99296814, 0.99634936, 0.48931151],
     1362                             [- 6.16011416, - 0.00227665, 0.00137162, 7.15783751, 0.99297306, 0.99635172, 0.48932322],
     1363                             [- 6.16049848, - 0.00227513, 0.00137079, 7.15822335, 0.99297798, 0.99635408, 0.48933490],
     1364                             [- 6.16088154, - 0.00227361, 0.00136995, 7.15860793, 0.99298289, 0.99635644, 0.48934654],
     1365                             [- 6.16126332, - 0.00227209, 0.00136912, 7.15899123, 0.99298780, 0.99635879, 0.48935815],
     1366                             [- 6.16164385, - 0.00227057, 0.00136828, 7.15937328, 0.99299270, 0.99636114, 0.48936972],
     1367                             [- 6.16202312, - 0.00226906, 0.00136745, 7.15975406, 0.99299759, 0.99636349, 0.48938125],
     1368                             [- 6.16240113, - 0.00226754, 0.00136662, 7.16013359, 0.99300248, 0.99636584, 0.48939275],
     1369                             [- 6.16277790, - 0.00226603, 0.00136579, 7.16051186, 0.99300736, 0.99636818, 0.48940421],
     1370                             [- 6.16315341, - 0.00226452, 0.00136495, 7.16088889, 0.99301224, 0.99637052, 0.48941563],
     1371                             [- 6.16352769, - 0.00226301, 0.00136412, 7.16126468, 0.99301711, 0.99637286, 0.48942702],
     1372                             [- 6.16390073, - 0.00226151, 0.00136329, 7.16163922, 0.99302197, 0.99637520, 0.48943837],
     1373                             [- 6.16427253, - 0.00226000, 0.00136246, 7.16201253, 0.99302683, 0.99637753, 0.48944969],
     1374                             [- 6.16464310, - 0.00225850, 0.00136164, 7.16238461, 0.99303168, 0.99637987, 0.48946098],
     1375                             [- 6.16501245, - 0.00225700, 0.00136081, 7.16275545, 0.99303653, 0.99638220, 0.48947222],
     1376                             [- 6.16538057, - 0.00225549, 0.00135998, 7.16312507, 0.99304136, 0.99638453, 0.48948343],
     1377                             [- 6.16574747, - 0.00225400, 0.00135915, 7.16349348, 0.99304620, 0.99638685, 0.48949461],
     1378                             [- 6.16611316, - 0.00225250, 0.00135833, 7.16386066, 0.99305103, 0.99638918, 0.48950575],
     1379                             [- 6.16647763, - 0.00225100, 0.00135750, 7.16422663, 0.99305585, 0.99639150, 0.48951685],
     1380                             [- 6.16684090, - 0.00224951, 0.00135668, 7.16459139, 0.99306066, 0.99639382, 0.48952792],
     1381                             [- 6.16720296, - 0.00224802, 0.00135585, 7.16495494, 0.99306547, 0.99639613, 0.48953896],
     1382                             [- 6.16756382, - 0.00224653, 0.00135503, 7.16531729, 0.99307027, 0.99639845, 0.48954996],
     1383                             [- 6.16792348, - 0.00224504, 0.00135421, 7.16567845, 0.99307507, 0.99640076, 0.48956093],
     1384                             [- 6.16828195, - 0.00224355, 0.00135338, 7.16603840, 0.99307986, 0.99640307, 0.48957186],
     1385                             [- 6.16863923, - 0.00224206, 0.00135256, 7.16639717, 0.99308465, 0.99640538, 0.48958276],
     1386                             [- 6.16899533, - 0.00224058, 0.00135174, 7.16675475, 0.99308943, 0.99640768, 0.48959363],
     1387                             [- 6.16935024, - 0.00223910, 0.00135092, 7.16711114, 0.99309420, 0.99640998, 0.48960445],
     1388                             [- 6.16970397, - 0.00223762, 0.00135010, 7.16746636, 0.99309897, 0.99641228, 0.48961525],
     1389                             [- 6.17005653, - 0.00223614, 0.00134928, 7.16782039, 0.99310373, 0.99641458, 0.48962601],
     1390                             [- 6.17040791, - 0.00223466, 0.00134846, 7.16817326, 0.99310849, 0.99641688, 0.48963673],
     1391                             [- 6.17075813, - 0.00223318, 0.00134765, 7.16852495, 0.99311324, 0.99641917, 0.48964743],
     1392                             [- 6.17110719, - 0.00223171, 0.00134683, 7.16887548, 0.99311798, 0.99642146, 0.48965809],
     1393                             [- 6.17145508, - 0.00223024, 0.00134601, 7.16922484, 0.99312272, 0.99642375, 0.48966871],
     1394                             [- 6.17180182, - 0.00222876, 0.00134520, 7.16957305, 0.99312745, 0.99642604, 0.48967931],
     1395                             [- 6.17214740, - 0.00222729, 0.00134438, 7.16992010, 0.99313218, 0.99642832, 0.48968987],
     1396                             [- 6.17249183, - 0.00222583, 0.00134357, 7.17026601, 0.99313690, 0.99643061, 0.48970039],
     1397                             [- 6.17283512, - 0.00222436, 0.00134275, 7.17061076, 0.99314162, 0.99643289, 0.48971088],
     1398                             [- 6.17317726, - 0.00222289, 0.00134194, 7.17095437, 0.99314633, 0.99643517, 0.48972134],
     1399                             [- 6.17351827, - 0.00222143, 0.00134113, 7.17129683, 0.99315103, 0.99643744, 0.48973177],
     1400                             [- 6.17385813, - 0.00221997, 0.00134032, 7.17163816, 0.99315573, 0.99643971, 0.48974217],
     1401                             [- 6.17419687, - 0.00221851, 0.00133950, 7.17197836, 0.99316042, 0.99644199, 0.48975252],
     1402                             [- 6.17453448, - 0.00221705, 0.00133869, 7.17231743, 0.99316511, 0.99644425, 0.48976285],
     1403                             [- 6.17487096, - 0.00221559, 0.00133788, 7.17265537, 0.99316979, 0.99644652, 0.48977314],
     1404                             [- 6.17520632, - 0.00221414, 0.00133708, 7.17299218, 0.99317446, 0.99644879, 0.48978341],
     1405                             [- 6.17554056, - 0.00221269, 0.00133627, 7.17332788, 0.99317913, 0.99645105, 0.48979364],
     1406                             [- 6.17587369, - 0.00221123, 0.00133546, 7.17366246, 0.99318379, 0.99645331, 0.48980384],
     1407                             [- 6.17620571, - 0.00220978, 0.00133465, 7.17399593, 0.99318845, 0.99645557, 0.48981400],
     1408                             [- 6.17653662, - 0.00220833, 0.00133385, 7.17432829, 0.99319310, 0.99645782, 0.48982414],
     1409                             [- 6.17686642, - 0.00220689, 0.00133304, 7.17465954, 0.99319775, 0.99646007, 0.48983424],
     1410                             [- 6.17719513, - 0.00220544, 0.00133223, 7.17498969, 0.99320239, 0.99646233, 0.48984431],
     1411                             [- 6.17752273, - 0.00220400, 0.00133143, 7.17531874, 0.99320702, 0.99646457, 0.48985434],
     1412                             [- 6.17784925, - 0.00220255, 0.00133063, 7.17564669, 0.99321165, 0.99646682, 0.48986435],
     1413                             [- 6.17817467, - 0.00220111, 0.00132982, 7.17597356, 0.99321628, 0.99646906, 0.48987432],
     1414                             [- 6.17849900, - 0.00219967, 0.00132902, 7.17629933, 0.99322089, 0.99647131, 0.48988427],
     1415                             [- 6.17882225, - 0.00219823, 0.00132822, 7.17662402, 0.99322551, 0.99647355, 0.48989418],
     1416                             [- 6.17914442, - 0.00219680, 0.00132742, 7.17694762, 0.99323011, 0.99647578, 0.48990406],
     1417                             [- 6.17946552, - 0.00219536, 0.00132662, 7.17727015, 0.99323471, 0.99647802, 0.48991391],
     1418                             [- 6.17978554, - 0.00219393, 0.00132582, 7.17759161, 0.99323931, 0.99648025, 0.48992373],
     1419                             [- 6.18010448, - 0.00219250, 0.00132502, 7.17791199, 0.99324390, 0.99648248, 0.48993351],
     1420                             [- 6.18042237, - 0.00219107, 0.00132422, 7.17823130, 0.99324848, 0.99648471, 0.48994327],
     1421                             [- 6.18073919, - 0.00218964, 0.00132342, 7.17854955, 0.99325306, 0.99648694, 0.48995299],
     1422                             [- 6.18105494, - 0.00218821, 0.00132262, 7.17886673, 0.99325763, 0.99648916, 0.48996269],
     1423                             [- 6.18136964, - 0.00218679, 0.00132183, 7.17918286, 0.99326220, 0.99649139, 0.48997235],
     1424                             [- 6.18168329, - 0.00218536, 0.00132103, 7.17949793, 0.99326676, 0.99649361, 0.48998198],
     1425                             [- 6.18199589, - 0.00218394, 0.00132024, 7.17981195, 0.99327132, 0.99649582, 0.48999158],
     1426                             [- 6.18230744, - 0.00218252, 0.00131944, 7.18012492, 0.99327587, 0.99649804, 0.49000115],
     1427                             [- 6.18261795, - 0.00218110, 0.00131865, 7.18043684, 0.99328041, 0.99650025, 0.49001070],
     1428                             [- 6.18292741, - 0.00217968, 0.00131785, 7.18074773, 0.99328495, 0.99650246, 0.49002020],
     1429                             [- 6.18323584, - 0.00217827, 0.00131706, 7.18105757, 0.99328949, 0.99650467, 0.49002969],
     1430                             [- 6.18354323, - 0.00217685, 0.00131627, 7.18136638, 0.99329401, 0.99650688, 0.49003913],
     1431                             [- 6.18384960, - 0.00217544, 0.00131548, 7.18167416, 0.99329854, 0.99650908, 0.49004855],
     1432                             [- 6.18415493, - 0.00217403, 0.00131469, 7.18198091, 0.99330305, 0.99651129, 0.49005794],
     1433                             [- 6.18445924, - 0.00217262, 0.00131390, 7.18228663, 0.99330757, 0.99651349, 0.49006730],
     1434                             [- 6.18476253, - 0.00217121, 0.00131311, 7.18259133, 0.99331207, 0.99651568, 0.49007664],
     1435                             [- 6.18506481, - 0.00216980, 0.00131232, 7.18289501, 0.99331657, 0.99651788, 0.49008594],
     1436                             [- 6.18536606, - 0.00216840, 0.00131153, 7.18319767, 0.99332107, 0.99652007, 0.49009521],
     1437                             [- 6.18566631, - 0.00216699, 0.00131074, 7.18349932, 0.99332556, 0.99652226, 0.49010445],
     1438                             [- 6.18596555, - 0.00216559, 0.00130996, 7.18379996, 0.99333004, 0.99652445, 0.49011367],
     1439                             [- 6.18626378, - 0.00216419, 0.00130917, 7.18409959, 0.99333452, 0.99652664, 0.49012285],
     1440                             [- 6.18656101, - 0.00216279, 0.00130839, 7.18439822, 0.99333900, 0.99652882, 0.49013200],
     1441                             [- 6.18685724, - 0.00216139, 0.00130760, 7.18469585, 0.99334346, 0.99653101, 0.49014113],
     1442                             [- 6.18715248, - 0.00216000, 0.00130682, 7.18499249, 0.99334793, 0.99653319, 0.49015022],
     1443                             [- 6.18744673, - 0.00215860, 0.00130603, 7.18528812, 0.99335238, 0.99653537, 0.49015929],
     1444                             [- 6.18773998, - 0.00215721, 0.00130525, 7.18558277, 0.99335684, 0.99653754, 0.49016833],
     1445                             [- 6.18803225, - 0.00215582, 0.00130447, 7.18587643, 0.99336128, 0.99653972, 0.49017734],
     1446                             [- 6.18832353, - 0.00215443, 0.00130369, 7.18616911, 0.99336572, 0.99654189, 0.49018632],
     1447                             [- 6.18861384, - 0.00215304, 0.00130291, 7.18646080, 0.99337016, 0.99654406, 0.49019527],
     1448                             [- 6.18890316, - 0.00215165, 0.00130213, 7.18675152, 0.99337459, 0.99654622, 0.49020420],
     1449                             [- 6.18919152, - 0.00215026, 0.00130135, 7.18704125, 0.99337901, 0.99654839, 0.49021309],
     1450                             [- 6.18947890, - 0.00214888, 0.00130057, 7.18733002, 0.99338343, 0.99655055, 0.49022196],
     1451                             [- 6.18976532, - 0.00214750, 0.00129979, 7.18761782, 0.99338785, 0.99655271, 0.49023080],
     1452                             [- 6.19005077, - 0.00214612, 0.00129901, 7.18790465, 0.99339226, 0.99655487, 0.49023961],
     1453                             [- 6.19033526, - 0.00214474, 0.00129823, 7.18819052, 0.99339666, 0.99655703, 0.49024839],
     1454                             [- 6.19061879, - 0.00214336, 0.00129746, 7.18847543, 0.99340106, 0.99655918, 0.49025714],
     1455                             [- 6.19090136, - 0.00214198, 0.00129668, 7.18875938, 0.99340545, 0.99656134, 0.49026588],
     1456                             [- 6.19118298, - 0.00214061, 0.00129591, 7.18904238, 0.99340984, 0.99656349, 0.49027457],
     1457                             [- 6.19146366, - 0.00213923, 0.00129513, 7.18932442, 0.99341422, 0.99656563, 0.49028324],
     1458                             [- 6.19174338, - 0.00213786, 0.00129436, 7.18960552, 0.99341860, 0.99656778, 0.49029189],
     1459                             [- 6.19202217, - 0.00213649, 0.00129359, 7.18988568, 0.99342297, 0.99656992, 0.49030051],
     1460                             [- 6.19230001, - 0.00213512, 0.00129281, 7.19016489, 0.99342734, 0.99657207, 0.49030909],
     1461                             [- 6.19257691, - 0.00213375, 0.00129204, 7.19044316, 0.99343170, 0.99657421, 0.49031766],
     1462                             [- 6.19285288, - 0.00213239, 0.00129127, 7.19072050, 0.99343606, 0.99657634, 0.49032619],
     1463                             [- 6.19312792, - 0.00213102, 0.00129050, 7.19099690, 0.99344041, 0.99657848, 0.49033470],
     1464                             [- 6.19340203, - 0.00212966, 0.00128973, 7.19127237, 0.99344475, 0.99658061, 0.49034317],
     1465                             [- 6.19367521, - 0.00212830, 0.00128896, 7.19154692, 0.99344909, 0.99658274, 0.49035163],
     1466                             [- 6.19394748, - 0.00212694, 0.00128819, 7.19182054, 0.99345343, 0.99658487, 0.49036006],
     1467                             [- 6.19421882, - 0.00212558, 0.00128743, 7.19209324, 0.99345776, 0.99658700, 0.49036845],
     1468                             [- 6.19448924, - 0.00212422, 0.00128666, 7.19236502, 0.99346208, 0.99658912, 0.49037683],
     1469                             [- 6.19475875, - 0.00212286, 0.00128589, 7.19263589, 0.99346640, 0.99659124, 0.49038517],
     1470                             [- 6.19502735, - 0.00212151, 0.00128513, 7.19290584, 0.99347072, 0.99659336, 0.49039349],
     1471                             [- 6.19529504, - 0.00212016, 0.00128436, 7.19317489, 0.99347503, 0.99659548, 0.49040178],
     1472                             [- 6.19556183, - 0.00211880, 0.00128360, 7.19344302, 0.99347933, 0.99659760, 0.49041005],
     1473                             [- 6.19582771, - 0.00211745, 0.00128283, 7.19371026, 0.99348363, 0.99659971, 0.49041829],
     1474                             [- 6.19609270, - 0.00211611, 0.00128207, 7.19397659, 0.99348792, 0.99660182, 0.49042650],
     1475                             [- 6.19635678, - 0.00211476, 0.00128131, 7.19424203, 0.99349221, 0.99660393, 0.49043469],
     1476                             [- 6.19661998, - 0.00211341, 0.00128054, 7.19450656, 0.99349650, 0.99660604, 0.49044285],
     1477                             [- 6.19688228, - 0.00211207, 0.00127978, 7.19477021, 0.99350077, 0.99660815, 0.49045099],
     1478                             [- 6.19714369, - 0.00211073, 0.00127902, 7.19503297, 0.99350505, 0.99661025, 0.49045909],
     1479                             [- 6.19740422, - 0.00210938, 0.00127826, 7.19529484, 0.99350932, 0.99661235, 0.49046717],
     1480                             [- 6.19766387, - 0.00210804, 0.00127750, 7.19555583, 0.99351358, 0.99661445, 0.49047523],
     1481                             [- 6.19792264, - 0.00210671, 0.00127674, 7.19581593, 0.99351784, 0.99661655, 0.49048326],
     1482                             [- 6.19818053, - 0.00210537, 0.00127599, 7.19607516, 0.99352209, 0.99661864, 0.49049127],
     1483                             [- 6.19843754, - 0.00210403, 0.00127523, 7.19633351, 0.99352634, 0.99662074, 0.49049925],
     1484                             [- 6.19869369, - 0.00210270, 0.00127447, 7.19659099, 0.99353058, 0.99662283, 0.49050720],
     1485                             [- 6.19894896, - 0.00210137, 0.00127372, 7.19684760, 0.99353482, 0.99662492, 0.49051513],
     1486                             [- 6.19920337, - 0.00210004, 0.00127296, 7.19710334, 0.99353905, 0.99662700, 0.49052303],
     1487                             [- 6.19945692, - 0.00209871, 0.00127221, 7.19735822, 0.99354328, 0.99662909, 0.49053091],
     1488                             [- 6.19970961, - 0.00209738, 0.00127145, 7.19761223, 0.99354750, 0.99663117, 0.49053876],
     1489                             [- 6.19996144, - 0.00209605, 0.00127070, 7.19786539, 0.99355172, 0.99663325, 0.49054659],
     1490                             [- 6.20021242, - 0.00209473, 0.00126995, 7.19811769, 0.99355593, 0.99663533, 0.49055439],
     1491                             [- 6.20046254, - 0.00209340, 0.00126919, 7.19836914, 0.99356014, 0.99663741, 0.49056217],
     1492                             [- 6.20071181, - 0.00209208, 0.00126844, 7.19861973, 0.99356434, 0.99663948, 0.49056992],
     1493                             [- 6.20096024, - 0.00209076, 0.00126769, 7.19886948, 0.99356854, 0.99664155, 0.49057765],
     1494                             [- 6.20120782, - 0.00208944, 0.00126694, 7.19911839, 0.99357273, 0.99664362, 0.49058536],
     1495                             [- 6.20145457, - 0.00208812, 0.00126619, 7.19936645, 0.99357692, 0.99664569, 0.49059304],
     1496                             [- 6.20170047, - 0.00208680, 0.00126544, 7.19961367, 0.99358110, 0.99664776, 0.49060069],
     1497                             [- 6.20194554, - 0.00208549, 0.00126469, 7.19986005, 0.99358528, 0.99664982, 0.49060832],
     1498                             [- 6.20218978, - 0.00208417, 0.00126395, 7.20010560, 0.99358945, 0.99665188, 0.49061593],
     1499                             [- 6.20243318, - 0.00208286, 0.00126320, 7.20035032, 0.99359362, 0.99665394, 0.49062351],
     1500                             [- 6.20267576, - 0.00208155, 0.00126245, 7.20059421, 0.99359778, 0.99665600, 0.49063106],
     1501                             [- 6.20291751, - 0.00208024, 0.00126171, 7.20083727, 0.99360194, 0.99665805, 0.49063859],
     1502                             [- 6.20315844, - 0.00207893, 0.00126096, 7.20107951, 0.99360609, 0.99666011, 0.49064611],
     1503                             [- 6.20339855, - 0.00207762, 0.00126022, 7.20132093, 0.99361024, 0.99666216, 0.49065358],
     1504                             [- 6.20363785, - 0.00207632, 0.00125947, 7.20156153, 0.99361438, 0.99666421, 0.49066104],
     1505                             [- 6.20387633, - 0.00207501, 0.00125873, 7.20180131, 0.99361852, 0.99666626, 0.49066848],
     1506                             [- 6.20411399, - 0.00207371, 0.00125799, 7.20204028, 0.99362265, 0.99666830, 0.49067589],
     1507                             [- 6.20435085, - 0.00207241, 0.00125725, 7.20227844, 0.99362678, 0.99667034, 0.49068328],
     1508                             [- 6.20458690, - 0.00207111, 0.00125650, 7.20251579, 0.99363090, 0.99667238, 0.49069064],
     1509                             [- 6.20482215, - 0.00206981, 0.00125576, 7.20275234, 0.99363502, 0.99667442, 0.49069799],
     1510                             [- 6.20505660, - 0.00206852, 0.00125502, 7.20298808, 0.99363914, 0.99667646, 0.49070530],
     1511                             [- 6.20529024, - 0.00206722, 0.00125428, 7.20322302, 0.99364325, 0.99667850, 0.49071260],
     1512                             [- 6.20552310, - 0.00206593, 0.00125355, 7.20345717, 0.99364735, 0.99668053, 0.49071987],
     1513                             [- 6.20575515, - 0.00206463, 0.00125281, 7.20369052, 0.99365145, 0.99668256, 0.49072711],
     1514                             [- 6.20598642, - 0.00206334, 0.00125207, 7.20392308, 0.99365554, 0.99668459, 0.49073434],
     1515                             [- 6.20621690, - 0.00206205, 0.00125133, 7.20415485, 0.99365963, 0.99668662, 0.49074154],
     1516                             [- 6.20644659, - 0.00206076, 0.00125060, 7.20438583, 0.99366372, 0.99668864, 0.49074872],
     1517                             [- 6.20667550, - 0.00205947, 0.00124986, 7.20461602, 0.99366780, 0.99669066, 0.49075587],
     1518                             [- 6.20690362, - 0.00205819, 0.00124913, 7.20484543, 0.99367187, 0.99669268, 0.49076300],
     1519                             [- 6.20713097, - 0.00205690, 0.00124839, 7.20507407, 0.99367594, 0.99669470, 0.49077011],
     1520                             [- 6.20735754, - 0.00205562, 0.00124766, 7.20530192, 0.99368001, 0.99669672, 0.49077720],
     1521                             [- 6.20758334, - 0.00205434, 0.00124693, 7.20552900, 0.99368407, 0.99669873, 0.49078426],
     1522                             [- 6.20780837, - 0.00205306, 0.00124619, 7.20575531, 0.99368812, 0.99670075, 0.49079130],
     1523                             [- 6.20803263, - 0.00205178, 0.00124546, 7.20598085, 0.99369217, 0.99670276, 0.49079832],
     1524                             [- 6.20825612, - 0.00205050, 0.00124473, 7.20620562, 0.99369622, 0.99670477, 0.49080531],
     1525                             [- 6.20847885, - 0.00204923, 0.00124400, 7.20642963, 0.99370026, 0.99670677, 0.49081228],
     1526                             [- 6.20870082, - 0.00204795, 0.00124327, 7.20665287, 0.99370430, 0.99670878, 0.49081924],
     1527                             [- 6.20892203, - 0.00204668, 0.00124254, 7.20687536, 0.99370833, 0.99671078, 0.49082617],
     1528                             [- 6.20914249, - 0.00204540, 0.00124181, 7.20709708, 0.99371236, 0.99671278, 0.49083307],
     1529                             [- 6.20936219, - 0.00204413, 0.00124109, 7.20731805, 0.99371638, 0.99671478, 0.49083996],
     1530                             [- 6.20958114, - 0.00204286, 0.00124036, 7.20753827, 0.99372040, 0.99671678, 0.49084681],
     1531                             [- 6.20979934, - 0.00204160, 0.00123963, 7.20775774, 0.99372441, 0.99671877, 0.49085365],
     1532                             [- 6.21001679, - 0.00204033, 0.00123891, 7.20797646, 0.99372842, 0.99672076, 0.49086047],
     1533                             [- 6.21023350, - 0.00203906, 0.00123818, 7.20819444, 0.99373242, 0.99672275, 0.49086727],
     1534                             [- 6.21044947, - 0.00203780, 0.00123746, 7.20841167, 0.99373642, 0.99672474, 0.49087404],
     1535                             [- 6.21066470, - 0.00203654, 0.00123673, 7.20862816, 0.99374042, 0.99672673, 0.49088079],
     1536                             [- 6.21087920, - 0.00203528, 0.00123601, 7.20884392, 0.99374441, 0.99672871, 0.49088752],
     1537                             [- 6.21109295, - 0.00203402, 0.00123529, 7.20905894, 0.99374839, 0.99673070, 0.49089423],
     1538                             [- 6.21130598, - 0.00203276, 0.00123456, 7.20927322, 0.99375237, 0.99673268, 0.49090092],
     1539                             [- 6.21151828, - 0.00203150, 0.00123384, 7.20948678, 0.99375635, 0.99673466, 0.49090759],
     1540                             [- 6.21172985, - 0.00203024, 0.00123312, 7.20969960, 0.99376032, 0.99673663, 0.49091423],
     1541                             [- 6.21194069, - 0.00202899, 0.00123240, 7.20991170, 0.99376428, 0.99673861, 0.49092085],
     1542                             [- 6.21215082, - 0.00202774, 0.00123168, 7.21012308, 0.99376825, 0.99674058, 0.49092745],
     1543                             [- 6.21236022, - 0.00202648, 0.00123096, 7.21033373, 0.99377220, 0.99674255, 0.49093403],
     1544                             [- 6.21256890, - 0.00202523, 0.00123025, 7.21054367, 0.99377616, 0.99674452, 0.49094059],
     1545                             [- 6.21277687, - 0.00202398, 0.00122953, 7.21075289, 0.99378010, 0.99674649, 0.49094712],
     1546                             [- 6.21298413, - 0.00202274, 0.00122881, 7.21096139, 0.99378405, 0.99674845, 0.49095364],
     1547                             [- 6.21319067, - 0.00202149, 0.00122809, 7.21116918, 0.99378798, 0.99675042, 0.49096013],
     1548                             [- 6.21339651, - 0.00202025, 0.00122738, 7.21137627, 0.99379192, 0.99675238, 0.49096661],
     1549                             [- 6.21360164, - 0.00201900, 0.00122666, 7.21158264, 0.99379585, 0.99675434, 0.49097306],
     1550                             [- 6.21380607, - 0.00201776, 0.00122595, 7.21178831, 0.99379977, 0.99675629, 0.49097950],
     1551                             [- 6.21400979, - 0.00201652, 0.00122523, 7.21199328, 0.99380369, 0.99675825, 0.49098591],
     1552                             [- 6.21421282, - 0.00201528, 0.00122452, 7.21219754, 0.99380761, 0.99676020, 0.49099230],
     1553                             [- 6.21441515, - 0.00201404, 0.00122381, 7.21240111, 0.99381152, 0.99676215, 0.49099867],
     1554                             [- 6.21461678, - 0.00201280, 0.00122310, 7.21260398, 0.99381543, 0.99676410, 0.49100502],
     1555                             [- 6.21481773, - 0.00201157, 0.00122239, 7.21280616, 0.99381933, 0.99676605, 0.49101135],
     1556                             [- 6.21501798, - 0.00201033, 0.00122167, 7.21300765, 0.99382323, 0.99676799, 0.49101767],
     1557                             [- 6.21521754, - 0.00200910, 0.00122096, 7.21320844, 0.99382712, 0.99676994, 0.49102395],
     1558                             [- 6.21541642, - 0.00200787, 0.00122026, 7.21340855, 0.99383101, 0.99677188, 0.49103022],
     1559                             [- 6.21561461, - 0.00200664, 0.00121955, 7.21360798, 0.99383489, 0.99677382, 0.49103647],
     1560                             [- 6.21581213, - 0.00200541, 0.00121884, 7.21380672, 0.99383877, 0.99677575, 0.49104269],
     1561                             [- 6.21600896, - 0.00200418, 0.00121813, 7.21400478, 0.99384265, 0.99677769, 0.49104891],
     1562                             [- 6.21620512, - 0.00200295, 0.00121742, 7.21420217, 0.99384652, 0.99677962, 0.49105509],
     1563                             [- 6.21640060, - 0.00200173, 0.00121672, 7.21439887, 0.99385038, 0.99678156, 0.49106126],
     1564                             [- 6.21659541, - 0.00200050, 0.00121601, 7.21459491, 0.99385424, 0.99678349, 0.49106741],
     1565                             [- 6.21678955, - 0.00199928, 0.00121531, 7.21479027, 0.99385810, 0.99678541, 0.49107353],
     1566                             [- 6.21698302, - 0.00199806, 0.00121460, 7.21498497, 0.99386195, 0.99678734, 0.49107964],
     1567                             [- 6.21717583, - 0.00199684, 0.00121390, 7.21517899, 0.99386580, 0.99678926, 0.49108574],
     1568                             [- 6.21736797, - 0.00199562, 0.00121320, 7.21537235, 0.99386965, 0.99679119, 0.49109180],
     1569                             [- 6.21755945, - 0.00199440, 0.00121249, 7.21556505, 0.99387349, 0.99679311, 0.49109786],
     1570                             [- 6.21775028, - 0.00199319, 0.00121179, 7.21575709, 0.99387732, 0.99679502, 0.49110388],
     1571                             [- 6.21794044, - 0.00199197, 0.00121109, 7.21594847, 0.99388115, 0.99679694, 0.49110989],
     1572                             [- 6.21812995, - 0.00199076, 0.00121039, 7.21613919, 0.99388498, 0.99679885, 0.49111588],
     1573                             [- 6.21831881, - 0.00198955, 0.00120969, 7.21632926, 0.99388880, 0.99680077, 0.49112186],
     1574                             [- 6.21850702, - 0.00198833, 0.00120899, 7.21651868, 0.99389261, 0.99680268, 0.49112781],
     1575                             [- 6.21869457, - 0.00198712, 0.00120829, 7.21670745, 0.99389643, 0.99680459, 0.49113374],
     1576                             [- 6.21888149, - 0.00198592, 0.00120759, 7.21689557, 0.99390024, 0.99680649, 0.49113965],
     1577                             [- 6.21906775, - 0.00198471, 0.00120689, 7.21708304, 0.99390404, 0.99680840, 0.49114555],
     1578                             [- 6.21925338, - 0.00198350, 0.00120620, 7.21726987, 0.99390784, 0.99681030, 0.49115142],
     1579                             [- 6.21943836, - 0.00198230, 0.00120550, 7.21745606, 0.99391163, 0.99681220, 0.49115728],
     1580                             [- 6.21962271, - 0.00198110, 0.00120481, 7.21764161, 0.99391542, 0.99681410, 0.49116312],
     1581                             [- 6.21980642, - 0.00197989, 0.00120411, 7.21782653, 0.99391921, 0.99681600, 0.49116895],
     1582                             [- 6.21998950, - 0.00197869, 0.00120342, 7.21801081, 0.99392299, 0.99681789, 0.49117474],
     1583                             [- 6.22017194, - 0.00197749, 0.00120272, 7.21819445, 0.99392677, 0.99681979, 0.49118052],
     1584                             [- 6.22035376, - 0.00197630, 0.00120203, 7.21837746, 0.99393054, 0.99682168, 0.49118629],
     1585                             [- 6.22053495, - 0.00197510, 0.00120134, 7.21855985, 0.99393431, 0.99682357, 0.49119203],
     1586                             [- 6.22071551, - 0.00197390, 0.00120064, 7.21874161, 0.99393808, 0.99682545, 0.49119776],
     1587                             [- 6.22089545, - 0.00197271, 0.00119995, 7.21892274, 0.99394184, 0.99682734, 0.49120347],
     1588                             [- 6.22107477, - 0.00197152, 0.00119926, 7.21910325, 0.99394559, 0.99682922, 0.49120916],
     1589                             [- 6.22125347, - 0.00197032, 0.00119857, 7.21928314, 0.99394935, 0.99683111, 0.49121482],
     1590                             [- 6.22143155, - 0.00196913, 0.00119788, 7.21946242, 0.99395309, 0.99683299, 0.49122047],
     1591                             [- 6.22160902, - 0.00196794, 0.00119719, 7.21964107, 0.99395684, 0.99683486, 0.49122611],
     1592                             [- 6.22178587, - 0.00196676, 0.00119650, 7.21981911, 0.99396058, 0.99683674, 0.49123173],
     1593                             [- 6.22196211, - 0.00196557, 0.00119582, 7.21999654, 0.99396431, 0.99683861, 0.49123732],
     1594                             [- 6.22213774, - 0.00196438, 0.00119513, 7.22017336, 0.99396804, 0.99684049, 0.49124290],
     1595                             [- 6.22231277, - 0.00196320, 0.00119444, 7.22034957, 0.99397177, 0.99684236, 0.49124846],
     1596                             [- 6.22248719, - 0.00196202, 0.00119376, 7.22052517, 0.99397549, 0.99684423, 0.49125400],
     1597                             [- 6.22266101, - 0.00196083, 0.00119307, 7.22070017, 0.99397920, 0.99684609, 0.49125953],
     1598                             [- 6.22283422, - 0.00195965, 0.00119239, 7.22087457, 0.99398292, 0.99684796, 0.49126504],
     1599                             [- 6.22300684, - 0.00195848, 0.00119170, 7.22104836, 0.99398663, 0.99684982, 0.49127053],
     1600                             [- 6.22317886, - 0.00195730, 0.00119102, 7.22122156, 0.99399033, 0.99685168, 0.49127600],
     1601                             [- 6.22335028, - 0.00195612, 0.00119034, 7.22139416, 0.99399403, 0.99685354, 0.49128145],
     1602                             [- 6.22352111, - 0.00195495, 0.00118965, 7.22156617, 0.99399773, 0.99685540, 0.49128689],
     1603                             [- 6.22369135, - 0.00195377, 0.00118897, 7.22173758, 0.99400142, 0.99685726, 0.49129231],
     1604                             [- 6.22386100, - 0.00195260, 0.00118829, 7.22190841, 0.99400511, 0.99685911, 0.49129771],
     1605                             [- 6.22403007, - 0.00195143, 0.00118761, 7.22207864, 0.99400879, 0.99686096, 0.49130310],
     1606                             [- 6.22419854, - 0.00195026, 0.00118693, 7.22224829, 0.99401247, 0.99686281, 0.49130846],
     1607                             [- 6.22436644, - 0.00194909, 0.00118625, 7.22241735, 0.99401615, 0.99686466, 0.49131381],
     1608                             [- 6.22453375, - 0.00194792, 0.00118557, 7.22258583, 0.99401982, 0.99686651, 0.49131914],
     1609                             [- 6.22470048, - 0.00194675, 0.00118490, 7.22275373, 0.99402348, 0.99686835, 0.49132446],
     1610                             [- 6.22486664, - 0.00194559, 0.00118422, 7.22292105, 0.99402715, 0.99687019, 0.49132975],
     1611                             [- 6.22503222, - 0.00194442, 0.00118354, 7.22308780, 0.99403081, 0.99687204, 0.49133503],
     1612                             [- 6.22519722, - 0.00194326, 0.00118287, 7.22325396, 0.99403446, 0.99687387, 0.49134030],
     1613                             [- 6.22536166, - 0.00194210, 0.00118219, 7.22341956, 0.99403811, 0.99687571, 0.49134554],
     1614                             [- 6.22552552, - 0.00194094, 0.00118152, 7.22358458, 0.99404176, 0.99687755, 0.49135077],
     1615                             [- 6.22568881, - 0.00193978, 0.00118084, 7.22374904, 0.99404540, 0.99687938, 0.49135598],
     1616                             [- 6.22585154, - 0.00193862, 0.00118017, 7.22391292, 0.99404904, 0.99688121, 0.49136117],
     1617                             [- 6.22601370, - 0.00193746, 0.00117950, 7.22407624, 0.99405267, 0.99688304, 0.49136635],
     1618                             [- 6.22617531, - 0.00193631, 0.00117882, 7.22423900, 0.99405630, 0.99688487, 0.49137152],
     1619                             [- 6.22633635, - 0.00193515, 0.00117815, 7.22440119, 0.99405992, 0.99688670, 0.49137666],
     1620                             [- 6.22649683, - 0.00193400, 0.00117748, 7.22456283, 0.99406354, 0.99688852, 0.49138179],
     1621                             [- 6.22665675, - 0.00193285, 0.00117681, 7.22472390, 0.99406716, 0.99689034, 0.49138690],
     1622                             [- 6.22681612, - 0.00193170, 0.00117614, 7.22488442, 0.99407077, 0.99689216, 0.49139199],
     1623                             [- 6.22697494, - 0.00193055, 0.00117547, 7.22504439, 0.99407438, 0.99689398, 0.49139707],
     1624                             [- 6.22713320, - 0.00192940, 0.00117480, 7.22520380, 0.99407799, 0.99689580, 0.49140214],
     1625                             [- 6.22729092, - 0.00192825, 0.00117413, 7.22536266, 0.99408159, 0.99689762, 0.49140718],
     1626                             [- 6.22744808, - 0.00192711, 0.00117346, 7.22552098, 0.99408519, 0.99689943, 0.49141221],
     1627                             [- 6.22760470, - 0.00192596, 0.00117280, 7.22567874, 0.99408878, 0.99690124, 0.49141723],
     1628                             [- 6.22776078, - 0.00192482, 0.00117213, 7.22583596, 0.99409237, 0.99690305, 0.49142222],
     1629                             [- 6.22791631, - 0.00192368, 0.00117147, 7.22599264, 0.99409595, 0.99690486, 0.49142719],
     1630                             [- 6.22807131, - 0.00192253, 0.00117080, 7.22614877, 0.99409953, 0.99690667, 0.49143216],
     1631                             [- 6.22822576, - 0.00192139, 0.00117014, 7.22630437, 0.99410311, 0.99690847, 0.49143711],
     1632                             [- 6.22837968, - 0.00192026, 0.00116947, 7.22645942, 0.99410668, 0.99691027, 0.49144204],
     1633                             [- 6.22853306, - 0.00191912, 0.00116881, 7.22661394, 0.99411025, 0.99691207, 0.49144696],
     1634                             [- 6.22868591, - 0.00191798, 0.00116815, 7.22676793, 0.99411381, 0.99691387, 0.49145186],
     1635                             [- 6.22883823, - 0.00191685, 0.00116748, 7.22692138, 0.99411737, 0.99691567, 0.49145674],
     1636                             [- 6.22899002, - 0.00191571, 0.00116682, 7.22707430, 0.99412093, 0.99691747, 0.49146161],
     1637                             [- 6.22914128, - 0.00191458, 0.00116616, 7.22722670, 0.99412448, 0.99691926, 0.49146647],
     1638                             [- 6.22929201, - 0.00191345, 0.00116550, 7.22737856, 0.99412803, 0.99692105, 0.49147130],
     1639                             [- 6.22944222, - 0.00191232, 0.00116484, 7.22752990, 0.99413157, 0.99692284, 0.49147613],
     1640                             [- 6.22959190, - 0.00191119, 0.00116418, 7.22768071, 0.99413511, 0.99692463, 0.49148093],
     1641                             [- 6.22974107, - 0.00191006, 0.00116352, 7.22783101, 0.99413865, 0.99692642, 0.49148571],
     1642                             [- 6.22988971, - 0.00190893, 0.00116286, 7.22798078, 0.99414218, 0.99692820, 0.49149049],
     1643                             [- 6.23003784, - 0.00190781, 0.00116221, 7.22813003, 0.99414571, 0.99692998, 0.49149525],
     1644                             [- 6.23018545, - 0.00190669, 0.00116155, 7.22827877, 0.99414924, 0.99693176, 0.49149999],
     1645                             [- 6.23033255, - 0.00190556, 0.00116089, 7.22842699, 0.99415276, 0.99693354, 0.49150472],
     1646                             [- 6.23047913, - 0.00190444, 0.00116024, 7.22857469, 0.99415627, 0.99693532, 0.49150944],
     1647                             [- 6.23062521, - 0.00190332, 0.00115958, 7.22872189, 0.99415978, 0.99693710, 0.49151413],
     1648                             [- 6.23077077, - 0.00190220, 0.00115893, 7.22886857, 0.99416329, 0.99693887, 0.49151881],
     1649                             [- 6.23091583, - 0.00190108, 0.00115828, 7.22901475, 0.99416680, 0.99694064, 0.49152348],
     1650                             [- 6.23106038, - 0.00189996, 0.00115762, 7.22916042, 0.99417030, 0.99694241, 0.49152813],
     1651                             [- 6.23120443, - 0.00189885, 0.00115697, 7.22930558, 0.99417379, 0.99694418, 0.49153277],
     1652                             [- 6.23134798, - 0.00189773, 0.00115632, 7.22945024, 0.99417729, 0.99694595, 0.49153739],
     1653                             [- 6.23149102, - 0.00189662, 0.00115567, 7.22959440, 0.99418078, 0.99694772, 0.49154200],
     1654                             [- 6.23163357, - 0.00189551, 0.00115501, 7.22973806, 0.99418426, 0.99694948, 0.49154659],
     1655                             [- 6.23177562, - 0.00189439, 0.00115436, 7.22988122, 0.99418774, 0.99695124, 0.49155116],
     1656                             [- 6.23191717, - 0.00189328, 0.00115371, 7.23002389, 0.99419122, 0.99695300, 0.49155572],
     1657                             [- 6.23205823, - 0.00189218, 0.00115307, 7.23016606, 0.99419469, 0.99695476, 0.49156028],
     1658                             [- 6.23219880, - 0.00189107, 0.00115242, 7.23030773, 0.99419816, 0.99695652, 0.49156481],
     1659                             [- 6.23233888, - 0.00188996, 0.00115177, 7.23044891, 0.99420163, 0.99695827, 0.49156932],
     1660                             [- 6.23247846, - 0.00188886, 0.00115112, 7.23058961, 0.99420509, 0.99696002, 0.49157383],
     1661                             [- 6.23261756, - 0.00188775, 0.00115047, 7.23072981, 0.99420855, 0.99696177, 0.49157832],
     1662                             [- 6.23275618, - 0.00188665, 0.00114983, 7.23086953, 0.99421200, 0.99696352, 0.49158279],
     1663                             [- 6.23289431, - 0.00188555, 0.00114918, 7.23100876, 0.99421545, 0.99696527, 0.49158725],
     1664                             [- 6.23303196, - 0.00188444, 0.00114854, 7.23114751, 0.99421890, 0.99696702, 0.49159170],
     1665                             [- 6.23316912, - 0.00188334, 0.00114789, 7.23128578, 0.99422234, 0.99696876, 0.49159612],
     1666                             [- 6.23330581, - 0.00188225, 0.00114725, 7.23142357, 0.99422578, 0.99697050, 0.49160053],
     1667                             [- 6.23344202, - 0.00188115, 0.00114661, 7.23156087, 0.99422921, 0.99697225, 0.49160494],
     1668                             [- 6.23357776, - 0.00188005, 0.00114596, 7.23169771, 0.99423264, 0.99697398, 0.49160932],
     1669                             [- 6.23371302, - 0.00187896, 0.00114532, 7.23183406, 0.99423607, 0.99697572, 0.49161370],
     1670                             [- 6.23384781, - 0.00187786, 0.00114468, 7.23196994, 0.99423949, 0.99697746, 0.49161806],
     1671                             [- 6.23398212, - 0.00187677, 0.00114404, 7.23210535, 0.99424291, 0.99697919, 0.49162241],
     1672                             [- 6.23411597, - 0.00187568, 0.00114340, 7.23224029, 0.99424633, 0.99698092, 0.49162674],
     1673                             [- 6.23424935, - 0.00187459, 0.00114276, 7.23237476, 0.99424974, 0.99698265, 0.49163105],
     1674                             [- 6.23438226, - 0.00187350, 0.00114212, 7.23250876, 0.99425315, 0.99698438, 0.49163535],
     1675                             [- 6.23451471, - 0.00187241, 0.00114148, 7.23264230, 0.99425655, 0.99698611, 0.49163964],
     1676                             [- 6.23464669, - 0.00187132, 0.00114084, 7.23277537, 0.99425995, 0.99698783, 0.49164392],
     1677                             [- 6.23477821, - 0.00187024, 0.00114021, 7.23290797, 0.99426335, 0.99698956, 0.49164818],
     1678                             [- 6.23490927, - 0.00186915, 0.00113957, 7.23304012, 0.99426674, 0.99699128, 0.49165242],
     1679                             [- 6.23503988, - 0.00186807, 0.00113893, 7.23317181, 0.99427013, 0.99699300, 0.49165666],
     1680                             [- 6.23517002, - 0.00186698, 0.00113830, 7.23330304, 0.99427352, 0.99699472, 0.49166087],
     1681                             [- 6.23529971, - 0.00186590, 0.00113766, 7.23343381, 0.99427690, 0.99699644, 0.49166508],
     1682                             [- 6.23542895, - 0.00186482, 0.00113703, 7.23356413, 0.99428028, 0.99699815, 0.49166927],
     1683                             [- 6.23555773, - 0.00186374, 0.00113639, 7.23369399, 0.99428365, 0.99699986, 0.49167345],
     1684                             [- 6.23568606, - 0.00186267, 0.00113576, 7.23382340, 0.99428702, 0.99700157, 0.49167762],
     1685                             [- 6.23581395, - 0.00186159, 0.00113513, 7.23395236, 0.99429039, 0.99700328, 0.49168176],
     1686                             [- 6.23594138, - 0.00186051, 0.00113449, 7.23408087, 0.99429375, 0.99700499, 0.49168591],
     1687                             [- 6.23606837, - 0.00185944, 0.00113386, 7.23420893, 0.99429711, 0.99700670, 0.49169003],
     1688                             [- 6.23619491, - 0.00185836, 0.00113323, 7.23433655, 0.99430047, 0.99700840, 0.49169415],
     1689                             [- 6.23632102, - 0.00185729, 0.00113260, 7.23446372, 0.99430382, 0.99701011, 0.49169823],
     1690                             [- 6.23644667, - 0.00185622, 0.00113197, 7.23459045, 0.99430717, 0.99701181, 0.49170232],
     1691                             [- 6.23657189, - 0.00185515, 0.00113134, 7.23471674, 0.99431051, 0.99701351, 0.49170640],
     1692                             [- 6.23669667, - 0.00185408, 0.00113071, 7.23484259, 0.99431385, 0.99701521, 0.49171044],
     1693                             [- 6.23682101, - 0.00185301, 0.00113009, 7.23496800, 0.99431719, 0.99701690, 0.49171449],
     1694                             [- 6.23694492, - 0.00185195, 0.00112946, 7.23509297, 0.99432052, 0.99701860, 0.49171853],
     1695                             [- 6.23706839, - 0.00185088, 0.00112883, 7.23521751, 0.99432385, 0.99702029, 0.49172254],
     1696                             [- 6.23719143, - 0.00184981, 0.00112820, 7.23534161, 0.99432718, 0.99702198, 0.49172655],
     1697                             [- 6.23731403, - 0.00184875, 0.00112758, 7.23546528, 0.99433050, 0.99702367, 0.49173054],
     1698                             [- 6.23743621, - 0.00184769, 0.00112695, 7.23558852, 0.99433382, 0.99702536, 0.49173452],
     1699                             [- 6.23755795, - 0.00184663, 0.00112633, 7.23571133, 0.99433713, 0.99702705, 0.49173848],
     1700                             [- 6.23767927, - 0.00184557, 0.00112570, 7.23583371, 0.99434044, 0.99702873, 0.49174243],
     1701                             [- 6.23780017, - 0.00184451, 0.00112508, 7.23595566, 0.99434375, 0.99703041, 0.49174639],
     1702                             [- 6.23792064, - 0.00184345, 0.00112446, 7.23607719, 0.99434706, 0.99703209, 0.49175031],
     1703                             [- 6.23804068, - 0.00184239, 0.00112383, 7.23619829, 0.99435036, 0.99703377, 0.49175422],
     1704                             [- 6.23816031, - 0.00184134, 0.00112321, 7.23631897, 0.99435365, 0.99703545, 0.49175813],
     1705                             [- 6.23827952, - 0.00184028, 0.00112259, 7.23643923, 0.99435695, 0.99703713, 0.49176201],
     1706                             [- 6.23839830, - 0.00183923, 0.00112197, 7.23655907, 0.99436024, 0.99703880, 0.49176589],
     1707                             [- 6.23851667, - 0.00183817, 0.00112135, 7.23667850, 0.99436352, 0.99704048, 0.49176975],
     1708                             [- 6.23863462, - 0.00183712, 0.00112073, 7.23679750, 0.99436680, 0.99704215, 0.49177361],
     1709                             [- 6.23875216, - 0.00183607, 0.00112011, 7.23691609, 0.99437008, 0.99704382, 0.49177744],
     1710                             [- 6.23886929, - 0.00183502, 0.00111949, 7.23703427, 0.99437336, 0.99704548, 0.49178127],
     1711                             [- 6.23898600, - 0.00183398, 0.00111887, 7.23715203, 0.99437663, 0.99704715, 0.49178508],
     1712                             [- 6.23910231, - 0.00183293, 0.00111826, 7.23726938, 0.99437990, 0.99704881, 0.49178889],
     1713                             [- 6.23921820, - 0.00183188, 0.00111764, 7.23738632, 0.99438316, 0.99705048, 0.49179268],
     1714                             [- 6.23933369, - 0.00183084, 0.00111702, 7.23750286, 0.99438642, 0.99705214, 0.49179645],
     1715                             [- 6.23944877, - 0.00182979, 0.00111641, 7.23761898, 0.99438968, 0.99705380, 0.49180022],
     1716                             [- 6.23956345, - 0.00182875, 0.00111579, 7.23773470, 0.99439293, 0.99705546, 0.49180397],
     1717                             [- 6.23967773, - 0.00182771, 0.00111518, 7.23785002, 0.99439618, 0.99705711, 0.49180771],
     1718                             [- 6.23979160, - 0.00182667, 0.00111456, 7.23796493, 0.99439943, 0.99705877, 0.49181144],
     1719                             [- 6.23990507, - 0.00182563, 0.00111395, 7.23807944, 0.99440267, 0.99706042, 0.49181516],
     1720                             [- 6.24001814, - 0.00182459, 0.00111334, 7.23819355, 0.99440591, 0.99706207, 0.49181886],
     1721                             [- 6.24013082, - 0.00182355, 0.00111273, 7.23830726, 0.99440915, 0.99706372, 0.49182255],
     1722                             [- 6.24024309, - 0.00182251, 0.00111211, 7.23842058, 0.99441238, 0.99706537, 0.49182623],
     1723                             [- 6.24035498, - 0.00182148, 0.00111150, 7.23853350, 0.99441561, 0.99706702, 0.49182990],
     1724                             [- 6.24046647, - 0.00182045, 0.00111089, 7.23864602, 0.99441884, 0.99706866, 0.49183355],
     1725                             [- 6.24057756, - 0.00181941, 0.00111028, 7.23875815, 0.99442206, 0.99707031, 0.49183719],
     1726                             [- 6.24068827, - 0.00181838, 0.00110967, 7.23886989, 0.99442528, 0.99707195, 0.49184083],
     1727                             [- 6.24079858, - 0.00181735, 0.00110906, 7.23898123, 0.99442849, 0.99707359, 0.49184446],
     1728                             [- 6.24090851, - 0.00181632, 0.00110846, 7.23909219, 0.99443170, 0.99707523, 0.49184806],
     1729                             [- 6.24101805, - 0.00181529, 0.00110785, 7.23920276, 0.99443491, 0.99707686, 0.49185165],
     1730                             [- 6.24112720, - 0.00181426, 0.00110724, 7.23931294, 0.99443812, 0.99707850, 0.49185524],
     1731                             [- 6.24123597, - 0.00181324, 0.00110663, 7.23942274, 0.99444132, 0.99708013, 0.49185881],
     1732                             [- 6.24134436, - 0.00181221, 0.00110603, 7.23953215, 0.99444451, 0.99708176, 0.49186237],
     1733                             [- 6.24145237, - 0.00181118, 0.00110542, 7.23964118, 0.99444771, 0.99708339, 0.49186593],
     1734                             [- 6.24155999, - 0.00181016, 0.00110482, 7.23974983, 0.99445090, 0.99708502, 0.49186947],
     1735                             [- 6.24166723, - 0.00180914, 0.00110421, 7.23985810, 0.99445408, 0.99708665, 0.49187299],
     1736                             [- 6.24177410, - 0.00180812, 0.00110361, 7.23996598, 0.99445727, 0.99708828, 0.49187651],
     1737                             [- 6.24188059, - 0.00180710, 0.00110300, 7.24007349, 0.99446045, 0.99708990, 0.49188001],
     1738                             [- 6.24198671, - 0.00180608, 0.00110240, 7.24018063, 0.99446363, 0.99709152, 0.49188351],
     1739                             [- 6.24209245, - 0.00180506, 0.00110180, 7.24028739, 0.99446680, 0.99709314, 0.49188699],
     1740                             [- 6.24219781, - 0.00180404, 0.00110120, 7.24039377, 0.99446997, 0.99709476, 0.49189046],
     1741                             [- 6.24230281, - 0.00180302, 0.00110060, 7.24049978, 0.99447313, 0.99709638, 0.49189392],
     1742                             [- 6.24240743, - 0.00180201, 0.00110000, 7.24060543, 0.99447630, 0.99709800, 0.49189737],
     1743                             [- 6.24251169, - 0.00180100, 0.00109940, 7.24071070, 0.99447946, 0.99709961, 0.49190081],
     1744                             [- 6.24261558, - 0.00179998, 0.00109880, 7.24081560, 0.99448261, 0.99710122, 0.49190424],
     1745                             [- 6.24271910, - 0.00179897, 0.00109820, 7.24092013, 0.99448577, 0.99710283, 0.49190765],
     1746                             [- 6.24282226, - 0.00179796, 0.00109760, 7.24102430, 0.99448891, 0.99710444, 0.49191105],
     1747                             [- 6.24292505, - 0.00179695, 0.00109700, 7.24112810, 0.99449206, 0.99710605, 0.49191444],
     1748                             [- 6.24302748, - 0.00179594, 0.00109640, 7.24123154, 0.99449520, 0.99710766, 0.49191782],
     1749                             [- 6.24312955, - 0.00179493, 0.00109581, 7.24133462, 0.99449834, 0.99710926, 0.49192119],
     1750                             [- 6.24323126, - 0.00179392, 0.00109521, 7.24143733, 0.99450148, 0.99711087, 0.49192455],
     1751                             [- 6.24333261, - 0.00179292, 0.00109461, 7.24153969, 0.99450461, 0.99711247, 0.49192789],
     1752                             [- 6.24343360, - 0.00179191, 0.00109402, 7.24164168, 0.99450774, 0.99711407, 0.49193123],
     1753                             [- 6.24353423, - 0.00179091, 0.00109342, 7.24174332, 0.99451086, 0.99711567, 0.49193456],
     1754                             [- 6.24363451, - 0.00178991, 0.00109283, 7.24184460, 0.99451399, 0.99711726, 0.49193787],
     1755                             [- 6.24373444, - 0.00178891, 0.00109224, 7.24194553, 0.99451711, 0.99711886, 0.49194119],
     1756                             [- 6.24383401, - 0.00178790, 0.00109164, 7.24204610, 0.99452022, 0.99712045, 0.49194448],
     1757                             [- 6.24393323, - 0.00178690, 0.00109105, 7.24214632, 0.99452333, 0.99712204, 0.49194776],
     1758                             [- 6.24403210, - 0.00178591, 0.00109046, 7.24224619, 0.99452644, 0.99712364, 0.49195103],
     1759                             [- 6.24413062, - 0.00178491, 0.00108987, 7.24234571, 0.99452955, 0.99712522, 0.49195429],
     1760                             [- 6.24422879, - 0.00178391, 0.00108928, 7.24244488, 0.99453265, 0.99712681, 0.49195755],
     1761                             [- 6.24432661, - 0.00178292, 0.00108869, 7.24254370, 0.99453575, 0.99712840, 0.49196079],
     1762                             [- 6.24442409, - 0.00178192, 0.00108810, 7.24264217, 0.99453884, 0.99712998, 0.49196402],
     1763                             [- 6.24452123, - 0.00178093, 0.00108751, 7.24274030, 0.99454194, 0.99713157, 0.49196723],
     1764                             [- 6.24461802, - 0.00177993, 0.00108692, 7.24283808, 0.99454502, 0.99713315, 0.49197045],
     1765                             [- 6.24471446, - 0.00177894, 0.00108633, 7.24293552, 0.99454811, 0.99713473, 0.49197365],
     1766                             [- 6.24481057, - 0.00177795, 0.00108574, 7.24303262, 0.99455119, 0.99713630, 0.49197684],
     1767                             [- 6.24490634, - 0.00177696, 0.00108516, 7.24312938, 0.99455427, 0.99713788, 0.49198002],
     1768                             [- 6.24500177, - 0.00177597, 0.00108457, 7.24322579, 0.99455735, 0.99713946, 0.49198318],
     1769                             [- 6.24509686, - 0.00177499, 0.00108398, 7.24332187, 0.99456042, 0.99714103, 0.49198634],
     1770                             [- 6.24519161, - 0.00177400, 0.00108340, 7.24341761, 0.99456349, 0.99714260, 0.49198949],
     1771                             [- 6.24528603, - 0.00177301, 0.00108281, 7.24351302, 0.99456655, 0.99714417, 0.49199263],
     1772                             [- 6.24538012, - 0.00177203, 0.00108223, 7.24360809, 0.99456961, 0.99714574, 0.49199575],
     1773                             [- 6.24547387, - 0.00177105, 0.00108164, 7.24370283, 0.99457267, 0.99714731, 0.49199887],
     1774                             [- 6.24556729, - 0.00177006, 0.00108106, 7.24379723, 0.99457573, 0.99714887, 0.49200198],
     1775                             [- 6.24566038, - 0.00176908, 0.00108048, 7.24389130, 0.99457878, 0.99715044, 0.49200507],
     1776                             [- 6.24575314, - 0.00176810, 0.00107990, 7.24398504, 0.99458183, 0.99715200, 0.49200817],
     1777                             [- 6.24584557, - 0.00176712, 0.00107931, 7.24407845, 0.99458488, 0.99715356, 0.49201123],
     1778                             [- 6.24593768, - 0.00176614, 0.00107873, 7.24417153, 0.99458792, 0.99715512, 0.49201431],
     1779                             [- 6.24602946, - 0.00176517, 0.00107815, 7.24426429, 0.99459096, 0.99715668, 0.49201737],
     1780                             [- 6.24612091, - 0.00176419, 0.00107757, 7.24435672, 0.99459400, 0.99715824, 0.49202041],
     1781                             [- 6.24621204, - 0.00176321, 0.00107699, 7.24444883, 0.99459703, 0.99715979, 0.49202344],
     1782                             [- 6.24630285, - 0.00176224, 0.00107641, 7.24454061, 0.99460006, 0.99716135, 0.49202647],
     1783                             [- 6.24639333, - 0.00176127, 0.00107584, 7.24463206, 0.99460309, 0.99716290, 0.49202949],
     1784                             [- 6.24648350, - 0.00176029, 0.00107526, 7.24472320, 0.99460611, 0.99716445, 0.49203250],
     1785                             [- 6.24657334, - 0.00175932, 0.00107468, 7.24481402, 0.99460913, 0.99716600, 0.49203550],
     1786                             [- 6.24666287, - 0.00175835, 0.00107410, 7.24490451, 0.99461215, 0.99716755, 0.49203848],
     1787                             [- 6.24675208, - 0.00175738, 0.00107353, 7.24499469, 0.99461516, 0.99716909, 0.49204146],
     1788                             [- 6.24684097, - 0.00175641, 0.00107295, 7.24508455, 0.99461817, 0.99717064, 0.49204443],
     1789                             [- 6.24692955, - 0.00175545, 0.00107238, 7.24517410, 0.99462118, 0.99717218, 0.49204739],
     1790                             [- 6.24701781, - 0.00175448, 0.00107180, 7.24526333, 0.99462418, 0.99717372, 0.49205033],
     1791                             [- 6.24710576, - 0.00175351, 0.00107123, 7.24535225, 0.99462718, 0.99717526, 0.49205328],
     1792                             [- 6.24719340, - 0.00175255, 0.00107065, 7.24544085, 0.99463018, 0.99717680, 0.49205621],
     1793                             [- 6.24728073, - 0.00175158, 0.00107008, 7.24552914, 0.99463317, 0.99717834, 0.49205913],
     1794                             [- 6.24736775, - 0.00175062, 0.00106951, 7.24561712, 0.99463617, 0.99717987, 0.49206204],
     1795                             [- 6.24745446, - 0.00174966, 0.00106893, 7.24570479, 0.99463915, 0.99718141, 0.49206494],
     1796                             [- 6.24754086, - 0.00174870, 0.00106836, 7.24579216, 0.99464214, 0.99718294, 0.49206783],
     1797                             [- 6.24762695, - 0.00174774, 0.00106779, 7.24587921, 0.99464512, 0.99718447, 0.49207072],
     1798                             [- 6.24771274, - 0.00174678, 0.00106722, 7.24596596, 0.99464810, 0.99718600, 0.49207359],
     1799                             [- 6.24779823, - 0.00174582, 0.00106665, 7.24605241, 0.99465108, 0.99718753, 0.49207645],
     1800                             [- 6.24788341, - 0.00174487, 0.00106608, 7.24613854, 0.99465405, 0.99718905, 0.49207931],
     1801                             [- 6.24796829, - 0.00174391, 0.00106551, 7.24622438, 0.99465702, 0.99719058, 0.49208216],
     1802                             [- 6.24805287, - 0.00174296, 0.00106494, 7.24630991, 0.99465998, 0.99719210, 0.49208499],
     1803                             [- 6.24813715, - 0.00174200, 0.00106438, 7.24639515, 0.99466295, 0.99719362, 0.49208783],
     1804                             [- 6.24822113, - 0.00174105, 0.00106381, 7.24648008, 0.99466591, 0.99719514, 0.49209064],
     1805                             [- 6.24830481, - 0.00174010, 0.00106324, 7.24656471, 0.99466886, 0.99719666, 0.49209345],
     1806                             [- 6.24838819, - 0.00173915, 0.00106267, 7.24664905, 0.99467182, 0.99719818, 0.49209625],
     1807                             [- 6.24847128, - 0.00173819, 0.00106211, 7.24673309, 0.99467477, 0.99719970, 0.49209904],
     1808                             [- 6.24855407, - 0.00173725, 0.00106154, 7.24681683, 0.99467771, 0.99720121, 0.49210182],
     1809                             [- 6.24863657, - 0.00173630, 0.00106098, 7.24690027, 0.99468066, 0.99720272, 0.49210459],
     1810                             [- 6.24871878, - 0.00173535, 0.00106041, 7.24698343, 0.99468360, 0.99720424, 0.49210735],
     1811                             [- 6.24880069, - 0.00173440, 0.00105985, 7.24706629, 0.99468654, 0.99720575, 0.49211010],
     1812                             [- 6.24888231, - 0.00173346, 0.00105929, 7.24714886, 0.99468947, 0.99720725, 0.49211286],
     1813                             [- 6.24896365, - 0.00173251, 0.00105872, 7.24723113, 0.99469240, 0.99720876, 0.49211559],
     1814                             [- 6.24904469, - 0.00173157, 0.00105816, 7.24731312, 0.99469533, 0.99721027, 0.49211832],
     1815                             [- 6.24912545, - 0.00173063, 0.00105760, 7.24739482, 0.99469826, 0.99721177, 0.49212104],
     1816                             [- 6.24920591, - 0.00172969, 0.00105704, 7.24747623, 0.99470118, 0.99721327, 0.49212375],
     1817                             [- 6.24928610, - 0.00172875, 0.00105648, 7.24755735, 0.99470410, 0.99721478, 0.49212645],
     1818                             [- 6.24936599, - 0.00172781, 0.00105592, 7.24763819, 0.99470702, 0.99721628, 0.49212915],
     1819                             [- 6.24944561, - 0.00172687, 0.00105536, 7.24771874, 0.99470993, 0.99721777, 0.49213183],
     1820                             [- 6.24952494, - 0.00172593, 0.00105480, 7.24779901, 0.99471284, 0.99721927, 0.49213451],
     1821                             [- 6.24960399, - 0.00172499, 0.00105424, 7.24787899, 0.99471575, 0.99722077, 0.49213717],
     1822                             [- 6.24968275, - 0.00172406, 0.00105368, 7.24795870, 0.99471865, 0.99722226, 0.49213983],
     1823                             [- 6.24976124, - 0.00172312, 0.00105312, 7.24803812, 0.99472155, 0.99722375, 0.49214248],
     1824                             [- 6.24983945, - 0.00172219, 0.00105257, 7.24811726, 0.99472445, 0.99722524, 0.49214512],
     1825                             [- 6.24991738, - 0.00172126, 0.00105201, 7.24819612, 0.99472735, 0.99722673, 0.49214776],
     1826                             [- 6.24999503, - 0.00172032, 0.00105145, 7.24827471, 0.99473024, 0.99722822, 0.49215038],
     1827                             [- 6.25007241, - 0.00171939, 0.00105090, 7.24835302, 0.99473313, 0.99722971, 0.49215299],
     1828                             [- 6.25014951, - 0.00171846, 0.00105034, 7.24843105, 0.99473601, 0.99723119, 0.49215561],
     1829                             [- 6.25022634, - 0.00171753, 0.00104979, 7.24850880, 0.99473890, 0.99723268, 0.49215820],
     1830                             [- 6.25030289, - 0.00171660, 0.00104923, 7.24858628, 0.99474178, 0.99723416, 0.49216079],
     1831                             [- 6.25037917, - 0.00171568, 0.00104868, 7.24866349, 0.99474465, 0.99723564, 0.49216338],
     1832                             [- 6.25045518, - 0.00171475, 0.00104813, 7.24874043, 0.99474753, 0.99723712, 0.49216595],
     1833                             [- 6.25053092, - 0.00171382, 0.00104758, 7.24881709, 0.99475040, 0.99723860, 0.49216851],
     1834                             [- 6.25060639, - 0.00171290, 0.00104702, 7.24889349, 0.99475327, 0.99724008, 0.49217106],
     1835                             [- 6.25068159, - 0.00171198, 0.00104647, 7.24896961, 0.99475613, 0.99724155, 0.49217362],
     1836                             [- 6.25075652, - 0.00171105, 0.00104592, 7.24904547, 0.99475899, 0.99724303, 0.49217616],
     1837                             [- 6.25083119, - 0.00171013, 0.00104537, 7.24912106, 0.99476185, 0.99724450, 0.49217869],
     1838                             [- 6.25090559, - 0.00170921, 0.00104482, 7.24919638, 0.99476471, 0.99724597, 0.49218121],
     1839                             [- 6.25097972, - 0.00170829, 0.00104427, 7.24927143, 0.99476756, 0.99724744, 0.49218373],
     1840                             [- 6.25105359, - 0.00170737, 0.00104372, 7.24934622, 0.99477041, 0.99724891, 0.49218624],
     1841                             [- 6.25112720, - 0.00170645, 0.00104317, 7.24942075, 0.99477326, 0.99725037, 0.49218873],
     1842                             [- 6.25120055, - 0.00170554, 0.00104262, 7.24949501, 0.99477610, 0.99725184, 0.49219122],
     1843                             [- 6.25127363, - 0.00170462, 0.00104208, 7.24956901, 0.99477894, 0.99725330, 0.49219371],
     1844                             [- 6.25134646, - 0.00170370, 0.00104153, 7.24964275, 0.99478178, 0.99725477, 0.49219618],
     1845                             [- 6.25141902, - 0.00170279, 0.00104098, 7.24971623, 0.99478462, 0.99725623, 0.49219865],
     1846                             [- 6.25149133, - 0.00170188, 0.00104044, 7.24978945, 0.99478745, 0.99725769, 0.49220112],
     1847                             [- 6.25156338, - 0.00170096, 0.00103989, 7.24986241, 0.99479028, 0.99725915, 0.49220356],
     1848                             [- 6.25163517, - 0.00170005, 0.00103935, 7.24993512, 0.99479311, 0.99726060, 0.49220600],
     1849                             [- 6.25170670, - 0.00169914, 0.00103880, 7.25000756, 0.99479593, 0.99726206, 0.49220844],
     1850                             [- 6.25177798, - 0.00169823, 0.00103826, 7.25007975, 0.99479875, 0.99726351, 0.49221087],
     1851                             [- 6.25184901, - 0.00169732, 0.00103771, 7.25015169, 0.99480157, 0.99726496, 0.49221329],
     1852                             [- 6.25191978, - 0.00169641, 0.00103717, 7.25022337, 0.99480438, 0.99726642, 0.49221570],
     1853                             [- 6.25199031, - 0.00169551, 0.00103663, 7.25029480, 0.99480719, 0.99726787, 0.49221811],
     1854                             [- 6.25206057, - 0.00169460, 0.00103609, 7.25036598, 0.99481000, 0.99726931, 0.49222050],
     1855                             [- 6.25213059, - 0.00169369, 0.00103555, 7.25043690, 0.99481281, 0.99727076, 0.49222289],
     1856                             [- 6.25220036, - 0.00169279, 0.00103500, 7.25050757, 0.99481561, 0.99727221, 0.49222527],
     1857                             [- 6.25226988, - 0.00169189, 0.00103446, 7.25057800, 0.99481841, 0.99727365, 0.49222765],
     1858                             [- 6.25233916, - 0.00169098, 0.00103392, 7.25064817, 0.99482121, 0.99727509, 0.49223001],
     1859                             [- 6.25240818, - 0.00169008, 0.00103338, 7.25071810, 0.99482400, 0.99727653, 0.49223237],
     1860                             [- 6.25247696, - 0.00168918, 0.00103285, 7.25078778, 0.99482680, 0.99727797, 0.49223472],
     1861                             [- 6.25254550, - 0.00168828, 0.00103231, 7.25085722, 0.99482958, 0.99727941, 0.49223706],
     1862                             [- 6.25261379, - 0.00168738, 0.00103177, 7.25092640, 0.99483237, 0.99728085, 0.49223939],
     1863                             [- 6.25268183, - 0.00168648, 0.00103123, 7.25099535, 0.99483515, 0.99728229, 0.49224172],
     1864                             [- 6.25274963, - 0.00168559, 0.00103069, 7.25106405, 0.99483793, 0.99728372, 0.49224404],
     1865                             [- 6.25281720, - 0.00168469, 0.00103016, 7.25113251, 0.99484071, 0.99728515, 0.49224636],
     1866                             [- 6.25288452, - 0.00168379, 0.00102962, 7.25120072, 0.99484348, 0.99728659, 0.49224866],
     1867                             [- 6.25295160, - 0.00168290, 0.00102909, 7.25126870, 0.99484626, 0.99728802, 0.49225097],
     1868                             [- 6.25301844, - 0.00168200, 0.00102855, 7.25133643, 0.99484902, 0.99728945, 0.49225325],
     1869                             [- 6.25308504, - 0.00168111, 0.00102802, 7.25140393, 0.99485179, 0.99729087, 0.49225553],
     1870                             [- 6.25315140, - 0.00168022, 0.00102748, 7.25147118, 0.99485455, 0.99729230, 0.49225780],
     1871                             [- 6.25321753, - 0.00167933, 0.00102695, 7.25153820, 0.99485731, 0.99729372, 0.49226008],
     1872                             [- 6.25328342, - 0.00167844, 0.00102641, 7.25160498, 0.99486007, 0.99729515, 0.49226233],
     1873                             [- 6.25334907, - 0.00167755, 0.00102588, 7.25167153, 0.99486282, 0.99729657, 0.49226459],
     1874                             [- 6.25341450, - 0.00167666, 0.00102535, 7.25173784, 0.99486558, 0.99729799, 0.49226684],
     1875                             [- 6.25347968, - 0.00167577, 0.00102482, 7.25180391, 0.99486832, 0.99729941, 0.49226907],
     1876                             [- 6.25354464, - 0.00167489, 0.00102429, 7.25186975, 0.99487107, 0.99730083, 0.49227131],
     1877                             [- 6.25360936, - 0.00167400, 0.00102376, 7.25193536, 0.99487381, 0.99730224, 0.49227354],
     1878                             [- 6.25367385, - 0.00167312, 0.00102323, 7.25200074, 0.99487655, 0.99730366, 0.49227575],
     1879                             [- 6.25373811, - 0.00167223, 0.00102270, 7.25206588, 0.99487929, 0.99730507, 0.49227796],
     1880                             [- 6.25380215, - 0.00167135, 0.00102217, 7.25213080, 0.99488202, 0.99730649, 0.49228016],
     1881                             [- 6.25386595, - 0.00167047, 0.00102164, 7.25219548, 0.99488476, 0.99730790, 0.49228236],
     1882                             [- 6.25392952, - 0.00166958, 0.00102111, 7.25225994, 0.99488749, 0.99730931, 0.49228455],
     1883                             [- 6.25399287, - 0.00166870, 0.00102058, 7.25232417, 0.99489021, 0.99731072, 0.49228673],
     1884                             [- 6.25405599, - 0.00166782, 0.00102005, 7.25238817, 0.99489294, 0.99731212, 0.49228892],
     1885                             [- 6.25411889, - 0.00166694, 0.00101953, 7.25245194, 0.99489566, 0.99731353, 0.49229108],
     1886                             [- 6.25418156, - 0.00166607, 0.00101900, 7.25251549, 0.99489837, 0.99731493, 0.49229324],
     1887                             [- 6.25424401, - 0.00166519, 0.00101847, 7.25257882, 0.99490109, 0.99731634, 0.49229539],
     1888                             [- 6.25430623, - 0.00166431, 0.00101795, 7.25264192, 0.99490380, 0.99731774, 0.49229754],
     1889                             [- 6.25436823, - 0.00166344, 0.00101742, 7.25270479, 0.99490651, 0.99731914, 0.49229968],
     1890                             [- 6.25443001, - 0.00166256, 0.00101690, 7.25276745, 0.99490922, 0.99732054, 0.49230182],
     1891                             [- 6.25449157, - 0.00166169, 0.00101638, 7.25282988, 0.99491192, 0.99732194, 0.49230394],
     1892                             [- 6.25455291, - 0.00166082, 0.00101585, 7.25289209, 0.99491462, 0.99732333, 0.49230606],
     1893                             [- 6.25461403, - 0.00165994, 0.00101533, 7.25295408, 0.99491732, 0.99732473, 0.49230817],
     1894                             [- 6.25467493, - 0.00165907, 0.00101481, 7.25301586, 0.99492002, 0.99732612, 0.49231027],
     1895                             [- 6.25473561, - 0.00165820, 0.00101428, 7.25307741, 0.99492271, 0.99732751, 0.49231238],
     1896                             [- 6.25479608, - 0.00165733, 0.00101376, 7.25313874, 0.99492540, 0.99732890, 0.49231446],
     1897                             [- 6.25485633, - 0.00165647, 0.00101324, 7.25319986, 0.99492809, 0.99733029, 0.49231656],
     1898                             [- 6.25491636, - 0.00165560, 0.00101272, 7.25326076, 0.99493077, 0.99733168, 0.49231863],
     1899                             [- 6.25497618, - 0.00165473, 0.00101220, 7.25332145, 0.99493345, 0.99733307, 0.49232070],
     1900                             [- 6.25503579, - 0.00165386, 0.00101168, 7.25338192, 0.99493613, 0.99733445, 0.49232277],
     1901                             [- 6.25509518, - 0.00165300, 0.00101116, 7.25344218, 0.99493881, 0.99733584, 0.49232483],
     1902                             [- 6.25515436, - 0.00165214, 0.00101064, 7.25350222, 0.99494148, 0.99733722, 0.49232688],
     1903                             [- 6.25521333, - 0.00165127, 0.00101012, 7.25356206, 0.99494415, 0.99733860, 0.49232894],
     1904                             [- 6.25527209, - 0.00165041, 0.00100961, 7.25362168, 0.99494682, 0.99733998, 0.49233097],
     1905                             [- 6.25533063, - 0.00164955, 0.00100909, 7.25368108, 0.99494949, 0.99734136, 0.49233301],
     1906                             [- 6.25538897, - 0.00164869, 0.00100857, 7.25374028, 0.99495215, 0.99734274, 0.49233504],
     1907                             [- 6.25544710, - 0.00164783, 0.00100806, 7.25379927, 0.99495481, 0.99734412, 0.49233704],
     1908                             [- 6.25550502, - 0.00164697, 0.00100754, 7.25385805, 0.99495747, 0.99734549, 0.49233906],
     1909                             [- 6.25556273, - 0.00164611, 0.00100702, 7.25391662, 0.99496012, 0.99734687, 0.49234107],
     1910                             [- 6.25562024, - 0.00164525, 0.00100651, 7.25397499, 0.99496278, 0.99734824, 0.49234308],
     1911                             [- 6.25567754, - 0.00164440, 0.00100599, 7.25403314, 0.99496543, 0.99734961, 0.49234506],
     1912                             [- 6.25573464, - 0.00164354, 0.00100548, 7.25409110, 0.99496807, 0.99735098, 0.49234706],
     1913                             [- 6.25579153, - 0.00164268, 0.00100497, 7.25414884, 0.99497072, 0.99735235, 0.49234904],
     1914                             [- 6.25584821, - 0.00164183, 0.00100445, 7.25420638, 0.99497336, 0.99735372, 0.49235101],
     1915                             [- 6.25590470, - 0.00164098, 0.00100394, 7.25426372, 0.99497600, 0.99735508, 0.49235297],
     1916                             [- 6.25596098, - 0.00164012, 0.00100343, 7.25432086, 0.99497863, 0.99735645, 0.49235495],
     1917                             [- 6.25601706, - 0.00163927, 0.00100292, 7.25437779, 0.99498127, 0.99735781, 0.49235690],
     1918                             [- 6.25607294, - 0.00163842, 0.00100241, 7.25443452, 0.99498390, 0.99735917, 0.49235884],
     1919                             [- 6.25612862, - 0.00163757, 0.00100189, 7.25449105, 0.99498652, 0.99736053, 0.49236079],
     1920                             [- 6.25618410, - 0.00163672, 0.00100138, 7.25454738, 0.99498915, 0.99736189, 0.49236272],
     1921                             [- 6.25623938, - 0.00163587, 0.00100087, 7.25460351, 0.99499177, 0.99736325, 0.49236466],
     1922                             [- 6.25629447, - 0.00163503, 0.00100036, 7.25465944, 0.99499439, 0.99736461, 0.49236658],
     1923                             [- 6.25634936, - 0.00163418, 0.00099986, 7.25471518, 0.99499701, 0.99736596, 0.49236850],
     1924                             [- 6.25640405, - 0.00163333, 0.00099935, 7.25477071, 0.99499963, 0.99736732, 0.49237042],
     1925                             [- 6.25645854, - 0.00163249, 0.00099884, 7.25482605, 0.99500224, 0.99736867, 0.49237232],
     1926                             [- 6.25651284, - 0.00163164, 0.00099833, 7.25488119, 0.99500485, 0.99737002, 0.49237422],
     1927                             [- 6.25656694, - 0.00163080, 0.00099782, 7.25493614, 0.99500745, 0.99737137, 0.49237612],
     1928                             [- 6.25662085, - 0.00162996, 0.00099732, 7.25499089, 0.99501006, 0.99737272, 0.49237800],
     1929                             [- 6.25667457, - 0.00162912, 0.00099681, 7.25504545, 0.99501266, 0.99737407, 0.49237989],
     1930                             [- 6.25672809, - 0.00162828, 0.00099631, 7.25509982, 0.99501526, 0.99737542, 0.49238176],
     1931                             [- 6.25678143, - 0.00162744, 0.00099580, 7.25515399, 0.99501786, 0.99737676, 0.49238364],
     1932                             [- 6.25683457, - 0.00162660, 0.00099530, 7.25520797, 0.99502045, 0.99737811, 0.49238550],
     1933                             [- 6.25688752, - 0.00162576, 0.00099479, 7.25526176, 0.99502304, 0.99737945, 0.49238736],
     1934                             [- 6.25694028, - 0.00162492, 0.00099429, 7.25531536, 0.99502563, 0.99738079, 0.49238921],
     1935                             [- 6.25699285, - 0.00162408, 0.00099378, 7.25536877, 0.99502822, 0.99738213, 0.49239105],
     1936                             [- 6.25704524, - 0.00162325, 0.00099328, 7.25542199, 0.99503080, 0.99738347, 0.49239289],
     1937                             [- 6.25709743, - 0.00162241, 0.00099278, 7.25547502, 0.99503338, 0.99738481, 0.49239473],
     1938                             [- 6.25714944, - 0.00162158, 0.00099228, 7.25552786, 0.99503596, 0.99738615, 0.49239656],
     1939                             [- 6.25720127, - 0.00162074, 0.00099177, 7.25558052, 0.99503853, 0.99738748, 0.49239838],
     1940                             [- 6.25725290, - 0.00161991, 0.00099127, 7.25563299, 0.99504111, 0.99738881, 0.49240020],
     1941                             [- 6.25730435, - 0.00161908, 0.00099077, 7.25568527, 0.99504368, 0.99739015, 0.49240201],
     1942                             [- 6.25735562, - 0.00161825, 0.00099027, 7.25573737, 0.99504625, 0.99739148, 0.49240381],
     1943                             [- 6.25740670, - 0.00161742, 0.00098977, 7.25578929, 0.99504881, 0.99739281, 0.49240561],
     1944                             [- 6.25745761, - 0.00161659, 0.00098927, 7.25584102, 0.99505137, 0.99739414, 0.49240741],
     1945                             [- 6.25750832, - 0.00161576, 0.00098877, 7.25589256, 0.99505393, 0.99739547, 0.49240919],
     1946                             [- 6.25755886, - 0.00161493, 0.00098828, 7.25594393, 0.99505649, 0.99739679, 0.49241098],
     1947                             [- 6.25760921, - 0.00161411, 0.00098778, 7.25599511, 0.99505905, 0.99739812, 0.49241276],
     1948                             [- 6.25765939, - 0.00161328, 0.00098728, 7.25604611, 0.99506160, 0.99739944, 0.49241453],
     1949                             [- 6.25770938, - 0.00161245, 0.00098678, 7.25609693, 0.99506415, 0.99740076, 0.49241630],
     1950                             [- 6.25775920, - 0.00161163, 0.00098629, 7.25614757, 0.99506670, 0.99740209, 0.49241806],
     1951                             [- 6.25780883, - 0.00161080, 0.00098579, 7.25619803, 0.99506924, 0.99740341, 0.49241981],
     1952                             [- 6.25785829, - 0.00160998, 0.00098529, 7.25624831, 0.99507179, 0.99740472, 0.49242156],
     1953                             [- 6.25790757, - 0.00160916, 0.00098480, 7.25629841, 0.99507433, 0.99740604, 0.49242330],
     1954                             [- 6.25795667, - 0.00160834, 0.00098430, 7.25634834, 0.99507686, 0.99740736, 0.49242504],
     1955                             [- 6.25800560, - 0.00160752, 0.00098381, 7.25639808, 0.99507940, 0.99740867, 0.49242678],
     1956                             [- 6.25805435, - 0.00160670, 0.00098332, 7.25644766, 0.99508193, 0.99740999, 0.49242849],
     1957                             [- 6.25810293, - 0.00160588, 0.00098282, 7.25649705, 0.99508446, 0.99741130, 0.49243022],
     1958                             [- 6.25815133, - 0.00160506, 0.00098233, 7.25654627, 0.99508699, 0.99741261, 0.49243193],
     1959                             [- 6.25819956, - 0.00160424, 0.00098184, 7.25659532, 0.99508951, 0.99741392, 0.49243365],
     1960                             [- 6.25824762, - 0.00160342, 0.00098134, 7.25664419, 0.99509203, 0.99741523, 0.49243535],
     1961                             [- 6.25829550, - 0.00160261, 0.00098085, 7.25669289, 0.99509455, 0.99741654, 0.49243704],
     1962                             [- 6.25834321, - 0.00160179, 0.00098036, 7.25674142, 0.99509707, 0.99741784, 0.49243875],
     1963                             [- 6.25839075, - 0.00160098, 0.00097987, 7.25678978, 0.99509959, 0.99741915, 0.49244043],
     1964                             [- 6.25843812, - 0.00160017, 0.00097938, 7.25683796, 0.99510210, 0.99742045, 0.49244213],
     1965                             [- 6.25848532, - 0.00159935, 0.00097889, 7.25688597, 0.99510461, 0.99742176, 0.49244379],
     1966                             [- 6.25853235, - 0.00159854, 0.00097840, 7.25693381, 0.99510712, 0.99742306, 0.49244547],
     1967                             [- 6.25857922, - 0.00159773, 0.00097791, 7.25698149, 0.99510962, 0.99742436, 0.49244714],
     1968                             [- 6.25862591, - 0.00159692, 0.00097742, 7.25702899, 0.99511212, 0.99742566, 0.49244880],
     1969                             [- 6.25867244, - 0.00159611, 0.00097693, 7.25707633, 0.99511462, 0.99742696, 0.49245046],
     1970                             [- 6.25871879, - 0.00159530, 0.00097645, 7.25712350, 0.99511712, 0.99742825, 0.49245210],
     1971                             [- 6.25876499, - 0.00159449, 0.00097596, 7.25717050, 0.99511962, 0.99742955, 0.49245376],
     1972                             [- 6.25881101, - 0.00159368, 0.00097547, 7.25721733, 0.99512211, 0.99743084, 0.49245539],
     1973                             [- 6.25885688, - 0.00159288, 0.00097499, 7.25726400, 0.99512460, 0.99743214, 0.49245702],
     1974                             [- 6.25890257, - 0.00159207, 0.00097450, 7.25731050, 0.99512709, 0.99743343, 0.49245866],
     1975                             [- 6.25894810, - 0.00159127, 0.00097402, 7.25735684, 0.99512957, 0.99743472, 0.49246028],
     1976                             [- 6.25899347, - 0.00159046, 0.00097353, 7.25740301, 0.99513205, 0.99743601, 0.49246190],
     1977                             [- 6.25903868, - 0.00158966, 0.00097305, 7.25744902, 0.99513453, 0.99743730, 0.49246352],
     1978                             [- 6.25908372, - 0.00158886, 0.00097256, 7.25749487, 0.99513701, 0.99743858, 0.49246513],
     1979                             [- 6.25912861, - 0.00158805, 0.00097208, 7.25754055, 0.99513949, 0.99743987, 0.49246673],
     1980                             [- 6.25917333, - 0.00158725, 0.00097159, 7.25758607, 0.99514196, 0.99744115, 0.49246833],
     1981                             [- 6.25921789, - 0.00158645, 0.00097111, 7.25763144, 0.99514443, 0.99744244, 0.49246993],
     1982                             [- 6.25926229, - 0.00158565, 0.00097063, 7.25767664, 0.99514690, 0.99744372, 0.49247152],
     1983                             [- 6.25930653, - 0.00158485, 0.00097015, 7.25772168, 0.99514936, 0.99744500, 0.49247309],
     1984                             [- 6.25935061, - 0.00158406, 0.00096966, 7.25776656, 0.99515183, 0.99744628, 0.49247468],
     1985                             [- 6.25939453, - 0.00158326, 0.00096918, 7.25781128, 0.99515429, 0.99744756, 0.49247625],
     1986                             [- 6.25943830, - 0.00158246, 0.00096870, 7.25785584, 0.99515675, 0.99744884, 0.49247782],
     1987                             [- 6.25948191, - 0.00158167, 0.00096822, 7.25790024, 0.99515920, 0.99745011, 0.49247939],
     1988                             [- 6.25952536, - 0.00158087, 0.00096774, 7.25794449, 0.99516165, 0.99745139, 0.49248095],
     1989                             [- 6.25956866, - 0.00158008, 0.00096726, 7.25798858, 0.99516411, 0.99745266, 0.49248251],
     1990                             [- 6.25961180, - 0.00157928, 0.00096678, 7.25803252, 0.99516655, 0.99745393, 0.49248405],
     1991                             [- 6.25965478, - 0.00157849, 0.00096631, 7.25807629, 0.99516900, 0.99745521, 0.49248560],
     1992                             [- 6.25969761, - 0.00157770, 0.00096583, 7.25811992, 0.99517144, 0.99745648, 0.49248715],
     1993                             [- 6.25974029, - 0.00157691, 0.00096535, 7.25816339, 0.99517389, 0.99745774, 0.49248867],
     1994                             [- 6.25978282, - 0.00157612, 0.00096487, 7.25820670, 0.99517633, 0.99745901, 0.49249021],
     1995                             [- 6.25982519, - 0.00157533, 0.00096440, 7.25824986, 0.99517876, 0.99746028, 0.49249174],
     1996                             [- 6.25986741, - 0.00157454, 0.00096392, 7.25829287, 0.99518120, 0.99746154, 0.49249325],
     1997                             [- 6.25990947, - 0.00157375, 0.00096344, 7.25833572, 0.99518363, 0.99746281, 0.49249477],
     1998                             [- 6.25995139, - 0.00157296, 0.00096297, 7.25837843, 0.99518606, 0.99746407, 0.49249628],
     1999                             [- 6.25999315, - 0.00157217, 0.00096249, 7.25842098, 0.99518848, 0.99746533, 0.49249779],
     2000                             [- 6.26003477, - 0.00157139, 0.00096202, 7.25846338, 0.99519091, 0.99746659, 0.49249929],
     2001                             [- 6.26007624, - 0.00157060, 0.00096154, 7.25850563, 0.99519333, 0.99746785, 0.49250079],
     2002                             [- 6.26011755, - 0.00156982, 0.00096107, 7.25854773, 0.99519575, 0.99746911, 0.49250228],
     2003                             [- 6.26015872, - 0.00156903, 0.00096060, 7.25858969, 0.99519817, 0.99747037, 0.49250377],
     2004                             [- 6.26019974, - 0.00156825, 0.00096012, 7.25863149, 0.99520058, 0.99747163, 0.49250524],
     2005                             [- 6.26024061, - 0.00156747, 0.00095965, 7.25867315, 0.99520300, 0.99747288, 0.49250672],
     2006                             [- 6.26028134, - 0.00156669, 0.00095918, 7.25871465, 0.99520541, 0.99747414, 0.49250819],
     2007                             [- 6.26032192, - 0.00156591, 0.00095871, 7.25875601, 0.99520782, 0.99747539, 0.49250967],
     2008                             [- 6.26036235, - 0.00156513, 0.00095823, 7.25879723, 0.99521022, 0.99747664, 0.49251114],
     2009                             [- 6.26040264, - 0.00156435, 0.00095776, 7.25883830, 0.99521263, 0.99747789, 0.49251259],
     2010                             [- 6.26044279, - 0.00156357, 0.00095729, 7.25887922, 0.99521503, 0.99747914, 0.49251404],
     2011                             [- 6.26048279, - 0.00156279, 0.00095682, 7.25892000, 0.99521743, 0.99748039, 0.49251549],
     2012                             [- 6.26052264, - 0.00156201, 0.00095635, 7.25896063, 0.99521982, 0.99748163, 0.49251694],
     2013                             [- 6.26056235, - 0.00156124, 0.00095588, 7.25900112, 0.99522222, 0.99748288, 0.49251838],
     2014                             [- 6.26060192, - 0.00156046, 0.00095542, 7.25904146, 0.99522461, 0.99748412, 0.49251982],
     2015                             [- 6.26064135, - 0.00155969, 0.00095495, 7.25908167, 0.99522700, 0.99748537, 0.49252125],
     2016                             [- 6.26068064, - 0.00155891, 0.00095448, 7.25912173, 0.99522939, 0.99748661, 0.49252269],
     2017                             [- 6.26071978, - 0.00155814, 0.00095401, 7.25916164, 0.99523177, 0.99748785, 0.49252410],
     2018                             [- 6.26075879, - 0.00155737, 0.00095354, 7.25920142, 0.99523415, 0.99748909, 0.49252552],
     2019                             [- 6.26079765, - 0.00155659, 0.00095308, 7.25924106, 0.99523653, 0.99749033, 0.49252694],
     2020                             [- 6.26083637, - 0.00155582, 0.00095261, 7.25928055, 0.99523891, 0.99749157, 0.49252834],
     2021                             [- 6.26087496, - 0.00155505, 0.00095215, 7.25931991, 0.99524129, 0.99749280, 0.49252975],
     2022                             [- 6.26091341, - 0.00155428, 0.00095168, 7.25935912, 0.99524366, 0.99749404, 0.49253116],
     2023                             [- 6.26095171, - 0.00155351, 0.00095122, 7.25939820, 0.99524603, 0.99749527, 0.49253255],
     2024                             [- 6.26098988, - 0.00155274, 0.00095075, 7.25943714, 0.99524840, 0.99749651, 0.49253394],
     2025                             [- 6.26102792, - 0.00155198, 0.00095029, 7.25947594, 0.99525077, 0.99749774, 0.49253533],
     2026                             [- 6.26106581, - 0.00155121, 0.00094982, 7.25951460, 0.99525313, 0.99749897, 0.49253672],
     2027                             [- 6.26110357, - 0.00155044, 0.00094936, 7.25955313, 0.99525549, 0.99750020, 0.49253810],
     2028                             [- 6.26114120, - 0.00154968, 0.00094890, 7.25959152, 0.99525785, 0.99750143, 0.49253947],
     2029                             [- 6.26117869, - 0.00154891, 0.00094843, 7.25962977, 0.99526021, 0.99750265, 0.49254085],
     2030                             [- 6.26121604, - 0.00154815, 0.00094797, 7.25966789, 0.99526256, 0.99750388, 0.49254220],
     2031                             [- 6.26125326, - 0.00154739, 0.00094751, 7.25970587, 0.99526492, 0.99750510, 0.49254357],
     2032                             [- 6.26129035, - 0.00154662, 0.00094705, 7.25974372, 0.99526727, 0.99750633, 0.49254493],
     2033                             [- 6.26132730, - 0.00154586, 0.00094659, 7.25978144, 0.99526962, 0.99750755, 0.49254628],
     2034                             [- 6.26136412, - 0.00154510, 0.00094613, 7.25981902, 0.99527196, 0.99750877, 0.49254763],
     2035                             [- 6.26140081, - 0.00154434, 0.00094567, 7.25985647, 0.99527431, 0.99750999, 0.49254897],
     2036                             [- 6.26143736, - 0.00154358, 0.00094521, 7.25989378, 0.99527665, 0.99751121, 0.49255032],
     2037                             [- 6.26147379, - 0.00154282, 0.00094475, 7.25993097, 0.99527899, 0.99751243, 0.49255166],
     2038                             [- 6.26151008, - 0.00154206, 0.00094429, 7.25996802, 0.99528132, 0.99751365, 0.49255299],
     2039                             [- 6.26154624, - 0.00154131, 0.00094383, 7.26000494, 0.99528366, 0.99751486, 0.49255432],
     2040                             [- 6.26158228, - 0.00154055, 0.00094337, 7.26004173, 0.99528599, 0.99751608, 0.49255564],
     2041                             [- 6.26161818, - 0.00153979, 0.00094292, 7.26007839, 0.99528832, 0.99751729, 0.49255696],
     2042                             [- 6.26165395, - 0.00153904, 0.00094246, 7.26011492, 0.99529065, 0.99751851, 0.49255828],
     2043                             [- 6.26168960, - 0.00153828, 0.00094200, 7.26015132, 0.99529297, 0.99751972, 0.49255958],
     2044                             [- 6.26172512, - 0.00153753, 0.00094155, 7.26018759, 0.99529530, 0.99752093, 0.49256090],
     2045                             [- 6.26176051, - 0.00153677, 0.00094109, 7.26022373, 0.99529762, 0.99752214, 0.49256219],
     2046                             [- 6.26179577, - 0.00153602, 0.00094063, 7.26025975, 0.99529994, 0.99752334, 0.49256349],
     2047                             [- 6.26183090, - 0.00153527, 0.00094018, 7.26029563, 0.99530226, 0.99752455, 0.49256478],
     2048                             [- 6.26186591, - 0.00153452, 0.00093972, 7.26033139, 0.99530457, 0.99752576, 0.49256609],
     2049                             [- 6.26190080, - 0.00153377, 0.00093927, 7.26036703, 0.99530688, 0.99752696, 0.49256738],
     2050                             [- 6.26193555, - 0.00153302, 0.00093882, 7.26040254, 0.99530919, 0.99752817, 0.49256866],
     2051                             [- 6.26197019, - 0.00153227, 0.00093836, 7.26043792, 0.99531150, 0.99752937, 0.49256993],
     2052                             [- 6.26200470, - 0.00153152, 0.00093791, 7.26047317, 0.99531381, 0.99753057, 0.49257121],
     2053                             [- 6.26203908, - 0.00153077, 0.00093746, 7.26050831, 0.99531611, 0.99753177, 0.49257249],
     2054                             [- 6.26207334, - 0.00153003, 0.00093700, 7.26054331, 0.99531841, 0.99753297, 0.49257375],
     2055                             [- 6.26210748, - 0.00152928, 0.00093655, 7.26057820, 0.99532071, 0.99753417, 0.49257501],
     2056                             [- 6.26214149, - 0.00152853, 0.00093610, 7.26061296, 0.99532301, 0.99753537, 0.49257629],
     2057                             [- 6.26217539, - 0.00152779, 0.00093565, 7.26064760, 0.99532530, 0.99753656, 0.49257754],
     2058                             [- 6.26220916, - 0.00152705, 0.00093520, 7.26068211, 0.99532759, 0.99753776, 0.49257879],
     2059                             [- 6.26224280, - 0.00152630, 0.00093475, 7.26071650, 0.99532988, 0.99753895, 0.49258003],
     2060                             [- 6.26227633, - 0.00152556, 0.00093430, 7.26075077, 0.99533217, 0.99754014, 0.49258128],
     2061                             [- 6.26230974, - 0.00152482, 0.00093385, 7.26078492, 0.99533446, 0.99754133, 0.49258252],
     2062                             [- 6.26234303, - 0.00152408, 0.00093340, 7.26081895, 0.99533674, 0.99754253, 0.49258376],
     2063                             [- 6.26237620, - 0.00152333, 0.00093295, 7.26085286, 0.99533902, 0.99754372, 0.49258498],
     2064                             [- 6.26240924, - 0.00152259, 0.00093250, 7.26088665, 0.99534130, 0.99754490, 0.49258622],
     2065                             [- 6.26244217, - 0.00152186, 0.00093205, 7.26092032, 0.99534358, 0.99754609, 0.49258745],
     2066                             [- 6.26247499, - 0.00152112, 0.00093161, 7.26095387, 0.99534586, 0.99754728, 0.49258868],
     2067                             [- 6.26250768, - 0.00152038, 0.00093116, 7.26098730, 0.99534813, 0.99754846, 0.49258989],
     2068                             [- 6.26254025, - 0.00151964, 0.00093071, 7.26102061, 0.99535040, 0.99754965, 0.49259110],
     2069                             [- 6.26257271, - 0.00151890, 0.00093027, 7.26105381, 0.99535267, 0.99755083, 0.49259230],
     2070                             [- 6.26260505, - 0.00151817, 0.00092982, 7.26108689, 0.99535493, 0.99755201, 0.49259351],
     2071                             [- 6.26263728, - 0.00151743, 0.00092937, 7.26111985, 0.99535720, 0.99755319, 0.49259471],
     2072                             [- 6.26266939, - 0.00151670, 0.00092893, 7.26115269, 0.99535946, 0.99755437, 0.49259592],
     2073                             [- 6.26270138, - 0.00151596, 0.00092848, 7.26118542, 0.99536172, 0.99755555, 0.49259711],
     2074                             [- 6.26273326, - 0.00151523, 0.00092804, 7.26121803, 0.99536398, 0.99755673, 0.49259829],
     2075                             [- 6.26276503, - 0.00151450, 0.00092760, 7.26125053, 0.99536623, 0.99755790, 0.49259950],
     2076                             [- 6.26279668, - 0.00151377, 0.00092715, 7.26128291, 0.99536849, 0.99755908, 0.49260067],
     2077                             [- 6.26282822, - 0.00151304, 0.00092671, 7.26131518, 0.99537074, 0.99756025, 0.49260186],
     2078                             [- 6.26285964, - 0.00151231, 0.00092627, 7.26134733, 0.99537299, 0.99756143, 0.49260303],
     2079                             [- 6.26289095, - 0.00151158, 0.00092582, 7.26137937, 0.99537524, 0.99756260, 0.49260421],
     2080                             [- 6.26292215, - 0.00151085, 0.00092538, 7.26141130, 0.99537748, 0.99756377, 0.49260538],
     2081                             [- 6.26295323, - 0.00151012, 0.00092494, 7.26144311, 0.99537972, 0.99756494, 0.49260653],
     2082                             [- 6.26298421, - 0.00150939, 0.00092450, 7.26147481, 0.99538196, 0.99756611, 0.49260770],
     2083                             [- 6.26301507, - 0.00150866, 0.00092406, 7.26150640, 0.99538420, 0.99756728, 0.49260887],
     2084                             [- 6.26304582, - 0.00150794, 0.00092362, 7.26153788, 0.99538644, 0.99756844, 0.49261002],
     2085                             [- 6.26307646, - 0.00150721, 0.00092318, 7.26156925, 0.99538867, 0.99756961, 0.49261117],
     2086                             [- 6.26310699, - 0.00150649, 0.00092274, 7.26160050, 0.99539091, 0.99757078, 0.49261231],
     2087                             [- 6.26313741, - 0.00150576, 0.00092230, 7.26163165, 0.99539314, 0.99757194, 0.49261347],
     2088                             [- 6.26316772, - 0.00150504, 0.00092186, 7.26166269, 0.99539536, 0.99757310, 0.49261461],
     2089                             [- 6.26319793, - 0.00150431, 0.00092142, 7.26169361, 0.99539759, 0.99757426, 0.49261575],
     2090                             [- 6.26322802, - 0.00150359, 0.00092098, 7.26172443, 0.99539981, 0.99757542, 0.49261688],
     2091                             [- 6.26325801, - 0.00150287, 0.00092055, 7.26175513, 0.99540204, 0.99757658, 0.49261801],
     2092                             [- 6.26328788, - 0.00150215, 0.00092011, 7.26178573, 0.99540426, 0.99757774, 0.49261913],
     2093                             [- 6.26331765, - 0.00150143, 0.00091967, 7.26181623, 0.99540647, 0.99757890, 0.49262025],
     2094                             [- 6.26334732, - 0.00150071, 0.00091924, 7.26184661, 0.99540869, 0.99758006, 0.49262138],
     2095                             [- 6.26337687, - 0.00149999, 0.00091880, 7.26187688, 0.99541090, 0.99758121, 0.49262250],
     2096                             [- 6.26340633, - 0.00149927, 0.00091836, 7.26190705, 0.99541311, 0.99758236, 0.49262361],
     2097                             [- 6.26343567, - 0.00149855, 0.00091793, 7.26193712, 0.99541532, 0.99758352, 0.49262472],
     2098                             [- 6.26346491, - 0.00149784, 0.00091749, 7.26196707, 0.99541753, 0.99758467, 0.49262583],
     2099                             [- 6.26349404, - 0.00149712, 0.00091706, 7.26199692, 0.99541974, 0.99758582, 0.49262693],
     2100                             [- 6.26352307, - 0.00149640, 0.00091662, 7.26202667, 0.99542194, 0.99758697, 0.49262803],
     2101                             [- 6.26355200, - 0.00149569, 0.00091619, 7.26205631, 0.99542414, 0.99758812, 0.49262913],
     2102                             [- 6.26358082, - 0.00149498, 0.00091576, 7.26208585, 0.99542634, 0.99758927, 0.49263021],
     2103                             [- 6.26360954, - 0.00149426, 0.00091532, 7.26211528, 0.99542854, 0.99759042, 0.49263131],
     2104                             [- 6.26363815, - 0.00149355, 0.00091489, 7.26214460, 0.99543073, 0.99759156, 0.49263239],
     2105                             [- 6.26366666, - 0.00149284, 0.00091446, 7.26217383, 0.99543292, 0.99759271, 0.49263348],
     2106                             [- 6.26369507, - 0.00149212, 0.00091403, 7.26220295, 0.99543511, 0.99759385, 0.49263456],
     2107                             [- 6.26372338, - 0.00149141, 0.00091359, 7.26223197, 0.99543730, 0.99759499, 0.49263563],
     2108                             [- 6.26375159, - 0.00149070, 0.00091316, 7.26226088, 0.99543949, 0.99759613, 0.49263671],
     2109                             [- 6.26377969, - 0.00148999, 0.00091273, 7.26228970, 0.99544167, 0.99759728, 0.49263778],
     2110                             [- 6.26380769, - 0.00148928, 0.00091230, 7.26231841, 0.99544386, 0.99759841, 0.49263884],
     2111                             [- 6.26383560, - 0.00148857, 0.00091187, 7.26234702, 0.99544604, 0.99759955, 0.49263991],
     2112                             [- 6.26386340, - 0.00148787, 0.00091144, 7.26237553, 0.99544821, 0.99760069, 0.49264097],
     2113                             [- 6.26389110, - 0.00148716, 0.00091101, 7.26240394, 0.99545039, 0.99760183, 0.49264203],
     2114                             [- 6.26391870, - 0.00148645, 0.00091058, 7.26243225, 0.99545257, 0.99760296, 0.49264308],
     2115                             [- 6.26394621, - 0.00148575, 0.00091016, 7.26246046, 0.99545474, 0.99760410, 0.49264413],
     2116                             [- 6.26397361, - 0.00148504, 0.00090973, 7.26248857, 0.99545691, 0.99760523, 0.49264518],
     2117                             [- 6.26400092, - 0.00148434, 0.00090930, 7.26251658, 0.99545908, 0.99760636, 0.49264622],
     2118                             [- 6.26402813, - 0.00148363, 0.00090887, 7.26254449, 0.99546124, 0.99760750, 0.49264726],
     2119                             [- 6.26405524, - 0.00148293, 0.00090844, 7.26257231, 0.99546341, 0.99760863, 0.49264830],
     2120                             [- 6.26408225, - 0.00148223, 0.00090802, 7.26260002, 0.99546557, 0.99760976, 0.49264934],
     2121                             [- 6.26410916, - 0.00148152, 0.00090759, 7.26262764, 0.99546773, 0.99761088, 0.49265036],
     2122                             [- 6.26413598, - 0.00148082, 0.00090717, 7.26265516, 0.99546989, 0.99761201, 0.49265140],
     2123                             [- 6.26416271, - 0.00148012, 0.00090674, 7.26268258, 0.99547204, 0.99761314, 0.49265242],
     2124                             [- 6.26418933, - 0.00147942, 0.00090631, 7.26270991, 0.99547420, 0.99761426, 0.49265345],
     2125                             [- 6.26421586, - 0.00147872, 0.00090589, 7.26273714, 0.99547635, 0.99761539, 0.49265447],
     2126                             [- 6.26424230, - 0.00147802, 0.00090547, 7.26276428, 0.99547850, 0.99761651, 0.49265547],
     2127                             [- 6.26426864, - 0.00147733, 0.00090504, 7.26279132, 0.99548065, 0.99761763, 0.49265649],
     2128                             [- 6.26429489, - 0.00147663, 0.00090462, 7.26281826, 0.99548279, 0.99761875, 0.49265751],
     2129                             [- 6.26432104, - 0.00147593, 0.00090419, 7.26284511, 0.99548494, 0.99761987, 0.49265851],
     2130                             [- 6.26434710, - 0.00147523, 0.00090377, 7.26287186, 0.99548708, 0.99762099, 0.49265951],
     2131                             [- 6.26437306, - 0.00147454, 0.00090335, 7.26289852, 0.99548922, 0.99762211, 0.49266051],
     2132                             [- 6.26439893, - 0.00147384, 0.00090293, 7.26292509, 0.99549136, 0.99762323, 0.49266151],
     2133                             [- 6.26442471, - 0.00147315, 0.00090250, 7.26295156, 0.99549349, 0.99762435, 0.49266249],
     2134                             [- 6.26445040, - 0.00147246, 0.00090208, 7.26297794, 0.99549563, 0.99762546, 0.49266350],
     2135                             [- 6.26447599, - 0.00147176, 0.00090166, 7.26300423, 0.99549776, 0.99762658, 0.49266448],
     2136                             [- 6.26450150, - 0.00147107, 0.00090124, 7.26303043, 0.99549989, 0.99762769, 0.49266547],
     2137                             [- 6.26452691, - 0.00147038, 0.00090082, 7.26305653, 0.99550202, 0.99762880, 0.49266646],
     2138                             [- 6.26455222, - 0.00146969, 0.00090040, 7.26308254, 0.99550415, 0.99762991, 0.49266744],
     2139                             [- 6.26457745, - 0.00146900, 0.00089998, 7.26310846, 0.99550627, 0.99763102, 0.49266841],
     2140                             [- 6.26460259, - 0.00146831, 0.00089956, 7.26313428, 0.99550839, 0.99763213, 0.49266939],
     2141                             [- 6.26462764, - 0.00146762, 0.00089914, 7.26316002, 0.99551051, 0.99763324, 0.49267035],
     2142                             [- 6.26465259, - 0.00146693, 0.00089872, 7.26318567, 0.99551263, 0.99763435, 0.49267132],
     2143                             [- 6.26467746, - 0.00146624, 0.00089831, 7.26321122, 0.99551475, 0.99763545, 0.49267230],
     2144                             [- 6.26470224, - 0.00146555, 0.00089789, 7.26323669, 0.99551686, 0.99763656, 0.49267325],
     2145                             [- 6.26472693, - 0.00146486, 0.00089747, 7.26326207, 0.99551898, 0.99763766, 0.49267421],
     2146                             [- 6.26475153, - 0.00146418, 0.00089705, 7.26328735, 0.99552109, 0.99763877, 0.49267517],
     2147                             [- 6.26477604, - 0.00146349, 0.00089664, 7.26331255, 0.99552319, 0.99763987, 0.49267611],
     2148                             [- 6.26480047, - 0.00146281, 0.00089622, 7.26333766, 0.99552530, 0.99764097, 0.49267707],
     2149                             [- 6.26482481, - 0.00146212, 0.00089580, 7.26336268, 0.99552741, 0.99764207, 0.49267802],
     2150                             [- 6.26484906, - 0.00146144, 0.00089539, 7.26338762, 0.99552951, 0.99764317, 0.49267897],
     2151                             [- 6.26487322, - 0.00146076, 0.00089497, 7.26341246, 0.99553161, 0.99764427, 0.49267991],
     2152                             [- 6.26489730, - 0.00146007, 0.00089456, 7.26343722, 0.99553371, 0.99764537, 0.49268085],
     2153                             [- 6.26492129, - 0.00145939, 0.00089414, 7.26346189, 0.99553581, 0.99764646, 0.49268179],
     2154                             [- 6.26494519, - 0.00145871, 0.00089373, 7.26348648, 0.99553790, 0.99764756, 0.49268272],
     2155                             [- 6.26496901, - 0.00145803, 0.00089332, 7.26351098, 0.99553999, 0.99764865, 0.49268365],
     2156                             [- 6.26499274, - 0.00145735, 0.00089290, 7.26353539, 0.99554209, 0.99764975, 0.49268458],
     2157                             [- 6.26501639, - 0.00145667, 0.00089249, 7.26355972, 0.99554417, 0.99765084, 0.49268549],
     2158                             [- 6.26503995, - 0.00145599, 0.00089208, 7.26358396, 0.99554626, 0.99765193, 0.49268643],
     2159                             [- 6.26506343, - 0.00145531, 0.00089166, 7.26360811, 0.99554835, 0.99765302, 0.49268735],
     2160                             [- 6.26508682, - 0.00145463, 0.00089125, 7.26363219, 0.99555043, 0.99765411, 0.49268826],
     2161                             [- 6.26511013, - 0.00145396, 0.00089084, 7.26365617, 0.99555251, 0.99765520, 0.49268918],
     2162                             [- 6.26513336, - 0.00145328, 0.00089043, 7.26368008, 0.99555459, 0.99765629, 0.49269008],
     2163                             [- 6.26515650, - 0.00145261, 0.00089002, 7.26370389, 0.99555667, 0.99765738, 0.49269099],
     2164                             [- 6.26517956, - 0.00145193, 0.00088961, 7.26372763, 0.99555875, 0.99765846, 0.49269190],
     2165                             [- 6.26520254, - 0.00145126, 0.00088920, 7.26375128, 0.99556082, 0.99765955, 0.49269281],
     2166                             [- 6.26522543, - 0.00145058, 0.00088879, 7.26377485, 0.99556289, 0.99766063, 0.49269370],
     2167                             [- 6.26524824, - 0.00144991, 0.00088838, 7.26379834, 0.99556496, 0.99766171, 0.49269460],
     2168                             [- 6.26527098, - 0.00144924, 0.00088797, 7.26382174, 0.99556703, 0.99766280, 0.49269550],
     2169                             [- 6.26529363, - 0.00144856, 0.00088756, 7.26384506, 0.99556910, 0.99766388, 0.49269640],
     2170                             [- 6.26531619, - 0.00144789, 0.00088715, 7.26386830, 0.99557116, 0.99766496, 0.49269728],
     2171                             [- 6.26533868, - 0.00144722, 0.00088674, 7.26389146, 0.99557323, 0.99766604, 0.49269817],
     2172                             [- 6.26536109, - 0.00144655, 0.00088634, 7.26391454, 0.99557529, 0.99766711, 0.49269905],
     2173                             [- 6.26538341, - 0.00144588, 0.00088593, 7.26393753, 0.99557735, 0.99766819, 0.49269994],
     2174                             [- 6.26540566, - 0.00144521, 0.00088552, 7.26396045, 0.99557940, 0.99766927, 0.49270083],
     2175                             [- 6.26542783, - 0.00144454, 0.00088511, 7.26398329, 0.99558146, 0.99767034, 0.49270168],
     2176                             [- 6.26544992, - 0.00144387, 0.00088471, 7.26400604, 0.99558351, 0.99767142, 0.49270256],
     2177                             [- 6.26547192, - 0.00144321, 0.00088430, 7.26402872, 0.99558556, 0.99767249, 0.49270344],
     2178                             [- 6.26549385, - 0.00144254, 0.00088390, 7.26405131, 0.99558761, 0.99767356, 0.49270431],
     2179                             [- 6.26551570, - 0.00144187, 0.00088349, 7.26407383, 0.99558966, 0.99767463, 0.49270518],
     2180                             [- 6.26553748, - 0.00144121, 0.00088309, 7.26409627, 0.99559171, 0.99767571, 0.49270604],
     2181                             [- 6.26555917, - 0.00144054, 0.00088268, 7.26411863, 0.99559375, 0.99767678, 0.49270690],
     2182                             [- 6.26558079, - 0.00143988, 0.00088228, 7.26414091, 0.99559579, 0.99767784, 0.49270776],
     2183                             [- 6.26560233, - 0.00143922, 0.00088187, 7.26416311, 0.99559783, 0.99767891, 0.49270862],
     2184                             [- 6.26562379, - 0.00143855, 0.00088147, 7.26418524, 0.99559987, 0.99767998, 0.49270947],
     2185                             [- 6.26564518, - 0.00143789, 0.00088107, 7.26420729, 0.99560191, 0.99768104, 0.49271032],
     2186                             [- 6.26566648, - 0.00143723, 0.00088066, 7.26422926, 0.99560394, 0.99768211, 0.49271118],
     2187                             [- 6.26568772, - 0.00143657, 0.00088026, 7.26425115, 0.99560598, 0.99768317, 0.49271202],
     2188                             [- 6.26570887, - 0.00143590, 0.00087986, 7.26427297, 0.99560801, 0.99768424, 0.49271286],
     2189                             [- 6.26572995, - 0.00143524, 0.00087946, 7.26429471, 0.99561004, 0.99768530, 0.49271371],
     2190                             [- 6.26575096, - 0.00143458, 0.00087906, 7.26431637, 0.99561206, 0.99768636, 0.49271455],
     2191                             [- 6.26577189, - 0.00143393, 0.00087865, 7.26433796, 0.99561409, 0.99768742, 0.49271537],
     2192                             [- 6.26579274, - 0.00143327, 0.00087825, 7.26435948, 0.99561611, 0.99768848, 0.49271621],
     2193                             [- 6.26581352, - 0.00143261, 0.00087785, 7.26438092, 0.99561813, 0.99768954, 0.49271704],
     2194                             [- 6.26583423, - 0.00143195, 0.00087745, 7.26440228, 0.99562015, 0.99769059, 0.49271787],
     2195                             [- 6.26585486, - 0.00143130, 0.00087705, 7.26442357, 0.99562217, 0.99769165, 0.49271871],
     2196                             [- 6.26587542, - 0.00143064, 0.00087665, 7.26444478, 0.99562419, 0.99769271, 0.49271954],
     2197                             [- 6.26589591, - 0.00142998, 0.00087626, 7.26446592, 0.99562620, 0.99769376, 0.49272035],
     2198                             [- 6.26591632, - 0.00142933, 0.00087586, 7.26448699, 0.99562822, 0.99769482, 0.49272117],
     2199                             [- 6.26593666, - 0.00142867, 0.00087546, 7.26450798, 0.99563023, 0.99769587, 0.49272198],
     2200                             [- 6.26595692, - 0.00142802, 0.00087506, 7.26452890, 0.99563224, 0.99769692, 0.49272279],
     2201                             [- 6.26597711, - 0.00142737, 0.00087466, 7.26454975, 0.99563424, 0.99769797, 0.49272362],
     2202                             [- 6.26599724, - 0.00142671, 0.00087426, 7.26457052, 0.99563625, 0.99769902, 0.49272441],
     2203                             [- 6.26601728, - 0.00142606, 0.00087387, 7.26459122, 0.99563825, 0.99770007, 0.49272522],
     2204                             [- 6.26603726, - 0.00142541, 0.00087347, 7.26461185, 0.99564025, 0.99770112, 0.49272604],
     2205                             [- 6.26605717, - 0.00142476, 0.00087307, 7.26463241, 0.99564225, 0.99770217, 0.49272683],
     2206                             [- 6.26607700, - 0.00142411, 0.00087268, 7.26465289, 0.99564425, 0.99770321, 0.49272764],
     2207                             [- 6.26609676, - 0.00142346, 0.00087228, 7.26467331, 0.99564625, 0.99770426, 0.49272843],
     2208                             [- 6.26611646, - 0.00142281, 0.00087189, 7.26469365, 0.99564824, 0.99770530, 0.49272921],
     2209                             [- 6.26613608, - 0.00142216, 0.00087149, 7.26471392, 0.99565024, 0.99770635, 0.49273003],
     2210                             [- 6.26615563, - 0.00142151, 0.00087110, 7.26473412, 0.99565223, 0.99770739, 0.49273081],
     2211                             [- 6.26617512, - 0.00142087, 0.00087070, 7.26475425, 0.99565422, 0.99770843, 0.49273160],
     2212                             [- 6.26619453, - 0.00142022, 0.00087031, 7.26477431, 0.99565620, 0.99770947, 0.49273238],
     2213                             [- 6.26621387, - 0.00141957, 0.00086992, 7.26479430, 0.99565819, 0.99771051, 0.49273317],
     2214                             [- 6.26623315, - 0.00141893, 0.00086952, 7.26481422, 0.99566017, 0.99771155, 0.49273396],
     2215                             [- 6.26625235, - 0.00141828, 0.00086913, 7.26483407, 0.99566216, 0.99771259, 0.49273473],
     2216                             [- 6.26627149, - 0.00141764, 0.00086874, 7.26485385, 0.99566414, 0.99771362, 0.49273551],
     2217                             [- 6.26629056, - 0.00141699, 0.00086835, 7.26487356, 0.99566612, 0.99771466, 0.49273628],
     2218                             [- 6.26630956, - 0.00141635, 0.00086795, 7.26489321, 0.99566809, 0.99771570, 0.49273706],
     2219                             [- 6.26632849, - 0.00141571, 0.00086756, 7.26491278, 0.99567007, 0.99771673, 0.49273783],
     2220                             [- 6.26634735, - 0.00141506, 0.00086717, 7.26493229, 0.99567204, 0.99771776, 0.49273859],
     2221                             [- 6.26636615, - 0.00141442, 0.00086678, 7.26495173, 0.99567401, 0.99771880, 0.49273935],
     2222                             [- 6.26638488, - 0.00141378, 0.00086639, 7.26497110, 0.99567598, 0.99771983, 0.49274013],
     2223                             [- 6.26640355, - 0.00141314, 0.00086600, 7.26499041, 0.99567795, 0.99772086, 0.49274089],
     2224                             [- 6.26642214, - 0.00141250, 0.00086561, 7.26500964, 0.99567992, 0.99772189, 0.49274164],
     2225                             [- 6.26644067, - 0.00141186, 0.00086522, 7.26502881, 0.99568188, 0.99772292, 0.49274241],
     2226                             [- 6.26645914, - 0.00141122, 0.00086483, 7.26504792, 0.99568384, 0.99772395, 0.49274316],
     2227                             [- 6.26647754, - 0.00141058, 0.00086444, 7.26506695, 0.99568580, 0.99772497, 0.49274392],
     2228                             [- 6.26649587, - 0.00140995, 0.00086405, 7.26508592, 0.99568776, 0.99772600, 0.49274466],
     2229                             [- 6.26651414, - 0.00140931, 0.00086366, 7.26510483, 0.99568972, 0.99772703, 0.49274542],
     2230                             [- 6.26653234, - 0.00140867, 0.00086328, 7.26512367, 0.99569168, 0.99772805, 0.49274618],
     2231                             [- 6.26655048, - 0.00140804, 0.00086289, 7.26514244, 0.99569363, 0.99772908, 0.49274690],
     2232                             [- 6.26656855, - 0.00140740, 0.00086250, 7.26516115, 0.99569558, 0.99773010, 0.49274765],
     2233                             [- 6.26658656, - 0.00140677, 0.00086211, 7.26517979, 0.99569753, 0.99773112, 0.49274839],
     2234                             [- 6.26660450, - 0.00140613, 0.00086173, 7.26519837, 0.99569948, 0.99773214, 0.49274912],
     2235                             [- 6.26662238, - 0.00140550, 0.00086134, 7.26521688, 0.99570143, 0.99773316, 0.49274986],
     2236                             [- 6.26664020, - 0.00140486, 0.00086096, 7.26523533, 0.99570337, 0.99773418, 0.49275059],
     2237                             [- 6.26665795, - 0.00140423, 0.00086057, 7.26525372, 0.99570532, 0.99773520, 0.49275132],
     2238                             [- 6.26667564, - 0.00140360, 0.00086018, 7.26527204, 0.99570726, 0.99773622, 0.49275206],
     2239                             [- 6.26669326, - 0.00140297, 0.00085980, 7.26529030, 0.99570920, 0.99773723, 0.49275276],
     2240                             [- 6.26671083, - 0.00140234, 0.00085942, 7.26530849, 0.99571114, 0.99773825, 0.49275350],
     2241                             [- 6.26672833, - 0.00140171, 0.00085903, 7.26532662, 0.99571307, 0.99773926, 0.49275423],
     2242                             [- 6.26674577, - 0.00140108, 0.00085865, 7.26534469, 0.99571501, 0.99774028, 0.49275495],
     2243                             [- 6.26676314, - 0.00140045, 0.00085826, 7.26536270, 0.99571694, 0.99774129, 0.49275567],
     2244                             [- 6.26678046, - 0.00139982, 0.00085788, 7.26538064, 0.99571887, 0.99774230, 0.49275639],
     2245                             [- 6.26679771, - 0.00139919, 0.00085750, 7.26539852, 0.99572080, 0.99774331, 0.49275711],
     2246                             [- 6.26681490, - 0.00139856, 0.00085711, 7.26541634, 0.99572273, 0.99774433, 0.49275782],
     2247                             [- 6.26683203, - 0.00139793, 0.00085673, 7.26543410, 0.99572466, 0.99774533, 0.49275852],
     2248                             [- 6.26684910, - 0.00139731, 0.00085635, 7.26545179, 0.99572658, 0.99774634, 0.49275924],
     2249                             [- 6.26686611, - 0.00139668, 0.00085597, 7.26546943, 0.99572851, 0.99774735, 0.49275995],
     2250                             [- 6.26688306, - 0.00139605, 0.00085559, 7.26548700, 0.99573043, 0.99774836, 0.49276065],
     2251                             [- 6.26689994, - 0.00139543, 0.00085521, 7.26550451, 0.99573235, 0.99774936, 0.49276134],
     2252                             [- 6.26691677, - 0.00139481, 0.00085482, 7.26552196, 0.99573426, 0.99775037, 0.49276204],
     2253                             [- 6.26693354, - 0.00139418, 0.00085444, 7.26553936, 0.99573618, 0.99775137, 0.49276274],
     2254                             [- 6.26695024, - 0.00139356, 0.00085406, 7.26555669, 0.99573809, 0.99775238, 0.49276344],
     2255                             [- 6.26696689, - 0.00139293, 0.00085368, 7.26557396, 0.99574001, 0.99775338, 0.49276413],
     2256                             [- 6.26698348, - 0.00139231, 0.00085331, 7.26559117, 0.99574192, 0.99775438, 0.49276484],
     2257                             [- 6.26700001, - 0.00139169, 0.00085293, 7.26560832, 0.99574383, 0.99775538, 0.49276553],
     2258                             [- 6.26701648, - 0.00139107, 0.00085255, 7.26562541, 0.99574574, 0.99775638, 0.49276621],
     2259                             [- 6.26703289, - 0.00139045, 0.00085217, 7.26564245, 0.99574764, 0.99775738, 0.49276691],
     2260                             [- 6.26704925, - 0.00138983, 0.00085179, 7.26565942, 0.99574955, 0.99775838, 0.49276759],
     2261                             [- 6.26706554, - 0.00138921, 0.00085141, 7.26567633, 0.99575145, 0.99775938, 0.49276826],
     2262                             [- 6.26708178, - 0.00138859, 0.00085104, 7.26569319, 0.99575335, 0.99776038, 0.49276895],
     2263                             [- 6.26709796, - 0.00138797, 0.00085066, 7.26570999, 0.99575525, 0.99776137, 0.49276963],
     2264                             [- 6.26711408, - 0.00138735, 0.00085028, 7.26572673, 0.99575715, 0.99776237, 0.49277030],
     2265                             [- 6.26713015, - 0.00138674, 0.00084990, 7.26574341, 0.99575904, 0.99776336, 0.49277097],
     2266                             [- 6.26714616, - 0.00138612, 0.00084953, 7.26576004, 0.99576094, 0.99776435, 0.49277165],
     2267                             [- 6.26716211, - 0.00138550, 0.00084915, 7.26577661, 0.99576283, 0.99776535, 0.49277232],
     2268                             [- 6.26717800, - 0.00138489, 0.00084878, 7.26579312, 0.99576472, 0.99776634, 0.49277298],
     2269                             [- 6.26719384, - 0.00138427, 0.00084840, 7.26580957, 0.99576661, 0.99776733, 0.49277366],
     2270                             [- 6.26720962, - 0.00138366, 0.00084803, 7.26582597, 0.99576850, 0.99776832, 0.49277432],
     2271                             [- 6.26722535, - 0.00138304, 0.00084765, 7.26584231, 0.99577038, 0.99776931, 0.49277499],
     2272                             [- 6.26724102, - 0.00138243, 0.00084728, 7.26585859, 0.99577227, 0.99777029, 0.49277565],
     2273                             [- 6.26725663, - 0.00138181, 0.00084690, 7.26587482, 0.99577415, 0.99777128, 0.49277630],
     2274                             [- 6.26727219, - 0.00138120, 0.00084653, 7.26589099, 0.99577603, 0.99777227, 0.49277698],
     2275                             [- 6.26728769, - 0.00138059, 0.00084616, 7.26590710, 0.99577791, 0.99777325, 0.49277763],
     2276                             [- 6.26730314, - 0.00137998, 0.00084578, 7.26592316, 0.99577979, 0.99777424, 0.49277828],
     2277                             [- 6.26731854, - 0.00137937, 0.00084541, 7.26593917, 0.99578166, 0.99777522, 0.49277893],
     2278                             [- 6.26733388, - 0.00137876, 0.00084504, 7.26595512, 0.99578354, 0.99777621, 0.49277959],
     2279                             [- 6.26734916, - 0.00137815, 0.00084467, 7.26597101, 0.99578541, 0.99777719, 0.49278024],
     2280                             [- 6.26736439, - 0.00137754, 0.00084429, 7.26598685, 0.99578728, 0.99777817, 0.49278088],
     2281                             [- 6.26737957, - 0.00137693, 0.00084392, 7.26600264, 0.99578915, 0.99777915, 0.49278153],
     2282                             [- 6.26739469, - 0.00137632, 0.00084355, 7.26601837, 0.99579102, 0.99778013, 0.49278219],
     2283                             [- 6.26740976, - 0.00137571, 0.00084318, 7.26603405, 0.99579289, 0.99778111, 0.49278281],
     2284                             [- 6.26742477, - 0.00137510, 0.00084281, 7.26604967, 0.99579475, 0.99778209, 0.49278347],
     2285                             [- 6.26743974, - 0.00137450, 0.00084244, 7.26606524, 0.99579661, 0.99778306, 0.49278410],
     2286                             [- 6.26745464, - 0.00137389, 0.00084207, 7.26608075, 0.99579847, 0.99778404, 0.49278472],
     2287                             [- 6.26746950, - 0.00137328, 0.00084170, 7.26609622, 0.99580033, 0.99778502, 0.49278536],
     2288                             [- 6.26748430, - 0.00137268, 0.00084133, 7.26611162, 0.99580219, 0.99778599, 0.49278600],
     2289                             [- 6.26749906, - 0.00137207, 0.00084096, 7.26612698, 0.99580405, 0.99778696, 0.49278663],
     2290                             [- 6.26751375, - 0.00137147, 0.00084059, 7.26614228, 0.99580590, 0.99778794, 0.49278724],
     2291                             [- 6.26752840, - 0.00137087, 0.00084022, 7.26615753, 0.99580776, 0.99778891, 0.49278789],
     2292                             [- 6.26754300, - 0.00137026, 0.00083986, 7.26617273, 0.99580961, 0.99778988, 0.49278852],
     2293                             [- 6.26755754, - 0.00136966, 0.00083949, 7.26618788, 0.99581146, 0.99779085, 0.49278914],
     2294                             [- 6.26757203, - 0.00136906, 0.00083912, 7.26620297, 0.99581331, 0.99779182, 0.49278975],
     2295                             [- 6.26758647, - 0.00136846, 0.00083875, 7.26621801, 0.99581515, 0.99779279, 0.49279037],
     2296                             [- 6.26760086, - 0.00136786, 0.00083839, 7.26623300, 0.99581700, 0.99779376, 0.49279099],
     2297                             [- 6.26761520, - 0.00136725, 0.00083802, 7.26624794, 0.99581884, 0.99779472, 0.49279161],
     2298                             [- 6.26762949, - 0.00136665, 0.00083765, 7.26626283, 0.99582068, 0.99779569, 0.49279223],
     2299                             [- 6.26764372, - 0.00136605, 0.00083729, 7.26627767, 0.99582252, 0.99779666, 0.49279284],
     2300                             [- 6.26765791, - 0.00136546, 0.00083692, 7.26629245, 0.99582436, 0.99779762, 0.49279345],
     2301                             [- 6.26767205, - 0.00136486, 0.00083656, 7.26630719, 0.99582620, 0.99779859, 0.49279407],
     2302                             [- 6.26768613, - 0.00136426, 0.00083619, 7.26632187, 0.99582804, 0.99779955, 0.49279468],
     2303                             [- 6.26770017, - 0.00136366, 0.00083583, 7.26633651, 0.99582987, 0.99780051, 0.49279528],
     2304                             [- 6.26771416, - 0.00136306, 0.00083546, 7.26635109, 0.99583170, 0.99780147, 0.49279588],
     2305                             [- 6.26772809, - 0.00136247, 0.00083510, 7.26636562, 0.99583353, 0.99780243, 0.49279649],
     2306                             [- 6.26774198, - 0.00136187, 0.00083474, 7.26638011, 0.99583536, 0.99780339, 0.49279710],
     2307                             [- 6.26775582, - 0.00136128, 0.00083437, 7.26639454, 0.99583719, 0.99780435, 0.49279770],
     2308                             [- 6.26776961, - 0.00136068, 0.00083401, 7.26640893, 0.99583902, 0.99780531, 0.49279829],
     2309                             [- 6.26778335, - 0.00136009, 0.00083365, 7.26642326, 0.99584084, 0.99780627, 0.49279888],
     2310                             [- 6.26779704, - 0.00135949, 0.00083328, 7.26643755, 0.99584266, 0.99780722, 0.49279946],
     2311                             [- 6.26781069, - 0.00135890, 0.00083292, 7.26645179, 0.99584449, 0.99780818, 0.49280008],
     2312                             [- 6.26782428, - 0.00135831, 0.00083256, 7.26646598, 0.99584631, 0.99780913, 0.49280067],
     2313                             [- 6.26783783, - 0.00135771, 0.00083220, 7.26648012, 0.99584812, 0.99781009, 0.49280125],
     2314                             [- 6.26785133, - 0.00135712, 0.00083184, 7.26649421, 0.99584994, 0.99781104, 0.49280185],
     2315                             [- 6.26786479, - 0.00135653, 0.00083148, 7.26650826, 0.99585175, 0.99781199, 0.49280244],
     2316                             [- 6.26787819, - 0.00135594, 0.00083111, 7.26652225, 0.99585357, 0.99781295, 0.49280301],
     2317                             [- 6.26789155, - 0.00135535, 0.00083075, 7.26653620, 0.99585538, 0.99781390, 0.49280360],
     2318                             [- 6.26790486, - 0.00135476, 0.00083039, 7.26655010, 0.99585719, 0.99781485, 0.49280419],
     2319                             [- 6.26791812, - 0.00135417, 0.00083003, 7.26656395, 0.99585900, 0.99781580, 0.49280476],
     2320                             [- 6.26793134, - 0.00135358, 0.00082967, 7.26657776, 0.99586081, 0.99781675, 0.49280534],
     2321                             [- 6.26794451, - 0.00135299, 0.00082931, 7.26659152, 0.99586261, 0.99781769, 0.49280594],
     2322                             [- 6.26795764, - 0.00135240, 0.00082896, 7.26660523, 0.99586442, 0.99781864, 0.49280650],
     2323                             [- 6.26797071, - 0.00135182, 0.00082860, 7.26661890, 0.99586622, 0.99781959, 0.49280708],
     2324                             [- 6.26798374, - 0.00135123, 0.00082824, 7.26663252, 0.99586802, 0.99782053, 0.49280764],
     2325                             [- 6.26799673, - 0.00135064, 0.00082788, 7.26664609, 0.99586982, 0.99782148, 0.49280822],
     2326                             [- 6.26800967, - 0.00135006, 0.00082752, 7.26665961, 0.99587162, 0.99782242, 0.49280878],
     2327                             [- 6.26802256, - 0.00134947, 0.00082717, 7.26667309, 0.99587341, 0.99782336, 0.49280935],
     2328                             [- 6.26803541, - 0.00134889, 0.00082681, 7.26668653, 0.99587521, 0.99782431, 0.49280992],
     2329                             [- 6.26804822, - 0.00134830, 0.00082645, 7.26669991, 0.99587700, 0.99782525, 0.49281048],
     2330                             [- 6.26806098, - 0.00134772, 0.00082609, 7.26671326, 0.99587879, 0.99782619, 0.49281107],
     2331                             [- 6.26807369, - 0.00134713, 0.00082574, 7.26672655, 0.99588058, 0.99782713, 0.49281162],
     2332                             [- 6.26808636, - 0.00134655, 0.00082538, 7.26673981, 0.99588237, 0.99782807, 0.49281218],
     2333                             [- 6.26809898, - 0.00134597, 0.00082503, 7.26675301, 0.99588416, 0.99782900, 0.49281274],
     2334                             [- 6.26811156, - 0.00134539, 0.00082467, 7.26676617, 0.99588595, 0.99782994, 0.49281329],
     2335                             [- 6.26812410, - 0.00134481, 0.00082432, 7.26677929, 0.99588773, 0.99783088, 0.49281384],
     2336                             [- 6.26813659, - 0.00134422, 0.00082396, 7.26679236, 0.99588951, 0.99783181, 0.49281439],
     2337                             [- 6.26814904, - 0.00134364, 0.00082361, 7.26680539, 0.99589129, 0.99783275, 0.49281496],
     2338                             [- 6.26816144, - 0.00134306, 0.00082325, 7.26681838, 0.99589307, 0.99783368, 0.49281552],
     2339                             [- 6.26817380, - 0.00134248, 0.00082290, 7.26683132, 0.99589485, 0.99783462, 0.49281605],
     2340                             [- 6.26818612, - 0.00134191, 0.00082255, 7.26684421, 0.99589663, 0.99783555, 0.49281661],
     2341                             [- 6.26819839, - 0.00134133, 0.00082219, 7.26685706, 0.99589840, 0.99783648, 0.49281716],
     2342                             [- 6.26821062, - 0.00134075, 0.00082184, 7.26686987, 0.99590018, 0.99783741, 0.49281769],
     2343                             [- 6.26822281, - 0.00134017, 0.00082149, 7.26688264, 0.99590195, 0.99783834, 0.49281824],
     2344                             [- 6.26823495, - 0.00133959, 0.00082113, 7.26689536, 0.99590372, 0.99783927, 0.49281878],
     2345                             [- 6.26824705, - 0.00133902, 0.00082078, 7.26690804, 0.99590549, 0.99784020, 0.49281933],
     2346                             [- 6.26825911, - 0.00133844, 0.00082043, 7.26692067, 0.99590725, 0.99784113, 0.49281987],
     2347                             [- 6.26827113, - 0.00133787, 0.00082008, 7.26693326, 0.99590902, 0.99784206, 0.49282040],
     2348                             [- 6.26828310, - 0.00133729, 0.00081973, 7.26694581, 0.99591078, 0.99784298, 0.49282094],
     2349                             [- 6.26829504, - 0.00133672, 0.00081938, 7.26695832, 0.99591255, 0.99784391, 0.49282147],
     2350                             [- 6.26830693, - 0.00133614, 0.00081902, 7.26697079, 0.99591431, 0.99784483, 0.49282201],
     2351                             [- 6.26831878, - 0.00133557, 0.00081867, 7.26698321, 0.99591607, 0.99784576, 0.49282254],
     2352                             [- 6.26833058, - 0.00133499, 0.00081832, 7.26699559, 0.99591783, 0.99784668, 0.49282308],
     2353                             [- 6.26834235, - 0.00133442, 0.00081797, 7.26700793, 0.99591958, 0.99784760, 0.49282360],
     2354                             [- 6.26835407, - 0.00133385, 0.00081762, 7.26702023, 0.99592134, 0.99784853, 0.49282414],
     2355                             [- 6.26836576, - 0.00133328, 0.00081728, 7.26703248, 0.99592309, 0.99784945, 0.49282465],
     2356                             [- 6.26837740, - 0.00133271, 0.00081693, 7.26704469, 0.99592485, 0.99785037, 0.49282520],
     2357                             [- 6.26838900, - 0.00133214, 0.00081658, 7.26705687, 0.99592660, 0.99785129, 0.49282572],
     2358                             [- 6.26840056, - 0.00133157, 0.00081623, 7.26706900, 0.99592835, 0.99785221, 0.49282624],
     2359                             [- 6.26841209, - 0.00133100, 0.00081588, 7.26708109, 0.99593009, 0.99785312, 0.49282676],
     2360                             [- 6.26842357, - 0.00133043, 0.00081553, 7.26709314, 0.99593184, 0.99785404, 0.49282728],
     2361                             [- 6.26843501, - 0.00132986, 0.00081519, 7.26710515, 0.99593359, 0.99785496, 0.49282780],
     2362                             [- 6.26844641, - 0.00132929, 0.00081484, 7.26711712, 0.99593533, 0.99785587, 0.49282829],
     2363                             [- 6.26845777, - 0.00132872, 0.00081449, 7.26712905, 0.99593707, 0.99785679, 0.49282883],
     2364                             [- 6.26846909, - 0.00132815, 0.00081414, 7.26714093, 0.99593881, 0.99785770, 0.49282934],
     2365                             [- 6.26848037, - 0.00132759, 0.00081380, 7.26715278, 0.99594055, 0.99785862, 0.49282986],
     2366                             [- 6.26849161, - 0.00132702, 0.00081345, 7.26716459, 0.99594229, 0.99785953, 0.49283037],
     2367                             [- 6.26850281, - 0.00132645, 0.00081311, 7.26717636, 0.99594402, 0.99786044, 0.49283087],
     2368                             [- 6.26851397, - 0.00132589, 0.00081276, 7.26718809, 0.99594576, 0.99786135, 0.49283138],
     2369                             [- 6.26852510, - 0.00132532, 0.00081242, 7.26719977, 0.99594749, 0.99786226, 0.49283189],
     2370                             [- 6.26853618, - 0.00132476, 0.00081207, 7.26721142, 0.99594922, 0.99786317, 0.49283239],
     2371                             [- 6.26854723, - 0.00132419, 0.00081173, 7.26722303, 0.99595095, 0.99786408, 0.49283291],
     2372                             [- 6.26855824, - 0.00132363, 0.00081138, 7.26723461, 0.99595268, 0.99786499, 0.49283341],
     2373                             [- 6.26856921, - 0.00132307, 0.00081104, 7.26724614, 0.99595441, 0.99786590, 0.49283391],
     2374                             [- 6.26858014, - 0.00132251, 0.00081069, 7.26725763, 0.99595614, 0.99786680, 0.49283441],
     2375                             [- 6.26859103, - 0.00132194, 0.00081035, 7.26726909, 0.99595786, 0.99786771, 0.49283490],
     2376                             [- 6.26860188, - 0.00132138, 0.00081001, 7.26728050, 0.99595958, 0.99786861, 0.49283543],
     2377                             [- 6.26861270, - 0.00132082, 0.00080966, 7.26729188, 0.99596131, 0.99786952, 0.49283590],
     2378                             [- 6.26862348, - 0.00132026, 0.00080932, 7.26730322, 0.99596303, 0.99787042, 0.49283641],
     2379                             [- 6.26863422, - 0.00131970, 0.00080898, 7.26731452, 0.99596474, 0.99787132, 0.49283690],
     2380                             [- 6.26864493, - 0.00131914, 0.00080864, 7.26732579, 0.99596646, 0.99787223, 0.49283740],
     2381                             [- 6.26865559, - 0.00131858, 0.00080829, 7.26733701, 0.99596818, 0.99787313, 0.49283789],
     2382                             [- 6.26866622, - 0.00131802, 0.00080795, 7.26734820, 0.99596989, 0.99787403, 0.49283838],
     2383                             [- 6.26867681, - 0.00131746, 0.00080761, 7.26735935, 0.99597160, 0.99787493, 0.49283886],
     2384                             [- 6.26868737, - 0.00131690, 0.00080727, 7.26737047, 0.99597332, 0.99787583, 0.49283935],
     2385                             [- 6.26869789, - 0.00131635, 0.00080693, 7.26738154, 0.99597503, 0.99787673, 0.49283983],
     2386                             [- 6.26870837, - 0.00131579, 0.00080659, 7.26739258, 0.99597673, 0.99787762, 0.49284032],
     2387                             [- 6.26871882, - 0.00131523, 0.00080625, 7.26740358, 0.99597844, 0.99787852, 0.49284083],
     2388                             [- 6.26872923, - 0.00131468, 0.00080591, 7.26741455, 0.99598015, 0.99787942, 0.49284129],
     2389                             [- 6.26873960, - 0.00131412, 0.00080557, 7.26742548, 0.99598185, 0.99788031, 0.49284178],
     2390                             [- 6.26874993, - 0.00131357, 0.00080523, 7.26743637, 0.99598355, 0.99788121, 0.49284226],
     2391                             [- 6.26876024, - 0.00131301, 0.00080489, 7.26744723, 0.99598526, 0.99788210, 0.49284273],
     2392                             [- 6.26877050, - 0.00131246, 0.00080455, 7.26745804, 0.99598696, 0.99788299, 0.49284320],
     2393                             [- 6.26878073, - 0.00131190, 0.00080421, 7.26746883, 0.99598865, 0.99788389, 0.49284369],
     2394                             [- 6.26879092, - 0.00131135, 0.00080387, 7.26747958, 0.99599035, 0.99788478, 0.49284417],
     2395                             [- 6.26880108, - 0.00131080, 0.00080354, 7.26749029, 0.99599205, 0.99788567, 0.49284465],
     2396                             [- 6.26881120, - 0.00131024, 0.00080320, 7.26750096, 0.99599374, 0.99788656, 0.49284510],
     2397                             [- 6.26882129, - 0.00130969, 0.00080286, 7.26751160, 0.99599543, 0.99788745, 0.49284559],
     2398                             [- 6.26883135, - 0.00130914, 0.00080252, 7.26752221, 0.99599713, 0.99788834, 0.49284606],
     2399                             [- 6.26884136, - 0.00130859, 0.00080219, 7.26753278, 0.99599882, 0.99788923, 0.49284653],
     2400                             [- 6.26885135, - 0.00130804, 0.00080185, 7.26754331, 0.99600050, 0.99789011, 0.49284699],
     2401                             [- 6.26886129, - 0.00130749, 0.00080151, 7.26755381, 0.99600219, 0.99789100, 0.49284746],
     2402                             [- 6.26887121, - 0.00130694, 0.00080118, 7.26756427, 0.99600388, 0.99789189, 0.49284793],
     2403                             [- 6.26888109, - 0.00130639, 0.00080084, 7.26757470, 0.99600556, 0.99789277, 0.49284838],
     2404                             [- 6.26889093, - 0.00130584, 0.00080051, 7.26758509, 0.99600724, 0.99789365, 0.49284885],
     2405                             [- 6.26890074, - 0.00130529, 0.00080017, 7.26759545, 0.99600893, 0.99789454, 0.49284932],
     2406                             [- 6.26891052, - 0.00130474, 0.00079984, 7.26760578, 0.99601061, 0.99789542, 0.49284977],
     2407                             [- 6.26892026, - 0.00130420, 0.00079950, 7.26761607, 0.99601228, 0.99789630, 0.49285024],
     2408                             [- 6.26892997, - 0.00130365, 0.00079917, 7.26762633, 0.99601396, 0.99789719, 0.49285069],
     2409                             [- 6.26893965, - 0.00130310, 0.00079883, 7.26763655, 0.99601564, 0.99789807, 0.49285114],
     2410                             [- 6.26894929, - 0.00130256, 0.00079850, 7.26764674, 0.99601731, 0.99789895, 0.49285162],
     2411                             [- 6.26895890, - 0.00130201, 0.00079816, 7.26765689, 0.99601899, 0.99789983, 0.49285206],
     2412                             [- 6.26896848, - 0.00130146, 0.00079783, 7.26766701, 0.99602066, 0.99790070, 0.49285251],
     2413                             [- 6.26897802, - 0.00130092, 0.00079750, 7.26767710, 0.99602233, 0.99790158, 0.49285297],
     2414                             [- 6.26898753, - 0.00130038, 0.00079717, 7.26768715, 0.99602400, 0.99790246, 0.49285344],
     2415                             [- 6.26899700, - 0.00129983, 0.00079683, 7.26769717, 0.99602566, 0.99790334, 0.49285388],
     2416                             [- 6.26900645, - 0.00129929, 0.00079650, 7.26770716, 0.99602733, 0.99790421, 0.49285432],
     2417                             [- 6.26901586, - 0.00129875, 0.00079617, 7.26771711, 0.99602900, 0.99790509, 0.49285477],
     2418                             [- 6.26902524, - 0.00129820, 0.00079584, 7.26772703, 0.99603066, 0.99790596, 0.49285523],
     2419                             [- 6.26903458, - 0.00129766, 0.00079550, 7.26773692, 0.99603232, 0.99790683, 0.49285566],
     2420                             [- 6.26904390, - 0.00129712, 0.00079517, 7.26774678, 0.99603398, 0.99790771, 0.49285611],
     2421                             [- 6.26905318, - 0.00129658, 0.00079484, 7.26775660, 0.99603564, 0.99790858, 0.49285655],
     2422                             [- 6.26906243, - 0.00129604, 0.00079451, 7.26776639, 0.99603730, 0.99790945, 0.49285701],
     2423                             [- 6.26907164, - 0.00129550, 0.00079418, 7.26777615, 0.99603896, 0.99791032, 0.49285743],
     2424                             [- 6.26908083, - 0.00129496, 0.00079385, 7.26778587, 0.99604061, 0.99791119, 0.49285787],
     2425                             [- 6.26908998, - 0.00129442, 0.00079352, 7.26779557, 0.99604227, 0.99791206, 0.49285833],
     2426                             [- 6.26909911, - 0.00129388, 0.00079319, 7.26780523, 0.99604392, 0.99791293, 0.49285876],
     2427                             [- 6.26910820, - 0.00129334, 0.00079286, 7.26781486, 0.99604557, 0.99791380, 0.49285921],
     2428                             [- 6.26911726, - 0.00129280, 0.00079253, 7.26782446, 0.99604722, 0.99791467, 0.49285963],
     2429                             [- 6.26912629, - 0.00129226, 0.00079220, 7.26783402, 0.99604887, 0.99791553, 0.49286007],
     2430                             [- 6.26913528, - 0.00129173, 0.00079188, 7.26784356, 0.99605051, 0.99791640, 0.49286049],
     2431                             [- 6.26914425, - 0.00129119, 0.00079155, 7.26785306, 0.99605216, 0.99791726, 0.49286093],
     2432                             [- 6.26915318, - 0.00129065, 0.00079122, 7.26786253, 0.99605380, 0.99791813, 0.49286138],
     2433                             [- 6.26916209, - 0.00129012, 0.00079089, 7.26787197, 0.99605545, 0.99791899, 0.49286178],
     2434                             [- 6.26917096, - 0.00128958, 0.00079056, 7.26788138, 0.99605709, 0.99791985, 0.49286223],
     2435                             [- 6.26917981, - 0.00128905, 0.00079024, 7.26789076, 0.99605873, 0.99792072, 0.49286266],
     2436                             [- 6.26918862, - 0.00128851, 0.00078991, 7.26790011, 0.99606037, 0.99792158, 0.49286308],
     2437                             [- 6.26919740, - 0.00128798, 0.00078958, 7.26790942, 0.99606201, 0.99792244, 0.49286350],
     2438                             [- 6.26920615, - 0.00128744, 0.00078926, 7.26791871, 0.99606364, 0.99792330, 0.49286392],
     2439                             [- 6.26921488, - 0.00128691, 0.00078893, 7.26792797, 0.99606528, 0.99792416, 0.49286436],
     2440                             [- 6.26922357, - 0.00128638, 0.00078860, 7.26793719, 0.99606691, 0.99792502, 0.49286478],
     2441                             [- 6.26923223, - 0.00128585, 0.00078828, 7.26794639, 0.99606854, 0.99792588, 0.49286521],
     2442                             [- 6.26924086, - 0.00128531, 0.00078795, 7.26795555, 0.99607017, 0.99792673, 0.49286564],
     2443                             [- 6.26924947, - 0.00128478, 0.00078763, 7.26796468, 0.99607180, 0.99792759, 0.49286605],
     2444                             [- 6.26925804, - 0.00128425, 0.00078730, 7.26797379, 0.99607343, 0.99792845, 0.49286646],
     2445                             [- 6.26926658, - 0.00128372, 0.00078698, 7.26798286, 0.99607506, 0.99792930, 0.49286689],
     2446                             [- 6.26927510, - 0.00128319, 0.00078665, 7.26799191, 0.99607668, 0.99793016, 0.49286730],
     2447                             [- 6.26928358, - 0.00128266, 0.00078633, 7.26800092, 0.99607831, 0.99793101, 0.49286770],
     2448                             [- 6.26929204, - 0.00128213, 0.00078601, 7.26800991, 0.99607993, 0.99793186, 0.49286812],
     2449                             [- 6.26930047, - 0.00128160, 0.00078568, 7.26801887, 0.99608155, 0.99793272, 0.49286854],
     2450                             [- 6.26930887, - 0.00128107, 0.00078536, 7.26802779, 0.99608317, 0.99793357, 0.49286895],
     2451                             [- 6.26931724, - 0.00128054, 0.00078504, 7.26803669, 0.99608479, 0.99793442, 0.49286937],
     2452                             [- 6.26932558, - 0.00128002, 0.00078471, 7.26804556, 0.99608641, 0.99793527, 0.49286977],
     2453                             [- 6.26933389, - 0.00127949, 0.00078439, 7.26805440, 0.99608802, 0.99793612, 0.49287019],
     2454                             [- 6.26934217, - 0.00127896, 0.00078407, 7.26806321, 0.99608964, 0.99793697, 0.49287058],
     2455                             [- 6.26935043, - 0.00127844, 0.00078375, 7.26807199, 0.99609125, 0.99793782, 0.49287100],
     2456                             [- 6.26935866, - 0.00127791, 0.00078342, 7.26808075, 0.99609287, 0.99793867, 0.49287142],
     2457                             [- 6.26936686, - 0.00127738, 0.00078310, 7.26808947, 0.99609448, 0.99793951, 0.49287182],
     2458                             [- 6.26937503, - 0.00127686, 0.00078278, 7.26809817, 0.99609609, 0.99794036, 0.49287224],
     2459                             [- 6.26938317, - 0.00127634, 0.00078246, 7.26810683, 0.99609769, 0.99794120, 0.49287263],
     2460                             [- 6.26939129, - 0.00127581, 0.00078214, 7.26811547, 0.99609930, 0.99794205, 0.49287302],
     2461                             [- 6.26939937, - 0.00127529, 0.00078182, 7.26812409, 0.99610091, 0.99794289, 0.49287345],
     2462                             [- 6.26940743, - 0.00127476, 0.00078150, 7.26813267, 0.99610251, 0.99794374, 0.49287384],
     2463                             [- 6.26941547, - 0.00127424, 0.00078118, 7.26814123, 0.99610411, 0.99794458, 0.49287423],
     2464                             [- 6.26942347, - 0.00127372, 0.00078086, 7.26814975, 0.99610572, 0.99794542, 0.49287464],
     2465                             [- 6.26943145, - 0.00127320, 0.00078054, 7.26815825, 0.99610732, 0.99794626, 0.49287504],
     2466                             [- 6.26943940, - 0.00127267, 0.00078022, 7.26816673, 0.99610892, 0.99794711, 0.49287543],
     2467                             [- 6.26944732, - 0.00127215, 0.00077990, 7.26817517, 0.99611051, 0.99794795, 0.49287581],
     2468                             [- 6.26945522, - 0.00127163, 0.00077958, 7.26818359, 0.99611211, 0.99794879, 0.49287621],
     2469                             [- 6.26946309, - 0.00127111, 0.00077926, 7.26819198, 0.99611370, 0.99794962, 0.49287661],
     2470                             [- 6.26947093, - 0.00127059, 0.00077895, 7.26820034, 0.99611530, 0.99795046, 0.49287701],
     2471                             [- 6.26947875, - 0.00127007, 0.00077863, 7.26820868, 0.99611689, 0.99795130, 0.49287739],
     2472                             [- 6.26948654, - 0.00126955, 0.00077831, 7.26821698, 0.99611848, 0.99795214, 0.49287779],
     2473                             [- 6.26949430, - 0.00126903, 0.00077799, 7.26822527, 0.99612007, 0.99795297, 0.49287817],
     2474                             [- 6.26950204, - 0.00126852, 0.00077768, 7.26823352, 0.99612166, 0.99795381, 0.49287857],
     2475                             [- 6.26950975, - 0.00126800, 0.00077736, 7.26824175, 0.99612325, 0.99795464, 0.49287896],
     2476                             [- 6.26951743, - 0.00126748, 0.00077704, 7.26824995, 0.99612484, 0.99795548, 0.49287934],
     2477                             [- 6.26952509, - 0.00126696, 0.00077673, 7.26825813, 0.99612642, 0.99795631, 0.49287973],
     2478                             [- 6.26953272, - 0.00126645, 0.00077641, 7.26826627, 0.99612800, 0.99795714, 0.49288012],
     2479                             [- 6.26954033, - 0.00126593, 0.00077609, 7.26827440, 0.99612959, 0.99795798, 0.49288050],
     2480                             [- 6.26954791, - 0.00126541, 0.00077578, 7.26828249, 0.99613117, 0.99795881, 0.49288087],
     2481                             [- 6.26955546, - 0.00126490, 0.00077546, 7.26829056, 0.99613275, 0.99795964, 0.49288126],
     2482                             [- 6.26956299, - 0.00126438, 0.00077515, 7.26829860, 0.99613433, 0.99796047, 0.49288164],
     2483                             [- 6.26957049, - 0.00126387, 0.00077483, 7.26830662, 0.99613590, 0.99796130, 0.49288203],
     2484                             [- 6.26957797, - 0.00126335, 0.00077452, 7.26831461, 0.99613748, 0.99796213, 0.49288240],
     2485                             [- 6.26958542, - 0.00126284, 0.00077420, 7.26832258, 0.99613905, 0.99796296, 0.49288278],
     2486                             [- 6.26959285, - 0.00126233, 0.00077389, 7.26833052, 0.99614063, 0.99796378, 0.49288317],
     2487                             [- 6.26960025, - 0.00126181, 0.00077357, 7.26833844, 0.99614220, 0.99796461, 0.49288354],
     2488                             [- 6.26960763, - 0.00126130, 0.00077326, 7.26834632, 0.99614377, 0.99796544, 0.49288392],
     2489                             [- 6.26961498, - 0.00126079, 0.00077295, 7.26835419, 0.99614534, 0.99796626, 0.49288432],
     2490                             [- 6.26962230, - 0.00126028, 0.00077263, 7.26836203, 0.99614691, 0.99796709, 0.49288467],
     2491                             [- 6.26962961, - 0.00125977, 0.00077232, 7.26836984, 0.99614847, 0.99796791, 0.49288504],
     2492                             [- 6.26963688, - 0.00125926, 0.00077201, 7.26837763, 0.99615004, 0.99796874, 0.49288540],
     2493                             [- 6.26964414, - 0.00125874, 0.00077170, 7.26838539, 0.99615160, 0.99796956, 0.49288580],
     2494                             [- 6.26965137, - 0.00125823, 0.00077138, 7.26839313, 0.99615317, 0.99797038, 0.49288618],
     2495                             [- 6.26965857, - 0.00125772, 0.00077107, 7.26840084, 0.99615473, 0.99797120, 0.49288651],
     2496                             [- 6.26966575, - 0.00125722, 0.00077076, 7.26840853, 0.99615629, 0.99797202, 0.49288691],
     2497                             [- 6.26967290, - 0.00125671, 0.00077045, 7.26841620, 0.99615785, 0.99797284, 0.49288729],
     2498                             [- 6.26968003, - 0.00125620, 0.00077014, 7.26842384, 0.99615941, 0.99797366, 0.49288765],
     2499                             [- 6.26968714, - 0.00125569, 0.00076983, 7.26843145, 0.99616097, 0.99797448, 0.49288801],
     2500                             [- 6.26969422, - 0.00125518, 0.00076952, 7.26843904, 0.99616252, 0.99797530, 0.49288835],
     2501                             [- 6.26970128, - 0.00125468, 0.00076920, 7.26844661, 0.99616408, 0.99797612, 0.49288872],
     2502                             [- 6.26970832, - 0.00125417, 0.00076889, 7.26845415, 0.99616563, 0.99797694, 0.49288910],
     2503                             [- 6.26971533, - 0.00125366, 0.00076858, 7.26846167, 0.99616718, 0.99797775, 0.49288946],
     2504                             [- 6.26972232, - 0.00125316, 0.00076827, 7.26846916, 0.99616873, 0.99797857, 0.49288983],
     2505                             [- 6.26972928, - 0.00125265, 0.00076797, 7.26847663, 0.99617028, 0.99797938, 0.49289019],
     2506                             [- 6.26973622, - 0.00125214, 0.00076766, 7.26848408, 0.99617183, 0.99798020, 0.49289056],
     2507                             [- 6.26974314, - 0.00125164, 0.00076735, 7.26849150, 0.99617338, 0.99798101, 0.49289092],
     2508                             [- 6.26975003, - 0.00125114, 0.00076704, 7.26849890, 0.99617492, 0.99798183, 0.49289126],
     2509                             [- 6.26975691, - 0.00125063, 0.00076673, 7.26850627, 0.99617647, 0.99798264, 0.49289162],
     2510                             [- 6.26976375, - 0.00125013, 0.00076642, 7.26851363, 0.99617801, 0.99798345, 0.49289199],
     2511                             [- 6.26977058, - 0.00124962, 0.00076611, 7.26852095, 0.99617955, 0.99798426, 0.49289234],
     2512                             [- 6.26977738, - 0.00124912, 0.00076581, 7.26852826, 0.99618109, 0.99798507, 0.49289269],
     2513                             [- 6.26978416, - 0.00124862, 0.00076550, 7.26853554, 0.99618263, 0.99798588, 0.49289304],
     2514                             [- 6.26979092, - 0.00124812, 0.00076519, 7.26854280, 0.99618417, 0.99798669, 0.49289341],
     2515                             [- 6.26979765, - 0.00124762, 0.00076488, 7.26855003, 0.99618571, 0.99798750, 0.49289376],
     2516                             [- 6.26980436, - 0.00124711, 0.00076458, 7.26855725, 0.99618724, 0.99798831, 0.49289409],
     2517                             [- 6.26981105, - 0.00124661, 0.00076427, 7.26856444, 0.99618878, 0.99798912, 0.49289444],
     2518                             [- 6.26981772, - 0.00124611, 0.00076396, 7.26857160, 0.99619031, 0.99798992, 0.49289482],
     2519                             [- 6.26982436, - 0.00124561, 0.00076366, 7.26857875, 0.99619184, 0.99799073, 0.49289516],
     2520                             [- 6.26983098, - 0.00124511, 0.00076335, 7.26858587, 0.99619337, 0.99799154, 0.49289554],
     2521                             [- 6.26983758, - 0.00124461, 0.00076305, 7.26859297, 0.99619490, 0.99799234, 0.49289586],
     2522                             [- 6.26984416, - 0.00124412, 0.00076274, 7.26860004, 0.99619643, 0.99799314, 0.49289620],
     2523                             [- 6.26985071, - 0.00124362, 0.00076244, 7.26860710, 0.99619796, 0.99799395, 0.49289657],
     2524                             [- 6.26985725, - 0.00124312, 0.00076213, 7.26861413, 0.99619949, 0.99799475, 0.49289690],
     2525                             [- 6.26986376, - 0.00124262, 0.00076183, 7.26862114, 0.99620101, 0.99799555, 0.49289724],
     2526                             [- 6.26987025, - 0.00124212, 0.00076152, 7.26862812, 0.99620253, 0.99799636, 0.49289757],
     2527                             [- 6.26987672, - 0.00124163, 0.00076122, 7.26863509, 0.99620406, 0.99799716, 0.49289792],
     2528                             [- 6.26988316, - 0.00124113, 0.00076091, 7.26864203, 0.99620558, 0.99799796, 0.49289828],
     2529                             [- 6.26988959, - 0.00124063, 0.00076061, 7.26864895, 0.99620710, 0.99799876, 0.49289862],
     2530                             [- 6.26989599, - 0.00124014, 0.00076031, 7.26865585, 0.99620862, 0.99799956, 0.49289895],
     2531                             [- 6.26990237, - 0.00123964, 0.00076000, 7.26866273, 0.99621013, 0.99800035, 0.49289931],
     2532                             [- 6.26990873, - 0.00123915, 0.00075970, 7.26866958, 0.99621165, 0.99800115, 0.49289965],
     2533                             [- 6.26991507, - 0.00123865, 0.00075940, 7.26867642, 0.99621317, 0.99800195, 0.49289998],
     2534                             [- 6.26992139, - 0.00123816, 0.00075909, 7.26868323, 0.99621468, 0.99800275, 0.49290032],
     2535                             [- 6.26992769, - 0.00123767, 0.00075879, 7.26869002, 0.99621619, 0.99800354, 0.49290066],
     2536                             [- 6.26993396, - 0.00123717, 0.00075849, 7.26869679, 0.99621770, 0.99800434, 0.49290100],
     2537                             [- 6.26994022, - 0.00123668, 0.00075819, 7.26870354, 0.99621921, 0.99800513, 0.49290132],
     2538                             [- 6.26994645, - 0.00123619, 0.00075789, 7.26871027, 0.99622072, 0.99800593, 0.49290166],
     2539                             [- 6.26995267, - 0.00123569, 0.00075758, 7.26871697, 0.99622223, 0.99800672, 0.49290199],
     2540                             [- 6.26995886, - 0.00123520, 0.00075728, 7.26872366, 0.99622374, 0.99800751, 0.49290231],
     2541                             [- 6.26996503, - 0.00123471, 0.00075698, 7.26873032, 0.99622524, 0.99800831, 0.49290268],
     2542                             [- 6.26997119, - 0.00123422, 0.00075668, 7.26873697, 0.99622675, 0.99800910, 0.49290298],
     2543                             [- 6.26997732, - 0.00123373, 0.00075638, 7.26874359, 0.99622825, 0.99800989, 0.49290333],
     2544                             [- 6.26998343, - 0.00123324, 0.00075608, 7.26875019, 0.99622975, 0.99801068, 0.49290366],
     2545                             [- 6.26998952, - 0.00123275, 0.00075578, 7.26875677, 0.99623126, 0.99801147, 0.49290397],
     2546                             [- 6.26999559, - 0.00123226, 0.00075548, 7.26876333, 0.99623275, 0.99801226, 0.49290432],
     2547                             [- 6.27000164, - 0.00123177, 0.00075518, 7.26876987, 0.99623425, 0.99801305, 0.49290464],
     2548                             [- 6.27000767, - 0.00123128, 0.00075488, 7.26877639, 0.99623575, 0.99801384, 0.49290499],
     2549                             [- 6.27001368, - 0.00123079, 0.00075458, 7.26878289, 0.99623725, 0.99801462, 0.49290530],
     2550                             [- 6.27001968, - 0.00123031, 0.00075428, 7.26878937, 0.99623874, 0.99801541, 0.49290562],
     2551                             [- 6.27002565, - 0.00122982, 0.00075399, 7.26879583, 0.99624024, 0.99801620, 0.49290596],
     2552                             [- 6.27003160, - 0.00122933, 0.00075369, 7.26880227, 0.99624173, 0.99801698, 0.49290628],
     2553                             [- 6.27003753, - 0.00122884, 0.00075339, 7.26880869, 0.99624322, 0.99801777, 0.49290660],
     2554                             [- 6.27004344, - 0.00122836, 0.00075309, 7.26881508, 0.99624471, 0.99801855, 0.49290693],
     2555                             [- 6.27004933, - 0.00122787, 0.00075279, 7.26882146, 0.99624620, 0.99801934, 0.49290725],
     2556                             [- 6.27005521, - 0.00122739, 0.00075250, 7.26882782, 0.99624769, 0.99802012, 0.49290756],
     2557                             [- 6.27006106, - 0.00122690, 0.00075220, 7.26883416, 0.99624917, 0.99802090, 0.49290790],
     2558                             [- 6.27006690, - 0.00122642, 0.00075190, 7.26884048, 0.99625066, 0.99802168, 0.49290821],
     2559                             [- 6.27007271, - 0.00122593, 0.00075160, 7.26884678, 0.99625214, 0.99802246, 0.49290851],
     2560                             [- 6.27007851, - 0.00122545, 0.00075131, 7.26885306, 0.99625363, 0.99802324, 0.49290885],
     2561                             [- 6.27008428, - 0.00122496, 0.00075101, 7.26885932, 0.99625511, 0.99802402, 0.49290916],
     2562                             [- 6.27009004, - 0.00122448, 0.00075072, 7.26886556, 0.99625659, 0.99802480, 0.49290948],
     2563                             [- 6.27009578, - 0.00122400, 0.00075042, 7.26887178, 0.99625807, 0.99802558, 0.49290980],
     2564                             [- 6.27010150, - 0.00122351, 0.00075012, 7.26887799, 0.99625955, 0.99802636, 0.49291012],
     2565                             [- 6.27010720, - 0.00122303, 0.00074983, 7.26888417, 0.99626102, 0.99802714, 0.49291045],
     2566                             [- 6.27011288, - 0.00122255, 0.00074953, 7.26889033, 0.99626250, 0.99802792, 0.49291075],
     2567                             [- 6.27011855, - 0.00122207, 0.00074924, 7.26889648, 0.99626398, 0.99802869, 0.49291108],
     2568                             [- 6.27012419, - 0.00122159, 0.00074894, 7.26890260, 0.99626545, 0.99802947, 0.49291137],
     2569                             [- 6.27012982, - 0.00122111, 0.00074865, 7.26890871, 0.99626692, 0.99803024, 0.49291169],
     2570                             [- 6.27013543, - 0.00122063, 0.00074836, 7.26891480, 0.99626839, 0.99803102, 0.49291199],
     2571                             [- 6.27014102, - 0.00122015, 0.00074806, 7.26892087, 0.99626986, 0.99803179, 0.49291232],
     2572                             [- 6.27014659, - 0.00121967, 0.00074777, 7.26892692, 0.99627133, 0.99803257, 0.49291262],
     2573                             [- 6.27015214, - 0.00121919, 0.00074747, 7.26893295, 0.99627280, 0.99803334, 0.49291295],
     2574                             [- 6.27015767, - 0.00121871, 0.00074718, 7.26893897, 0.99627427, 0.99803411, 0.49291325],
     2575                             [- 6.27016319, - 0.00121823, 0.00074689, 7.26894496, 0.99627574, 0.99803488, 0.49291356],
     2576                             [- 6.27016869, - 0.00121775, 0.00074659, 7.26895094, 0.99627720, 0.99803565, 0.49291386],
     2577                             [- 6.27017417, - 0.00121727, 0.00074630, 7.26895690, 0.99627866, 0.99803642, 0.49291418],
     2578                             [- 6.27017963, - 0.00121680, 0.00074601, 7.26896284, 0.99628013, 0.99803719, 0.49291448],
     2579                             [- 6.27018508, - 0.00121632, 0.00074572, 7.26896876, 0.99628159, 0.99803796, 0.49291478],
     2580                             [- 6.27019050, - 0.00121584, 0.00074543, 7.26897466, 0.99628305, 0.99803873, 0.49291509],
     2581                             [- 6.27019591, - 0.00121537, 0.00074513, 7.26898055, 0.99628451, 0.99803950, 0.49291539],
     2582                             [- 6.27020130, - 0.00121489, 0.00074484, 7.26898641, 0.99628596, 0.99804027, 0.49291571],
     2583                             [- 6.27020668, - 0.00121441, 0.00074455, 7.26899226, 0.99628742, 0.99804103, 0.49291599],
     2584                             [- 6.27021203, - 0.00121394, 0.00074426, 7.26899810, 0.99628888, 0.99804180, 0.49291629],
     2585                             [- 6.27021737, - 0.00121346, 0.00074397, 7.26900391, 0.99629033, 0.99804257, 0.49291660],
     2586                             [- 6.27022270, - 0.00121299, 0.00074368, 7.26900971, 0.99629178, 0.99804333, 0.49291688],
     2587                             [- 6.27022800, - 0.00121252, 0.00074339, 7.26901548, 0.99629324, 0.99804410, 0.49291722],
     2588                             [- 6.27023329, - 0.00121204, 0.00074310, 7.26902124, 0.99629469, 0.99804486, 0.49291750],
     2589                             [- 6.27023856, - 0.00121157, 0.00074281, 7.26902699, 0.99629614, 0.99804562, 0.49291781],
     2590                             [- 6.27024381, - 0.00121110, 0.00074252, 7.26903271, 0.99629759, 0.99804639, 0.49291812],
     2591                             [- 6.27024904, - 0.00121062, 0.00074223, 7.26903842, 0.99629903, 0.99804715, 0.49291840],
     2592                             [- 6.27025426, - 0.00121015, 0.00074194, 7.26904411, 0.99630048, 0.99804791, 0.49291870],
     2593                             [- 6.27025946, - 0.00120968, 0.00074165, 7.26904979, 0.99630193, 0.99804867, 0.49291902],
     2594                             [- 6.27026465, - 0.00120921, 0.00074136, 7.26905544, 0.99630337, 0.99804943, 0.49291932],
     2595                             [- 6.27026982, - 0.00120874, 0.00074107, 7.26906108, 0.99630481, 0.99805019, 0.49291960],
     2596                             [- 6.27027497, - 0.00120827, 0.00074078, 7.26906670, 0.99630626, 0.99805095, 0.49291988],
     2597                             [- 6.27028010, - 0.00120780, 0.00074050, 7.26907231, 0.99630770, 0.99805171, 0.49292018],
     2598                             [- 6.27028522, - 0.00120732, 0.00074021, 7.26907789, 0.99630914, 0.99805247, 0.49292047],
     2599                             [- 6.27029032, - 0.00120686, 0.00073992, 7.26908347, 0.99631057, 0.99805322, 0.49292077],
     2600                             [- 6.27029541, - 0.00120639, 0.00073963, 7.26908902, 0.99631201, 0.99805398, 0.49292106],
     2601                             [- 6.27030047, - 0.00120592, 0.00073934, 7.26909456, 0.99631345, 0.99805474, 0.49292137],
     2602                             [- 6.27030552, - 0.00120545, 0.00073906, 7.26910008, 0.99631488, 0.99805549, 0.49292164],
     2603                             [- 6.27031056, - 0.00120498, 0.00073877, 7.26910558, 0.99631632, 0.99805625, 0.49292193],
     2604                             [- 6.27031558, - 0.00120451, 0.00073848, 7.26911107, 0.99631775, 0.99805700, 0.49292223],
     2605                             [- 6.27032058, - 0.00120404, 0.00073820, 7.26911654, 0.99631918, 0.99805776, 0.49292252],
     2606                             [- 6.27032557, - 0.00120358, 0.00073791, 7.26912199, 0.99632061, 0.99805851, 0.49292278],
     2607                             [- 6.27033054, - 0.00120311, 0.00073763, 7.26912743, 0.99632204, 0.99805926, 0.49292312],
     2608                             [- 6.27033549, - 0.00120264, 0.00073734, 7.26913285, 0.99632347, 0.99806002, 0.49292338],
     2609                             [- 6.27034043, - 0.00120218, 0.00073705, 7.26913825, 0.99632490, 0.99806077, 0.49292367],
     2610                             [- 6.27034536, - 0.00120171, 0.00073677, 7.26914364, 0.99632633, 0.99806152, 0.49292394],
     2611                             [- 6.27035026, - 0.00120125, 0.00073648, 7.26914902, 0.99632775, 0.99806227, 0.49292425],
     2612                             [- 6.27035515, - 0.00120078, 0.00073620, 7.26915437, 0.99632918, 0.99806302, 0.49292452],
     2613                             [- 6.27036003, - 0.00120032, 0.00073591, 7.26915971, 0.99633060, 0.99806377, 0.49292480],
     2614                             [- 6.27036489, - 0.00119985, 0.00073563, 7.26916504, 0.99633202, 0.99806452, 0.49292511],
     2615                             [- 6.27036973, - 0.00119939, 0.00073535, 7.26917034, 0.99633344, 0.99806527, 0.49292536],
     2616                             [- 6.27037456, - 0.00119892, 0.00073506, 7.26917564, 0.99633486, 0.99806601, 0.49292567],
     2617                             [- 6.27037937, - 0.00119846, 0.00073478, 7.26918091, 0.99633628, 0.99806676, 0.49292595],
     2618                             [- 6.27038417, - 0.00119800, 0.00073449, 7.26918617, 0.99633770, 0.99806751, 0.49292622],
     2619                             [- 6.27038895, - 0.00119754, 0.00073421, 7.26919142, 0.99633912, 0.99806825, 0.49292651],
     2620                             [- 6.27039372, - 0.00119707, 0.00073393, 7.26919664, 0.99634053, 0.99806900, 0.49292678],
     2621                             [- 6.27039847, - 0.00119661, 0.00073364, 7.26920186, 0.99634195, 0.99806974, 0.49292707],
     2622                             [- 6.27040321, - 0.00119615, 0.00073336, 7.26920706, 0.99634336, 0.99807049, 0.49292736],
     2623                             [- 6.27040793, - 0.00119569, 0.00073308, 7.26921224, 0.99634477, 0.99807123, 0.49292762],
     2624                             [- 6.27041263, - 0.00119523, 0.00073280, 7.26921740, 0.99634618, 0.99807198, 0.49292790],
     2625                             [- 6.27041732, - 0.00119477, 0.00073251, 7.26922256, 0.99634759, 0.99807272, 0.49292816],
     2626                             [- 6.27042200, - 0.00119431, 0.00073223, 7.26922769, 0.99634900, 0.99807346, 0.49292845],
     2627                             [- 6.27042666, - 0.00119385, 0.00073195, 7.26923281, 0.99635041, 0.99807420, 0.49292873],
     2628                             [- 6.27043131, - 0.00119339, 0.00073167, 7.26923792, 0.99635182, 0.99807494, 0.49292902],
     2629                             [- 6.27043594, - 0.00119293, 0.00073139, 7.26924301, 0.99635322, 0.99807568, 0.49292929],
     2630                             [- 6.27044055, - 0.00119247, 0.00073111, 7.26924808, 0.99635463, 0.99807642, 0.49292955],
     2631                             [- 6.27044516, - 0.00119201, 0.00073083, 7.26925314, 0.99635603, 0.99807716, 0.49292983],
     2632                             [- 6.27044974, - 0.00119155, 0.00073054, 7.26925819, 0.99635743, 0.99807790, 0.49293011],
     2633                             [- 6.27045432, - 0.00119110, 0.00073026, 7.26926322, 0.99635884, 0.99807864, 0.49293037],
     2634                             [- 6.27045887, - 0.00119064, 0.00072998, 7.26926823, 0.99636024, 0.99807938, 0.49293066],
     2635                             [- 6.27046342, - 0.00119018, 0.00072970, 7.26927323, 0.99636164, 0.99808011, 0.49293095],
     2636                             [- 6.27046795, - 0.00118973, 0.00072942, 7.26927822, 0.99636303, 0.99808085, 0.49293118],
     2637                             [- 6.27047246, - 0.00118927, 0.00072914, 7.26928319, 0.99636443, 0.99808158, 0.49293146],
     2638                             [- 6.27047696, - 0.00118881, 0.00072887, 7.26928815, 0.99636583, 0.99808232, 0.49293175],
     2639                             [- 6.27048145, - 0.00118836, 0.00072859, 7.26929309, 0.99636722, 0.99808305, 0.49293201],
     2640                             [- 6.27048592, - 0.00118790, 0.00072831, 7.26929802, 0.99636862, 0.99808379, 0.49293228],
     2641                             [- 6.27049038, - 0.00118745, 0.00072803, 7.26930293, 0.99637001, 0.99808452, 0.49293255],
     2642                             [- 6.27049482, - 0.00118699, 0.00072775, 7.26930783, 0.99637140, 0.99808526, 0.49293281],
     2643                             [- 6.27049925, - 0.00118654, 0.00072747, 7.26931271, 0.99637279, 0.99808599, 0.49293309],
     2644                             [- 6.27050366, - 0.00118609, 0.00072719, 7.26931758, 0.99637418, 0.99808672, 0.49293334],
     2645                             [- 6.27050807, - 0.00118563, 0.00072692, 7.26932243, 0.99637557, 0.99808745, 0.49293360],
     2646                             [- 6.27051245, - 0.00118518, 0.00072664, 7.26932727, 0.99637696, 0.99808818, 0.49293390],
     2647                             [- 6.27051683, - 0.00118473, 0.00072636, 7.26933210, 0.99637835, 0.99808891, 0.49293415],
     2648                             [- 6.27052119, - 0.00118427, 0.00072608, 7.26933691, 0.99637973, 0.99808964, 0.49293444],
     2649                             [- 6.27052553, - 0.00118382, 0.00072581, 7.26934171, 0.99638112, 0.99809037, 0.49293467],
     2650                             [- 6.27052986, - 0.00118337, 0.00072553, 7.26934649, 0.99638250, 0.99809110, 0.49293494],
     2651                             [- 6.27053418, - 0.00118292, 0.00072525, 7.26935126, 0.99638388, 0.99809183, 0.49293521],
     2652                             [- 6.27053849, - 0.00118247, 0.00072498, 7.26935602, 0.99638526, 0.99809256, 0.49293547],
     2653                             [- 6.27054278, - 0.00118202, 0.00072470, 7.26936076, 0.99638664, 0.99809328, 0.49293575],
     2654                             [- 6.27054706, - 0.00118157, 0.00072442, 7.26936549, 0.99638802, 0.99809401, 0.49293600],
     2655                             [- 6.27055132, - 0.00118112, 0.00072415, 7.26937020, 0.99638940, 0.99809474, 0.49293625],
     2656                             [- 6.27055557, - 0.00118067, 0.00072387, 7.26937491, 0.99639078, 0.99809546, 0.49293651],
     2657                             [- 6.27055981, - 0.00118022, 0.00072360, 7.26937959, 0.99639215, 0.99809619, 0.49293677],
     2658                             [- 6.27056403, - 0.00117977, 0.00072332, 7.26938427, 0.99639353, 0.99809691, 0.49293703],
     2659                             [- 6.27056825, - 0.00117932, 0.00072305, 7.26938893, 0.99639490, 0.99809763, 0.49293729],
     2660                             [- 6.27057244, - 0.00117887, 0.00072277, 7.26939357, 0.99639628, 0.99809836, 0.49293754],
     2661                             [- 6.27057663, - 0.00117842, 0.00072250, 7.26939820, 0.99639765, 0.99809908, 0.49293783],
     2662                             [- 6.27058080, - 0.00117798, 0.00072222, 7.26940282, 0.99639902, 0.99809980, 0.49293807],
     2663                             [- 6.27058496, - 0.00117753, 0.00072195, 7.26940743, 0.99640039, 0.99810052, 0.49293833],
     2664                             [- 6.27058910, - 0.00117708, 0.00072167, 7.26941202, 0.99640176, 0.99810124, 0.49293858],
     2665                             [- 6.27059324, - 0.00117663, 0.00072140, 7.26941660, 0.99640312, 0.99810196, 0.49293885],
     2666                             [- 6.27059736, - 0.00117619, 0.00072113, 7.26942117, 0.99640449, 0.99810268, 0.49293910],
     2667                             [- 6.27060146, - 0.00117574, 0.00072085, 7.26942572, 0.99640586, 0.99810340, 0.49293936],
     2668                             [- 6.27060556, - 0.00117530, 0.00072058, 7.26943026, 0.99640722, 0.99810412, 0.49293961],
     2669                             [- 6.27060964, - 0.00117485, 0.00072031, 7.26943479, 0.99640859, 0.99810484, 0.49293988],
     2670                             [- 6.27061371, - 0.00117441, 0.00072004, 7.26943930, 0.99640995, 0.99810556, 0.49294014],
     2671                             [- 6.27061776, - 0.00117396, 0.00071976, 7.26944380, 0.99641131, 0.99810628, 0.49294037],
     2672                             [- 6.27062180, - 0.00117352, 0.00071949, 7.26944829, 0.99641267, 0.99810699, 0.49294061],
     2673                             [- 6.27062583, - 0.00117307, 0.00071922, 7.26945276, 0.99641403, 0.99810771, 0.49294091],
     2674                             [- 6.27062985, - 0.00117263, 0.00071895, 7.26945722, 0.99641539, 0.99810842, 0.49294113],
     2675                             [- 6.27063386, - 0.00117219, 0.00071867, 7.26946167, 0.99641675, 0.99810914, 0.49294137],
     2676                             [- 6.27063785, - 0.00117174, 0.00071840, 7.26946611, 0.99641810, 0.99810985, 0.49294161],
     2677                             [- 6.27064183, - 0.00117130, 0.00071813, 7.26947053, 0.99641946, 0.99811057, 0.49294187],
     2678                             [- 6.27064580, - 0.00117086, 0.00071786, 7.26947494, 0.99642081, 0.99811128, 0.49294216],
     2679                             [- 6.27064976, - 0.00117042, 0.00071759, 7.26947934, 0.99642217, 0.99811199, 0.49294239],
     2680                             [- 6.27065370, - 0.00116997, 0.00071732, 7.26948372, 0.99642352, 0.99811271, 0.49294263],
     2681                             [- 6.27065763, - 0.00116953, 0.00071705, 7.26948810, 0.99642487, 0.99811342, 0.49294289],
     2682                             [- 6.27066155, - 0.00116909, 0.00071678, 7.26949246, 0.99642622, 0.99811413, 0.49294314],
     2683                             [- 6.27066546, - 0.00116865, 0.00071651, 7.26949680, 0.99642757, 0.99811484, 0.49294338],
     2684                             [- 6.27066935, - 0.00116821, 0.00071624, 7.26950114, 0.99642892, 0.99811555, 0.49294362],
     2685                             [- 6.27067323, - 0.00116777, 0.00071597, 7.26950546, 0.99643026, 0.99811626, 0.49294387],
     2686                             [- 6.27067711, - 0.00116733, 0.00071570, 7.26950977, 0.99643161, 0.99811697, 0.49294414],
     2687                             [- 6.27068096, - 0.00116689, 0.00071543, 7.26951407, 0.99643296, 0.99811768, 0.49294435],
     2688                             [- 6.27068481, - 0.00116645, 0.00071516, 7.26951836, 0.99643430, 0.99811839, 0.49294462],
     2689                             [- 6.27068865, - 0.00116601, 0.00071489, 7.26952263, 0.99643564, 0.99811909, 0.49294486],
     2690                             [- 6.27069247, - 0.00116558, 0.00071462, 7.26952689, 0.99643699, 0.99811980, 0.49294512],
     2691                             [- 6.27069628, - 0.00116514, 0.00071435, 7.26953114, 0.99643833, 0.99812051, 0.49294533],
     2692                             [- 6.27070008, - 0.00116470, 0.00071409, 7.26953538, 0.99643967, 0.99812121, 0.49294559],
     2693                             [- 6.27070387, - 0.00116426, 0.00071382, 7.26953961, 0.99644101, 0.99812192, 0.49294582],
     2694                             [- 6.27070765, - 0.00116383, 0.00071355, 7.26954382, 0.99644235, 0.99812262, 0.49294607],
     2695                             [- 6.27071141, - 0.00116339, 0.00071328, 7.26954802, 0.99644368, 0.99812333, 0.49294633],
     2696                             [- 6.27071516, - 0.00116295, 0.00071301, 7.26955221, 0.99644502, 0.99812403, 0.49294657],
     2697                             [- 6.27071891, - 0.00116252, 0.00071275, 7.26955639, 0.99644635, 0.99812474, 0.49294678],
     2698                             [- 6.27072264, - 0.00116208, 0.00071248, 7.26956056, 0.99644769, 0.99812544, 0.49294701],
     2699                             [- 6.27072636, - 0.00116165, 0.00071221, 7.26956471, 0.99644902, 0.99812614, 0.49294726],
     2700                             [- 6.27073006, - 0.00116121, 0.00071195, 7.26956885, 0.99645035, 0.99812684, 0.49294753],
     2701                             [- 6.27073376, - 0.00116078, 0.00071168, 7.26957298, 0.99645169, 0.99812755, 0.49294774],
     2702                             [- 6.27073744, - 0.00116034, 0.00071141, 7.26957710, 0.99645302, 0.99812825, 0.49294799],
     2703                             [- 6.27074112, - 0.00115991, 0.00071115, 7.26958121, 0.99645434, 0.99812895, 0.49294824],
     2704                             [- 6.27074478, - 0.00115947, 0.00071088, 7.26958531, 0.99645567, 0.99812965, 0.49294849],
     2705                             [- 6.27074843, - 0.00115904, 0.00071062, 7.26958939, 0.99645700, 0.99813035, 0.49294867],
     2706                             [- 6.27075207, - 0.00115861, 0.00071035, 7.26959347, 0.99645833, 0.99813104, 0.49294894],
     2707                             [- 6.27075570, - 0.00115817, 0.00071008, 7.26959753, 0.99645965, 0.99813174, 0.49294918],
     2708                             [- 6.27075932, - 0.00115774, 0.00070982, 7.26960158, 0.99646098, 0.99813244, 0.49294940],
     2709                             [- 6.27076293, - 0.00115731, 0.00070955, 7.26960562, 0.99646230, 0.99813314, 0.49294966],
     2710                             [- 6.27076652, - 0.00115688, 0.00070929, 7.26960965, 0.99646362, 0.99813383, 0.49294988],
     2711                             [- 6.27077011, - 0.00115644, 0.00070902, 7.26961366, 0.99646494, 0.99813453, 0.49295014],
     2712                             [- 6.27077368, - 0.00115601, 0.00070876, 7.26961767, 0.99646626, 0.99813523, 0.49295035],
     2713                             [- 6.27077724, - 0.00115558, 0.00070850, 7.26962166, 0.99646758, 0.99813592, 0.49295058],
     2714                             [- 6.27078080, - 0.00115515, 0.00070823, 7.26962565, 0.99646890, 0.99813662, 0.49295081],
     2715                             [- 6.27078434, - 0.00115472, 0.00070797, 7.26962962, 0.99647022, 0.99813731, 0.49295107],
     2716                             [- 6.27078787, - 0.00115429, 0.00070770, 7.26963358, 0.99647154, 0.99813800, 0.49295129],
     2717                             [- 6.27079139, - 0.00115386, 0.00070744, 7.26963753, 0.99647285, 0.99813870, 0.49295151],
     2718                             [- 6.27079490, - 0.00115343, 0.00070718, 7.26964147, 0.99647417, 0.99813939, 0.49295175],
     2719                             [- 6.27079840, - 0.00115300, 0.00070692, 7.26964540, 0.99647548, 0.99814008, 0.49295200],
     2720                             [- 6.27080189, - 0.00115257, 0.00070665, 7.26964931, 0.99647679, 0.99814077, 0.49295221],
     2721                             [- 6.27080537, - 0.00115215, 0.00070639, 7.26965322, 0.99647810, 0.99814146, 0.49295246],
     2722                             [- 6.27080883, - 0.00115172, 0.00070613, 7.26965711, 0.99647941, 0.99814215, 0.49295267],
     2723                             [- 6.27081229, - 0.00115129, 0.00070586, 7.26966100, 0.99648072, 0.99814284, 0.49295289],
     2724                             [- 6.27081574, - 0.00115086, 0.00070560, 7.26966487, 0.99648203, 0.99814353, 0.49295314],
     2725                             [- 6.27081917, - 0.00115044, 0.00070534, 7.26966874, 0.99648334, 0.99814422, 0.49295337],
     2726                             [- 6.27082260, - 0.00115001, 0.00070508, 7.26967259, 0.99648465, 0.99814491, 0.49295357],
     2727                             [- 6.27082601, - 0.00114958, 0.00070482, 7.26967643, 0.99648595, 0.99814560, 0.49295381],
     2728                             [- 6.27082942, - 0.00114916, 0.00070456, 7.26968026, 0.99648726, 0.99814629, 0.49295404],
     2729                             [- 6.27083281, - 0.00114873, 0.00070430, 7.26968408, 0.99648856, 0.99814697, 0.49295428],
     2730                             [- 6.27083620, - 0.00114830, 0.00070403, 7.26968789, 0.99648986, 0.99814766, 0.49295451],
     2731                             [- 6.27083957, - 0.00114788, 0.00070377, 7.26969169, 0.99649117, 0.99814835, 0.49295473],
     2732                             [- 6.27084294, - 0.00114745, 0.00070351, 7.26969548, 0.99649247, 0.99814903, 0.49295497],
     2733                             [- 6.27084629, - 0.00114703, 0.00070325, 7.26969926, 0.99649377, 0.99814972, 0.49295518],
     2734                             [- 6.27084964, - 0.00114661, 0.00070299, 7.26970303, 0.99649507, 0.99815040, 0.49295540],
     2735                             [- 6.27085297, - 0.00114618, 0.00070273, 7.26970679, 0.99649636, 0.99815109, 0.49295563],
     2736                             [- 6.27085630, - 0.00114576, 0.00070247, 7.26971054, 0.99649766, 0.99815177, 0.49295584],
     2737                             [- 6.27085961, - 0.00114533, 0.00070221, 7.26971428, 0.99649896, 0.99815245, 0.49295609],
     2738                             [- 6.27086292, - 0.00114491, 0.00070195, 7.26971800, 0.99650025, 0.99815313, 0.49295629],
     2739                             [- 6.27086621, - 0.00114449, 0.00070169, 7.26972172, 0.99650155, 0.99815382, 0.49295653],
     2740                             [- 6.27086950, - 0.00114407, 0.00070144, 7.26972543, 0.99650284, 0.99815450, 0.49295673],
     2741                             [- 6.27087277, - 0.00114364, 0.00070118, 7.26972913, 0.99650413, 0.99815518, 0.49295696],
     2742                             [- 6.27087604, - 0.00114322, 0.00070092, 7.26973281, 0.99650542, 0.99815586, 0.49295720],
     2743                             [- 6.27087929, - 0.00114280, 0.00070066, 7.26973649, 0.99650671, 0.99815654, 0.49295739],
     2744                             [- 6.27088254, - 0.00114238, 0.00070040, 7.26974016, 0.99650800, 0.99815722, 0.49295764],
     2745                             [- 6.27088577, - 0.00114196, 0.00070014, 7.26974382, 0.99650929, 0.99815790, 0.49295785],
     2746                             [- 6.27088900, - 0.00114154, 0.00069989, 7.26974746, 0.99651058, 0.99815858, 0.49295811],
     2747                             [- 6.27089222, - 0.00114112, 0.00069963, 7.26975110, 0.99651187, 0.99815925, 0.49295829],
     2748                             [- 6.27089543, - 0.00114070, 0.00069937, 7.26975473, 0.99651315, 0.99815993, 0.49295850],
     2749                             [- 6.27089862, - 0.00114028, 0.00069911, 7.26975835, 0.99651444, 0.99816061, 0.49295875],
     2750                             [- 6.27090181, - 0.00113986, 0.00069886, 7.26976195, 0.99651572, 0.99816129, 0.49295895],
     2751                             [- 6.27090499, - 0.00113944, 0.00069860, 7.26976555, 0.99651700, 0.99816196, 0.49295918],
     2752                             [- 6.27090816, - 0.00113902, 0.00069834, 7.26976914, 0.99651829, 0.99816264, 0.49295938],
     2753                             [- 6.27091132, - 0.00113860, 0.00069809, 7.26977272, 0.99651957, 0.99816331, 0.49295963],
     2754                             [- 6.27091447, - 0.00113818, 0.00069783, 7.26977629, 0.99652085, 0.99816399, 0.49295982],
     2755                             [- 6.27091762, - 0.00113777, 0.00069757, 7.26977985, 0.99652213, 0.99816466, 0.49296003],
     2756                             [- 6.27092075, - 0.00113735, 0.00069732, 7.26978340, 0.99652340, 0.99816533, 0.49296028],
     2757                             [- 6.27092387, - 0.00113693, 0.00069706, 7.26978694, 0.99652468, 0.99816601, 0.49296049],
     2758                             [- 6.27092699, - 0.00113651, 0.00069681, 7.26979047, 0.99652596, 0.99816668, 0.49296071],
     2759                             [- 6.27093009, - 0.00113610, 0.00069655, 7.26979399, 0.99652723, 0.99816735, 0.49296091],
     2760                             [- 6.27093319, - 0.00113568, 0.00069629, 7.26979751, 0.99652851, 0.99816802, 0.49296112],
     2761                             [- 6.27093627, - 0.00113527, 0.00069604, 7.26980101, 0.99652978, 0.99816869, 0.49296137],
     2762                             [- 6.27093935, - 0.00113485, 0.00069578, 7.26980450, 0.99653105, 0.99816937, 0.49296155],
     2763                             [- 6.27094242, - 0.00113443, 0.00069553, 7.26980799, 0.99653232, 0.99817004, 0.49296176],
     2764                             [- 6.27094548, - 0.00113402, 0.00069528, 7.26981146, 0.99653360, 0.99817070, 0.49296198],
     2765                             [- 6.27094853, - 0.00113360, 0.00069502, 7.26981493, 0.99653487, 0.99817137, 0.49296221],
     2766                             [- 6.27095157, - 0.00113319, 0.00069477, 7.26981838, 0.99653613, 0.99817204, 0.49296241],
     2767                             [- 6.27095461, - 0.00113278, 0.00069451, 7.26982183, 0.99653740, 0.99817271, 0.49296261],
     2768                             [- 6.27095763, - 0.00113236, 0.00069426, 7.26982527, 0.99653867, 0.99817338, 0.49296284],
     2769                             [- 6.27096065, - 0.00113195, 0.00069401, 7.26982870, 0.99653994, 0.99817405, 0.49296306],
     2770                             [- 6.27096365, - 0.00113154, 0.00069375, 7.26983212, 0.99654120, 0.99817471, 0.49296324],
     2771                             [- 6.27096665, - 0.00113112, 0.00069350, 7.26983553, 0.99654246, 0.99817538, 0.49296349],
     2772                             [- 6.27096964, - 0.00113071, 0.00069325, 7.26983893, 0.99654373, 0.99817604, 0.49296367],
     2773                             [- 6.27097262, - 0.00113030, 0.00069299, 7.26984232, 0.99654499, 0.99817671, 0.49296390],
     2774                             [- 6.27097559, - 0.00112989, 0.00069274, 7.26984571, 0.99654625, 0.99817737, 0.49296411],
     2775                             [- 6.27097856, - 0.00112947, 0.00069249, 7.26984908, 0.99654751, 0.99817804, 0.49296432],
     2776                             [- 6.27098151, - 0.00112906, 0.00069224, 7.26985245, 0.99654877, 0.99817870, 0.49296451],
     2777                             [- 6.27098446, - 0.00112865, 0.00069198, 7.26985581, 0.99655003, 0.99817937, 0.49296475],
     2778                             [- 6.27098739, - 0.00112824, 0.00069173, 7.26985915, 0.99655129, 0.99818003, 0.49296493],
     2779                             [- 6.27099032, - 0.00112783, 0.00069148, 7.26986249, 0.99655255, 0.99818069, 0.49296516],
     2780                             [- 6.27099324, - 0.00112742, 0.00069123, 7.26986583, 0.99655380, 0.99818135, 0.49296535],
     2781                             [- 6.27099616, - 0.00112701, 0.00069098, 7.26986915, 0.99655506, 0.99818202, 0.49296556],
     2782                             [- 6.27099906, - 0.00112660, 0.00069072, 7.26987246, 0.99655631, 0.99818268, 0.49296577],
     2783                             [- 6.27100196, - 0.00112619, 0.00069047, 7.26987577, 0.99655756, 0.99818334, 0.49296597],
     2784                             [- 6.27100484, - 0.00112578, 0.00069022, 7.26987906, 0.99655882, 0.99818400, 0.49296619],
     2785                             [- 6.27100772, - 0.00112537, 0.00068997, 7.26988235, 0.99656007, 0.99818466, 0.49296639],
     2786                             [- 6.27101059, - 0.00112496, 0.00068972, 7.26988563, 0.99656132, 0.99818532, 0.49296663],
     2787                             [- 6.27101345, - 0.00112455, 0.00068947, 7.26988890, 0.99656257, 0.99818597, 0.49296681],
     2788                             [- 6.27101631, - 0.00112415, 0.00068922, 7.26989216, 0.99656382, 0.99818663, 0.49296699],
     2789                             [- 6.27101915, - 0.00112374, 0.00068897, 7.26989541, 0.99656506, 0.99818729, 0.49296722],
     2790                             [- 6.27102199, - 0.00112333, 0.00068872, 7.26989866, 0.99656631, 0.99818795, 0.49296743],
     2791                             [- 6.27102482, - 0.00112292, 0.00068847, 7.26990189, 0.99656756, 0.99818860, 0.49296764],
     2792                             [- 6.27102764, - 0.00112252, 0.00068822, 7.26990512, 0.99656880, 0.99818926, 0.49296783],
     2793                             [- 6.27103045, - 0.00112211, 0.00068797, 7.26990834, 0.99657005, 0.99818992, 0.49296802],
     2794                             [- 6.27103326, - 0.00112171, 0.00068772, 7.26991155, 0.99657129, 0.99819057, 0.49296822],
     2795                             [- 6.27103606, - 0.00112130, 0.00068747, 7.26991476, 0.99657253, 0.99819123, 0.49296843],
     2796                             [- 6.27103885, - 0.00112089, 0.00068723, 7.26991795, 0.99657377, 0.99819188, 0.49296863],
     2797                             [- 6.27104163, - 0.00112049, 0.00068698, 7.26992114, 0.99657501, 0.99819253, 0.49296882],
     2798                             [- 6.27104440, - 0.00112008, 0.00068673, 7.26992432, 0.99657625, 0.99819319, 0.49296903],
     2799                             [- 6.27104717, - 0.00111968, 0.00068648, 7.26992749, 0.99657749, 0.99819384, 0.49296925],
     2800                             [- 6.27104992, - 0.00111927, 0.00068623, 7.26993065, 0.99657873, 0.99819449, 0.49296948],
     2801                             [- 6.27105267, - 0.00111887, 0.00068599, 7.26993380, 0.99657997, 0.99819514, 0.49296966],
     2802                             [- 6.27105541, - 0.00111847, 0.00068574, 7.26993695, 0.99658120, 0.99819580, 0.49296986],
     2803                             [- 6.27105815, - 0.00111806, 0.00068549, 7.26994009, 0.99658244, 0.99819645, 0.49297006],
     2804                             [- 6.27106088, - 0.00111766, 0.00068524, 7.26994322, 0.99658367, 0.99819710, 0.49297025],
     2805                             [- 6.27106359, - 0.00111726, 0.00068500, 7.26994634, 0.99658491, 0.99819775, 0.49297043],
     2806                             [- 6.27106630, - 0.00111685, 0.00068475, 7.26994945, 0.99658614, 0.99819840, 0.49297064],
     2807                             [- 6.27106901, - 0.00111645, 0.00068450, 7.26995256, 0.99658737, 0.99819905, 0.49297085],
     2808                             [- 6.27107170, - 0.00111605, 0.00068426, 7.26995565, 0.99658860, 0.99819970, 0.49297106],
     2809                             [- 6.27107439, - 0.00111565, 0.00068401, 7.26995874, 0.99658983, 0.99820034, 0.49297123],
     2810                             [- 6.27107707, - 0.00111525, 0.00068376, 7.26996183, 0.99659106, 0.99820099, 0.49297145],
     2811                             [- 6.27107974, - 0.00111484, 0.00068352, 7.26996490, 0.99659229, 0.99820164, 0.49297165],
     2812                             [- 6.27108241, - 0.00111444, 0.00068327, 7.26996797, 0.99659352, 0.99820229, 0.49297182],
     2813                             [- 6.27108507, - 0.00111404, 0.00068302, 7.26997103, 0.99659474, 0.99820293, 0.49297202],
     2814                             [- 6.27108772, - 0.00111364, 0.00068278, 7.26997408, 0.99659597, 0.99820358, 0.49297222],
     2815                             [- 6.27109036, - 0.00111324, 0.00068253, 7.26997712, 0.99659719, 0.99820422, 0.49297241],
     2816                             [- 6.27109300, - 0.00111284, 0.00068229, 7.26998015, 0.99659842, 0.99820487, 0.49297262],
     2817                             [- 6.27109562, - 0.00111244, 0.00068204, 7.26998318, 0.99659964, 0.99820551, 0.49297281],
     2818                             [- 6.27109825, - 0.00111204, 0.00068180, 7.26998620, 0.99660086, 0.99820616, 0.49297301],
     2819                             [- 6.27110086, - 0.00111164, 0.00068155, 7.26998921, 0.99660208, 0.99820680, 0.49297320],
     2820                             [- 6.27110347, - 0.00111125, 0.00068131, 7.26999222, 0.99660330, 0.99820744, 0.49297339],
     2821                             [- 6.27110606, - 0.00111085, 0.00068106, 7.26999522, 0.99660452, 0.99820809, 0.49297359],
     2822                             [- 6.27110866, - 0.00111045, 0.00068082, 7.26999821, 0.99660574, 0.99820873, 0.49297380],
     2823                             [- 6.27111124, - 0.00111005, 0.00068058, 7.27000119, 0.99660696, 0.99820937, 0.49297397],
     2824                             [- 6.27111382, - 0.00110965, 0.00068033, 7.27000416, 0.99660818, 0.99821001, 0.49297417],
     2825                             [- 6.27111639, - 0.00110926, 0.00068009, 7.27000713, 0.99660939, 0.99821065, 0.49297437],
     2826                             [- 6.27111895, - 0.00110886, 0.00067985, 7.27001009, 0.99661061, 0.99821129, 0.49297456],
     2827                             [- 6.27112151, - 0.00110846, 0.00067960, 7.27001304, 0.99661182, 0.99821193, 0.49297477],
     2828                             [- 6.27112405, - 0.00110807, 0.00067936, 7.27001599, 0.99661303, 0.99821257, 0.49297493],
     2829                             [- 6.27112660, - 0.00110767, 0.00067912, 7.27001892, 0.99661425, 0.99821321, 0.49297516],
     2830                             [- 6.27112913, - 0.00110728, 0.00067887, 7.27002185, 0.99661546, 0.99821385, 0.49297533],
     2831                             [- 6.27113166, - 0.00110688, 0.00067863, 7.27002478, 0.99661667, 0.99821449, 0.49297550],
     2832                             [- 6.27113418, - 0.00110648, 0.00067839, 7.27002769, 0.99661788, 0.99821513, 0.49297572],
     2833                             [- 6.27113669, - 0.00110609, 0.00067815, 7.27003060, 0.99661909, 0.99821576, 0.49297589],
     2834                             [- 6.27113920, - 0.00110569, 0.00067790, 7.27003350, 0.99662030, 0.99821640, 0.49297607],
     2835                             [- 6.27114170, - 0.00110530, 0.00067766, 7.27003640, 0.99662150, 0.99821704, 0.49297628],
     2836                             [- 6.27114419, - 0.00110491, 0.00067742, 7.27003928, 0.99662271, 0.99821767, 0.49297646],
     2837                             [- 6.27114668, - 0.00110451, 0.00067718, 7.27004216, 0.99662392, 0.99821831, 0.49297664],
     2838                             [- 6.27114915, - 0.00110412, 0.00067694, 7.27004504, 0.99662512, 0.99821894, 0.49297684],
     2839                             [- 6.27115163, - 0.00110372, 0.00067670, 7.27004790, 0.99662632, 0.99821958, 0.49297702],
     2840                             [- 6.27115409, - 0.00110333, 0.00067646, 7.27005076, 0.99662753, 0.99822021, 0.49297723],
     2841                             [- 6.27115655, - 0.00110294, 0.00067621, 7.27005361, 0.99662873, 0.99822085, 0.49297742],
     2842                             [- 6.27115900, - 0.00110255, 0.00067597, 7.27005646, 0.99662993, 0.99822148, 0.49297759],
     2843                             [- 6.27116145, - 0.00110215, 0.00067573, 7.27005929, 0.99663113, 0.99822211, 0.49297781],
     2844                             [- 6.27116389, - 0.00110176, 0.00067549, 7.27006212, 0.99663233, 0.99822274, 0.49297799],
     2845                             [- 6.27116632, - 0.00110137, 0.00067525, 7.27006495, 0.99663353, 0.99822338, 0.49297818],
     2846                             [- 6.27116874, - 0.00110098, 0.00067501, 7.27006776, 0.99663473, 0.99822401, 0.49297837],
     2847                             [- 6.27117116, - 0.00110059, 0.00067477, 7.27007057, 0.99663592, 0.99822464, 0.49297853],
     2848                             [- 6.27117357, - 0.00110020, 0.00067453, 7.27007338, 0.99663712, 0.99822527, 0.49297873],
     2849                             [- 6.27117598, - 0.00109981, 0.00067429, 7.27007617, 0.99663832, 0.99822590, 0.49297890],
     2850                             [- 6.27117838, - 0.00109942, 0.00067405, 7.27007896, 0.99663951, 0.99822653, 0.49297910],
     2851                             [- 6.27118077, - 0.00109903, 0.00067381, 7.27008174, 0.99664070, 0.99822716, 0.49297929],
     2852                             [- 6.27118315, - 0.00109864, 0.00067358, 7.27008452, 0.99664190, 0.99822779, 0.49297945],
     2853                             [- 6.27118553, - 0.00109825, 0.00067334, 7.27008729, 0.99664309, 0.99822842, 0.49297965],
     2854                             [- 6.27118791, - 0.00109786, 0.00067310, 7.27009005, 0.99664428, 0.99822904, 0.49297987],
     2855                             [- 6.27119027, - 0.00109747, 0.00067286, 7.27009280, 0.99664547, 0.99822967, 0.49298005],
     2856                             [- 6.27119263, - 0.00109708, 0.00067262, 7.27009555, 0.99664666, 0.99823030, 0.49298023],
     2857                             [- 6.27119499, - 0.00109669, 0.00067238, 7.27009829, 0.99664785, 0.99823092, 0.49298041],
     2858                             [- 6.27119733, - 0.00109630, 0.00067214, 7.27010103, 0.99664904, 0.99823155, 0.49298056],
     2859                             [- 6.27119968, - 0.00109592, 0.00067191, 7.27010376, 0.99665022, 0.99823218, 0.49298074],
     2860                             [- 6.27120201, - 0.00109553, 0.00067167, 7.27010648, 0.99665141, 0.99823280, 0.49298095],
     2861                             [- 6.27120434, - 0.00109514, 0.00067143, 7.27010920, 0.99665259, 0.99823343, 0.49298115],
     2862                             [- 6.27120666, - 0.00109475, 0.00067119, 7.27011190, 0.99665378, 0.99823405, 0.49298131],
     2863                             [- 6.27120898, - 0.00109437, 0.00067096, 7.27011461, 0.99665496, 0.99823467, 0.49298149],
     2864                             [- 6.27121129, - 0.00109398, 0.00067072, 7.27011730, 0.99665614, 0.99823530, 0.49298166],
     2865                             [- 6.27121359, - 0.00109360, 0.00067048, 7.27011999, 0.99665733, 0.99823592, 0.49298185],
     2866                             [- 6.27121589, - 0.00109321, 0.00067025, 7.27012268, 0.99665851, 0.99823654, 0.49298202],
     2867                             [- 6.27121818, - 0.00109282, 0.00067001, 7.27012535, 0.99665969, 0.99823717, 0.49298224],
     2868                             [- 6.27122046, - 0.00109244, 0.00066977, 7.27012802, 0.99666087, 0.99823779, 0.49298236],
     2869                             [- 6.27122274, - 0.00109205, 0.00066954, 7.27013069, 0.99666205, 0.99823841, 0.49298260],
     2870                             [- 6.27122501, - 0.00109167, 0.00066930, 7.27013334, 0.99666322, 0.99823903, 0.49298275],
     2871                             [- 6.27122728, - 0.00109128, 0.00066907, 7.27013600, 0.99666440, 0.99823965, 0.49298294],
     2872                             [- 6.27122954, - 0.00109090, 0.00066883, 7.27013864, 0.99666558, 0.99824027, 0.49298313],
     2873                             [- 6.27123179, - 0.00109052, 0.00066859, 7.27014128, 0.99666675, 0.99824089, 0.49298330],
     2874                             [- 6.27123404, - 0.00109013, 0.00066836, 7.27014391, 0.99666793, 0.99824151, 0.49298351],
     2875                             [- 6.27123629, - 0.00108975, 0.00066812, 7.27014654, 0.99666910, 0.99824213, 0.49298363],
     2876                             [- 6.27123852, - 0.00108937, 0.00066789, 7.27014916, 0.99667027, 0.99824275, 0.49298382],
     2877                             [- 6.27124075, - 0.00108898, 0.00066765, 7.27015177, 0.99667144, 0.99824336, 0.49298401],
     2878                             [- 6.27124298, - 0.00108860, 0.00066742, 7.27015438, 0.99667261, 0.99824398, 0.49298420],
     2879                             [- 6.27124520, - 0.00108822, 0.00066718, 7.27015698, 0.99667379, 0.99824460, 0.49298438],
     2880                             [- 6.27124741, - 0.00108784, 0.00066695, 7.27015957, 0.99667495, 0.99824521, 0.49298453],
     2881                             [- 6.27124962, - 0.00108745, 0.00066672, 7.27016216, 0.99667612, 0.99824583, 0.49298471],
     2882                             [- 6.27125182, - 0.00108707, 0.00066648, 7.27016475, 0.99667729, 0.99824645, 0.49298491],
     2883                             [- 6.27125401, - 0.00108669, 0.00066625, 7.27016732, 0.99667846, 0.99824706, 0.49298510],
     2884                             [- 6.27125620, - 0.00108631, 0.00066601, 7.27016989, 0.99667962, 0.99824768, 0.49298524],
     2885                             [- 6.27125839, - 0.00108593, 0.00066578, 7.27017246, 0.99668079, 0.99824829, 0.49298544],
     2886                             [- 6.27126057, - 0.00108555, 0.00066555, 7.27017502, 0.99668195, 0.99824890, 0.49298562],
     2887                             [- 6.27126274, - 0.00108517, 0.00066531, 7.27017757, 0.99668312, 0.99824952, 0.49298575],
     2888                             [- 6.27126490, - 0.00108479, 0.00066508, 7.27018012, 0.99668428, 0.99825013, 0.49298596],
     2889                             [- 6.27126707, - 0.00108441, 0.00066485, 7.27018266, 0.99668544, 0.99825074, 0.49298614],
     2890                             [- 6.27126922, - 0.00108403, 0.00066461, 7.27018519, 0.99668660, 0.99825136, 0.49298629],
     2891                             [- 6.27127137, - 0.00108365, 0.00066438, 7.27018772, 0.99668776, 0.99825197, 0.49298647],
     2892                             [- 6.27127351, - 0.00108327, 0.00066415, 7.27019024, 0.99668892, 0.99825258, 0.49298665],
     2893                             [- 6.27127565, - 0.00108289, 0.00066392, 7.27019276, 0.99669008, 0.99825319, 0.49298685],
     2894                             [- 6.27127779, - 0.00108251, 0.00066369, 7.27019527, 0.99669124, 0.99825380, 0.49298701],
     2895                             [- 6.27127991, - 0.00108214, 0.00066345, 7.27019778, 0.99669240, 0.99825441, 0.49298719],
     2896                             [- 6.27128204, - 0.00108176, 0.00066322, 7.27020028, 0.99669356, 0.99825502, 0.49298735],
     2897                             [- 6.27128415, - 0.00108138, 0.00066299, 7.27020277, 0.99669471, 0.99825563, 0.49298754],
     2898                             [- 6.27128626, - 0.00108100, 0.00066276, 7.27020526, 0.99669587, 0.99825624, 0.49298772],
     2899                             [- 6.27128837, - 0.00108063, 0.00066253, 7.27020774, 0.99669702, 0.99825685, 0.49298787],
     2900                             [- 6.27129047, - 0.00108025, 0.00066230, 7.27021022, 0.99669817, 0.99825746, 0.49298806],
     2901                             [- 6.27129256, - 0.00107987, 0.00066206, 7.27021269, 0.99669933, 0.99825806, 0.49298822],
     2902                             [- 6.27129465, - 0.00107950, 0.00066183, 7.27021516, 0.99670048, 0.99825867, 0.49298838],
     2903                             [- 6.27129674, - 0.00107912, 0.00066160, 7.27021762, 0.99670163, 0.99825928, 0.49298857],
     2904                             [- 6.27129881, - 0.00107874, 0.00066137, 7.27022007, 0.99670278, 0.99825988, 0.49298872],
     2905                             [- 6.27130089, - 0.00107837, 0.00066114, 7.27022252, 0.99670393, 0.99826049, 0.49298890],
     2906                             [- 6.27130295, - 0.00107799, 0.00066091, 7.27022496, 0.99670508, 0.99826109, 0.49298906],
     2907                             [- 6.27130502, - 0.00107762, 0.00066068, 7.27022740, 0.99670622, 0.99826170, 0.49298921],
     2908                             [- 6.27130707, - 0.00107724, 0.00066045, 7.27022983, 0.99670737, 0.99826230, 0.49298942],
     2909                             [- 6.27130913, - 0.00107687, 0.00066022, 7.27023226, 0.99670852, 0.99826291, 0.49298958],
     2910                             [- 6.27131117, - 0.00107649, 0.00065999, 7.27023468, 0.99670966, 0.99826351, 0.49298977],
     2911                             [- 6.27131321, - 0.00107612, 0.00065976, 7.27023709, 0.99671081, 0.99826412, 0.49298992],
     2912                             [- 6.27131525, - 0.00107575, 0.00065953, 7.27023950, 0.99671195, 0.99826472, 0.49299011],
     2913                             [- 6.27131728, - 0.00107537, 0.00065931, 7.27024191, 0.99671309, 0.99826532, 0.49299028],
     2914                             [- 6.27131930, - 0.00107500, 0.00065908, 7.27024430, 0.99671423, 0.99826592, 0.49299042],
     2915                             [- 6.27132133, - 0.00107463, 0.00065885, 7.27024670, 0.99671538, 0.99826653, 0.49299058],
     2916                             [- 6.27132334, - 0.00107425, 0.00065862, 7.27024909, 0.99671652, 0.99826713, 0.49299077],
     2917                             [- 6.27132535, - 0.00107388, 0.00065839, 7.27025147, 0.99671766, 0.99826773, 0.49299096],
     2918                             [- 6.27132736, - 0.00107351, 0.00065816, 7.27025385, 0.99671879, 0.99826833, 0.49299111],
     2919                             [- 6.27132936, - 0.00107314, 0.00065793, 7.27025622, 0.99671993, 0.99826893, 0.49299126],
     2920                             [- 6.27133135, - 0.00107277, 0.00065771, 7.27025858, 0.99672107, 0.99826953, 0.49299144],
     2921                             [- 6.27133334, - 0.00107239, 0.00065748, 7.27026094, 0.99672221, 0.99827013, 0.49299160],
     2922                             [- 6.27133532, - 0.00107202, 0.00065725, 7.27026330, 0.99672334, 0.99827073, 0.49299180],
     2923                             [- 6.27133730, - 0.00107165, 0.00065702, 7.27026565, 0.99672448, 0.99827132, 0.49299193],
     2924                             [- 6.27133928, - 0.00107128, 0.00065680, 7.27026800, 0.99672561, 0.99827192, 0.49299212],
     2925                             [- 6.27134125, - 0.00107091, 0.00065657, 7.27027034, 0.99672674, 0.99827252, 0.49299227],
     2926                             [- 6.27134321, - 0.00107054, 0.00065634, 7.27027267, 0.99672788, 0.99827312, 0.49299243],
     2927                             [- 6.27134517, - 0.00107017, 0.00065611, 7.27027500, 0.99672901, 0.99827371, 0.49299259],
     2928                             [- 6.27134713, - 0.00106980, 0.00065589, 7.27027733, 0.99673014, 0.99827431, 0.49299280],
     2929                             [- 6.27134908, - 0.00106943, 0.00065566, 7.27027964, 0.99673127, 0.99827491, 0.49299296],
     2930                             [- 6.27135102, - 0.00106906, 0.00065543, 7.27028196, 0.99673240, 0.99827550, 0.49299309],
     2931                             [- 6.27135296, - 0.00106870, 0.00065521, 7.27028427, 0.99673353, 0.99827610, 0.49299327],
     2932                             [- 6.27135490, - 0.00106833, 0.00065498, 7.27028657, 0.99673466, 0.99827669, 0.49299344],
     2933                             [- 6.27135683, - 0.00106796, 0.00065476, 7.27028887, 0.99673578, 0.99827729, 0.49299361],
     2934                             [- 6.27135875, - 0.00106759, 0.00065453, 7.27029116, 0.99673691, 0.99827788, 0.49299378],
     2935                             [- 6.27136067, - 0.00106722, 0.00065430, 7.27029345, 0.99673804, 0.99827847, 0.49299395],
     2936                             [- 6.27136259, - 0.00106685, 0.00065408, 7.27029574, 0.99673916, 0.99827907, 0.49299413],
     2937                             [- 6.27136450, - 0.00106649, 0.00065385, 7.27029801, 0.99674028, 0.99827966, 0.49299427],
     2938                             [- 6.27136641, - 0.00106612, 0.00065363, 7.27030029, 0.99674141, 0.99828025, 0.49299442],
     2939                             [- 6.27136831, - 0.00106575, 0.00065340, 7.27030256, 0.99674253, 0.99828084, 0.49299460],
     2940                             [- 6.27137021, - 0.00106539, 0.00065318, 7.27030482, 0.99674365, 0.99828143, 0.49299474],
     2941                             [- 6.27137210, - 0.00106502, 0.00065295, 7.27030708, 0.99674477, 0.99828203, 0.49299490],
     2942                             [- 6.27137399, - 0.00106465, 0.00065273, 7.27030933, 0.99674589, 0.99828262, 0.49299509],
     2943                             [- 6.27137587, - 0.00106429, 0.00065250, 7.27031158, 0.99674701, 0.99828321, 0.49299525],
     2944                             [- 6.27137775, - 0.00106392, 0.00065228, 7.27031382, 0.99674813, 0.99828380, 0.49299541],
     2945                             [- 6.27137962, - 0.00106356, 0.00065206, 7.27031606, 0.99674925, 0.99828439, 0.49299561],
     2946                             [- 6.27138149, - 0.00106319, 0.00065183, 7.27031830, 0.99675037, 0.99828497, 0.49299573],
     2947                             [- 6.27138335, - 0.00106283, 0.00065161, 7.27032053, 0.99675148, 0.99828556, 0.49299589],
     2948                             [- 6.27138521, - 0.00106246, 0.00065139, 7.27032275, 0.99675260, 0.99828615, 0.49299603],
     2949                             [- 6.27138707, - 0.00106210, 0.00065116, 7.27032497, 0.99675371, 0.99828674, 0.49299621],
     2950                             [- 6.27138892, - 0.00106173, 0.00065094, 7.27032719, 0.99675483, 0.99828733, 0.49299635],
     2951                             [- 6.27139077, - 0.00106137, 0.00065072, 7.27032940, 0.99675594, 0.99828791, 0.49299653],
     2952                             [- 6.27139261, - 0.00106101, 0.00065049, 7.27033160, 0.99675705, 0.99828850, 0.49299670],
     2953                             [- 6.27139445, - 0.00106064, 0.00065027, 7.27033380, 0.99675816, 0.99828909, 0.49299687],
     2954                             [- 6.27139628, - 0.00106028, 0.00065005, 7.27033600, 0.99675928, 0.99828967, 0.49299705],
     2955                             [- 6.27139811, - 0.00105992, 0.00064982, 7.27033819, 0.99676039, 0.99829026, 0.49299718],
     2956                             [- 6.27139993, - 0.00105956, 0.00064960, 7.27034037, 0.99676150, 0.99829084, 0.49299736],
     2957                             [- 6.27140175, - 0.00105919, 0.00064938, 7.27034256, 0.99676260, 0.99829143, 0.49299751],
     2958                             [- 6.27140356, - 0.00105883, 0.00064916, 7.27034473, 0.99676371, 0.99829201, 0.49299765],
     2959                             [- 6.27140537, - 0.00105847, 0.00064893, 7.27034690, 0.99676482, 0.99829260, 0.49299782],
     2960                             [- 6.27140718, - 0.00105811, 0.00064871, 7.27034907, 0.99676593, 0.99829318, 0.49299800],
     2961                             [- 6.27140898, - 0.00105775, 0.00064849, 7.27035123, 0.99676703, 0.99829376, 0.49299816],
     2962                             [- 6.27141078, - 0.00105739, 0.00064827, 7.27035339, 0.99676814, 0.99829434, 0.49299833],
     2963                             [- 6.27141257, - 0.00105702, 0.00064805, 7.27035555, 0.99676924, 0.99829493, 0.49299845],
     2964                             [- 6.27141436, - 0.00105666, 0.00064783, 7.27035770, 0.99677034, 0.99829551, 0.49299862],
     2965                             [- 6.27141614, - 0.00105630, 0.00064761, 7.27035984, 0.99677145, 0.99829609, 0.49299878],
     2966                             [- 6.27141792, - 0.00105594, 0.00064739, 7.27036198, 0.99677255, 0.99829667, 0.49299891],
     2967                             [- 6.27141970, - 0.00105558, 0.00064716, 7.27036412, 0.99677365, 0.99829725, 0.49299912],
     2968                             [- 6.27142147, - 0.00105522, 0.00064694, 7.27036625, 0.99677475, 0.99829783, 0.49299926],
     2969                             [- 6.27142324, - 0.00105486, 0.00064672, 7.27036837, 0.99677585, 0.99829841, 0.49299943],
     2970                             [- 6.27142500, - 0.00105451, 0.00064650, 7.27037050, 0.99677695, 0.99829899, 0.49299955],
     2971                             [- 6.27142676, - 0.00105415, 0.00064628, 7.27037261, 0.99677805, 0.99829957, 0.49299971],
     2972                             [- 6.27142851, - 0.00105379, 0.00064606, 7.27037473, 0.99677914, 0.99830015, 0.49299984],
     2973                             [- 6.27143026, - 0.00105343, 0.00064584, 7.27037683, 0.99678024, 0.99830073, 0.49300001],
     2974                             [- 6.27143201, - 0.00105307, 0.00064562, 7.27037894, 0.99678134, 0.99830131, 0.49300017],
     2975                             [- 6.27143375, - 0.00105271, 0.00064540, 7.27038104, 0.99678243, 0.99830188, 0.49300033],
     2976                             [- 6.27143549, - 0.00105236, 0.00064518, 7.27038313, 0.99678353, 0.99830246, 0.49300050],
     2977                             [- 6.27143722, - 0.00105200, 0.00064496, 7.27038522, 0.99678462, 0.99830304, 0.49300065],
     2978                             [- 6.27143895, - 0.00105164, 0.00064475, 7.27038731, 0.99678571, 0.99830361, 0.49300081],
     2979                             [- 6.27144068, - 0.00105128, 0.00064453, 7.27038939, 0.99678681, 0.99830419, 0.49300096],
     2980                             [- 6.27144240, - 0.00105093, 0.00064431, 7.27039147, 0.99678790, 0.99830477, 0.49300112],
     2981                             [- 6.27144412, - 0.00105057, 0.00064409, 7.27039355, 0.99678899, 0.99830534, 0.49300126],
     2982                             [- 6.27144583, - 0.00105021, 0.00064387, 7.27039561, 0.99679008, 0.99830592, 0.49300141],
     2983                             [- 6.27144754, - 0.00104986, 0.00064365, 7.27039768, 0.99679117, 0.99830649, 0.49300158],
     2984                             [- 6.27144924, - 0.00104950, 0.00064343, 7.27039974, 0.99679226, 0.99830706, 0.49300174],
     2985                             [- 6.27145094, - 0.00104915, 0.00064322, 7.27040180, 0.99679334, 0.99830764, 0.49300191],
     2986                             [- 6.27145264, - 0.00104879, 0.00064300, 7.27040385, 0.99679443, 0.99830821, 0.49300203],
     2987                             [- 6.27145433, - 0.00104844, 0.00064278, 7.27040590, 0.99679552, 0.99830878, 0.49300220],
     2988                             [- 6.27145602, - 0.00104808, 0.00064256, 7.27040794, 0.99679660, 0.99830936, 0.49300234],
     2989                             [- 6.27145771, - 0.00104773, 0.00064234, 7.27040998, 0.99679769, 0.99830993, 0.49300248],
     2990                             [- 6.27145939, - 0.00104737, 0.00064213, 7.27041202, 0.99679877, 0.99831050, 0.49300264],
     2991                             [- 6.27146107, - 0.00104702, 0.00064191, 7.27041405, 0.99679986, 0.99831107, 0.49300280],
     2992                             [- 6.27146274, - 0.00104667, 0.00064169, 7.27041607, 0.99680094, 0.99831164, 0.49300294],
     2993                             [- 6.27146441, - 0.00104631, 0.00064148, 7.27041810, 0.99680202, 0.99831221, 0.49300310],
     2994                             [- 6.27146607, - 0.00104596, 0.00064126, 7.27042012, 0.99680310, 0.99831278, 0.49300325],
     2995                             [- 6.27146774, - 0.00104561, 0.00064104, 7.27042213, 0.99680418, 0.99831335, 0.49300340],
     2996                             [- 6.27146939, - 0.00104525, 0.00064083, 7.27042414, 0.99680526, 0.99831392, 0.49300357],
     2997                             [- 6.27147105, - 0.00104490, 0.00064061, 7.27042615, 0.99680634, 0.99831449, 0.49300370],
     2998                             [- 6.27147270, - 0.00104455, 0.00064039, 7.27042815, 0.99680742, 0.99831506, 0.49300390],
     2999                             [- 6.27147434, - 0.00104420, 0.00064018, 7.27043015, 0.99680850, 0.99831563, 0.49300402],
     3000                             [- 6.27147599, - 0.00104384, 0.00063996, 7.27043214, 0.99680957, 0.99831620, 0.49300417],
     3001                             [- 6.27147762, - 0.00104349, 0.00063975, 7.27043413, 0.99681065, 0.99831676, 0.49300431],
     3002                             [- 6.27147926, - 0.00104314, 0.00063953, 7.27043612, 0.99681172, 0.99831733, 0.49300449],
     3003                             [- 6.27148089, - 0.00104279, 0.00063931, 7.27043810, 0.99681280, 0.99831790, 0.49300460],
     3004                             [- 6.27148252, - 0.00104244, 0.00063910, 7.27044008, 0.99681387, 0.99831846, 0.49300478],
     3005                             [- 6.27148414, - 0.00104209, 0.00063888, 7.27044205, 0.99681495, 0.99831903, 0.49300494],
     3006                             [- 6.27148576, - 0.00104174, 0.00063867, 7.27044402, 0.99681602, 0.99831959, 0.49300507],
     3007                             [- 6.27148738, - 0.00104139, 0.00063845, 7.27044599, 0.99681709, 0.99832016, 0.49300523],
     3008                             [- 6.27148899, - 0.00104104, 0.00063824, 7.27044795, 0.99681816, 0.99832072, 0.49300537],
     3009                             [- 6.27149060, - 0.00104069, 0.00063802, 7.27044991, 0.99681923, 0.99832129, 0.49300552],
     3010                             [- 6.27149220, - 0.00104034, 0.00063781, 7.27045186, 0.99682030, 0.99832185, 0.49300567],
     3011                             [- 6.27149380, - 0.00103999, 0.00063760, 7.27045382, 0.99682137, 0.99832242, 0.49300583],
     3012                             [- 6.27149540, - 0.00103964, 0.00063738, 7.27045576, 0.99682244, 0.99832298, 0.49300595],
     3013                             [- 6.27149699, - 0.00103929, 0.00063717, 7.27045771, 0.99682351, 0.99832354, 0.49300609],
     3014                             [- 6.27149859, - 0.00103894, 0.00063695, 7.27045964, 0.99682457, 0.99832411, 0.49300627],
     3015                             [- 6.27150017, - 0.00103859, 0.00063674, 7.27046158, 0.99682564, 0.99832467, 0.49300642],
     3016                             [- 6.27150175, - 0.00103824, 0.00063653, 7.27046351, 0.99682670, 0.99832523, 0.49300653],
     3017                             [- 6.27150333, - 0.00103790, 0.00063631, 7.27046544, 0.99682777, 0.99832579, 0.49300671],
     3018                             [- 6.27150491, - 0.00103755, 0.00063610, 7.27046736, 0.99682883, 0.99832635, 0.49300686],
     3019                             [- 6.27150648, - 0.00103720, 0.00063589, 7.27046928, 0.99682990, 0.99832691, 0.49300700],
     3020                             [- 6.27150805, - 0.00103685, 0.00063567, 7.27047120, 0.99683096, 0.99832747, 0.49300717],
     3021                             [- 6.27150962, - 0.00103651, 0.00063546, 7.27047311, 0.99683202, 0.99832803, 0.49300731],
     3022                             [- 6.27151118, - 0.00103616, 0.00063525, 7.27047502, 0.99683308, 0.99832859, 0.49300742],
     3023                             [- 6.27151274, - 0.00103581, 0.00063503, 7.27047692, 0.99683414, 0.99832915, 0.49300759],
     3024                             [- 6.27151429, - 0.00103547, 0.00063482, 7.27047882, 0.99683520, 0.99832971, 0.49300775],
     3025                             [- 6.27151584, - 0.00103512, 0.00063461, 7.27048072, 0.99683626, 0.99833027, 0.49300787],
     3026                             [- 6.27151739, - 0.00103478, 0.00063440, 7.27048262, 0.99683732, 0.99833083, 0.49300803],
     3027                             [- 6.27151893, - 0.00103443, 0.00063419, 7.27048451, 0.99683838, 0.99833138, 0.49300818],
     3028                             [- 6.27152048, - 0.00103408, 0.00063397, 7.27048639, 0.99683943, 0.99833194, 0.49300831],
     3029                             [- 6.27152201, - 0.00103374, 0.00063376, 7.27048827, 0.99684049, 0.99833250, 0.49300846],
     3030                             [- 6.27152355, - 0.00103339, 0.00063355, 7.27049015, 0.99684154, 0.99833306, 0.49300863],
     3031                             [- 6.27152508, - 0.00103305, 0.00063334, 7.27049203, 0.99684260, 0.99833361, 0.49300877],
     3032                             [- 6.27152660, - 0.00103270, 0.00063313, 7.27049390, 0.99684365, 0.99833417, 0.49300891],
     3033                             [- 6.27152813, - 0.00103236, 0.00063292, 7.27049577, 0.99684471, 0.99833472, 0.49300907],
     3034                             [- 6.27152965, - 0.00103202, 0.00063271, 7.27049763, 0.99684576, 0.99833528, 0.49300922],
     3035                             [- 6.27153117, - 0.00103167, 0.00063249, 7.27049949, 0.99684681, 0.99833583, 0.49300935],
     3036                             [- 6.27153268, - 0.00103133, 0.00063228, 7.27050135, 0.99684786, 0.99833639, 0.49300949],
     3037                             [- 6.27153419, - 0.00103099, 0.00063207, 7.27050320, 0.99684891, 0.99833694, 0.49300966],
     3038                             [- 6.27153570, - 0.00103064, 0.00063186, 7.27050505, 0.99684996, 0.99833749, 0.49300980],
     3039                             [- 6.27153720, - 0.00103030, 0.00063165, 7.27050690, 0.99685101, 0.99833805, 0.49300992],
     3040                             [- 6.27153870, - 0.00102996, 0.00063144, 7.27050874, 0.99685206, 0.99833860, 0.49301003],
     3041                             [- 6.27154020, - 0.00102961, 0.00063123, 7.27051058, 0.99685311, 0.99833915, 0.49301024],
     3042                             [- 6.27154169, - 0.00102927, 0.00063102, 7.27051242, 0.99685415, 0.99833971, 0.49301036],
     3043                             [- 6.27154318, - 0.00102893, 0.00063081, 7.27051425, 0.99685520, 0.99834026, 0.49301051],
     3044                             [- 6.27154467, - 0.00102859, 0.00063060, 7.27051608, 0.99685625, 0.99834081, 0.49301064],
     3045                             [- 6.27154615, - 0.00102825, 0.00063039, 7.27051791, 0.99685729, 0.99834136, 0.49301076],
     3046                             [- 6.27154763, - 0.00102791, 0.00063018, 7.27051973, 0.99685834, 0.99834191, 0.49301089],
     3047                             [- 6.27154911, - 0.00102756, 0.00062997, 7.27052155, 0.99685938, 0.99834246, 0.49301105],
     3048                             [- 6.27155059, - 0.00102722, 0.00062976, 7.27052336, 0.99686042, 0.99834301, 0.49301119],
     3049                             [- 6.27155206, - 0.00102688, 0.00062956, 7.27052517, 0.99686146, 0.99834356, 0.49301134],
     3050                             [- 6.27155352, - 0.00102654, 0.00062935, 7.27052698, 0.99686251, 0.99834411, 0.49301148],
     3051                             [- 6.27155499, - 0.00102620, 0.00062914, 7.27052879, 0.99686355, 0.99834466, 0.49301163],
     3052                             [- 6.27155645, - 0.00102586, 0.00062893, 7.27053059, 0.99686459, 0.99834521, 0.49301176],
     3053                             [- 6.27155791, - 0.00102552, 0.00062872, 7.27053239, 0.99686563, 0.99834576, 0.49301188],
     3054                             [- 6.27155936, - 0.00102518, 0.00062851, 7.27053418, 0.99686666, 0.99834630, 0.49301206],
     3055                             [- 6.27156082, - 0.00102484, 0.00062830, 7.27053597, 0.99686770, 0.99834685, 0.49301220],
     3056                             [- 6.27156226, - 0.00102451, 0.00062810, 7.27053776, 0.99686874, 0.99834740, 0.49301233],
     3057                             [- 6.27156371, - 0.00102417, 0.00062789, 7.27053954, 0.99686978, 0.99834794, 0.49301246],
     3058                             [- 6.27156515, - 0.00102383, 0.00062768, 7.27054132, 0.99687081, 0.99834849, 0.49301262],
     3059                             [- 6.27156659, - 0.00102349, 0.00062747, 7.27054310, 0.99687185, 0.99834904, 0.49301280],
     3060                             [- 6.27156803, - 0.00102315, 0.00062727, 7.27054488, 0.99687288, 0.99834958, 0.49301294],
     3061                             [- 6.27156946, - 0.00102281, 0.00062706, 7.27054665, 0.99687392, 0.99835013, 0.49301309],
     3062                             [- 6.27157089, - 0.00102248, 0.00062685, 7.27054842, 0.99687495, 0.99835067, 0.49301319],
     3063                             [- 6.27157232, - 0.00102214, 0.00062664, 7.27055018, 0.99687598, 0.99835122, 0.49301335],
     3064                             [- 6.27157374, - 0.00102180, 0.00062644, 7.27055194, 0.99687701, 0.99835176, 0.49301345],
     3065                             [- 6.27157517, - 0.00102146, 0.00062623, 7.27055370, 0.99687805, 0.99835231, 0.49301362],
     3066                             [- 6.27157658, - 0.00102113, 0.00062602, 7.27055546, 0.99687908, 0.99835285, 0.49301372],
     3067                             [- 6.27157800, - 0.00102079, 0.00062582, 7.27055721, 0.99688011, 0.99835339, 0.49301383],
     3068                             [- 6.27157941, - 0.00102045, 0.00062561, 7.27055896, 0.99688113, 0.99835393, 0.49301405],
     3069                             [- 6.27158082, - 0.00102012, 0.00062540, 7.27056070, 0.99688216, 0.99835448, 0.49301418],
     3070                             [- 6.27158223, - 0.00101978, 0.00062520, 7.27056244, 0.99688319, 0.99835502, 0.49301433],
     3071                             [- 6.27158363, - 0.00101945, 0.00062499, 7.27056418, 0.99688422, 0.99835556, 0.49301444],
     3072                             [- 6.27158503, - 0.00101911, 0.00062479, 7.27056592, 0.99688524, 0.99835610, 0.49301454],
     3073                             [- 6.27158643, - 0.00101878, 0.00062458, 7.27056765, 0.99688627, 0.99835664, 0.49301468],
     3074                             [- 6.27158782, - 0.00101844, 0.00062438, 7.27056938, 0.99688730, 0.99835718, 0.49301483],
     3075                             [- 6.27158921, - 0.00101811, 0.00062417, 7.27057111, 0.99688832, 0.99835772, 0.49301499],
     3076                             [- 6.27159060, - 0.00101777, 0.00062396, 7.27057283, 0.99688934, 0.99835826, 0.49301513],
     3077                             [- 6.27159199, - 0.00101744, 0.00062376, 7.27057455, 0.99689037, 0.99835880, 0.49301528],
     3078                             [- 6.27159337, - 0.00101710, 0.00062355, 7.27057627, 0.99689139, 0.99835934, 0.49301541],
     3079                             [- 6.27159475, - 0.00101677, 0.00062335, 7.27057798, 0.99689241, 0.99835988, 0.49301553],
     3080                             [- 6.27159613, - 0.00101644, 0.00062314, 7.27057969, 0.99689343, 0.99836042, 0.49301569],
     3081                             [- 6.27159750, - 0.00101610, 0.00062294, 7.27058140, 0.99689445, 0.99836096, 0.49301584],
     3082                             [- 6.27159887, - 0.00101577, 0.00062274, 7.27058310, 0.99689547, 0.99836150, 0.49301593],
     3083                             [- 6.27160024, - 0.00101544, 0.00062253, 7.27058480, 0.99689649, 0.99836203, 0.49301608],
     3084                             [- 6.27160160, - 0.00101510, 0.00062233, 7.27058650, 0.99689751, 0.99836257, 0.49301621],
     3085                             [- 6.27160297, - 0.00101477, 0.00062212, 7.27058820, 0.99689853, 0.99836311, 0.49301634],
     3086                             [- 6.27160433, - 0.00101444, 0.00062192, 7.27058989, 0.99689954, 0.99836364, 0.49301647],
     3087                             [- 6.27160568, - 0.00101410, 0.00062171, 7.27059158, 0.99690056, 0.99836418, 0.49301663],
     3088                             [- 6.27160704, - 0.00101377, 0.00062151, 7.27059327, 0.99690158, 0.99836472, 0.49301679],
     3089                             [- 6.27160839, - 0.00101344, 0.00062131, 7.27059495, 0.99690259, 0.99836525, 0.49301693],
     3090                             [- 6.27160974, - 0.00101311, 0.00062110, 7.27059663, 0.99690361, 0.99836579, 0.49301706],
     3091                             [- 6.27161108, - 0.00101278, 0.00062090, 7.27059831, 0.99690462, 0.99836632, 0.49301722],
     3092                             [- 6.27161243, - 0.00101245, 0.00062070, 7.27059998, 0.99690563, 0.99836686, 0.49301730],
     3093                             [- 6.27161377, - 0.00101212, 0.00062049, 7.27060165, 0.99690664, 0.99836739, 0.49301748],
     3094                             [- 6.27161511, - 0.00101179, 0.00062029, 7.27060332, 0.99690766, 0.99836792, 0.49301757],
     3095                             [- 6.27161644, - 0.00101146, 0.00062009, 7.27060499, 0.99690867, 0.99836846, 0.49301772],
     3096                             [- 6.27161777, - 0.00101112, 0.00061989, 7.27060665, 0.99690968, 0.99836899, 0.49301787],
     3097                             [- 6.27161910, - 0.00101079, 0.00061968, 7.27060831, 0.99691069, 0.99836952, 0.49301798],
     3098                             [- 6.27162043, - 0.00101046, 0.00061948, 7.27060996, 0.99691170, 0.99837005, 0.49301811],
     3099                             [- 6.27162175, - 0.00101014, 0.00061928, 7.27061162, 0.99691271, 0.99837059, 0.49301825],
     3100                             [- 6.27162307, - 0.00100981, 0.00061908, 7.27061327, 0.99691371, 0.99837112, 0.49301840],
     3101                             [- 6.27162439, - 0.00100948, 0.00061887, 7.27061492, 0.99691472, 0.99837165, 0.49301855],
     3102                             [- 6.27162571, - 0.00100915, 0.00061867, 7.27061656, 0.99691573, 0.99837218, 0.49301866],
     3103                             [- 6.27162702, - 0.00100882, 0.00061847, 7.27061820, 0.99691673, 0.99837271, 0.49301881],
     3104                             [- 6.27162833, - 0.00100849, 0.00061827, 7.27061984, 0.99691774, 0.99837324, 0.49301892],
     3105                             [- 6.27162964, - 0.00100816, 0.00061807, 7.27062148, 0.99691874, 0.99837377, 0.49301906],
     3106                             [- 6.27163095, - 0.00100783, 0.00061787, 7.27062311, 0.99691975, 0.99837430, 0.49301923],
     3107                             [- 6.27163225, - 0.00100751, 0.00061767, 7.27062474, 0.99692075, 0.99837483, 0.49301935],
     3108                             [- 6.27163355, - 0.00100718, 0.00061746, 7.27062637, 0.99692175, 0.99837536, 0.49301944],
     3109                             [- 6.27163485, - 0.00100685, 0.00061726, 7.27062800, 0.99692275, 0.99837589, 0.49301961],
     3110                             [- 6.27163614, - 0.00100652, 0.00061706, 7.27062962, 0.99692375, 0.99837641, 0.49301974],
     3111                             [- 6.27163743, - 0.00100620, 0.00061686, 7.27063124, 0.99692476, 0.99837694, 0.49301990],
     3112                             [- 6.27163872, - 0.00100587, 0.00061666, 7.27063285, 0.99692576, 0.99837747, 0.49301996],
     3113                             [- 6.27164001, - 0.00100554, 0.00061646, 7.27063447, 0.99692675, 0.99837800, 0.49302013],
     3114                             [- 6.27164130, - 0.00100522, 0.00061626, 7.27063608, 0.99692775, 0.99837852, 0.49302024],
     3115                             [- 6.27164258, - 0.00100489, 0.00061606, 7.27063769, 0.99692875, 0.99837905, 0.49302039],
     3116                             [- 6.27164386, - 0.00100456, 0.00061586, 7.27063929, 0.99692975, 0.99837957, 0.49302050],
     3117                             [- 6.27164513, - 0.00100424, 0.00061566, 7.27064090, 0.99693075, 0.99838010, 0.49302064],
     3118                             [- 6.27164641, - 0.00100391, 0.00061546, 7.27064250, 0.99693174, 0.99838063, 0.49302080],
     3119                             [- 6.27164768, - 0.00100359, 0.00061526, 7.27064409, 0.99693274, 0.99838115, 0.49302092],
     3120                             [- 6.27164895, - 0.00100326, 0.00061506, 7.27064569, 0.99693373, 0.99838168, 0.49302106],
     3121                             [- 6.27165022, - 0.00100294, 0.00061486, 7.27064728, 0.99693473, 0.99838220, 0.49302117],
     3122                             [- 6.27165148, - 0.00100261, 0.00061466, 7.27064887, 0.99693572, 0.99838272, 0.49302135],
     3123                             [- 6.27165274, - 0.00100229, 0.00061446, 7.27065045, 0.99693671, 0.99838325, 0.49302147],
     3124                             [- 6.27165400, - 0.00100196, 0.00061427, 7.27065204, 0.99693770, 0.99838377, 0.49302161],
     3125                             [- 6.27165526, - 0.00100164, 0.00061407, 7.27065362, 0.99693870, 0.99838429, 0.49302174],
     3126                             [- 6.27165651, - 0.00100132, 0.00061387, 7.27065520, 0.99693969, 0.99838482, 0.49302182],
     3127                             [- 6.27165777, - 0.00100099, 0.00061367, 7.27065677, 0.99694068, 0.99838534, 0.49302200],
     3128                             [- 6.27165902, - 0.00100067, 0.00061347, 7.27065835, 0.99694167, 0.99838586, 0.49302214],
     3129                             [- 6.27166026, - 0.00100035, 0.00061327, 7.27065992, 0.99694266, 0.99838638, 0.49302227],
     3130                             [- 6.27166151, - 0.00100002, 0.00061307, 7.27066149, 0.99694364, 0.99838690, 0.49302237],
     3131                             [- 6.27166275, - 0.00099970, 0.00061288, 7.27066305, 0.99694463, 0.99838742, 0.49302253],
     3132                             [- 6.27166399, - 0.00099938, 0.00061268, 7.27066461, 0.99694562, 0.99838795, 0.49302264],
     3133                             [- 6.27166523, - 0.00099905, 0.00061248, 7.27066617, 0.99694660, 0.99838847, 0.49302277],
     3134                             [- 6.27166646, - 0.00099873, 0.00061228, 7.27066773, 0.99694759, 0.99838899, 0.49302290],
     3135                             [- 6.27166770, - 0.00099841, 0.00061208, 7.27066928, 0.99694858, 0.99838951, 0.49302301],
     3136                             [- 6.27166893, - 0.00099809, 0.00061189, 7.27067084, 0.99694956, 0.99839002, 0.49302315],
     3137                             [- 6.27167015, - 0.00099777, 0.00061169, 7.27067239, 0.99695054, 0.99839054, 0.49302331],
     3138                             [- 6.27167138, - 0.00099745, 0.00061149, 7.27067393, 0.99695153, 0.99839106, 0.49302343],
     3139                             [- 6.27167260, - 0.00099712, 0.00061130, 7.27067548, 0.99695251, 0.99839158, 0.49302354],
     3140                             [- 6.27167382, - 0.00099680, 0.00061110, 7.27067702, 0.99695349, 0.99839210, 0.49302367],
     3141                             [- 6.27167504, - 0.00099648, 0.00061090, 7.27067856, 0.99695447, 0.99839262, 0.49302378],
     3142                             [- 6.27167626, - 0.00099616, 0.00061070, 7.27068010, 0.99695545, 0.99839313, 0.49302391],
     3143                             [- 6.27167747, - 0.00099584, 0.00061051, 7.27068163, 0.99695643, 0.99839365, 0.49302405],
     3144                             [- 6.27167868, - 0.00099552, 0.00061031, 7.27068316, 0.99695741, 0.99839417, 0.49302418],
     3145                             [- 6.27167989, - 0.00099520, 0.00061012, 7.27068469, 0.99695839, 0.99839468, 0.49302428],
     3146                             [- 6.27168110, - 0.00099488, 0.00060992, 7.27068622, 0.99695937, 0.99839520, 0.49302442],
     3147                             [- 6.27168231, - 0.00099456, 0.00060972, 7.27068774, 0.99696035, 0.99839571, 0.49302457],
     3148                             [- 6.27168351, - 0.00099424, 0.00060953, 7.27068927, 0.99696133, 0.99839623, 0.49302469],
     3149                             [- 6.27168471, - 0.00099392, 0.00060933, 7.27069078, 0.99696230, 0.99839674, 0.49302483],
     3150                             [- 6.27168591, - 0.00099360, 0.00060914, 7.27069230, 0.99696328, 0.99839726, 0.49302493],
     3151                             [- 6.27168710, - 0.00099329, 0.00060894, 7.27069382, 0.99696425, 0.99839777, 0.49302510],
     3152                             [- 6.27168829, - 0.00099297, 0.00060874, 7.27069533, 0.99696523, 0.99839829, 0.49302519],
     3153                             [- 6.27168949, - 0.00099265, 0.00060855, 7.27069684, 0.99696620, 0.99839880, 0.49302531],
     3154                             [- 6.27169067, - 0.00099233, 0.00060835, 7.27069834, 0.99696717, 0.99839931, 0.49302546],
     3155                             [- 6.27169186, - 0.00099201, 0.00060816, 7.27069985, 0.99696815, 0.99839983, 0.49302559],
     3156                             [- 6.27169305, - 0.00099170, 0.00060796, 7.27070135, 0.99696912, 0.99840034, 0.49302572],
     3157                             [- 6.27169423, - 0.00099138, 0.00060777, 7.27070285, 0.99697009, 0.99840085, 0.49302581],
     3158                             [- 6.27169541, - 0.00099106, 0.00060757, 7.27070435, 0.99697106, 0.99840137, 0.49302594],
     3159                             [- 6.27169659, - 0.00099074, 0.00060738, 7.27070584, 0.99697203, 0.99840188, 0.49302606],
     3160                             [- 6.27169776, - 0.00099043, 0.00060719, 7.27070734, 0.99697300, 0.99840239, 0.49302620],
     3161                             [- 6.27169893, - 0.00099011, 0.00060699, 7.27070883, 0.99697397, 0.99840290, 0.49302635],
     3162                             [- 6.27170011, - 0.00098979, 0.00060680, 7.27071031, 0.99697494, 0.99840341, 0.49302644],
     3163                             [- 6.27170128, - 0.00098948, 0.00060660, 7.27071180, 0.99697590, 0.99840392, 0.49302662],
     3164                             [- 6.27170244, - 0.00098916, 0.00060641, 7.27071328, 0.99697687, 0.99840443, 0.49302676],
     3165                             [- 6.27170361, - 0.00098884, 0.00060622, 7.27071476, 0.99697784, 0.99840494, 0.49302682],
     3166                             [- 6.27170477, - 0.00098853, 0.00060602, 7.27071624, 0.99697880, 0.99840545, 0.49302696],
     3167                             [- 6.27170593, - 0.00098821, 0.00060583, 7.27071772, 0.99697977, 0.99840596, 0.49302711],
     3168                             [- 6.27170709, - 0.00098790, 0.00060563, 7.27071919, 0.99698073, 0.99840647, 0.49302721],
     3169                             [- 6.27170825, - 0.00098758, 0.00060544, 7.27072066, 0.99698170, 0.99840698, 0.49302733],
     3170                             [- 6.27170940, - 0.00098727, 0.00060525, 7.27072213, 0.99698266, 0.99840748, 0.49302748],
     3171                             [- 6.27171055, - 0.00098695, 0.00060505, 7.27072360, 0.99698362, 0.99840799, 0.49302765],
     3172                             [- 6.27171170, - 0.00098664, 0.00060486, 7.27072506, 0.99698459, 0.99840850, 0.49302773],
     3173                             [- 6.27171285, - 0.00098633, 0.00060467, 7.27072652, 0.99698555, 0.99840901, 0.49302786],
     3174                             [- 6.27171399, - 0.00098601, 0.00060448, 7.27072798, 0.99698651, 0.99840951, 0.49302797],
     3175                             [- 6.27171514, - 0.00098570, 0.00060428, 7.27072944, 0.99698747, 0.99841002, 0.49302811],
     3176                             [- 6.27171628, - 0.00098538, 0.00060409, 7.27073090, 0.99698843, 0.99841053, 0.49302824],
     3177                             [- 6.27171742, - 0.00098507, 0.00060390, 7.27073235, 0.99698939, 0.99841103, 0.49302835],
     3178                             [- 6.27171856, - 0.00098476, 0.00060371, 7.27073380, 0.99699035, 0.99841154, 0.49302848],
     3179                             [- 6.27171969, - 0.00098444, 0.00060351, 7.27073525, 0.99699130, 0.99841204, 0.49302858],
     3180                             [- 6.27172082, - 0.00098413, 0.00060332, 7.27073669, 0.99699226, 0.99841255, 0.49302871],
     3181                             [- 6.27172196, - 0.00098382, 0.00060313, 7.27073814, 0.99699322, 0.99841305, 0.49302887],
     3182                             [- 6.27172309, - 0.00098351, 0.00060294, 7.27073958, 0.99699417, 0.99841356, 0.49302895],
     3183                             [- 6.27172421, - 0.00098319, 0.00060275, 7.27074102, 0.99699513, 0.99841406, 0.49302912],
     3184                             [- 6.27172534, - 0.00098288, 0.00060256, 7.27074246, 0.99699608, 0.99841456, 0.49302925],
     3185                             [- 6.27172646, - 0.00098257, 0.00060236, 7.27074389, 0.99699704, 0.99841507, 0.49302935],
     3186                             [- 6.27172758, - 0.00098226, 0.00060217, 7.27074532, 0.99699799, 0.99841557, 0.49302945],
     3187                             [- 6.27172870, - 0.00098195, 0.00060198, 7.27074676, 0.99699894, 0.99841607, 0.49302959],
     3188                             [- 6.27172982, - 0.00098163, 0.00060179, 7.27074818, 0.99699990, 0.99841657, 0.49302970],
     3189                             [- 6.27173093, - 0.00098132, 0.00060160, 7.27074961, 0.99700085, 0.99841708, 0.49302981],
     3190                             [- 6.27173205, - 0.00098101, 0.00060141, 7.27075103, 0.99700180, 0.99841758, 0.49302992],
     3191                             [- 6.27173316, - 0.00098070, 0.00060122, 7.27075246, 0.99700275, 0.99841808, 0.49303009],
     3192                             [- 6.27173427, - 0.00098039, 0.00060103, 7.27075388, 0.99700370, 0.99841858, 0.49303019],
     3193                             [- 6.27173537, - 0.00098008, 0.00060084, 7.27075529, 0.99700465, 0.99841908, 0.49303031],
     3194                             [- 6.27173648, - 0.00097977, 0.00060065, 7.27075671, 0.99700560, 0.99841958, 0.49303044],
     3195                             [- 6.27173758, - 0.00097946, 0.00060046, 7.27075812, 0.99700655, 0.99842008, 0.49303056],
     3196                             [- 6.27173868, - 0.00097915, 0.00060027, 7.27075953, 0.99700749, 0.99842058, 0.49303069],
     3197                             [- 6.27173978, - 0.00097884, 0.00060008, 7.27076094, 0.99700844, 0.99842108, 0.49303080],
     3198                             [- 6.27174088, - 0.00097853, 0.00059989, 7.27076235, 0.99700939, 0.99842158, 0.49303094],
     3199                             [- 6.27174198, - 0.00097822, 0.00059970, 7.27076375, 0.99701033, 0.99842208, 0.49303107],
     3200                             [- 6.27174307, - 0.00097791, 0.00059951, 7.27076516, 0.99701128, 0.99842258, 0.49303120],
     3201                             [- 6.27174416, - 0.00097761, 0.00059932, 7.27076656, 0.99701222, 0.99842308, 0.49303132],
     3202                             [- 6.27174525, - 0.00097730, 0.00059913, 7.27076795, 0.99701317, 0.99842357, 0.49303142],
     3203                             [- 6.27174634, - 0.00097699, 0.00059894, 7.27076935, 0.99701411, 0.99842407, 0.49303154],
     3204                             [- 6.27174743, - 0.00097668, 0.00059875, 7.27077075, 0.99701505, 0.99842457, 0.49303168],
     3205                             [- 6.27174851, - 0.00097637, 0.00059856, 7.27077214, 0.99701599, 0.99842507, 0.49303176],
     3206                             [- 6.27174959, - 0.00097606, 0.00059837, 7.27077353, 0.99701693, 0.99842556, 0.49303192],
     3207                             [- 6.27175067, - 0.00097576, 0.00059818, 7.27077491, 0.99701788, 0.99842606, 0.49303205],
     3208                             [- 6.27175175, - 0.00097545, 0.00059800, 7.27077630, 0.99701882, 0.99842656, 0.49303212],
     3209                             [- 6.27175283, - 0.00097514, 0.00059781, 7.27077769, 0.99701976, 0.99842705, 0.49303223],
     3210                             [- 6.27175390, - 0.00097484, 0.00059762, 7.27077907, 0.99702070, 0.99842755, 0.49303239],
     3211                             [- 6.27175497, - 0.00097453, 0.00059743, 7.27078045, 0.99702163, 0.99842804, 0.49303247],
     3212                             [- 6.27175605, - 0.00097422, 0.00059724, 7.27078182, 0.99702257, 0.99842854, 0.49303263],
     3213                             [- 6.27175712, - 0.00097392, 0.00059705, 7.27078320, 0.99702351, 0.99842903, 0.49303277],
     3214                             [- 6.27175818, - 0.00097361, 0.00059687, 7.27078457, 0.99702445, 0.99842952, 0.49303287],
     3215                             [- 6.27175925, - 0.00097330, 0.00059668, 7.27078595, 0.99702538, 0.99843002, 0.49303298],
     3216                             [- 6.27176031, - 0.00097300, 0.00059649, 7.27078731, 0.99702632, 0.99843051, 0.49303309],
     3217                             [- 6.27176137, - 0.00097269, 0.00059630, 7.27078868, 0.99702725, 0.99843101, 0.49303324],
     3218                             [- 6.27176243, - 0.00097239, 0.00059612, 7.27079005, 0.99702819, 0.99843150, 0.49303337],
     3219                             [- 6.27176349, - 0.00097208, 0.00059593, 7.27079141, 0.99702912, 0.99843199, 0.49303342],
     3220                             [- 6.27176455, - 0.00097178, 0.00059574, 7.27079277, 0.99703005, 0.99843248, 0.49303355],
     3221                             [- 6.27176560, - 0.00097147, 0.00059555, 7.27079413, 0.99703099, 0.99843298, 0.49303367],
     3222                             [- 6.27176666, - 0.00097117, 0.00059537, 7.27079549, 0.99703192, 0.99843347, 0.49303384],
     3223                             [- 6.27176771, - 0.00097086, 0.00059518, 7.27079685, 0.99703285, 0.99843396, 0.49303391],
     3224                             [- 6.27176876, - 0.00097056, 0.00059499, 7.27079820, 0.99703378, 0.99843445, 0.49303404],
     3225                             [- 6.27176980, - 0.00097025, 0.00059481, 7.27079955, 0.99703471, 0.99843494, 0.49303417],
     3226                             [- 6.27177085, - 0.00096995, 0.00059462, 7.27080090, 0.99703564, 0.99843543, 0.49303426],
     3227                             [- 6.27177189, - 0.00096965, 0.00059443, 7.27080225, 0.99703657, 0.99843592, 0.49303442],
     3228                             [- 6.27177294, - 0.00096934, 0.00059425, 7.27080359, 0.99703750, 0.99843641, 0.49303454],
     3229                             [- 6.27177398, - 0.00096904, 0.00059406, 7.27080494, 0.99703843, 0.99843690, 0.49303464],
     3230                             [- 6.27177502, - 0.00096874, 0.00059388, 7.27080628, 0.99703936, 0.99843739, 0.49303476],
     3231                             [- 6.27177605, - 0.00096843, 0.00059369, 7.27080762, 0.99704028, 0.99843788, 0.49303487],
     3232                             [- 6.27177709, - 0.00096813, 0.00059350, 7.27080896, 0.99704121, 0.99843837, 0.49303501],
     3233                             [- 6.27177812, - 0.00096783, 0.00059332, 7.27081030, 0.99704213, 0.99843886, 0.49303512],
     3234                             [- 6.27177915, - 0.00096752, 0.00059313, 7.27081163, 0.99704306, 0.99843934, 0.49303521],
     3235                             [- 6.27178018, - 0.00096722, 0.00059295, 7.27081296, 0.99704398, 0.99843983, 0.49303537],
     3236                             [- 6.27178121, - 0.00096692, 0.00059276, 7.27081429, 0.99704491, 0.99844032, 0.49303546],
     3237                             [- 6.27178224, - 0.00096662, 0.00059258, 7.27081562, 0.99704583, 0.99844081, 0.49303558],
     3238                             [- 6.27178326, - 0.00096632, 0.00059239, 7.27081695, 0.99704675, 0.99844129, 0.49303575],
     3239                             [- 6.27178429, - 0.00096602, 0.00059221, 7.27081827, 0.99704768, 0.99844178, 0.49303581],
     3240                             [- 6.27178531, - 0.00096571, 0.00059202, 7.27081960, 0.99704860, 0.99844227, 0.49303591],
     3241                             [- 6.27178633, - 0.00096541, 0.00059184, 7.27082092, 0.99704952, 0.99844275, 0.49303609],
     3242                             [- 6.27178735, - 0.00096511, 0.00059165, 7.27082224, 0.99705044, 0.99844324, 0.49303618],
     3243                             [- 6.27178836, - 0.00096481, 0.00059147, 7.27082355, 0.99705136, 0.99844372, 0.49303628],
     3244                             [- 6.27178938, - 0.00096451, 0.00059128, 7.27082487, 0.99705228, 0.99844421, 0.49303641],
     3245                             [- 6.27179039, - 0.00096421, 0.00059110, 7.27082618, 0.99705320, 0.99844469, 0.49303652],
     3246                             [- 6.27179140, - 0.00096391, 0.00059091, 7.27082749, 0.99705412, 0.99844518, 0.49303666],
     3247                             [- 6.27179242, - 0.00096361, 0.00059073, 7.27082881, 0.99705503, 0.99844566, 0.49303673],
     3248                             [- 6.27179342, - 0.00096331, 0.00059055, 7.27083011, 0.99705595, 0.99844614, 0.49303690],
     3249                             [- 6.27179443, - 0.00096301, 0.00059036, 7.27083142, 0.99705687, 0.99844663, 0.49303700],
     3250                             [- 6.27179544, - 0.00096271, 0.00059018, 7.27083272, 0.99705778, 0.99844711, 0.49303712],
     3251                             [- 6.27179644, - 0.00096241, 0.00058999, 7.27083403, 0.99705870, 0.99844759, 0.49303722],
     3252                             [- 6.27179744, - 0.00096211, 0.00058981, 7.27083533, 0.99705961, 0.99844808, 0.49303732],
     3253                             [- 6.27179844, - 0.00096181, 0.00058963, 7.27083663, 0.99706053, 0.99844856, 0.49303745],
     3254                             [- 6.27179944, - 0.00096152, 0.00058944, 7.27083792, 0.99706144, 0.99844904, 0.49303757],
     3255                             [- 6.27180044, - 0.00096122, 0.00058926, 7.27083922, 0.99706235, 0.99844952, 0.49303771],
     3256                             [- 6.27180143, - 0.00096092, 0.00058908, 7.27084051, 0.99706327, 0.99845000, 0.49303777],
     3257                             [- 6.27180243, - 0.00096062, 0.00058890, 7.27084181, 0.99706418, 0.99845048, 0.49303795],
     3258                             [- 6.27180342, - 0.00096032, 0.00058871, 7.27084310, 0.99706509, 0.99845097, 0.49303802],
     3259                             [- 6.27180441, - 0.00096002, 0.00058853, 7.27084438, 0.99706600, 0.99845145, 0.49303815],
     3260                             [- 6.27180540, - 0.00095973, 0.00058835, 7.27084567, 0.99706691, 0.99845193, 0.49303827],
     3261                             [- 6.27180639, - 0.00095943, 0.00058816, 7.27084696, 0.99706782, 0.99845241, 0.49303836],
     3262                             [- 6.27180737, - 0.00095913, 0.00058798, 7.27084824, 0.99706873, 0.99845289, 0.49303844],
     3263                             [- 6.27180836, - 0.00095884, 0.00058780, 7.27084952, 0.99706964, 0.99845336, 0.49303861],
     3264                             [- 6.27180934, - 0.00095854, 0.00058762, 7.27085080, 0.99707055, 0.99845384, 0.49303868],
     3265                             [- 6.27181032, - 0.00095824, 0.00058744, 7.27085208, 0.99707145, 0.99845432, 0.49303884],
     3266                             [- 6.27181130, - 0.00095795, 0.00058725, 7.27085335, 0.99707236, 0.99845480, 0.49303895],
     3267                             [- 6.27181228, - 0.00095765, 0.00058707, 7.27085463, 0.99707327, 0.99845528, 0.49303908],
     3268                             [- 6.27181325, - 0.00095735, 0.00058689, 7.27085590, 0.99707417, 0.99845576, 0.49303915],
     3269                             [- 6.27181423, - 0.00095706, 0.00058671, 7.27085717, 0.99707508, 0.99845623, 0.49303928],
     3270                             [- 6.27181520, - 0.00095676, 0.00058653, 7.27085844, 0.99707598, 0.99845671, 0.49303940],
     3271                             [- 6.27181618, - 0.00095647, 0.00058635, 7.27085971, 0.99707689, 0.99845719, 0.49303950],
     3272                             [- 6.27181715, - 0.00095617, 0.00058616, 7.27086098, 0.99707779, 0.99845766, 0.49303965],
     3273                             [- 6.27181811, - 0.00095588, 0.00058598, 7.27086224, 0.99707869, 0.99845814, 0.49303979],
     3274                             [- 6.27181908, - 0.00095558, 0.00058580, 7.27086350, 0.99707960, 0.99845862, 0.49303989],
     3275                             [- 6.27182005, - 0.00095529, 0.00058562, 7.27086476, 0.99708050, 0.99845909, 0.49303994],
     3276                             [- 6.27182101, - 0.00095499, 0.00058544, 7.27086602, 0.99708140, 0.99845957, 0.49304006],
     3277                             [- 6.27182198, - 0.00095470, 0.00058526, 7.27086728, 0.99708230, 0.99846004, 0.49304023],
     3278                             [- 6.27182294, - 0.00095440, 0.00058508, 7.27086854, 0.99708320, 0.99846052, 0.49304031],
     3279                             [- 6.27182390, - 0.00095411, 0.00058490, 7.27086979, 0.99708410, 0.99846099, 0.49304040],
     3280                             [- 6.27182486, - 0.00095381, 0.00058472, 7.27087104, 0.99708500, 0.99846147, 0.49304052],
     3281                             [- 6.27182581, - 0.00095352, 0.00058454, 7.27087229, 0.99708590, 0.99846194, 0.49304066],
     3282                             [- 6.27182677, - 0.00095323, 0.00058436, 7.27087354, 0.99708680, 0.99846242, 0.49304078],
     3283                             [- 6.27182772, - 0.00095293, 0.00058418, 7.27087479, 0.99708769, 0.99846289, 0.49304090],
     3284                             [- 6.27182867, - 0.00095264, 0.00058400, 7.27087603, 0.99708859, 0.99846336, 0.49304102],
     3285                             [- 6.27182963, - 0.00095235, 0.00058382, 7.27087728, 0.99708949, 0.99846383, 0.49304112],
     3286                             [- 6.27183058, - 0.00095205, 0.00058364, 7.27087852, 0.99709038, 0.99846431, 0.49304120],
     3287                             [- 6.27183152, - 0.00095176, 0.00058346, 7.27087976, 0.99709128, 0.99846478, 0.49304129],
     3288                             [- 6.27183247, - 0.00095147, 0.00058328, 7.27088100, 0.99709217, 0.99846525, 0.49304145],
     3289                             [- 6.27183342, - 0.00095118, 0.00058310, 7.27088224, 0.99709307, 0.99846572, 0.49304157],
     3290                             [- 6.27183436, - 0.00095088, 0.00058292, 7.27088348, 0.99709396, 0.99846619, 0.49304165],
     3291                             [- 6.27183530, - 0.00095059, 0.00058274, 7.27088471, 0.99709485, 0.99846667, 0.49304175],
     3292                             [- 6.27183624, - 0.00095030, 0.00058256, 7.27088594, 0.99709575, 0.99846714, 0.49304190],
     3293                             [- 6.27183718, - 0.00095001, 0.00058238, 7.27088717, 0.99709664, 0.99846761, 0.49304204],
     3294                             [- 6.27183812, - 0.00094972, 0.00058221, 7.27088840, 0.99709753, 0.99846808, 0.49304212],
     3295                             [- 6.27183906, - 0.00094943, 0.00058203, 7.27088963, 0.99709842, 0.99846855, 0.49304222],
     3296                             [- 6.27183999, - 0.00094914, 0.00058185, 7.27089086, 0.99709931, 0.99846902, 0.49304233],
     3297                             [- 6.27184093, - 0.00094884, 0.00058167, 7.27089208, 0.99710020, 0.99846949, 0.49304245],
     3298                             [- 6.27184186, - 0.00094855, 0.00058149, 7.27089331, 0.99710109, 0.99846996, 0.49304255],
     3299                             [- 6.27184279, - 0.00094826, 0.00058131, 7.27089453, 0.99710198, 0.99847042, 0.49304263],
     3300                             [- 6.27184372, - 0.00094797, 0.00058113, 7.27089575, 0.99710287, 0.99847089, 0.49304277],
     3301                             [- 6.27184465, - 0.00094768, 0.00058096, 7.27089697, 0.99710375, 0.99847136, 0.49304288],
     3302                             [- 6.27184558, - 0.00094739, 0.00058078, 7.27089818, 0.99710464, 0.99847183, 0.49304302],
     3303                             [- 6.27184650, - 0.00094710, 0.00058060, 7.27089940, 0.99710553, 0.99847230, 0.49304309],
     3304                             [- 6.27184743, - 0.00094681, 0.00058042, 7.27090061, 0.99710641, 0.99847276, 0.49304322],
     3305                             [- 6.27184835, - 0.00094652, 0.00058025, 7.27090182, 0.99710730, 0.99847323, 0.49304332],
     3306                             [- 6.27184927, - 0.00094623, 0.00058007, 7.27090304, 0.99710818, 0.99847370, 0.49304348],
     3307                             [- 6.27185019, - 0.00094595, 0.00057989, 7.27090424, 0.99710907, 0.99847416, 0.49304351],
     3308                             [- 6.27185111, - 0.00094566, 0.00057971, 7.27090545, 0.99710995, 0.99847463, 0.49304363],
     3309                             [- 6.27185203, - 0.00094537, 0.00057954, 7.27090666, 0.99711083, 0.99847510, 0.49304378],
     3310                             [- 6.27185294, - 0.00094508, 0.00057936, 7.27090786, 0.99711172, 0.99847556, 0.49304390],
     3311                             [- 6.27185386, - 0.00094479, 0.00057918, 7.27090907, 0.99711260, 0.99847603, 0.49304399],
     3312                             [- 6.27185477, - 0.00094450, 0.00057901, 7.27091027, 0.99711348, 0.99847649, 0.49304412],
     3313                             [- 6.27185568, - 0.00094421, 0.00057883, 7.27091147, 0.99711436, 0.99847696, 0.49304419],
     3314                             [- 6.27185659, - 0.00094393, 0.00057865, 7.27091267, 0.99711524, 0.99847742, 0.49304433],
     3315                             [- 6.27185750, - 0.00094364, 0.00057848, 7.27091386, 0.99711612, 0.99847789, 0.49304445],
     3316                             [- 6.27185841, - 0.00094335, 0.00057830, 7.27091506, 0.99711700, 0.99847835, 0.49304453],
     3317                             [- 6.27185932, - 0.00094306, 0.00057812, 7.27091625, 0.99711788, 0.99847881, 0.49304463],
     3318                             [- 6.27186022, - 0.00094278, 0.00057795, 7.27091745, 0.99711876, 0.99847928, 0.49304471],
     3319                             [- 6.27186113, - 0.00094249, 0.00057777, 7.27091864, 0.99711964, 0.99847974, 0.49304488],
     3320                             [- 6.27186203, - 0.00094220, 0.00057759, 7.27091983, 0.99712051, 0.99848020, 0.49304496],
     3321                             [- 6.27186293, - 0.00094192, 0.00057742, 7.27092101, 0.99712139, 0.99848067, 0.49304509],
     3322                             [- 6.27186383, - 0.00094163, 0.00057724, 7.27092220, 0.99712227, 0.99848113, 0.49304521],
     3323                             [- 6.27186473, - 0.00094134, 0.00057707, 7.27092339, 0.99712314, 0.99848159, 0.49304528],
     3324                             [- 6.27186563, - 0.00094106, 0.00057689, 7.27092457, 0.99712402, 0.99848205, 0.49304542],
     3325                             [- 6.27186652, - 0.00094077, 0.00057672, 7.27092575, 0.99712489, 0.99848251, 0.49304552],
     3326                             [- 6.27186742, - 0.00094049, 0.00057654, 7.27092693, 0.99712577, 0.99848297, 0.49304562],
     3327                             [- 6.27186831, - 0.00094020, 0.00057636, 7.27092811, 0.99712664, 0.99848344, 0.49304571],
     3328                             [- 6.27186920, - 0.00093991, 0.00057619, 7.27092929, 0.99712751, 0.99848390, 0.49304585],
     3329                             [- 6.27187010, - 0.00093963, 0.00057601, 7.27093047, 0.99712839, 0.99848436, 0.49304595],
     3330                             [- 6.27187098, - 0.00093934, 0.00057584, 7.27093164, 0.99712926, 0.99848482, 0.49304606],
     3331                             [- 6.27187187, - 0.00093906, 0.00057567, 7.27093281, 0.99713013, 0.99848528, 0.49304619],
     3332                             [- 6.27187276, - 0.00093877, 0.00057549, 7.27093399, 0.99713100, 0.99848574, 0.49304625],
     3333                             [- 6.27187365, - 0.00093849, 0.00057532, 7.27093516, 0.99713187, 0.99848619, 0.49304638],
     3334                             [- 6.27187453, - 0.00093821, 0.00057514, 7.27093633, 0.99713274, 0.99848665, 0.49304650],
     3335                             [- 6.27187541, - 0.00093792, 0.00057497, 7.27093749, 0.99713361, 0.99848711, 0.49304662],
     3336                             [- 6.27187630, - 0.00093764, 0.00057479, 7.27093866, 0.99713448, 0.99848757, 0.49304675],
     3337                             [- 6.27187718, - 0.00093735, 0.00057462, 7.27093983, 0.99713535, 0.99848803, 0.49304680],
     3338                             [- 6.27187806, - 0.00093707, 0.00057444, 7.27094099, 0.99713622, 0.99848849, 0.49304696],
     3339                             [- 6.27187894, - 0.00093679, 0.00057427, 7.27094215, 0.99713708, 0.99848894, 0.49304701],
     3340                             [- 6.27187981, - 0.00093650, 0.00057410, 7.27094331, 0.99713795, 0.99848940, 0.49304717],
     3341                             [- 6.27188069, - 0.00093622, 0.00057392, 7.27094447, 0.99713882, 0.99848986, 0.49304726],
     3342                             [- 6.27188156, - 0.00093594, 0.00057375, 7.27094563, 0.99713968, 0.99849031, 0.49304734],
     3343                             [- 6.27188244, - 0.00093565, 0.00057358, 7.27094678, 0.99714055, 0.99849077, 0.49304749],
     3344                             [- 6.27188331, - 0.00093537, 0.00057340, 7.27094794, 0.99714141, 0.99849123, 0.49304756],
     3345                             [- 6.27188418, - 0.00093509, 0.00057323, 7.27094909, 0.99714228, 0.99849168, 0.49304769],
     3346                             [- 6.27188505, - 0.00093481, 0.00057306, 7.27095025, 0.99714314, 0.99849214, 0.49304781],
     3347                             [- 6.27188592, - 0.00093452, 0.00057288, 7.27095140, 0.99714400, 0.99849259, 0.49304789],
     3348                             [- 6.27188679, - 0.00093424, 0.00057271, 7.27095255, 0.99714486, 0.99849305, 0.49304797],
     3349                             [- 6.27188765, - 0.00093396, 0.00057254, 7.27095369, 0.99714573, 0.99849350, 0.49304811],
     3350                             [- 6.27188852, - 0.00093368, 0.00057236, 7.27095484, 0.99714659, 0.99849396, 0.49304819],
     3351                             [- 6.27188938, - 0.00093340, 0.00057219, 7.27095599, 0.99714745, 0.99849441, 0.49304832],
     3352                             [- 6.27189025, - 0.00093312, 0.00057202, 7.27095713, 0.99714831, 0.99849487, 0.49304841],
     3353                             [- 6.27189111, - 0.00093283, 0.00057185, 7.27095827, 0.99714917, 0.99849532, 0.49304852],
     3354                             [- 6.27189197, - 0.00093255, 0.00057167, 7.27095942, 0.99715003, 0.99849577, 0.49304861],
     3355                             [- 6.27189283, - 0.00093227, 0.00057150, 7.27096056, 0.99715089, 0.99849623, 0.49304875],
     3356                             [- 6.27189369, - 0.00093199, 0.00057133, 7.27096169, 0.99715175, 0.99849668, 0.49304884],
     3357                             [- 6.27189454, - 0.00093171, 0.00057116, 7.27096283, 0.99715260, 0.99849713, 0.49304894],
     3358                             [- 6.27189540, - 0.00093143, 0.00057098, 7.27096397, 0.99715346, 0.99849758, 0.49304909],
     3359                             [- 6.27189625, - 0.00093115, 0.00057081, 7.27096510, 0.99715432, 0.99849804, 0.49304918],
     3360                             [- 6.27189711, - 0.00093087, 0.00057064, 7.27096624, 0.99715517, 0.99849849, 0.49304926],
     3361                             [- 6.27189796, - 0.00093059, 0.00057047, 7.27096737, 0.99715603, 0.99849894, 0.49304941],
     3362                             [- 6.27189881, - 0.00093031, 0.00057030, 7.27096850, 0.99715689, 0.99849939, 0.49304950],
     3363                             [- 6.27189966, - 0.00093003, 0.00057013, 7.27096963, 0.99715774, 0.99849984, 0.49304958],
     3364                             [- 6.27190051, - 0.00092975, 0.00056995, 7.27097076, 0.99715860, 0.99850029, 0.49304964],
     3365                             [- 6.27190136, - 0.00092947, 0.00056978, 7.27097188, 0.99715945, 0.99850074, 0.49304982],
     3366                             [- 6.27190220, - 0.00092919, 0.00056961, 7.27097301, 0.99716030, 0.99850119, 0.49304989],
     3367                             [- 6.27190305, - 0.00092892, 0.00056944, 7.27097413, 0.99716115, 0.99850164, 0.49305004],
     3368                             [- 6.27190389, - 0.00092864, 0.00056927, 7.27097525, 0.99716201, 0.99850209, 0.49305011],
     3369                             [- 6.27190474, - 0.00092836, 0.00056910, 7.27097638, 0.99716286, 0.99850254, 0.49305025],
     3370                             [- 6.27190558, - 0.00092808, 0.00056893, 7.27097750, 0.99716371, 0.99850299, 0.49305033],
     3371                             [- 6.27190642, - 0.00092780, 0.00056876, 7.27097862, 0.99716456, 0.99850344, 0.49305045],
     3372                             [- 6.27190726, - 0.00092752, 0.00056859, 7.27097973, 0.99716541, 0.99850389, 0.49305056],
     3373                             [- 6.27190810, - 0.00092725, 0.00056842, 7.27098085, 0.99716626, 0.99850434, 0.49305065],
     3374                             [- 6.27190893, - 0.00092697, 0.00056825, 7.27098197, 0.99716711, 0.99850478, 0.49305076],
     3375                             [- 6.27190977, - 0.00092669, 0.00056808, 7.27098308, 0.99716796, 0.99850523, 0.49305085],
     3376                             [- 6.27191061, - 0.00092641, 0.00056791, 7.27098419, 0.99716881, 0.99850568, 0.49305094],
     3377                             [- 6.27191144, - 0.00092614, 0.00056774, 7.27098530, 0.99716965, 0.99850613, 0.49305108],
     3378                             [- 6.27191227, - 0.00092586, 0.00056757, 7.27098641, 0.99717050, 0.99850657, 0.49305115],
     3379                             [- 6.27191311, - 0.00092558, 0.00056740, 7.27098752, 0.99717135, 0.99850702, 0.49305125],
     3380                             [- 6.27191394, - 0.00092531, 0.00056723, 7.27098863, 0.99717219, 0.99850747, 0.49305139],
     3381                             [- 6.27191477, - 0.00092503, 0.00056706, 7.27098974, 0.99717304, 0.99850791, 0.49305148],
     3382                             [- 6.27191559, - 0.00092475, 0.00056689, 7.27099084, 0.99717389, 0.99850836, 0.49305158],
     3383                             [- 6.27191642, - 0.00092448, 0.00056672, 7.27099194, 0.99717473, 0.99850880, 0.49305167],
     3384                             [- 6.27191725, - 0.00092420, 0.00056655, 7.27099305, 0.99717557, 0.99850925, 0.49305181],
     3385                             [- 6.27191807, - 0.00092393, 0.00056638, 7.27099415, 0.99717642, 0.99850969, 0.49305190],
     3386                             [- 6.27191890, - 0.00092365, 0.00056621, 7.27099525, 0.99717726, 0.99851014, 0.49305201],
     3387                             [- 6.27191972, - 0.00092338, 0.00056604, 7.27099635, 0.99717810, 0.99851058, 0.49305208],
     3388                             [- 6.27192054, - 0.00092310, 0.00056587, 7.27099744, 0.99717895, 0.99851103, 0.49305223],
     3389                             [- 6.27192136, - 0.00092282, 0.00056570, 7.27099854, 0.99717979, 0.99851147, 0.49305232],
     3390                             [- 6.27192218, - 0.00092255, 0.00056553, 7.27099964, 0.99718063, 0.99851192, 0.49305243],
     3391                             [- 6.27192300, - 0.00092227, 0.00056537, 7.27100073, 0.99718147, 0.99851236, 0.49305250],
     3392                             [- 6.27192382, - 0.00092200, 0.00056520, 7.27100182, 0.99718231, 0.99851280, 0.49305258],
     3393                             [- 6.27192464, - 0.00092173, 0.00056503, 7.27100291, 0.99718315, 0.99851325, 0.49305275],
     3394                             [- 6.27192545, - 0.00092145, 0.00056486, 7.27100400, 0.99718399, 0.99851369, 0.49305278],
     3395                             [- 6.27192627, - 0.00092118, 0.00056469, 7.27100509, 0.99718483, 0.99851413, 0.49305295],
     3396                             [- 6.27192708, - 0.00092090, 0.00056452, 7.27100618, 0.99718566, 0.99851457, 0.49305299],
     3397                             [- 6.27192790, - 0.00092063, 0.00056436, 7.27100727, 0.99718650, 0.99851502, 0.49305314],
     3398                             [- 6.27192871, - 0.00092036, 0.00056419, 7.27100835, 0.99718734, 0.99851546, 0.49305323],
     3399                             [- 6.27192952, - 0.00092008, 0.00056402, 7.27100944, 0.99718818, 0.99851590, 0.49305333],
     3400                             [- 6.27193033, - 0.00091981, 0.00056385, 7.27101052, 0.99718901, 0.99851634, 0.49305345],
     3401                             [- 6.27193114, - 0.00091954, 0.00056368, 7.27101160, 0.99718985, 0.99851678, 0.49305349],
     3402                             [- 6.27193194, - 0.00091926, 0.00056352, 7.27101268, 0.99719068, 0.99851722, 0.49305365],
     3403                             [- 6.27193275, - 0.00091899, 0.00056335, 7.27101376, 0.99719152, 0.99851766, 0.49305371],
     3404                             [- 6.27193356, - 0.00091872, 0.00056318, 7.27101484, 0.99719235, 0.99851810, 0.49305382],
     3405                             [- 6.27193436, - 0.00091844, 0.00056301, 7.27101592, 0.99719318, 0.99851854, 0.49305392],
     3406                             [- 6.27193516, - 0.00091817, 0.00056285, 7.27101699, 0.99719402, 0.99851898, 0.49305400],
     3407                             [- 6.27193597, - 0.00091790, 0.00056268, 7.27101807, 0.99719485, 0.99851942, 0.49305415],
     3408                             [- 6.27193677, - 0.00091763, 0.00056251, 7.27101914, 0.99719568, 0.99851986, 0.49305427],
     3409                             [- 6.27193757, - 0.00091736, 0.00056235, 7.27102021, 0.99719651, 0.99852030, 0.49305437],
     3410                             [- 6.27193837, - 0.00091708, 0.00056218, 7.27102128, 0.99719735, 0.99852074, 0.49305443],
     3411                             [- 6.27193917, - 0.00091681, 0.00056201, 7.27102235, 0.99719818, 0.99852117, 0.49305458],
     3412                             [- 6.27193996, - 0.00091654, 0.00056185, 7.27102342, 0.99719901, 0.99852161, 0.49305464],
     3413                             [- 6.27194076, - 0.00091627, 0.00056168, 7.27102449, 0.99719984, 0.99852205, 0.49305472],
     3414                             [- 6.27194155, - 0.00091600, 0.00056151, 7.27102556, 0.99720066, 0.99852249, 0.49305485],
     3415                             [- 6.27194235, - 0.00091573, 0.00056135, 7.27102662, 0.99720149, 0.99852292, 0.49305488],
     3416                             [- 6.27194314, - 0.00091546, 0.00056118, 7.27102769, 0.99720232, 0.99852336, 0.49305501],
     3417                             [- 6.27194394, - 0.00091519, 0.00056102, 7.27102875, 0.99720315, 0.99852380, 0.49305520],
     3418                             [- 6.27194473, - 0.00091492, 0.00056085, 7.27102981, 0.99720398, 0.99852423, 0.49305527],
     3419                             [- 6.27194552, - 0.00091465, 0.00056068, 7.27103087, 0.99720480, 0.99852467, 0.49305537],
     3420                             [- 6.27194631, - 0.00091438, 0.00056052, 7.27103193, 0.99720563, 0.99852511, 0.49305541],
     3421                             [- 6.27194710, - 0.00091411, 0.00056035, 7.27103299, 0.99720646, 0.99852554, 0.49305558],
     3422                             [- 6.27194788, - 0.00091384, 0.00056019, 7.27103405, 0.99720728, 0.99852598, 0.49305568],
     3423                             [- 6.27194867, - 0.00091357, 0.00056002, 7.27103510, 0.99720811, 0.99852641, 0.49305582],
     3424                             [- 6.27194946, - 0.00091330, 0.00055986, 7.27103616, 0.99720893, 0.99852685, 0.49305585],
     3425                             [- 6.27195024, - 0.00091303, 0.00055969, 7.27103721, 0.99720975, 0.99852728, 0.49305599],
     3426                             [- 6.27195102, - 0.00091276, 0.00055953, 7.27103827, 0.99721058, 0.99852772, 0.49305606],
     3427                             [- 6.27195181, - 0.00091249, 0.00055936, 7.27103932, 0.99721140, 0.99852815, 0.49305614],
     3428                             [- 6.27195259, - 0.00091222, 0.00055920, 7.27104037, 0.99721222, 0.99852858, 0.49305629],
     3429                             [- 6.27195337, - 0.00091195, 0.00055903, 7.27104142, 0.99721304, 0.99852902, 0.49305636],
     3430                             [- 6.27195415, - 0.00091168, 0.00055887, 7.27104247, 0.99721387, 0.99852945, 0.49305643],
     3431                             [- 6.27195493, - 0.00091141, 0.00055870, 7.27104351, 0.99721469, 0.99852988, 0.49305655],
     3432                             [- 6.27195571, - 0.00091115, 0.00055854, 7.27104456, 0.99721551, 0.99853032, 0.49305663],
     3433                             [- 6.27195648, - 0.00091088, 0.00055837, 7.27104561, 0.99721633, 0.99853075, 0.49305679],
     3434                             [- 6.27195726, - 0.00091061, 0.00055821, 7.27104665, 0.99721715, 0.99853118, 0.49305682],
     3435                             [- 6.27195803, - 0.00091034, 0.00055804, 7.27104769, 0.99721796, 0.99853161, 0.49305696],
     3436                             [- 6.27195881, - 0.00091007, 0.00055788, 7.27104873, 0.99721878, 0.99853205, 0.49305711],
     3437                             [- 6.27195958, - 0.00090981, 0.00055771, 7.27104978, 0.99721960, 0.99853248, 0.49305719],
     3438                             [- 6.27196035, - 0.00090954, 0.00055755, 7.27105081, 0.99722042, 0.99853291, 0.49305721],
     3439                             [- 6.27196113, - 0.00090927, 0.00055739, 7.27105185, 0.99722124, 0.99853334, 0.49305736],
     3440                             [- 6.27196190, - 0.00090901, 0.00055722, 7.27105289, 0.99722205, 0.99853377, 0.49305741],
     3441                             [- 6.27196267, - 0.00090874, 0.00055706, 7.27105393, 0.99722287, 0.99853420, 0.49305756],
     3442                             [- 6.27196344, - 0.00090847, 0.00055690, 7.27105496, 0.99722368, 0.99853463, 0.49305766],
     3443                             [- 6.27196420, - 0.00090821, 0.00055673, 7.27105600, 0.99722450, 0.99853506, 0.49305779],
     3444                             [- 6.27196497, - 0.00090794, 0.00055657, 7.27105703, 0.99722531, 0.99853549, 0.49305788],
     3445                             [- 6.27196574, - 0.00090767, 0.00055641, 7.27105806, 0.99722613, 0.99853592, 0.49305797],
     3446                             [- 6.27196650, - 0.00090741, 0.00055624, 7.27105909, 0.99722694, 0.99853635, 0.49305806],
     3447                             [- 6.27196726, - 0.00090714, 0.00055608, 7.27106012, 0.99722776, 0.99853678, 0.49305817],
     3448                             [- 6.27196803, - 0.00090688, 0.00055592, 7.27106115, 0.99722857, 0.99853721, 0.49305825],
     3449                             [- 6.27196879, - 0.00090661, 0.00055575, 7.27106218, 0.99722938, 0.99853764, 0.49305840],
     3450                             [- 6.27196955, - 0.00090634, 0.00055559, 7.27106321, 0.99723019, 0.99853807, 0.49305847],
     3451                             [- 6.27197031, - 0.00090608, 0.00055543, 7.27106423, 0.99723100, 0.99853849, 0.49305859],
     3452                             [- 6.27197107, - 0.00090581, 0.00055526, 7.27106526, 0.99723181, 0.99853892, 0.49305865],
     3453                             [- 6.27197183, - 0.00090555, 0.00055510, 7.27106628, 0.99723262, 0.99853935, 0.49305875],
     3454                             [- 6.27197259, - 0.00090528, 0.00055494, 7.27106730, 0.99723343, 0.99853978, 0.49305889],
     3455                             [- 6.27197335, - 0.00090502, 0.00055478, 7.27106833, 0.99723424, 0.99854020, 0.49305896],
     3456                             [- 6.27197410, - 0.00090476, 0.00055461, 7.27106935, 0.99723505, 0.99854063, 0.49305906],
     3457                             [- 6.27197486, - 0.00090449, 0.00055445, 7.27107037, 0.99723586, 0.99854106, 0.49305911],
     3458                             [- 6.27197561, - 0.00090423, 0.00055429, 7.27107138, 0.99723667, 0.99854148, 0.49305929],
     3459                             [- 6.27197637, - 0.00090396, 0.00055413, 7.27107240, 0.99723748, 0.99854191, 0.49305933],
     3460                             [- 6.27197712, - 0.00090370, 0.00055397, 7.27107342, 0.99723828, 0.99854233, 0.49305943],
     3461                             [- 6.27197787, - 0.00090344, 0.00055380, 7.27107443, 0.99723909, 0.99854276, 0.49305954],
     3462                             [- 6.27197862, - 0.00090317, 0.00055364, 7.27107545, 0.99723990, 0.99854319, 0.49305965],
     3463                             [- 6.27197937, - 0.00090291, 0.00055348, 7.27107646, 0.99724070, 0.99854361, 0.49305972],
     3464                             [- 6.27198012, - 0.00090264, 0.00055332, 7.27107748, 0.99724151, 0.99854404, 0.49305986],
     3465                             [- 6.27198087, - 0.00090238, 0.00055316, 7.27107849, 0.99724231, 0.99854446, 0.49305996],
     3466                             [- 6.27198162, - 0.00090212, 0.00055300, 7.27107950, 0.99724312, 0.99854488, 0.49306003],
     3467                             [- 6.27198236, - 0.00090186, 0.00055284, 7.27108051, 0.99724392, 0.99854531, 0.49306014],
     3468                             [- 6.27198311, - 0.00090159, 0.00055267, 7.27108151, 0.99724472, 0.99854573, 0.49306027],
     3469                             [- 6.27198385, - 0.00090133, 0.00055251, 7.27108252, 0.99724553, 0.99854616, 0.49306036],
     3470                             [- 6.27198460, - 0.00090107, 0.00055235, 7.27108353, 0.99724633, 0.99854658, 0.49306043],
     3471                             [- 6.27198534, - 0.00090081, 0.00055219, 7.27108453, 0.99724713, 0.99854700, 0.49306047],
     3472                             [- 6.27198608, - 0.00090054, 0.00055203, 7.27108554, 0.99724793, 0.99854742, 0.49306066],
     3473                             [- 6.27198682, - 0.00090028, 0.00055187, 7.27108654, 0.99724873, 0.99854785, 0.49306072],
     3474                             [- 6.27198756, - 0.00090002, 0.00055171, 7.27108754, 0.99724953, 0.99854827, 0.49306079],
     3475                             [- 6.27198830, - 0.00089976, 0.00055155, 7.27108855, 0.99725033, 0.99854869, 0.49306090],
     3476                             [- 6.27198904, - 0.00089950, 0.00055139, 7.27108955, 0.99725113, 0.99854911, 0.49306100],
     3477                             [- 6.27198978, - 0.00089924, 0.00055123, 7.27109054, 0.99725193, 0.99854954, 0.49306107],
     3478                             [- 6.27199052, - 0.00089898, 0.00055107, 7.27109154, 0.99725273, 0.99854996, 0.49306122],
     3479                             [- 6.27199126, - 0.00089871, 0.00055091, 7.27109254, 0.99725353, 0.99855038, 0.49306129],
     3480                             [- 6.27199199, - 0.00089845, 0.00055075, 7.27109354, 0.99725433, 0.99855080, 0.49306135],
     3481                             [- 6.27199273, - 0.00089819, 0.00055059, 7.27109453, 0.99725512, 0.99855122, 0.49306146],
     3482                             [- 6.27199346, - 0.00089793, 0.00055043, 7.27109553, 0.99725592, 0.99855164, 0.49306163],
     3483                             [- 6.27199419, - 0.00089767, 0.00055027, 7.27109652, 0.99725672, 0.99855206, 0.49306163],
     3484                             [- 6.27199493, - 0.00089741, 0.00055011, 7.27109751, 0.99725751, 0.99855248, 0.49306178],
     3485                             [- 6.27199566, - 0.00089715, 0.00054995, 7.27109851, 0.99725831, 0.99855290, 0.49306188],
     3486                             [- 6.27199639, - 0.00089689, 0.00054979, 7.27109950, 0.99725910, 0.99855332, 0.49306196],
     3487                             [- 6.27199712, - 0.00089663, 0.00054963, 7.27110049, 0.99725990, 0.99855374, 0.49306206],
     3488                             [- 6.27199785, - 0.00089637, 0.00054947, 7.27110147, 0.99726069, 0.99855416, 0.49306218],
     3489                             [- 6.27199857, - 0.00089611, 0.00054931, 7.27110246, 0.99726149, 0.99855458, 0.49306227],
     3490                             [- 6.27199930, - 0.00089585, 0.00054915, 7.27110345, 0.99726228, 0.99855499, 0.49306238],
     3491                             [- 6.27200003, - 0.00089559, 0.00054899, 7.27110443, 0.99726307, 0.99855541, 0.49306244],
     3492                             [- 6.27200076, - 0.00089534, 0.00054883, 7.27110542, 0.99726386, 0.99855583, 0.49306254],
     3493                             [- 6.27200148, - 0.00089508, 0.00054868, 7.27110640, 0.99726465, 0.99855625, 0.49306260],
     3494                             [- 6.27200220, - 0.00089482, 0.00054852, 7.27110739, 0.99726545, 0.99855667, 0.49306270],
     3495                             [- 6.27200293, - 0.00089456, 0.00054836, 7.27110837, 0.99726624, 0.99855708, 0.49306284],
     3496                             [- 6.27200365, - 0.00089430, 0.00054820, 7.27110935, 0.99726703, 0.99855750, 0.49306289],
     3497                             [- 6.27200437, - 0.00089404, 0.00054804, 7.27111033, 0.99726782, 0.99855792, 0.49306299],
     3498                             [- 6.27200509, - 0.00089378, 0.00054788, 7.27111131, 0.99726861, 0.99855833, 0.49306315],
     3499                             [- 6.27200581, - 0.00089353, 0.00054772, 7.27111229, 0.99726940, 0.99855875, 0.49306325],
     3500                             [- 6.27200653, - 0.00089327, 0.00054757, 7.27111326, 0.99727018, 0.99855916, 0.49306334],
     3501                             [- 6.27200725, - 0.00089301, 0.00054741, 7.27111424, 0.99727097, 0.99855958, 0.49306342],
     3502                             [- 6.27200797, - 0.00089275, 0.00054725, 7.27111522, 0.99727176, 0.99856000, 0.49306348],
     3503                             [- 6.27200869, - 0.00089250, 0.00054709, 7.27111619, 0.99727255, 0.99856041, 0.49306360],
     3504                             [- 6.27200940, - 0.00089224, 0.00054693, 7.27111717, 0.99727333, 0.99856083, 0.49306368],
     3505                             [- 6.27201012, - 0.00089198, 0.00054678, 7.27111814, 0.99727412, 0.99856124, 0.49306382],
     3506                             [- 6.27201083, - 0.00089172, 0.00054662, 7.27111911, 0.99727491, 0.99856166, 0.49306389],
     3507                             [- 6.27201155, - 0.00089147, 0.00054646, 7.27112008, 0.99727569, 0.99856207, 0.49306395],
     3508                             [- 6.27201226, - 0.00089121, 0.00054630, 7.27112105, 0.99727648, 0.99856248, 0.49306405],
     3509                             [- 6.27201297, - 0.00089095, 0.00054615, 7.27112202, 0.99727726, 0.99856290, 0.49306415],
     3510                             [- 6.27201369, - 0.00089070, 0.00054599, 7.27112299, 0.99727804, 0.99856331, 0.49306425],
     3511                             [- 6.27201440, - 0.00089044, 0.00054583, 7.27112395, 0.99727883, 0.99856373, 0.49306438],
     3512                             [- 6.27201511, - 0.00089019, 0.00054568, 7.27112492, 0.99727961, 0.99856414, 0.49306445],
     3513                             [- 6.27201582, - 0.00088993, 0.00054552, 7.27112589, 0.99728039, 0.99856455, 0.49306454],
     3514                             [- 6.27201653, - 0.00088967, 0.00054536, 7.27112685, 0.99728118, 0.99856496, 0.49306460],
     3515                             [- 6.27201723, - 0.00088942, 0.00054520, 7.27112782, 0.99728196, 0.99856538, 0.49306473],
     3516                             [- 6.27201794, - 0.00088916, 0.00054505, 7.27112878, 0.99728274, 0.99856579, 0.49306481],
     3517                             [- 6.27201865, - 0.00088891, 0.00054489, 7.27112974, 0.99728352, 0.99856620, 0.49306490],
     3518                             [- 6.27201935, - 0.00088865, 0.00054473, 7.27113070, 0.99728430, 0.99856661, 0.49306499],
     3519                             [- 6.27202006, - 0.00088840, 0.00054458, 7.27113166, 0.99728508, 0.99856702, 0.49306507],
     3520                             [- 6.27202076, - 0.00088814, 0.00054442, 7.27113262, 0.99728586, 0.99856744, 0.49306519],
     3521                             [- 6.27202147, - 0.00088789, 0.00054427, 7.27113358, 0.99728664, 0.99856785, 0.49306522],
     3522                             [- 6.27202217, - 0.00088763, 0.00054411, 7.27113454, 0.99728742, 0.99856826, 0.49306541],
     3523                             [- 6.27202287, - 0.00088738, 0.00054395, 7.27113549, 0.99728820, 0.99856867, 0.49306548],
     3524                             [- 6.27202357, - 0.00088713, 0.00054380, 7.27113645, 0.99728897, 0.99856908, 0.49306558],
     3525                             [- 6.27202427, - 0.00088687, 0.00054364, 7.27113740, 0.99728975, 0.99856949, 0.49306563],
     3526                             [- 6.27202497, - 0.00088662, 0.00054349, 7.27113836, 0.99729053, 0.99856990, 0.49306575],
     3527                             [- 6.27202567, - 0.00088636, 0.00054333, 7.27113931, 0.99729130, 0.99857031, 0.49306582],
     3528                             [- 6.27202637, - 0.00088611, 0.00054317, 7.27114026, 0.99729208, 0.99857072, 0.49306593],
     3529                             [- 6.27202707, - 0.00088586, 0.00054302, 7.27114121, 0.99729285, 0.99857113, 0.49306602],
     3530                             [- 6.27202777, - 0.00088560, 0.00054286, 7.27114216, 0.99729363, 0.99857153, 0.49306615],
     3531                             [- 6.27202846, - 0.00088535, 0.00054271, 7.27114311, 0.99729440, 0.99857194, 0.49306620],
     3532                             [- 6.27202916, - 0.00088510, 0.00054255, 7.27114406, 0.99729518, 0.99857235, 0.49306631],
     3533                             [- 6.27202985, - 0.00088484, 0.00054240, 7.27114501, 0.99729595, 0.99857276, 0.49306638],
     3534                             [- 6.27203055, - 0.00088459, 0.00054224, 7.27114596, 0.99729673, 0.99857317, 0.49306650],
     3535                             [- 6.27203124, - 0.00088434, 0.00054209, 7.27114690, 0.99729750, 0.99857358, 0.49306661],
     3536                             [- 6.27203193, - 0.00088409, 0.00054193, 7.27114785, 0.99729827, 0.99857398, 0.49306664],
     3537                             [- 6.27203262, - 0.00088383, 0.00054178, 7.27114879, 0.99729904, 0.99857439, 0.49306674],
     3538                             [- 6.27203332, - 0.00088358, 0.00054162, 7.27114973, 0.99729981, 0.99857480, 0.49306687],
     3539                             [- 6.27203401, - 0.00088333, 0.00054147, 7.27115068, 0.99730059, 0.99857520, 0.49306699],
     3540                             [- 6.27203470, - 0.00088308, 0.00054131, 7.27115162, 0.99730136, 0.99857561, 0.49306701],
     3541                             [- 6.27203539, - 0.00088282, 0.00054116, 7.27115256, 0.99730213, 0.99857602, 0.49306713],
     3542                             [- 6.27203607, - 0.00088257, 0.00054100, 7.27115350, 0.99730290, 0.99857642, 0.49306721],
     3543                             [- 6.27203676, - 0.00088232, 0.00054085, 7.27115444, 0.99730366, 0.99857683, 0.49306728],
     3544                             [- 6.27203745, - 0.00088207, 0.00054069, 7.27115538, 0.99730443, 0.99857724, 0.49306742],
     3545                             [- 6.27203813, - 0.00088182, 0.00054054, 7.27115632, 0.99730520, 0.99857764, 0.49306753],
     3546                             [- 6.27203882, - 0.00088157, 0.00054039, 7.27115725, 0.99730597, 0.99857805, 0.49306761],
     3547                             [- 6.27203950, - 0.00088132, 0.00054023, 7.27115819, 0.99730674, 0.99857845, 0.49306769],
     3548                             [- 6.27204019, - 0.00088107, 0.00054008, 7.27115912, 0.99730750, 0.99857886, 0.49306776],
     3549                             [- 6.27204087, - 0.00088082, 0.00053992, 7.27116006, 0.99730827, 0.99857926, 0.49306785],
     3550                             [- 6.27204156, - 0.00088056, 0.00053977, 7.27116099, 0.99730904, 0.99857966, 0.49306801],
     3551                             [- 6.27204224, - 0.00088031, 0.00053962, 7.27116192, 0.99730980, 0.99858007, 0.49306813],
     3552                             [- 6.27204292, - 0.00088006, 0.00053946, 7.27116286, 0.99731057, 0.99858047, 0.49306816],
     3553                             [- 6.27204360, - 0.00087981, 0.00053931, 7.27116379, 0.99731133, 0.99858088, 0.49306827],
     3554                             [- 6.27204428, - 0.00087956, 0.00053916, 7.27116472, 0.99731210, 0.99858128, 0.49306833],
     3555                             [- 6.27204496, - 0.00087931, 0.00053900, 7.27116565, 0.99731286, 0.99858168, 0.49306842],
     3556                             [- 6.27204564, - 0.00087906, 0.00053885, 7.27116657, 0.99731363, 0.99858209, 0.49306852],
     3557                             [- 6.27204632, - 0.00087881, 0.00053870, 7.27116750, 0.99731439, 0.99858249, 0.49306865],
     3558                             [- 6.27204699, - 0.00087857, 0.00053854, 7.27116843, 0.99731515, 0.99858289, 0.49306872],
     3559                             [- 6.27204767, - 0.00087832, 0.00053839, 7.27116935, 0.99731591, 0.99858329, 0.49306875],
     3560                             [- 6.27204835, - 0.00087807, 0.00053824, 7.27117028, 0.99731668, 0.99858369, 0.49306889],
     3561                             [- 6.27204902, - 0.00087782, 0.00053809, 7.27117120, 0.99731744, 0.99858410, 0.49306899],
     3562                             [- 6.27204970, - 0.00087757, 0.00053793, 7.27117213, 0.99731820, 0.99858450, 0.49306909],
     3563                             [- 6.27205037, - 0.00087732, 0.00053778, 7.27117305, 0.99731896, 0.99858490, 0.49306915],
     3564                             [- 6.27205104, - 0.00087707, 0.00053763, 7.27117397, 0.99731972, 0.99858530, 0.49306931],
     3565                             [- 6.27205172, - 0.00087682, 0.00053748, 7.27117489, 0.99732048, 0.99858570, 0.49306931],
     3566                             [- 6.27205239, - 0.00087658, 0.00053732, 7.27117581, 0.99732124, 0.99858610, 0.49306947],
     3567                             [- 6.27205306, - 0.00087633, 0.00053717, 7.27117673, 0.99732200, 0.99858650, 0.49306949],
     3568                             [- 6.27205373, - 0.00087608, 0.00053702, 7.27117765, 0.99732276, 0.99858690, 0.49306961],
     3569                             [- 6.27205440, - 0.00087583, 0.00053687, 7.27117857, 0.99732351, 0.99858730, 0.49306974],
     3570                             [- 6.27205507, - 0.00087558, 0.00053671, 7.27117949, 0.99732427, 0.99858770, 0.49306982],
     3571                             [- 6.27205574, - 0.00087534, 0.00053656, 7.27118040, 0.99732503, 0.99858810, 0.49306986],
     3572                             [- 6.27205641, - 0.00087509, 0.00053641, 7.27118132, 0.99732579, 0.99858850, 0.49306997],
     3573                             [- 6.27205707, - 0.00087484, 0.00053626, 7.27118223, 0.99732654, 0.99858890, 0.49307002],
     3574                             [- 6.27205774, - 0.00087459, 0.00053611, 7.27118315, 0.99732730, 0.99858930, 0.49307020],
     3575                             [- 6.27205841, - 0.00087435, 0.00053596, 7.27118406, 0.99732805, 0.99858970, 0.49307021],
     3576                             [- 6.27205907, - 0.00087410, 0.00053580, 7.27118497, 0.99732881, 0.99859010, 0.49307035],
     3577                             [- 6.27205974, - 0.00087385, 0.00053565, 7.27118588, 0.99732956, 0.99859049, 0.49307047],
     3578                             [- 6.27206040, - 0.00087361, 0.00053550, 7.27118679, 0.99733032, 0.99859089, 0.49307051],
     3579                             [- 6.27206106, - 0.00087336, 0.00053535, 7.27118770, 0.99733107, 0.99859129, 0.49307062],
     3580                             [- 6.27206173, - 0.00087311, 0.00053520, 7.27118861, 0.99733182, 0.99859169, 0.49307069],
     3581                             [- 6.27206239, - 0.00087287, 0.00053505, 7.27118952, 0.99733258, 0.99859208, 0.49307080],
     3582                             [- 6.27206305, - 0.00087262, 0.00053490, 7.27119043, 0.99733333, 0.99859248, 0.49307089],
     3583                             [- 6.27206371, - 0.00087238, 0.00053475, 7.27119134, 0.99733408, 0.99859288, 0.49307096],
     3584                             [- 6.27206437, - 0.00087213, 0.00053460, 7.27119224, 0.99733483, 0.99859327, 0.49307103],
     3585                             [- 6.27206503, - 0.00087188, 0.00053445, 7.27119315, 0.99733558, 0.99859367, 0.49307121],
     3586                             [- 6.27206569, - 0.00087164, 0.00053429, 7.27119405, 0.99733633, 0.99859407, 0.49307121],
     3587                             [- 6.27206635, - 0.00087139, 0.00053414, 7.27119496, 0.99733709, 0.99859446, 0.49307131],
     3588                             [- 6.27206701, - 0.00087115, 0.00053399, 7.27119586, 0.99733783, 0.99859486, 0.49307143],
     3589                             [- 6.27206767, - 0.00087090, 0.00053384, 7.27119676, 0.99733858, 0.99859525, 0.49307152],
     3590                             [- 6.27206832, - 0.00087066, 0.00053369, 7.27119766, 0.99733933, 0.99859565, 0.49307163],
     3591                             [- 6.27206898, - 0.00087041, 0.00053354, 7.27119856, 0.99734008, 0.99859604, 0.49307170],
     3592                             [- 6.27206963, - 0.00087017, 0.00053339, 7.27119946, 0.99734083, 0.99859644, 0.49307178],
     3593                             [- 6.27207029, - 0.00086992, 0.00053324, 7.27120036, 0.99734158, 0.99859683, 0.49307182],
     3594                             [- 6.27207094, - 0.00086968, 0.00053309, 7.27120126, 0.99734233, 0.99859723, 0.49307196],
     3595                             [- 6.27207160, - 0.00086944, 0.00053294, 7.27120216, 0.99734307, 0.99859762, 0.49307197],
     3596                             [- 6.27207225, - 0.00086919, 0.00053279, 7.27120306, 0.99734382, 0.99859802, 0.49307220],
     3597                             [- 6.27207290, - 0.00086895, 0.00053264, 7.27120395, 0.99734457, 0.99859841, 0.49307226],
     3598                             [- 6.27207355, - 0.00086870, 0.00053249, 7.27120485, 0.99734531, 0.99859880, 0.49307233],
     3599                             [- 6.27207420, - 0.00086846, 0.00053234, 7.27120574, 0.99734606, 0.99859920, 0.49307241],
     3600                             [- 6.27207485, - 0.00086822, 0.00053219, 7.27120664, 0.99734680, 0.99859959, 0.49307252],
     3601                             [- 6.27207550, - 0.00086797, 0.00053205, 7.27120753, 0.99734755, 0.99859998, 0.49307258],
     3602                             [- 6.27207615, - 0.00086773, 0.00053190, 7.27120842, 0.99734829, 0.99860037, 0.49307271],
     3603                             [- 6.27207680, - 0.00086749, 0.00053175, 7.27120931, 0.99734903, 0.99860077, 0.49307274],
     3604                             [- 6.27207745, - 0.00086724, 0.00053160, 7.27121021, 0.99734978, 0.99860116, 0.49307287],
     3605                             [- 6.27207810, - 0.00086700, 0.00053145, 7.27121110, 0.99735052, 0.99860155, 0.49307293],
     3606                             [- 6.27207874, - 0.00086676, 0.00053130, 7.27121199, 0.99735126, 0.99860194, 0.49307303],
     3607                             [- 6.27207939, - 0.00086652, 0.00053115, 7.27121287, 0.99735200, 0.99860233, 0.49307313],
     3608                             [- 6.27208004, - 0.00086627, 0.00053100, 7.27121376, 0.99735275, 0.99860273, 0.49307325],
     3609                             [- 6.27208068, - 0.00086603, 0.00053085, 7.27121465, 0.99735349, 0.99860312, 0.49307329],
     3610                             [- 6.27208132, - 0.00086579, 0.00053070, 7.27121554, 0.99735423, 0.99860351, 0.49307333],
     3611                             [- 6.27208197, - 0.00086555, 0.00053056, 7.27121642, 0.99735497, 0.99860390, 0.49307349],
     3612                             [- 6.27208261, - 0.00086530, 0.00053041, 7.27121731, 0.99735571, 0.99860429, 0.49307355],
     3613                             [- 6.27208325, - 0.00086506, 0.00053026, 7.27121819, 0.99735645, 0.99860468, 0.49307366],
     3614                             [- 6.27208390, - 0.00086482, 0.00053011, 7.27121907, 0.99735719, 0.99860507, 0.49307376],
     3615                             [- 6.27208454, - 0.00086458, 0.00052996, 7.27121996, 0.99735792, 0.99860546, 0.49307384],
     3616                             [- 6.27208518, - 0.00086434, 0.00052981, 7.27122084, 0.99735866, 0.99860585, 0.49307389],
     3617                             [- 6.27208582, - 0.00086410, 0.00052967, 7.27122172, 0.99735940, 0.99860624, 0.49307398],
     3618                             [- 6.27208646, - 0.00086386, 0.00052952, 7.27122260, 0.99736014, 0.99860663, 0.49307410],
     3619                             [- 6.27208710, - 0.00086361, 0.00052937, 7.27122348, 0.99736088, 0.99860701, 0.49307418],
     3620                             [- 6.27208774, - 0.00086337, 0.00052922, 7.27122436, 0.99736161, 0.99860740, 0.49307431],
     3621                             [- 6.27208837, - 0.00086313, 0.00052908, 7.27122524, 0.99736235, 0.99860779, 0.49307430],
     3622                             [- 6.27208901, - 0.00086289, 0.00052893, 7.27122612, 0.99736308, 0.99860818, 0.49307450],
     3623                             [- 6.27208965, - 0.00086265, 0.00052878, 7.27122700, 0.99736382, 0.99860857, 0.49307452],
     3624                             [- 6.27209028, - 0.00086241, 0.00052863, 7.27122787, 0.99736455, 0.99860896, 0.49307461],
     3625                             [- 6.27209092, - 0.00086217, 0.00052849, 7.27122875, 0.99736529, 0.99860934, 0.49307473],
     3626                             [- 6.27209155, - 0.00086193, 0.00052834, 7.27122962, 0.99736602, 0.99860973, 0.49307476],
     3627                             [- 6.27209219, - 0.00086169, 0.00052819, 7.27123050, 0.99736676, 0.99861012, 0.49307493],
     3628                             [- 6.27209282, - 0.00086145, 0.00052804, 7.27123137, 0.99736749, 0.99861050, 0.49307491],
     3629                             [- 6.27209346, - 0.00086121, 0.00052790, 7.27123224, 0.99736822, 0.99861089, 0.49307506],
     3630                             [- 6.27209409, - 0.00086097, 0.00052775, 7.27123312, 0.99736896, 0.99861128, 0.49307515],
     3631                             [- 6.27209472, - 0.00086073, 0.00052760, 7.27123399, 0.99736969, 0.99861166, 0.49307527],
     3632                             [- 6.27209535, - 0.00086049, 0.00052746, 7.27123486, 0.99737042, 0.99861205, 0.49307528],
     3633                             [- 6.27209598, - 0.00086025, 0.00052731, 7.27123573, 0.99737115, 0.99861244, 0.49307544],
     3634                             [- 6.27209661, - 0.00086002, 0.00052716, 7.27123660, 0.99737188, 0.99861282, 0.49307551],
     3635                             [- 6.27209724, - 0.00085978, 0.00052702, 7.27123747, 0.99737261, 0.99861321, 0.49307555],
     3636                             [- 6.27209787, - 0.00085954, 0.00052687, 7.27123833, 0.99737334, 0.99861359, 0.49307566],
     3637                             [- 6.27209850, - 0.00085930, 0.00052672, 7.27123920, 0.99737407, 0.99861398, 0.49307570],
     3638                             [- 6.27209913, - 0.00085906, 0.00052658, 7.27124007, 0.99737480, 0.99861436, 0.49307581],
     3639                             [- 6.27209976, - 0.00085882, 0.00052643, 7.27124094, 0.99737553, 0.99861475, 0.49307599],
     3640                             [- 6.27210038, - 0.00085858, 0.00052628, 7.27124180, 0.99737626, 0.99861513, 0.49307598],
     3641                             [- 6.27210101, - 0.00085835, 0.00052614, 7.27124266, 0.99737699, 0.99861551, 0.49307614],
     3642                             [- 6.27210164, - 0.00085811, 0.00052599, 7.27124353, 0.99737771, 0.99861590, 0.49307614],
     3643                             [- 6.27210226, - 0.00085787, 0.00052585, 7.27124439, 0.99737844, 0.99861628, 0.49307625],
     3644                             [- 6.27210289, - 0.00085763, 0.00052570, 7.27124525, 0.99737917, 0.99861667, 0.49307637],
     3645                             [- 6.27210351, - 0.00085740, 0.00052555, 7.27124612, 0.99737989, 0.99861705, 0.49307645],
     3646                             [- 6.27210414, - 0.00085716, 0.00052541, 7.27124698, 0.99738062, 0.99861743, 0.49307653],
     3647                             [- 6.27210476, - 0.00085692, 0.00052526, 7.27124784, 0.99738135, 0.99861782, 0.49307663],
     3648                             [- 6.27210538, - 0.00085668, 0.00052512, 7.27124870, 0.99738207, 0.99861820, 0.49307669],
     3649                             [- 6.27210600, - 0.00085645, 0.00052497, 7.27124956, 0.99738280, 0.99861858, 0.49307677],
     3650                             [- 6.27210663, - 0.00085621, 0.00052483, 7.27125042, 0.99738352, 0.99861896, 0.49307688],
     3651                             [- 6.27210725, - 0.00085597, 0.00052468, 7.27125127, 0.99738424, 0.99861934, 0.49307699],
     3652                             [- 6.27210787, - 0.00085574, 0.00052454, 7.27125213, 0.99738497, 0.99861973, 0.49307706],
     3653                             [- 6.27210849, - 0.00085550, 0.00052439, 7.27125299, 0.99738569, 0.99862011, 0.49307704],
     3654                             [- 6.27210911, - 0.00085526, 0.00052425, 7.27125384, 0.99738641, 0.99862049, 0.49307723],
     3655                             [- 6.27210973, - 0.00085503, 0.00052410, 7.27125470, 0.99738714, 0.99862087, 0.49307731],
     3656                             [- 6.27211034, - 0.00085479, 0.00052396, 7.27125555, 0.99738786, 0.99862125, 0.49307742],
     3657                             [- 6.27211096, - 0.00085456, 0.00052381, 7.27125641, 0.99738858, 0.99862163, 0.49307753],
     3658                             [- 6.27211158, - 0.00085432, 0.00052367, 7.27125726, 0.99738930, 0.99862201, 0.49307753],
     3659                             [- 6.27211220, - 0.00085408, 0.00052352, 7.27125811, 0.99739002, 0.99862239, 0.49307764],
     3660                             [- 6.27211281, - 0.00085385, 0.00052338, 7.27125896, 0.99739074, 0.99862277, 0.49307770],
     3661                             [- 6.27211343, - 0.00085361, 0.00052323, 7.27125981, 0.99739146, 0.99862315, 0.49307780],
     3662                             [- 6.27211404, - 0.00085338, 0.00052309, 7.27126067, 0.99739218, 0.99862353, 0.49307792],
     3663                             [- 6.27211466, - 0.00085314, 0.00052295, 7.27126152, 0.99739290, 0.99862391, 0.49307794],
     3664                             [- 6.27211527, - 0.00085291, 0.00052280, 7.27126236, 0.99739362, 0.99862429, 0.49307803],
     3665                             [- 6.27211589, - 0.00085267, 0.00052266, 7.27126321, 0.99739434, 0.99862467, 0.49307820],
     3666                             [- 6.27211650, - 0.00085244, 0.00052251, 7.27126406, 0.99739506, 0.99862505, 0.49307827],
     3667                             [- 6.27211711, - 0.00085220, 0.00052237, 7.27126491, 0.99739577, 0.99862543, 0.49307830],
     3668                             [- 6.27211772, - 0.00085197, 0.00052222, 7.27126575, 0.99739649, 0.99862581, 0.49307839],
     3669                             [- 6.27211833, - 0.00085173, 0.00052208, 7.27126660, 0.99739721, 0.99862618, 0.49307851],
     3670                             [- 6.27211895, - 0.00085150, 0.00052194, 7.27126745, 0.99739792, 0.99862656, 0.49307861],
     3671                             [- 6.27211956, - 0.00085127, 0.00052179, 7.27126829, 0.99739864, 0.99862694, 0.49307868],
     3672                             [- 6.27212017, - 0.00085103, 0.00052165, 7.27126913, 0.99739936, 0.99862732, 0.49307878],
     3673                             [- 6.27212078, - 0.00085080, 0.00052151, 7.27126998, 0.99740007, 0.99862770, 0.49307884],
     3674                             [- 6.27212138, - 0.00085056, 0.00052136, 7.27127082, 0.99740079, 0.99862807, 0.49307888],
     3675                             [- 6.27212199, - 0.00085033, 0.00052122, 7.27127166, 0.99740150, 0.99862845, 0.49307902],
     3676                             [- 6.27212260, - 0.00085010, 0.00052108, 7.27127250, 0.99740221, 0.99862883, 0.49307911],
     3677                             [- 6.27212321, - 0.00084986, 0.00052093, 7.27127334, 0.99740293, 0.99862920, 0.49307920],
     3678                             [- 6.27212381, - 0.00084963, 0.00052079, 7.27127418, 0.99740364, 0.99862958, 0.49307926],
     3679                             [- 6.27212442, - 0.00084940, 0.00052065, 7.27127502, 0.99740435, 0.99862996, 0.49307935],
     3680                             [- 6.27212503, - 0.00084916, 0.00052050, 7.27127586, 0.99740507, 0.99863033, 0.49307944],
     3681                             [- 6.27212563, - 0.00084893, 0.00052036, 7.27127670, 0.99740578, 0.99863071, 0.49307944],
     3682                             [- 6.27212624, - 0.00084870, 0.00052022, 7.27127754, 0.99740649, 0.99863108, 0.49307954],
     3683                             [- 6.27212684, - 0.00084847, 0.00052008, 7.27127837, 0.99740720, 0.99863146, 0.49307961],
     3684                             [- 6.27212744, - 0.00084823, 0.00051993, 7.27127921, 0.99740791, 0.99863183, 0.49307978],
     3685                             [- 6.27212805, - 0.00084800, 0.00051979, 7.27128005, 0.99740862, 0.99863221, 0.49307983],
     3686                             [- 6.27212865, - 0.00084777, 0.00051965, 7.27128088, 0.99740933, 0.99863258, 0.49307996],
     3687                             [- 6.27212925, - 0.00084754, 0.00051951, 7.27128172, 0.99741004, 0.99863296, 0.49308005],
     3688                             [- 6.27212986, - 0.00084730, 0.00051936, 7.27128255, 0.99741075, 0.99863333, 0.49308014],
     3689                             [- 6.27213046, - 0.00084707, 0.00051922, 7.27128338, 0.99741146, 0.99863371, 0.49308018],
     3690                             [- 6.27213106, - 0.00084684, 0.00051908, 7.27128422, 0.99741217, 0.99863408, 0.49308030],
     3691                             [- 6.27213166, - 0.00084661, 0.00051894, 7.27128505, 0.99741288, 0.99863445, 0.49308040],
     3692                             [- 6.27213226, - 0.00084638, 0.00051879, 7.27128588, 0.99741359, 0.99863483, 0.49308040],
     3693                             [- 6.27213286, - 0.00084615, 0.00051865, 7.27128671, 0.99741429, 0.99863520, 0.49308050],
     3694                             [- 6.27213345, - 0.00084592, 0.00051851, 7.27128754, 0.99741500, 0.99863557, 0.49308061],
     3695                             [- 6.27213405, - 0.00084568, 0.00051837, 7.27128837, 0.99741571, 0.99863595, 0.49308064],
     3696                             [- 6.27213465, - 0.00084545, 0.00051823, 7.27128920, 0.99741641, 0.99863632, 0.49308083],
     3697                             [- 6.27213525, - 0.00084522, 0.00051809, 7.27129003, 0.99741712, 0.99863669, 0.49308089],
     3698                             [- 6.27213585, - 0.00084499, 0.00051794, 7.27129085, 0.99741783, 0.99863706, 0.49308103],
     3699                             [- 6.27213644, - 0.00084476, 0.00051780, 7.27129168, 0.99741853, 0.99863744, 0.49308104],
     3700                             [- 6.27213704, - 0.00084453, 0.00051766, 7.27129251, 0.99741924, 0.99863781, 0.49308114],
     3701                             [- 6.27213763, - 0.00084430, 0.00051752, 7.27129333, 0.99741994, 0.99863818, 0.49308122],
     3702                             [- 6.27213823, - 0.00084407, 0.00051738, 7.27129416, 0.99742064, 0.99863855, 0.49308125],
     3703                             [- 6.27213882, - 0.00084384, 0.00051724, 7.27129498, 0.99742135, 0.99863892, 0.49308128],
     3704                             [- 6.27213942, - 0.00084361, 0.00051710, 7.27129581, 0.99742205, 0.99863929, 0.49308149],
     3705                             [- 6.27214001, - 0.00084338, 0.00051696, 7.27129663, 0.99742275, 0.99863966, 0.49308153],
     3706                             [- 6.27214060, - 0.00084315, 0.00051681, 7.27129745, 0.99742346, 0.99864003, 0.49308160],
     3707                             [- 6.27214120, - 0.00084292, 0.00051667, 7.27129827, 0.99742416, 0.99864041, 0.49308174],
     3708                             [- 6.27214179, - 0.00084269, 0.00051653, 7.27129910, 0.99742486, 0.99864078, 0.49308171],
     3709                             [- 6.27214238, - 0.00084246, 0.00051639, 7.27129992, 0.99742556, 0.99864115, 0.49308189],
     3710                             [- 6.27214297, - 0.00084223, 0.00051625, 7.27130074, 0.99742626, 0.99864152, 0.49308189],
     3711                             [- 6.27214356, - 0.00084200, 0.00051611, 7.27130156, 0.99742696, 0.99864188, 0.49308208],
     3712                             [- 6.27214415, - 0.00084178, 0.00051597, 7.27130237, 0.99742766, 0.99864225, 0.49308218],
     3713                             [- 6.27214474, - 0.00084155, 0.00051583, 7.27130319, 0.99742836, 0.99864262, 0.49308217],
     3714                             [- 6.27214533, - 0.00084132, 0.00051569, 7.27130401, 0.99742906, 0.99864299, 0.49308225],
     3715                             [- 6.27214592, - 0.00084109, 0.00051555, 7.27130483, 0.99742976, 0.99864336, 0.49308239],
     3716                             [- 6.27214651, - 0.00084086, 0.00051541, 7.27130564, 0.99743046, 0.99864373, 0.49308247],
     3717                             [- 6.27214709, - 0.00084063, 0.00051527, 7.27130646, 0.99743116, 0.99864410, 0.49308255],
     3718                             [- 6.27214768, - 0.00084040, 0.00051513, 7.27130728, 0.99743186, 0.99864447, 0.49308258],
     3719                             [- 6.27214827, - 0.00084018, 0.00051499, 7.27130809, 0.99743255, 0.99864483, 0.49308266],
     3720                             [- 6.27214885, - 0.00083995, 0.00051485, 7.27130891, 0.99743325, 0.99864520, 0.49308274],
     3721                             [- 6.27214944, - 0.00083972, 0.00051471, 7.27130972, 0.99743395, 0.99864557, 0.49308290],
     3722                             [- 6.27215002, - 0.00083949, 0.00051457, 7.27131053, 0.99743464, 0.99864594, 0.49308290],
     3723                             [- 6.27215061, - 0.00083926, 0.00051443, 7.27131134, 0.99743534, 0.99864631, 0.49308300],
     3724                             [- 6.27215119, - 0.00083904, 0.00051429, 7.27131216, 0.99743604, 0.99864667, 0.49308315],
     3725                             [- 6.27215178, - 0.00083881, 0.00051415, 7.27131297, 0.99743673, 0.99864704, 0.49308314],
     3726                             [- 6.27215236, - 0.00083858, 0.00051401, 7.27131378, 0.99743743, 0.99864741, 0.49308324],
     3727                             [- 6.27215294, - 0.00083836, 0.00051387, 7.27131459, 0.99743812, 0.99864777, 0.49308338],
     3728                             [- 6.27215353, - 0.00083813, 0.00051373, 7.27131540, 0.99743881, 0.99864814, 0.49308338],
     3729                             [- 6.27215411, - 0.00083790, 0.00051359, 7.27131621, 0.99743951, 0.99864850, 0.49308350],
     3730                             [- 6.27215469, - 0.00083768, 0.00051345, 7.27131702, 0.99744020, 0.99864887, 0.49308357],
     3731                             [- 6.27215527, - 0.00083745, 0.00051332, 7.27131782, 0.99744089, 0.99864924, 0.49308374],
     3732                             [- 6.27215585, - 0.00083722, 0.00051318, 7.27131863, 0.99744159, 0.99864960, 0.49308379],
     3733                             [- 6.27215643, - 0.00083700, 0.00051304, 7.27131944, 0.99744228, 0.99864997, 0.49308384],
     3734                             [- 6.27215701, - 0.00083677, 0.00051290, 7.27132024, 0.99744297, 0.99865033, 0.49308393],
     3735                             [- 6.27215759, - 0.00083654, 0.00051276, 7.27132105, 0.99744366, 0.99865070, 0.49308399],
     3736                             [- 6.27215817, - 0.00083632, 0.00051262, 7.27132185, 0.99744435, 0.99865106, 0.49308412],
     3737                             [- 6.27215875, - 0.00083609, 0.00051248, 7.27132266, 0.99744504, 0.99865143, 0.49308421],
     3738                             [- 6.27215933, - 0.00083587, 0.00051234, 7.27132346, 0.99744574, 0.99865179, 0.49308425],
     3739                             [- 6.27215990, - 0.00083564, 0.00051221, 7.27132426, 0.99744643, 0.99865215, 0.49308434],
     3740                             [- 6.27216048, - 0.00083541, 0.00051207, 7.27132507, 0.99744711, 0.99865252, 0.49308442],
     3741                             [- 6.27216106, - 0.00083519, 0.00051193, 7.27132587, 0.99744780, 0.99865288, 0.49308450],
     3742                             [- 6.27216164, - 0.00083496, 0.00051179, 7.27132667, 0.99744849, 0.99865324, 0.49308461],
     3743                             [- 6.27216221, - 0.00083474, 0.00051165, 7.27132747, 0.99744918, 0.99865361, 0.49308467],
     3744                             [- 6.27216279, - 0.00083451, 0.00051151, 7.27132827, 0.99744987, 0.99865397, 0.49308473],
     3745                             [- 6.27216336, - 0.00083429, 0.00051138, 7.27132907, 0.99745056, 0.99865433, 0.49308483],
     3746                             [- 6.27216394, - 0.00083406, 0.00051124, 7.27132987, 0.99745124, 0.99865470, 0.49308489],
     3747                             [- 6.27216451, - 0.00083384, 0.00051110, 7.27133067, 0.99745193, 0.99865506, 0.49308501],
     3748                             [- 6.27216508, - 0.00083361, 0.00051096, 7.27133147, 0.99745262, 0.99865542, 0.49308509],
     3749                             [- 6.27216566, - 0.00083339, 0.00051083, 7.27133227, 0.99745330, 0.99865578, 0.49308519],
     3750                             [- 6.27216623, - 0.00083317, 0.00051069, 7.27133306, 0.99745399, 0.99865615, 0.49308520],
     3751                             [- 6.27216680, - 0.00083294, 0.00051055, 7.27133386, 0.99745468, 0.99865651, 0.49308532],
     3752                             [- 6.27216737, - 0.00083272, 0.00051041, 7.27133465, 0.99745536, 0.99865687, 0.49308537],
     3753                             [- 6.27216794, - 0.00083249, 0.00051028, 7.27133545, 0.99745605, 0.99865723, 0.49308548],
     3754                             [- 6.27216851, - 0.00083227, 0.00051014, 7.27133624, 0.99745673, 0.99865759, 0.49308555],
     3755                             [- 6.27216909, - 0.00083205, 0.00051000, 7.27133704, 0.99745741, 0.99865795, 0.49308568],
     3756                             [- 6.27216966, - 0.00083182, 0.00050986, 7.27133783, 0.99745810, 0.99865831, 0.49308575],
     3757                             [- 6.27217022, - 0.00083160, 0.00050973, 7.27133863, 0.99745878, 0.99865867, 0.49308580],
     3758                             [- 6.27217079, - 0.00083138, 0.00050959, 7.27133942, 0.99745946, 0.99865903, 0.49308589],
     3759                             [- 6.27217136, - 0.00083115, 0.00050945, 7.27134021, 0.99746015, 0.99865939, 0.49308593],
     3760                             [- 6.27217193, - 0.00083093, 0.00050932, 7.27134100, 0.99746083, 0.99865975, 0.49308603],
     3761                             [- 6.27217250, - 0.00083071, 0.00050918, 7.27134179, 0.99746151, 0.99866011, 0.49308603],
     3762                             [- 6.27217307, - 0.00083048, 0.00050904, 7.27134258, 0.99746219, 0.99866047, 0.49308626],
     3763                             [- 6.27217363, - 0.00083026, 0.00050891, 7.27134337, 0.99746287, 0.99866083, 0.49308628],
     3764                             [- 6.27217420, - 0.00083004, 0.00050877, 7.27134416, 0.99746355, 0.99866119, 0.49308633],
     3765                             [- 6.27217477, - 0.00082982, 0.00050863, 7.27134495, 0.99746424, 0.99866155, 0.49308648],
     3766                             [- 6.27217533, - 0.00082959, 0.00050850, 7.27134574, 0.99746492, 0.99866191, 0.49308650],
     3767                             [- 6.27217590, - 0.00082937, 0.00050836, 7.27134653, 0.99746559, 0.99866227, 0.49308659],
     3768                             [- 6.27217646, - 0.00082915, 0.00050822, 7.27134731, 0.99746627, 0.99866263, 0.49308664],
     3769                             [- 6.27217703, - 0.00082893, 0.00050809, 7.27134810, 0.99746695, 0.99866299, 0.49308674],
     3770                             [- 6.27217759, - 0.00082871, 0.00050795, 7.27134888, 0.99746763, 0.99866334, 0.49308688],
     3771                             [- 6.27217815, - 0.00082848, 0.00050782, 7.27134967, 0.99746831, 0.99866370, 0.49308691],
     3772                             [- 6.27217872, - 0.00082826, 0.00050768, 7.27135045, 0.99746899, 0.99866406, 0.49308700],
     3773                             [- 6.27217928, - 0.00082804, 0.00050754, 7.27135124, 0.99746967, 0.99866442, 0.49308706],
     3774                             [- 6.27217984, - 0.00082782, 0.00050741, 7.27135202, 0.99747034, 0.99866477, 0.49308711],
     3775                             [- 6.27218040, - 0.00082760, 0.00050727, 7.27135281, 0.99747102, 0.99866513, 0.49308731],
     3776                             [- 6.27218097, - 0.00082738, 0.00050714, 7.27135359, 0.99747170, 0.99866549, 0.49308733],
     3777                             [- 6.27218153, - 0.00082716, 0.00050700, 7.27135437, 0.99747237, 0.99866584, 0.49308746],
     3778                             [- 6.27218209, - 0.00082693, 0.00050686, 7.27135515, 0.99747305, 0.99866620, 0.49308753],
     3779                             [- 6.27218265, - 0.00082671, 0.00050673, 7.27135593, 0.99747372, 0.99866656, 0.49308759],
     3780                             [- 6.27218321, - 0.00082649, 0.00050659, 7.27135671, 0.99747440, 0.99866691, 0.49308757],
     3781                             [- 6.27218377, - 0.00082627, 0.00050646, 7.27135749, 0.99747507, 0.99866727, 0.49308770],
     3782                             [- 6.27218433, - 0.00082605, 0.00050632, 7.27135827, 0.99747575, 0.99866763, 0.49308772],
     3783                             [- 6.27218488, - 0.00082583, 0.00050619, 7.27135905, 0.99747642, 0.99866798, 0.49308784],
     3784                             [- 6.27218544, - 0.00082561, 0.00050605, 7.27135983, 0.99747709, 0.99866834, 0.49308794],
     3785                             [- 6.27218600, - 0.00082539, 0.00050592, 7.27136061, 0.99747777, 0.99866869, 0.49308810],
     3786                             [- 6.27218656, - 0.00082517, 0.00050578, 7.27136139, 0.99747844, 0.99866905, 0.49308812],
     3787                             [- 6.27218711, - 0.00082495, 0.00050565, 7.27136216, 0.99747911, 0.99866940, 0.49308821],
     3788                             [- 6.27218767, - 0.00082473, 0.00050551, 7.27136294, 0.99747978, 0.99866976, 0.49308825],
     3789                             [- 6.27218823, - 0.00082451, 0.00050538, 7.27136371, 0.99748046, 0.99867011, 0.49308833],
     3790                             [- 6.27218878, - 0.00082429, 0.00050524, 7.27136449, 0.99748113, 0.99867046, 0.49308847],
     3791                             [- 6.27218934, - 0.00082407, 0.00050511, 7.27136526, 0.99748180, 0.99867082, 0.49308860],
     3792                             [- 6.27218989, - 0.00082385, 0.00050497, 7.27136604, 0.99748247, 0.99867117, 0.49308859],
     3793                             [- 6.27219045, - 0.00082363, 0.00050484, 7.27136681, 0.99748314, 0.99867153, 0.49308869],
     3794                             [- 6.27219100, - 0.00082341, 0.00050471, 7.27136759, 0.99748381, 0.99867188, 0.49308873],
     3795                             [- 6.27219155, - 0.00082320, 0.00050457, 7.27136836, 0.99748448, 0.99867223, 0.49308878],
     3796                             [- 6.27219211, - 0.00082298, 0.00050444, 7.27136913, 0.99748515, 0.99867259, 0.49308888],
     3797                             [- 6.27219266, - 0.00082276, 0.00050430, 7.27136990, 0.99748582, 0.99867294, 0.49308897],
     3798                             [- 6.27219321, - 0.00082254, 0.00050417, 7.27137067, 0.99748649, 0.99867329, 0.49308901],
     3799                             [- 6.27219376, - 0.00082232, 0.00050403, 7.27137144, 0.99748715, 0.99867364, 0.49308913],
     3800                             [- 6.27219432, - 0.00082210, 0.00050390, 7.27137221, 0.99748782, 0.99867400, 0.49308916],
     3801                             [- 6.27219487, - 0.00082188, 0.00050377, 7.27137298, 0.99748849, 0.99867435, 0.49308935],
     3802                             [- 6.27219542, - 0.00082167, 0.00050363, 7.27137375, 0.99748916, 0.99867470, 0.49308938],
     3803                             [- 6.27219597, - 0.00082145, 0.00050350, 7.27137452, 0.99748982, 0.99867505, 0.49308944],
     3804                             [- 6.27219652, - 0.00082123, 0.00050337, 7.27137529, 0.99749049, 0.99867540, 0.49308959],
     3805                             [- 6.27219707, - 0.00082101, 0.00050323, 7.27137606, 0.99749116, 0.99867576, 0.49308961],
     3806                             [- 6.27219762, - 0.00082080, 0.00050310, 7.27137682, 0.99749182, 0.99867611, 0.49308966],
     3807                             [- 6.27219817, - 0.00082058, 0.00050296, 7.27137759, 0.99749249, 0.99867646, 0.49308979],
     3808                             [- 6.27219872, - 0.00082036, 0.00050283, 7.27137836, 0.99749315, 0.99867681, 0.49308985],
     3809                             [- 6.27219926, - 0.00082014, 0.00050270, 7.27137912, 0.99749382, 0.99867716, 0.49308989],
     3810                             [- 6.27219981, - 0.00081993, 0.00050256, 7.27137989, 0.99749448, 0.99867751, 0.49309002],
     3811                             [- 6.27220036, - 0.00081971, 0.00050243, 7.27138065, 0.99749514, 0.99867786, 0.49309006],
     3812                             [- 6.27220091, - 0.00081949, 0.00050230, 7.27138141, 0.99749581, 0.99867821, 0.49309016],
     3813                             [- 6.27220145, - 0.00081927, 0.00050216, 7.27138218, 0.99749647, 0.99867856, 0.49309022],
     3814                             [- 6.27220200, - 0.00081906, 0.00050203, 7.27138294, 0.99749713, 0.99867891, 0.49309028],
     3815                             [- 6.27220254, - 0.00081884, 0.00050190, 7.27138370, 0.99749780, 0.99867926, 0.49309037],
     3816                             [- 6.27220309, - 0.00081862, 0.00050177, 7.27138446, 0.99749846, 0.99867961, 0.49309053],
     3817                             [- 6.27220363, - 0.00081841, 0.00050163, 7.27138523, 0.99749912, 0.99867996, 0.49309055],
     3818                             [- 6.27220418, - 0.00081819, 0.00050150, 7.27138599, 0.99749978, 0.99868031, 0.49309069],
     3819                             [- 6.27220472, - 0.00081798, 0.00050137, 7.27138675, 0.99750044, 0.99868066, 0.49309070],
     3820                             [- 6.27220527, - 0.00081776, 0.00050124, 7.27138751, 0.99750110, 0.99868100, 0.49309083],
     3821                             [- 6.27220581, - 0.00081754, 0.00050110, 7.27138827, 0.99750176, 0.99868135, 0.49309090],
     3822                             [- 6.27220635, - 0.00081733, 0.00050097, 7.27138902, 0.99750242, 0.99868170, 0.49309098],
     3823                             [- 6.27220690, - 0.00081711, 0.00050084, 7.27138978, 0.99750308, 0.99868205, 0.49309101],
     3824                             [- 6.27220744, - 0.00081690, 0.00050071, 7.27139054, 0.99750374, 0.99868240, 0.49309113],
     3825                             [- 6.27220798, - 0.00081668, 0.00050057, 7.27139130, 0.99750440, 0.99868275, 0.49309116],
     3826                             [- 6.27220852, - 0.00081647, 0.00050044, 7.27139205, 0.99750506, 0.99868309, 0.49309123],
     3827                             [- 6.27220906, - 0.00081625, 0.00050031, 7.27139281, 0.99750572, 0.99868344, 0.49309142],
     3828                             [- 6.27220960, - 0.00081604, 0.00050018, 7.27139357, 0.99750638, 0.99868379, 0.49309142],
     3829                             [- 6.27221014, - 0.00081582, 0.00050005, 7.27139432, 0.99750703, 0.99868413, 0.49309146],
     3830                             [- 6.27221068, - 0.00081561, 0.00049991, 7.27139508, 0.99750769, 0.99868448, 0.49309158],
     3831                             [- 6.27221122, - 0.00081539, 0.00049978, 7.27139583, 0.99750835, 0.99868483, 0.49309166],
     3832                             [- 6.27221176, - 0.00081518, 0.00049965, 7.27139659, 0.99750901, 0.99868517, 0.49309171],
     3833                             [- 6.27221230, - 0.00081496, 0.00049952, 7.27139734, 0.99750966, 0.99868552, 0.49309183],
     3834                             [- 6.27221284, - 0.00081475, 0.00049939, 7.27139809, 0.99751032, 0.99868587, 0.49309186],
     3835                             [- 6.27221338, - 0.00081453, 0.00049926, 7.27139884, 0.99751097, 0.99868621, 0.49309196],
     3836                             [- 6.27221391, - 0.00081432, 0.00049912, 7.27139960, 0.99751163, 0.99868656, 0.49309197],
     3837                             [- 6.27221445, - 0.00081410, 0.00049899, 7.27140035, 0.99751228, 0.99868690, 0.49309212],
     3838                             [- 6.27221499, - 0.00081389, 0.00049886, 7.27140110, 0.99751294, 0.99868725, 0.49309226],
     3839                             [- 6.27221552, - 0.00081368, 0.00049873, 7.27140185, 0.99751359, 0.99868759, 0.49309233],
     3840                             [- 6.27221606, - 0.00081346, 0.00049860, 7.27140260, 0.99751425, 0.99868794, 0.49309240],
     3841                             [- 6.27221660, - 0.00081325, 0.00049847, 7.27140335, 0.99751490, 0.99868828, 0.49309241],
     3842                             [- 6.27221713, - 0.00081303, 0.00049834, 7.27140410, 0.99751555, 0.99868863, 0.49309250],
     3843                             [- 6.27221767, - 0.00081282, 0.00049821, 7.27140485, 0.99751621, 0.99868897, 0.49309252],
     3844                             [- 6.27221820, - 0.00081261, 0.00049807, 7.27140559, 0.99751686, 0.99868932, 0.49309262],
     3845                             [- 6.27221874, - 0.00081239, 0.00049794, 7.27140634, 0.99751751, 0.99868966, 0.49309274],
     3846                             [- 6.27221927, - 0.00081218, 0.00049781, 7.27140709, 0.99751816, 0.99869001, 0.49309277],
     3847                             [- 6.27221980, - 0.00081197, 0.00049768, 7.27140784, 0.99751881, 0.99869035, 0.49309287],
     3848                             [- 6.27222034, - 0.00081176, 0.00049755, 7.27140858, 0.99751946, 0.99869069, 0.49309295],
     3849                             [- 6.27222087, - 0.00081154, 0.00049742, 7.27140933, 0.99752012, 0.99869104, 0.49309305],
     3850                             [- 6.27222140, - 0.00081133, 0.00049729, 7.27141007, 0.99752077, 0.99869138, 0.49309311],
     3851                             [- 6.27222193, - 0.00081112, 0.00049716, 7.27141082, 0.99752142, 0.99869172, 0.49309317],
     3852                             [- 6.27222247, - 0.00081090, 0.00049703, 7.27141156, 0.99752207, 0.99869207, 0.49309328],
     3853                             [- 6.27222300, - 0.00081069, 0.00049690, 7.27141230, 0.99752271, 0.99869241, 0.49309332],
     3854                             [- 6.27222353, - 0.00081048, 0.00049677, 7.27141305, 0.99752336, 0.99869275, 0.49309344],
     3855                             [- 6.27222406, - 0.00081027, 0.00049664, 7.27141379, 0.99752401, 0.99869309, 0.49309341],
     3856                             [- 6.27222459, - 0.00081006, 0.00049651, 7.27141453, 0.99752466, 0.99869344, 0.49309354],
     3857                             [- 6.27222512, - 0.00080984, 0.00049638, 7.27141527, 0.99752531, 0.99869378, 0.49309361],
     3858                             [- 6.27222565, - 0.00080963, 0.00049625, 7.27141602, 0.99752596, 0.99869412, 0.49309375],
     3859                             [- 6.27222618, - 0.00080942, 0.00049612, 7.27141676, 0.99752660, 0.99869446, 0.49309380],
     3860                             [- 6.27222671, - 0.00080921, 0.00049599, 7.27141750, 0.99752725, 0.99869480, 0.49309382],
     3861                             [- 6.27222723, - 0.00080900, 0.00049586, 7.27141824, 0.99752790, 0.99869514, 0.49309395],
     3862                             [- 6.27222776, - 0.00080879, 0.00049573, 7.27141898, 0.99752854, 0.99869548, 0.49309403],
     3863                             [- 6.27222829, - 0.00080857, 0.00049560, 7.27141972, 0.99752919, 0.99869582, 0.49309409],
     3864                             [- 6.27222882, - 0.00080836, 0.00049547, 7.27142045, 0.99752984, 0.99869617, 0.49309410],
     3865                             [- 6.27222934, - 0.00080815, 0.00049534, 7.27142119, 0.99753048, 0.99869651, 0.49309425],
     3866                             [- 6.27222987, - 0.00080794, 0.00049521, 7.27142193, 0.99753113, 0.99869685, 0.49309434],
     3867                             [- 6.27223040, - 0.00080773, 0.00049508, 7.27142267, 0.99753177, 0.99869719, 0.49309443],
     3868                             [- 6.27223092, - 0.00080752, 0.00049495, 7.27142340, 0.99753241, 0.99869753, 0.49309447],
     3869                             [- 6.27223145, - 0.00080731, 0.00049482, 7.27142414, 0.99753306, 0.99869787, 0.49309457],
     3870                             [- 6.27223197, - 0.00080710, 0.00049469, 7.27142488, 0.99753370, 0.99869821, 0.49309459],
     3871                             [- 6.27223250, - 0.00080689, 0.00049457, 7.27142561, 0.99753435, 0.99869855, 0.49309463],
     3872                             [- 6.27223302, - 0.00080668, 0.00049444, 7.27142635, 0.99753499, 0.99869888, 0.49309473],
     3873                             [- 6.27223355, - 0.00080647, 0.00049431, 7.27142708, 0.99753563, 0.99869922, 0.49309486],
     3874                             [- 6.27223407, - 0.00080626, 0.00049418, 7.27142781, 0.99753627, 0.99869956, 0.49309496],
     3875                             [- 6.27223460, - 0.00080605, 0.00049405, 7.27142855, 0.99753692, 0.99869990, 0.49309501],
     3876                             [- 6.27223512, - 0.00080584, 0.00049392, 7.27142928, 0.99753756, 0.99870024, 0.49309506],
     3877                             [- 6.27223564, - 0.00080563, 0.00049379, 7.27143001, 0.99753820, 0.99870058, 0.49309510],
     3878                             [- 6.27223616, - 0.00080542, 0.00049366, 7.27143074, 0.99753884, 0.99870092, 0.49309524],
     3879                             [- 6.27223669, - 0.00080521, 0.00049354, 7.27143148, 0.99753948, 0.99870125, 0.49309538],
     3880                             [- 6.27223721, - 0.00080500, 0.00049341, 7.27143221, 0.99754012, 0.99870159, 0.49309541],
     3881                             [- 6.27223773, - 0.00080479, 0.00049328, 7.27143294, 0.99754076, 0.99870193, 0.49309547],
     3882                             [- 6.27223825, - 0.00080458, 0.00049315, 7.27143367, 0.99754140, 0.99870227, 0.49309552],
     3883                             [- 6.27223877, - 0.00080437, 0.00049302, 7.27143440, 0.99754204, 0.99870260, 0.49309562],
     3884                             [- 6.27223929, - 0.00080416, 0.00049289, 7.27143513, 0.99754268, 0.99870294, 0.49309564],
     3885                             [- 6.27223981, - 0.00080395, 0.00049277, 7.27143586, 0.99754332, 0.99870328, 0.49309575],
     3886                             [- 6.27224033, - 0.00080375, 0.00049264, 7.27143658, 0.99754395, 0.99870362, 0.49309585],
     3887                             [- 6.27224085, - 0.00080354, 0.00049251, 7.27143731, 0.99754459, 0.99870395, 0.49309591],
     3888                             [- 6.27224137, - 0.00080333, 0.00049238, 7.27143804, 0.99754523, 0.99870429, 0.49309595],
     3889                             [- 6.27224189, - 0.00080312, 0.00049225, 7.27143877, 0.99754587, 0.99870463, 0.49309610],
     3890                             [- 6.27224241, - 0.00080291, 0.00049213, 7.27143949, 0.99754650, 0.99870496, 0.49309609],
     3891                             [- 6.27224292, - 0.00080270, 0.00049200, 7.27144022, 0.99754714, 0.99870530, 0.49309625],
     3892                             [- 6.27224344, - 0.00080250, 0.00049187, 7.27144094, 0.99754778, 0.99870563, 0.49309625],
     3893                             [- 6.27224396, - 0.00080229, 0.00049174, 7.27144167, 0.99754841, 0.99870597, 0.49309632],
     3894                             [- 6.27224447, - 0.00080208, 0.00049162, 7.27144239, 0.99754905, 0.99870630, 0.49309639],
     3895                             [- 6.27224499, - 0.00080187, 0.00049149, 7.27144312, 0.99754968, 0.99870664, 0.49309648],
     3896                             [- 6.27224551, - 0.00080166, 0.00049136, 7.27144384, 0.99755032, 0.99870697, 0.49309655],
     3897                             [- 6.27224602, - 0.00080146, 0.00049123, 7.27144457, 0.99755095, 0.99870731, 0.49309667],
     3898                             [- 6.27224654, - 0.00080125, 0.00049111, 7.27144529, 0.99755159, 0.99870764, 0.49309666],
     3899                             [- 6.27224705, - 0.00080104, 0.00049098, 7.27144601, 0.99755222, 0.99870798, 0.49309679],
     3900                             [- 6.27224757, - 0.00080084, 0.00049085, 7.27144673, 0.99755286, 0.99870831, 0.49309687],
     3901                             [- 6.27224808, - 0.00080063, 0.00049072, 7.27144746, 0.99755349, 0.99870865, 0.49309695],
     3902                             [- 6.27224860, - 0.00080042, 0.00049060, 7.27144818, 0.99755412, 0.99870898, 0.49309704],
     3903                             [- 6.27224911, - 0.00080021, 0.00049047, 7.27144890, 0.99755476, 0.99870932, 0.49309706],
     3904                             [- 6.27224962, - 0.00080001, 0.00049034, 7.27144962, 0.99755539, 0.99870965, 0.49309713],
     3905                             [- 6.27225014, - 0.00079980, 0.00049022, 7.27145034, 0.99755602, 0.99870998, 0.49309722],
     3906                             [- 6.27225065, - 0.00079959, 0.00049009, 7.27145106, 0.99755665, 0.99871032, 0.49309728],
     3907                             [- 6.27225116, - 0.00079939, 0.00048996, 7.27145178, 0.99755728, 0.99871065, 0.49309738],
     3908                             [- 6.27225168, - 0.00079918, 0.00048984, 7.27145249, 0.99755791, 0.99871098, 0.49309747],
     3909                             [- 6.27225219, - 0.00079897, 0.00048971, 7.27145321, 0.99755854, 0.99871131, 0.49309753],
     3910                             [- 6.27225270, - 0.00079877, 0.00048958, 7.27145393, 0.99755918, 0.99871165, 0.49309771],
     3911                             [- 6.27225321, - 0.00079856, 0.00048946, 7.27145465, 0.99755981, 0.99871198, 0.49309765],
     3912                             [- 6.27225372, - 0.00079836, 0.00048933, 7.27145536, 0.99756044, 0.99871231, 0.49309782],
     3913                             [- 6.27225423, - 0.00079815, 0.00048921, 7.27145608, 0.99756106, 0.99871264, 0.49309784],
     3914                             [- 6.27225474, - 0.00079795, 0.00048908, 7.27145680, 0.99756169, 0.99871298, 0.49309793],
     3915                             [- 6.27225525, - 0.00079774, 0.00048895, 7.27145751, 0.99756232, 0.99871331, 0.49309799],
     3916                             [- 6.27225576, - 0.00079753, 0.00048883, 7.27145823, 0.99756295, 0.99871364, 0.49309812],
     3917                             [- 6.27225627, - 0.00079733, 0.00048870, 7.27145894, 0.99756358, 0.99871397, 0.49309805],
     3918                             [- 6.27225678, - 0.00079712, 0.00048857, 7.27145966, 0.99756421, 0.99871430, 0.49309821],
     3919                             [- 6.27225729, - 0.00079692, 0.00048845, 7.27146037, 0.99756483, 0.99871463, 0.49309831],
     3920                             [- 6.27225780, - 0.00079671, 0.00048832, 7.27146108, 0.99756546, 0.99871496, 0.49309836],
     3921                             [- 6.27225830, - 0.00079651, 0.00048820, 7.27146180, 0.99756609, 0.99871529, 0.49309842],
     3922                             [- 6.27225881, - 0.00079630, 0.00048807, 7.27146251, 0.99756671, 0.99871563, 0.49309856],
     3923                             [- 6.27225932, - 0.00079610, 0.00048795, 7.27146322, 0.99756734, 0.99871596, 0.49309861],
     3924                             [- 6.27225983, - 0.00079589, 0.00048782, 7.27146393, 0.99756797, 0.99871629, 0.49309861],
     3925                             [- 6.27226033, - 0.00079569, 0.00048769, 7.27146464, 0.99756859, 0.99871662, 0.49309873],
     3926                             [- 6.27226084, - 0.00079548, 0.00048757, 7.27146535, 0.99756922, 0.99871695, 0.49309877],
     3927                             [- 6.27226134, - 0.00079528, 0.00048744, 7.27146606, 0.99756984, 0.99871728, 0.49309886],
     3928                             [- 6.27226185, - 0.00079508, 0.00048732, 7.27146677, 0.99757047, 0.99871761, 0.49309893],
     3929                             [- 6.27226235, - 0.00079487, 0.00048719, 7.27146748, 0.99757109, 0.99871793, 0.49309902],
     3930                             [- 6.27226286, - 0.00079467, 0.00048707, 7.27146819, 0.99757172, 0.99871826, 0.49309912],
     3931                             [- 6.27226336, - 0.00079446, 0.00048694, 7.27146890, 0.99757234, 0.99871859, 0.49309921],
     3932                             [- 6.27226387, - 0.00079426, 0.00048682, 7.27146961, 0.99757296, 0.99871892, 0.49309921],
     3933                             [- 6.27226437, - 0.00079406, 0.00048669, 7.27147032, 0.99757359, 0.99871925, 0.49309928],
     3934                             [- 6.27226488, - 0.00079385, 0.00048657, 7.27147102, 0.99757421, 0.99871958, 0.49309939],
     3935                             [- 6.27226538, - 0.00079365, 0.00048644, 7.27147173, 0.99757483, 0.99871991, 0.49309945],
     3936                             [- 6.27226588, - 0.00079345, 0.00048632, 7.27147244, 0.99757545, 0.99872024, 0.49309958],
     3937                             [- 6.27226639, - 0.00079324, 0.00048619, 7.27147314, 0.99757607, 0.99872056, 0.49309958],
     3938                             [- 6.27226689, - 0.00079304, 0.00048607, 7.27147385, 0.99757670, 0.99872089, 0.49309961],
     3939                             [- 6.27226739, - 0.00079284, 0.00048594, 7.27147455, 0.99757732, 0.99872122, 0.49309967],
     3940                             [- 6.27226789, - 0.00079263, 0.00048582, 7.27147526, 0.99757794, 0.99872155, 0.49309986],
     3941                             [- 6.27226839, - 0.00079243, 0.00048570, 7.27147596, 0.99757856, 0.99872187, 0.49309996],
     3942                             [- 6.27226889, - 0.00079223, 0.00048557, 7.27147667, 0.99757918, 0.99872220, 0.49309999],
     3943                             [- 6.27226939, - 0.00079202, 0.00048545, 7.27147737, 0.99757980, 0.99872253, 0.49310010],
     3944                             [- 6.27226990, - 0.00079182, 0.00048532, 7.27147807, 0.99758042, 0.99872286, 0.49310015],
     3945                             [- 6.27227040, - 0.00079162, 0.00048520, 7.27147878, 0.99758104, 0.99872318, 0.49310022],
     3946                             [- 6.27227090, - 0.00079142, 0.00048507, 7.27147948, 0.99758166, 0.99872351, 0.49310023],
     3947                             [- 6.27227139, - 0.00079121, 0.00048495, 7.27148018, 0.99758227, 0.99872384, 0.49310029],
     3948                             [- 6.27227189, - 0.00079101, 0.00048483, 7.27148088, 0.99758289, 0.99872416, 0.49310038],
     3949                             [- 6.27227239, - 0.00079081, 0.00048470, 7.27148158, 0.99758351, 0.99872449, 0.49310046],
     3950                             [- 6.27227289, - 0.00079061, 0.00048458, 7.27148228, 0.99758413, 0.99872481, 0.49310052],
     3951                             [- 6.27227339, - 0.00079041, 0.00048445, 7.27148298, 0.99758474, 0.99872514, 0.49310058],
     3952                             [- 6.27227389, - 0.00079020, 0.00048433, 7.27148368, 0.99758536, 0.99872546, 0.49310064],
     3953                             [- 6.27227439, - 0.00079000, 0.00048421, 7.27148438, 0.99758598, 0.99872579, 0.49310077],
     3954                             [- 6.27227488, - 0.00078980, 0.00048408, 7.27148508, 0.99758659, 0.99872612, 0.49310085],
     3955                             [- 6.27227538, - 0.00078960, 0.00048396, 7.27148578, 0.99758721, 0.99872644, 0.49310092],
     3956                             [- 6.27227588, - 0.00078940, 0.00048384, 7.27148648, 0.99758783, 0.99872677, 0.49310100],
     3957                             [- 6.27227637, - 0.00078920, 0.00048371, 7.27148717, 0.99758844, 0.99872709, 0.49310112],
     3958                             [- 6.27227687, - 0.00078900, 0.00048359, 7.27148787, 0.99758906, 0.99872741, 0.49310113],
     3959                             [- 6.27227736, - 0.00078880, 0.00048347, 7.27148857, 0.99758967, 0.99872774, 0.49310122],
     3960                             [- 6.27227786, - 0.00078859, 0.00048334, 7.27148927, 0.99759029, 0.99872806, 0.49310127],
     3961                             [- 6.27227836, - 0.00078839, 0.00048322, 7.27148996, 0.99759090, 0.99872839, 0.49310130],
     3962                             [- 6.27227885, - 0.00078819, 0.00048310, 7.27149066, 0.99759151, 0.99872871, 0.49310141],
     3963                             [- 6.27227934, - 0.00078799, 0.00048297, 7.27149135, 0.99759213, 0.99872903, 0.49310152],
     3964                             [- 6.27227984, - 0.00078779, 0.00048285, 7.27149205, 0.99759274, 0.99872936, 0.49310152],
     3965                             [- 6.27228033, - 0.00078759, 0.00048273, 7.27149274, 0.99759335, 0.99872968, 0.49310163],
     3966                             [- 6.27228083, - 0.00078739, 0.00048260, 7.27149344, 0.99759397, 0.99873001, 0.49310168],
     3967                             [- 6.27228132, - 0.00078719, 0.00048248, 7.27149413, 0.99759458, 0.99873033, 0.49310178],
     3968                             [- 6.27228181, - 0.00078699, 0.00048236, 7.27149482, 0.99759519, 0.99873065, 0.49310189],
     3969                             [- 6.27228231, - 0.00078679, 0.00048224, 7.27149552, 0.99759580, 0.99873097, 0.49310191],
     3970                             [- 6.27228280, - 0.00078659, 0.00048211, 7.27149621, 0.99759641, 0.99873130, 0.49310203],
     3971                             [- 6.27228329, - 0.00078639, 0.00048199, 7.27149690, 0.99759702, 0.99873162, 0.49310202],
     3972                             [- 6.27228378, - 0.00078619, 0.00048187, 7.27149759, 0.99759763, 0.99873194, 0.49310216],
     3973                             [- 6.27228427, - 0.00078599, 0.00048175, 7.27149828, 0.99759825, 0.99873226, 0.49310220],
     3974                             [- 6.27228476, - 0.00078579, 0.00048162, 7.27149897, 0.99759886, 0.99873259, 0.49310228],
     3975                             [- 6.27228526, - 0.00078559, 0.00048150, 7.27149966, 0.99759946, 0.99873291, 0.49310231],
     3976                             [- 6.27228575, - 0.00078539, 0.00048138, 7.27150035, 0.99760007, 0.99873323, 0.49310245],
     3977                             [- 6.27228624, - 0.00078519, 0.00048126, 7.27150104, 0.99760068, 0.99873355, 0.49310250],
     3978                             [- 6.27228673, - 0.00078500, 0.00048113, 7.27150173, 0.99760129, 0.99873387, 0.49310256],
     3979                             [- 6.27228722, - 0.00078480, 0.00048101, 7.27150242, 0.99760190, 0.99873419, 0.49310269],
     3980                             [- 6.27228771, - 0.00078460, 0.00048089, 7.27150311, 0.99760251, 0.99873451, 0.49310278],
     3981                             [- 6.27228819, - 0.00078440, 0.00048077, 7.27150380, 0.99760312, 0.99873483, 0.49310277],
     3982                             [- 6.27228868, - 0.00078420, 0.00048065, 7.27150448, 0.99760372, 0.99873515, 0.49310291],
     3983                             [- 6.27228917, - 0.00078400, 0.00048052, 7.27150517, 0.99760433, 0.99873548, 0.49310291],
     3984                             [- 6.27228966, - 0.00078380, 0.00048040, 7.27150586, 0.99760494, 0.99873580, 0.49310301],
     3985                             [- 6.27229015, - 0.00078360, 0.00048028, 7.27150654, 0.99760555, 0.99873612, 0.49310307],
     3986                             [- 6.27229064, - 0.00078341, 0.00048016, 7.27150723, 0.99760615, 0.99873644, 0.49310321],
     3987                             [- 6.27229112, - 0.00078321, 0.00048004, 7.27150792, 0.99760676, 0.99873676, 0.49310322],
     3988                             [- 6.27229161, - 0.00078301, 0.00047992, 7.27150860, 0.99760736, 0.99873707, 0.49310330],
     3989                             [- 6.27229210, - 0.00078281, 0.00047979, 7.27150929, 0.99760797, 0.99873739, 0.49310330],
     3990                             [- 6.27229258, - 0.00078261, 0.00047967, 7.27150997, 0.99760857, 0.99873771, 0.49310340],
     3991                             [- 6.27229307, - 0.00078242, 0.00047955, 7.27151065, 0.99760918, 0.99873803, 0.49310344],
     3992                             [- 6.27229356, - 0.00078222, 0.00047943, 7.27151134, 0.99760978, 0.99873835, 0.49310362],
     3993                             [- 6.27229404, - 0.00078202, 0.00047931, 7.27151202, 0.99761039, 0.99873867, 0.49310362],
     3994                             [- 6.27229453, - 0.00078182, 0.00047919, 7.27151270, 0.99761099, 0.99873899, 0.49310369],
     3995                             [- 6.27229501, - 0.00078163, 0.00047907, 7.27151339, 0.99761160, 0.99873931, 0.49310382],
     3996                             [- 6.27229550, - 0.00078143, 0.00047895, 7.27151407, 0.99761220, 0.99873963, 0.49310378],
     3997                             [- 6.27229598, - 0.00078123, 0.00047882, 7.27151475, 0.99761280, 0.99873994, 0.49310395],
     3998                             [- 6.27229646, - 0.00078103, 0.00047870, 7.27151543, 0.99761340, 0.99874026, 0.49310398],
     3999                             [- 6.27229695, - 0.00078084, 0.00047858, 7.27151611, 0.99761401, 0.99874058, 0.49310409],
     4000                             [- 6.27229743, - 0.00078064, 0.00047846, 7.27151679, 0.99761461, 0.99874090, 0.49310410],
     4001                             [- 6.27229791, - 0.00078044, 0.00047834, 7.27151747, 0.99761521, 0.99874122, 0.49310419],
     4002                             [- 6.27229840, - 0.00078025, 0.00047822, 7.27151815, 0.99761581, 0.99874153, 0.49310426],
     4003                             [- 6.27229888, - 0.00078005, 0.00047810, 7.27151883, 0.99761641, 0.99874185, 0.49310431],
     4004                             [- 6.27229936, - 0.00077985, 0.00047798, 7.27151951, 0.99761701, 0.99874217, 0.49310439],
     4005                             [- 6.27229984, - 0.00077966, 0.00047786, 7.27152019, 0.99761762, 0.99874248, 0.49310456],
     4006                             [- 6.27230033, - 0.00077946, 0.00047774, 7.27152087, 0.99761822, 0.99874280, 0.49310453],
     4007                             [- 6.27230081, - 0.00077926, 0.00047762, 7.27152154, 0.99761882, 0.99874312, 0.49310456],
     4008                             [- 6.27230129, - 0.00077907, 0.00047750, 7.27152222, 0.99761942, 0.99874343, 0.49310472],
     4009                             [- 6.27230177, - 0.00077887, 0.00047738, 7.27152290, 0.99762001, 0.99874375, 0.49310478],
     4010                             [- 6.27230225, - 0.00077868, 0.00047726, 7.27152357, 0.99762061, 0.99874407, 0.49310482],
     4011                             [- 6.27230273, - 0.00077848, 0.00047714, 7.27152425, 0.99762121, 0.99874438, 0.49310485],
     4012                             [- 6.27230321, - 0.00077828, 0.00047702, 7.27152493, 0.99762181, 0.99874470, 0.49310496],
     4013                             [- 6.27230369, - 0.00077809, 0.00047690, 7.27152560, 0.99762241, 0.99874501, 0.49310508],
     4014                             [- 6.27230417, - 0.00077789, 0.00047678, 7.27152628, 0.99762301, 0.99874533, 0.49310514],
     4015                             [- 6.27230465, - 0.00077770, 0.00047666, 7.27152695, 0.99762360, 0.99874564, 0.49310512],
     4016                             [- 6.27230513, - 0.00077750, 0.00047654, 7.27152763, 0.99762420, 0.99874596, 0.49310522],
     4017                             [- 6.27230561, - 0.00077731, 0.00047642, 7.27152830, 0.99762480, 0.99874627, 0.49310530],
     4018                             [- 6.27230609, - 0.00077711, 0.00047630, 7.27152897, 0.99762540, 0.99874659, 0.49310543],
     4019                             [- 6.27230656, - 0.00077692, 0.00047618, 7.27152965, 0.99762599, 0.99874690, 0.49310543],
     4020                             [- 6.27230704, - 0.00077672, 0.00047606, 7.27153032, 0.99762659, 0.99874722, 0.49310556],
     4021                             [- 6.27230752, - 0.00077653, 0.00047594, 7.27153099, 0.99762718, 0.99874753, 0.49310555],
     4022                             [- 6.27230800, - 0.00077633, 0.00047582, 7.27153166, 0.99762778, 0.99874785, 0.49310570],
     4023                             [- 6.27230847, - 0.00077614, 0.00047570, 7.27153233, 0.99762837, 0.99874816, 0.49310570],
     4024                             [- 6.27230895, - 0.00077594, 0.00047558, 7.27153301, 0.99762897, 0.99874848, 0.49310582],
     4025                             [- 6.27230943, - 0.00077575, 0.00047546, 7.27153368, 0.99762956, 0.99874879, 0.49310585],
     4026                             [- 6.27230990, - 0.00077556, 0.00047534, 7.27153435, 0.99763016, 0.99874910, 0.49310599],
     4027                             [- 6.27231038, - 0.00077536, 0.00047522, 7.27153502, 0.99763075, 0.99874942, 0.49310605],
     4028                             [- 6.27231085, - 0.00077517, 0.00047510, 7.27153569, 0.99763135, 0.99874973, 0.49310608],
     4029                             [- 6.27231133, - 0.00077497, 0.00047498, 7.27153636, 0.99763194, 0.99875004, 0.49310612],
     4030                             [- 6.27231180, - 0.00077478, 0.00047487, 7.27153702, 0.99763253, 0.99875036, 0.49310624],
     4031                             [- 6.27231228, - 0.00077458, 0.00047475, 7.27153769, 0.99763312, 0.99875067, 0.49310622],
     4032                             [- 6.27231275, - 0.00077439, 0.00047463, 7.27153836, 0.99763372, 0.99875098, 0.49310639],
     4033                             [- 6.27231323, - 0.00077420, 0.00047451, 7.27153903, 0.99763431, 0.99875129, 0.49310643],
     4034                             [- 6.27231370, - 0.00077400, 0.00047439, 7.27153970, 0.99763490, 0.99875161, 0.49310644],
     4035                             [- 6.27231417, - 0.00077381, 0.00047427, 7.27154036, 0.99763549, 0.99875192, 0.49310654],
     4036                             [- 6.27231465, - 0.00077362, 0.00047415, 7.27154103, 0.99763608, 0.99875223, 0.49310665],
     4037                             [- 6.27231512, - 0.00077342, 0.00047403, 7.27154170, 0.99763668, 0.99875254, 0.49310674],
     4038                             [- 6.27231559, - 0.00077323, 0.00047392, 7.27154236, 0.99763727, 0.99875285, 0.49310670],
     4039                             [- 6.27231607, - 0.00077304, 0.00047380, 7.27154303, 0.99763786, 0.99875317, 0.49310684],
     4040                             [- 6.27231654, - 0.00077284, 0.00047368, 7.27154369, 0.99763845, 0.99875348, 0.49310692],
     4041                             [- 6.27231701, - 0.00077265, 0.00047356, 7.27154436, 0.99763904, 0.99875379, 0.49310699],
     4042                             [- 6.27231748, - 0.00077246, 0.00047344, 7.27154502, 0.99763963, 0.99875410, 0.49310700],
     4043                             [- 6.27231795, - 0.00077227, 0.00047332, 7.27154569, 0.99764021, 0.99875441, 0.49310703],
     4044                             [- 6.27231842, - 0.00077207, 0.00047321, 7.27154635, 0.99764080, 0.99875472, 0.49310722],
     4045                             [- 6.27231889, - 0.00077188, 0.00047309, 7.27154701, 0.99764139, 0.99875503, 0.49310725],
     4046                             [- 6.27231936, - 0.00077169, 0.00047297, 7.27154768, 0.99764198, 0.99875534, 0.49310729],
     4047                             [- 6.27231984, - 0.00077150, 0.00047285, 7.27154834, 0.99764257, 0.99875565, 0.49310745],
     4048                             [- 6.27232031, - 0.00077130, 0.00047273, 7.27154900, 0.99764316, 0.99875596, 0.49310751],
     4049                             [- 6.27232077, - 0.00077111, 0.00047262, 7.27154966, 0.99764374, 0.99875627, 0.49310749],
     4050                             [- 6.27232124, - 0.00077092, 0.00047250, 7.27155032, 0.99764433, 0.99875658, 0.49310765],
     4051                             [- 6.27232171, - 0.00077073, 0.00047238, 7.27155099, 0.99764492, 0.99875689, 0.49310767],
     4052                             [- 6.27232218, - 0.00077054, 0.00047226, 7.27155165, 0.99764550, 0.99875720, 0.49310775],
     4053                             [- 6.27232265, - 0.00077034, 0.00047215, 7.27155231, 0.99764609, 0.99875751, 0.49310781],
     4054                             [- 6.27232312, - 0.00077015, 0.00047203, 7.27155297, 0.99764668, 0.99875782, 0.49310787],
     4055                             [- 6.27232359, - 0.00076996, 0.00047191, 7.27155363, 0.99764726, 0.99875813, 0.49310796],
     4056                             [- 6.27232406, - 0.00076977, 0.00047179, 7.27155429, 0.99764785, 0.99875844, 0.49310787],
     4057                             [- 6.27232452, - 0.00076958, 0.00047168, 7.27155494, 0.99764843, 0.99875875, 0.49310807],
     4058                             [- 6.27232499, - 0.00076939, 0.00047156, 7.27155560, 0.99764902, 0.99875906, 0.49310819],
     4059                             [- 6.27232546, - 0.00076920, 0.00047144, 7.27155626, 0.99764960, 0.99875936, 0.49310824],
     4060                             [- 6.27232592, - 0.00076900, 0.00047132, 7.27155692, 0.99765019, 0.99875967, 0.49310831],
     4061                             [- 6.27232639, - 0.00076881, 0.00047121, 7.27155758, 0.99765077, 0.99875998, 0.49310826],
     4062                             [- 6.27232686, - 0.00076862, 0.00047109, 7.27155823, 0.99765135, 0.99876029, 0.49310841],
     4063                             [- 6.27232732, - 0.00076843, 0.00047097, 7.27155889, 0.99765194, 0.99876060, 0.49310851],
     4064                             [- 6.27232779, - 0.00076824, 0.00047086, 7.27155955, 0.99765252, 0.99876090, 0.49310855],
     4065                             [- 6.27232825, - 0.00076805, 0.00047074, 7.27156020, 0.99765310, 0.99876121, 0.49310862],
     4066                             [- 6.27232872, - 0.00076786, 0.00047062, 7.27156086, 0.99765369, 0.99876152, 0.49310868],
     4067                             [- 6.27232918, - 0.00076767, 0.00047050, 7.27156151, 0.99765427, 0.99876183, 0.49310870],
     4068                             [- 6.27232965, - 0.00076748, 0.00047039, 7.27156217, 0.99765485, 0.99876213, 0.49310885],
     4069                             [- 6.27233011, - 0.00076729, 0.00047027, 7.27156282, 0.99765543, 0.99876244, 0.49310881],
     4070                             [- 6.27233058, - 0.00076710, 0.00047015, 7.27156348, 0.99765601, 0.99876275, 0.49310901],
     4071                             [- 6.27233104, - 0.00076691, 0.00047004, 7.27156413, 0.99765660, 0.99876305, 0.49310905],
     4072                             [- 6.27233150, - 0.00076672, 0.00046992, 7.27156478, 0.99765718, 0.99876336, 0.49310906],
     4073                             [- 6.27233197, - 0.00076653, 0.00046981, 7.27156544, 0.99765776, 0.99876367, 0.49310915],
     4074                             [- 6.27233243, - 0.00076634, 0.00046969, 7.27156609, 0.99765834, 0.99876397, 0.49310926],
     4075                             [- 6.27233289, - 0.00076615, 0.00046957, 7.27156674, 0.99765892, 0.99876428, 0.49310922],
     4076                             [- 6.27233336, - 0.00076596, 0.00046946, 7.27156740, 0.99765950, 0.99876458, 0.49310945],
     4077                             [- 6.27233382, - 0.00076577, 0.00046934, 7.27156805, 0.99766008, 0.99876489, 0.49310949],
     4078                             [- 6.27233428, - 0.00076558, 0.00046922, 7.27156870, 0.99766065, 0.99876520, 0.49310955],
     4079                             [- 6.27233474, - 0.00076539, 0.00046911, 7.27156935, 0.99766123, 0.99876550, 0.49310960],
     4080                             [- 6.27233520, - 0.00076520, 0.00046899, 7.27157000, 0.99766181, 0.99876581, 0.49310966],
     4081                             [- 6.27233566, - 0.00076501, 0.00046888, 7.27157065, 0.99766239, 0.99876611, 0.49310976],
     4082                             [- 6.27233612, - 0.00076482, 0.00046876, 7.27157130, 0.99766297, 0.99876642, 0.49310982],
     4083                             [- 6.27233658, - 0.00076464, 0.00046864, 7.27157195, 0.99766355, 0.99876672, 0.49310988],
     4084                             [- 6.27233705, - 0.00076445, 0.00046853, 7.27157260, 0.99766412, 0.99876703, 0.49310995],
     4085                             [- 6.27233751, - 0.00076426, 0.00046841, 7.27157325, 0.99766470, 0.99876733, 0.49310998],
     4086                             [- 6.27233797, - 0.00076407, 0.00046830, 7.27157390, 0.99766528, 0.99876763, 0.49311004],
     4087                             [- 6.27233843, - 0.00076388, 0.00046818, 7.27157454, 0.99766585, 0.99876794, 0.49311017],
     4088                             [- 6.27233888, - 0.00076369, 0.00046806, 7.27157519, 0.99766643, 0.99876824, 0.49311019],
     4089                             [- 6.27233934, - 0.00076350, 0.00046795, 7.27157584, 0.99766701, 0.99876855, 0.49311023],
     4090                             [- 6.27233980, - 0.00076332, 0.00046783, 7.27157649, 0.99766758, 0.99876885, 0.49311028],
     4091                             [- 6.27234026, - 0.00076313, 0.00046772, 7.27157713, 0.99766816, 0.99876915, 0.49311042],
     4092                             [- 6.27234072, - 0.00076294, 0.00046760, 7.27157778, 0.99766873, 0.99876946, 0.49311047],
     4093                             [- 6.27234118, - 0.00076275, 0.00046749, 7.27157843, 0.99766931, 0.99876976, 0.49311045],
     4094                             [- 6.27234163, - 0.00076256, 0.00046737, 7.27157907, 0.99766988, 0.99877006, 0.49311061],
     4095                             [- 6.27234209, - 0.00076238, 0.00046726, 7.27157972, 0.99767046, 0.99877037, 0.49311059],
     4096                             [- 6.27234255, - 0.00076219, 0.00046714, 7.27158036, 0.99767103, 0.99877067, 0.49311072],
     4097                             [- 6.27234301, - 0.00076200, 0.00046703, 7.27158101, 0.99767160, 0.99877097, 0.49311081],
     4098                             [- 6.27234346, - 0.00076181, 0.00046691, 7.27158165, 0.99767218, 0.99877128, 0.49311088],
     4099                             [- 6.27234392, - 0.00076163, 0.00046680, 7.27158229, 0.99767275, 0.99877158, 0.49311099],
     4100                             [- 6.27234438, - 0.00076144, 0.00046668, 7.27158294, 0.99767332, 0.99877188, 0.49311100],
     4101                             [- 6.27234483, - 0.00076125, 0.00046657, 7.27158358, 0.99767389, 0.99877218, 0.49311108],
     4102                             [- 6.27234529, - 0.00076106, 0.00046645, 7.27158422, 0.99767447, 0.99877248, 0.49311114],
     4103                             [- 6.27234574, - 0.00076088, 0.00046634, 7.27158487, 0.99767504, 0.99877279, 0.49311126],
     4104                             [- 6.27234620, - 0.00076069, 0.00046622, 7.27158551, 0.99767561, 0.99877309, 0.49311118],
     4105                             [- 6.27234665, - 0.00076050, 0.00046611, 7.27158615, 0.99767618, 0.99877339, 0.49311132],
     4106                             [- 6.27234711, - 0.00076032, 0.00046599, 7.27158679, 0.99767675, 0.99877369, 0.49311134],
     4107                             [- 6.27234756, - 0.00076013, 0.00046588, 7.27158743, 0.99767732, 0.99877399, 0.49311138],
     4108                             [- 6.27234802, - 0.00075994, 0.00046576, 7.27158807, 0.99767789, 0.99877429, 0.49311158],
     4109                             [- 6.27234847, - 0.00075976, 0.00046565, 7.27158872, 0.99767846, 0.99877459, 0.49311152],
     4110                             [- 6.27234892, - 0.00075957, 0.00046554, 7.27158935, 0.99767903, 0.99877489, 0.49311170],
     4111                             [- 6.27234938, - 0.00075938, 0.00046542, 7.27158999, 0.99767960, 0.99877519, 0.49311176],
     4112                             [- 6.27234983, - 0.00075920, 0.00046531, 7.27159063, 0.99768017, 0.99877550, 0.49311184],
     4113                             [- 6.27235028, - 0.00075901, 0.00046519, 7.27159127, 0.99768074, 0.99877580, 0.49311180],
     4114                             [- 6.27235074, - 0.00075882, 0.00046508, 7.27159191, 0.99768131, 0.99877610, 0.49311187],
     4115                             [- 6.27235119, - 0.00075864, 0.00046496, 7.27159255, 0.99768188, 0.99877640, 0.49311206],
     4116                             [- 6.27235164, - 0.00075845, 0.00046485, 7.27159319, 0.99768245, 0.99877670, 0.49311212],
     4117                             [- 6.27235209, - 0.00075827, 0.00046474, 7.27159383, 0.99768302, 0.99877700, 0.49311212],
     4118                             [- 6.27235255, - 0.00075808, 0.00046462, 7.27159446, 0.99768358, 0.99877730, 0.49311214],
     4119                             [- 6.27235300, - 0.00075790, 0.00046451, 7.27159510, 0.99768415, 0.99877759, 0.49311223],
     4120                             [- 6.27235345, - 0.00075771, 0.00046440, 7.27159574, 0.99768472, 0.99877789, 0.49311231],
     4121                             [- 6.27235390, - 0.00075753, 0.00046428, 7.27159637, 0.99768529, 0.99877819, 0.49311242],
     4122                             [- 6.27235435, - 0.00075734, 0.00046417, 7.27159701, 0.99768585, 0.99877849, 0.49311242],
     4123                             [- 6.27235480, - 0.00075715, 0.00046405, 7.27159765, 0.99768642, 0.99877879, 0.49311257],
     4124                             [- 6.27235525, - 0.00075697, 0.00046394, 7.27159828, 0.99768699, 0.99877909, 0.49311263],
     4125                             [- 6.27235570, - 0.00075678, 0.00046383, 7.27159892, 0.99768755, 0.99877939, 0.49311265],
     4126                             [- 6.27235615, - 0.00075660, 0.00046371, 7.27159955, 0.99768812, 0.99877969, 0.49311271],
     4127                             [- 6.27235660, - 0.00075641, 0.00046360, 7.27160019, 0.99768868, 0.99877999, 0.49311273],
     4128                             [- 6.27235705, - 0.00075623, 0.00046349, 7.27160082, 0.99768925, 0.99878028, 0.49311292],
     4129                             [- 6.27235750, - 0.00075605, 0.00046337, 7.27160145, 0.99768981, 0.99878058, 0.49311290],
     4130                             [- 6.27235795, - 0.00075586, 0.00046326, 7.27160209, 0.99769038, 0.99878088, 0.49311294],
     4131                             [- 6.27235840, - 0.00075568, 0.00046315, 7.27160272, 0.99769094, 0.99878118, 0.49311305],
     4132                             [- 6.27235884, - 0.00075549, 0.00046303, 7.27160335, 0.99769150, 0.99878147, 0.49311309],
     4133                             [- 6.27235929, - 0.00075531, 0.00046292, 7.27160398, 0.99769207, 0.99878177, 0.49311327],
     4134                             [- 6.27235974, - 0.00075512, 0.00046281, 7.27160462, 0.99769263, 0.99878207, 0.49311324],
     4135                             [- 6.27236019, - 0.00075494, 0.00046269, 7.27160525, 0.99769319, 0.99878237, 0.49311327],
     4136                             [- 6.27236063, - 0.00075475, 0.00046258, 7.27160588, 0.99769376, 0.99878266, 0.49311333],
     4137                             [- 6.27236108, - 0.00075457, 0.00046247, 7.27160651, 0.99769432, 0.99878296, 0.49311348],
     4138                             [- 6.27236153, - 0.00075439, 0.00046236, 7.27160714, 0.99769488, 0.99878326, 0.49311361],
     4139                             [- 6.27236197, - 0.00075420, 0.00046224, 7.27160777, 0.99769544, 0.99878355, 0.49311357],
     4140                             [- 6.27236242, - 0.00075402, 0.00046213, 7.27160840, 0.99769601, 0.99878385, 0.49311362],
     4141                             [- 6.27236287, - 0.00075384, 0.00046202, 7.27160903, 0.99769657, 0.99878415, 0.49311367],
     4142                             [- 6.27236331, - 0.00075365, 0.00046191, 7.27160966, 0.99769713, 0.99878444, 0.49311366],
     4143                             [- 6.27236376, - 0.00075347, 0.00046179, 7.27161029, 0.99769769, 0.99878474, 0.49311384],
     4144                             [- 6.27236420, - 0.00075329, 0.00046168, 7.27161092, 0.99769825, 0.99878503, 0.49311393],
     4145                             [- 6.27236465, - 0.00075310, 0.00046157, 7.27161155, 0.99769881, 0.99878533, 0.49311405],
     4146                             [- 6.27236509, - 0.00075292, 0.00046146, 7.27161217, 0.99769937, 0.99878563, 0.49311410],
     4147                             [- 6.27236554, - 0.00075274, 0.00046134, 7.27161280, 0.99769993, 0.99878592, 0.49311401],
     4148                             [- 6.27236598, - 0.00075255, 0.00046123, 7.27161343, 0.99770049, 0.99878622, 0.49311424],
     4149                             [- 6.27236643, - 0.00075237, 0.00046112, 7.27161406, 0.99770105, 0.99878651, 0.49311425],
     4150                             [- 6.27236687, - 0.00075219, 0.00046101, 7.27161468, 0.99770161, 0.99878681, 0.49311423],
     4151                             [- 6.27236731, - 0.00075200, 0.00046089, 7.27161531, 0.99770217, 0.99878710, 0.49311442],
     4152                             [- 6.27236776, - 0.00075182, 0.00046078, 7.27161594, 0.99770272, 0.99878740, 0.49311431],
     4153                             [- 6.27236820, - 0.00075164, 0.00046067, 7.27161656, 0.99770328, 0.99878769, 0.49311449],
     4154                             [- 6.27236864, - 0.00075146, 0.00046056, 7.27161719, 0.99770384, 0.99878798, 0.49311451],
     4155                             [- 6.27236909, - 0.00075127, 0.00046045, 7.27161781, 0.99770440, 0.99878828, 0.49311462],
     4156                             [- 6.27236953, - 0.00075109, 0.00046034, 7.27161844, 0.99770496, 0.99878857, 0.49311465],
     4157                             [- 6.27236997, - 0.00075091, 0.00046022, 7.27161906, 0.99770551, 0.99878887, 0.49311479],
     4158                             [- 6.27237041, - 0.00075073, 0.00046011, 7.27161968, 0.99770607, 0.99878916, 0.49311488],
     4159                             [- 6.27237085, - 0.00075055, 0.00046000, 7.27162031, 0.99770663, 0.99878945, 0.49311489],
     4160                             [- 6.27237130, - 0.00075036, 0.00045989, 7.27162093, 0.99770718, 0.99878975, 0.49311496],
     4161                             [- 6.27237174, - 0.00075018, 0.00045978, 7.27162155, 0.99770774, 0.99879004, 0.49311494],
     4162                             [- 6.27237218, - 0.00075000, 0.00045967, 7.27162218, 0.99770829, 0.99879033, 0.49311510],
     4163                             [- 6.27237262, - 0.00074982, 0.00045955, 7.27162280, 0.99770885, 0.99879063, 0.49311504],
     4164                             [- 6.27237306, - 0.00074964, 0.00045944, 7.27162342, 0.99770941, 0.99879092, 0.49311523],
     4165                             [- 6.27237350, - 0.00074946, 0.00045933, 7.27162404, 0.99770996, 0.99879121, 0.49311526],
     4166                             [- 6.27237394, - 0.00074927, 0.00045922, 7.27162466, 0.99771051, 0.99879151, 0.49311531],
     4167                             [- 6.27237438, - 0.00074909, 0.00045911, 7.27162529, 0.99771107, 0.99879180, 0.49311549],
     4168                             [- 6.27237482, - 0.00074891, 0.00045900, 7.27162591, 0.99771162, 0.99879209, 0.49311546],
     4169                             [- 6.27237526, - 0.00074873, 0.00045889, 7.27162653, 0.99771218, 0.99879238, 0.49311554],
     4170                             [- 6.27237570, - 0.00074855, 0.00045878, 7.27162715, 0.99771273, 0.99879268, 0.49311557],
     4171                             [- 6.27237614, - 0.00074837, 0.00045866, 7.27162777, 0.99771328, 0.99879297, 0.49311573],
     4172                             [- 6.27237657, - 0.00074819, 0.00045855, 7.27162839, 0.99771384, 0.99879326, 0.49311571],
     4173                             [- 6.27237701, - 0.00074801, 0.00045844, 7.27162901, 0.99771439, 0.99879355, 0.49311580],
     4174                             [- 6.27237745, - 0.00074783, 0.00045833, 7.27162962, 0.99771494, 0.99879384, 0.49311585],
     4175                             [- 6.27237789, - 0.00074765, 0.00045822, 7.27163024, 0.99771549, 0.99879413, 0.49311592],
     4176                             [- 6.27237833, - 0.00074747, 0.00045811, 7.27163086, 0.99771605, 0.99879442, 0.49311607],
     4177                             [- 6.27237876, - 0.00074728, 0.00045800, 7.27163148, 0.99771660, 0.99879472, 0.49311608],
     4178                             [- 6.27237920, - 0.00074710, 0.00045789, 7.27163210, 0.99771715, 0.99879501, 0.49311612],
     4179                             [- 6.27237964, - 0.00074692, 0.00045778, 7.27163271, 0.99771770, 0.99879530, 0.49311622],
     4180                             [- 6.27238007, - 0.00074674, 0.00045767, 7.27163333, 0.99771825, 0.99879559, 0.49311623],
     4181                             [- 6.27238051, - 0.00074656, 0.00045756, 7.27163395, 0.99771880, 0.99879588, 0.49311629],
     4182                             [- 6.27238095, - 0.00074638, 0.00045745, 7.27163456, 0.99771935, 0.99879617, 0.49311629],
     4183                             [- 6.27238138, - 0.00074620, 0.00045734, 7.27163518, 0.99771990, 0.99879646, 0.49311644],
     4184                             [- 6.27238182, - 0.00074602, 0.00045723, 7.27163580, 0.99772045, 0.99879675, 0.49311641],
     4185                             [- 6.27238225, - 0.00074584, 0.00045712, 7.27163641, 0.99772100, 0.99879704, 0.49311653],
     4186                             [- 6.27238269, - 0.00074566, 0.00045701, 7.27163703, 0.99772155, 0.99879733, 0.49311671],
     4187                             [- 6.27238312, - 0.00074548, 0.00045690, 7.27163764, 0.99772210, 0.99879762, 0.49311673],
     4188                             [- 6.27238356, - 0.00074531, 0.00045679, 7.27163825, 0.99772265, 0.99879791, 0.49311683],
     4189                             [- 6.27238399, - 0.00074513, 0.00045668, 7.27163887, 0.99772320, 0.99879820, 0.49311676],
     4190                             [- 6.27238443, - 0.00074495, 0.00045657, 7.27163948, 0.99772375, 0.99879849, 0.49311684],
     4191                             [- 6.27238486, - 0.00074477, 0.00045646, 7.27164010, 0.99772429, 0.99879878, 0.49311690],
     4192                             [- 6.27238530, - 0.00074459, 0.00045635, 7.27164071, 0.99772484, 0.99879907, 0.49311703],
     4193                             [- 6.27238573, - 0.00074441, 0.00045624, 7.27164132, 0.99772539, 0.99879936, 0.49311710],
     4194                             [- 6.27238616, - 0.00074423, 0.00045613, 7.27164193, 0.99772594, 0.99879964, 0.49311708],
     4195                             [- 6.27238660, - 0.00074405, 0.00045602, 7.27164255, 0.99772648, 0.99879993, 0.49311725],
     4196                             [- 6.27238703, - 0.00074387, 0.00045591, 7.27164316, 0.99772703, 0.99880022, 0.49311732],
     4197                             [- 6.27238746, - 0.00074369, 0.00045580, 7.27164377, 0.99772758, 0.99880051, 0.49311738],
     4198                             [- 6.27238790, - 0.00074352, 0.00045569, 7.27164438, 0.99772812, 0.99880080, 0.49311739],
     4199                             [- 6.27238833, - 0.00074334, 0.00045558, 7.27164499, 0.99772867, 0.99880109, 0.49311746],
     4200                             [- 6.27238876, - 0.00074316, 0.00045547, 7.27164560, 0.99772921, 0.99880137, 0.49311752],
     4201                             [- 6.27238919, - 0.00074298, 0.00045536, 7.27164621, 0.99772976, 0.99880166, 0.49311758],
     4202                             [- 6.27238962, - 0.00074280, 0.00045525, 7.27164682, 0.99773030, 0.99880195, 0.49311766],
     4203                             [- 6.27239006, - 0.00074262, 0.00045514, 7.27164743, 0.99773085, 0.99880224, 0.49311772],
     4204                             [- 6.27239049, - 0.00074245, 0.00045503, 7.27164804, 0.99773139, 0.99880252, 0.49311777],
     4205                             [- 6.27239092, - 0.00074227, 0.00045492, 7.27164865, 0.99773194, 0.99880281, 0.49311785],
     4206                             [- 6.27239135, - 0.00074209, 0.00045481, 7.27164926, 0.99773248, 0.99880310, 0.49311791],
     4207                             [- 6.27239178, - 0.00074191, 0.00045470, 7.27164987, 0.99773303, 0.99880339, 0.49311797],
     4208                             [- 6.27239221, - 0.00074173, 0.00045459, 7.27165048, 0.99773357, 0.99880367, 0.49311806],
     4209                             [- 6.27239264, - 0.00074156, 0.00045449, 7.27165108, 0.99773411, 0.99880396, 0.49311809],
     4210                             [- 6.27239307, - 0.00074138, 0.00045438, 7.27165169, 0.99773466, 0.99880425, 0.49311816],
     4211                             [- 6.27239350, - 0.00074120, 0.00045427, 7.27165230, 0.99773520, 0.99880453, 0.49311824],
     4212                             [- 6.27239393, - 0.00074102, 0.00045416, 7.27165291, 0.99773574, 0.99880482, 0.49311829],
     4213                             [- 6.27239436, - 0.00074085, 0.00045405, 7.27165351, 0.99773628, 0.99880510, 0.49311835],
     4214                             [- 6.27239479, - 0.00074067, 0.00045394, 7.27165412, 0.99773683, 0.99880539, 0.49311839],
     4215                             [- 6.27239522, - 0.00074049, 0.00045383, 7.27165472, 0.99773737, 0.99880568, 0.49311849],
     4216                             [- 6.27239564, - 0.00074031, 0.00045372, 7.27165533, 0.99773791, 0.99880596, 0.49311853],
     4217                             [- 6.27239607, - 0.00074014, 0.00045362, 7.27165593, 0.99773845, 0.99880625, 0.49311862],
     4218                             [- 6.27239650, - 0.00073996, 0.00045351, 7.27165654, 0.99773899, 0.99880653, 0.49311867],
     4219                             [- 6.27239693, - 0.00073978, 0.00045340, 7.27165714, 0.99773953, 0.99880682, 0.49311873],
     4220                             [- 6.27239736, - 0.00073961, 0.00045329, 7.27165775, 0.99774007, 0.99880710, 0.49311878],
     4221                             [- 6.27239778, - 0.00073943, 0.00045318, 7.27165835, 0.99774061, 0.99880739, 0.49311885],
     4222                             [- 6.27239821, - 0.00073925, 0.00045307, 7.27165896, 0.99774115, 0.99880767, 0.49311891],
     4223                             [- 6.27239864, - 0.00073908, 0.00045296, 7.27165956, 0.99774169, 0.99880796, 0.49311897],
     4224                             [- 6.27239906, - 0.00073890, 0.00045286, 7.27166016, 0.99774223, 0.99880824, 0.49311905],
     4225                             [- 6.27239949, - 0.00073872, 0.00045275, 7.27166077, 0.99774277, 0.99880853, 0.49311912],
     4226                             [- 6.27239992, - 0.00073855, 0.00045264, 7.27166137, 0.99774331, 0.99880881, 0.49311918],
     4227                             [- 6.27240034, - 0.00073837, 0.00045253, 7.27166197, 0.99774385, 0.99880910, 0.49311924],
     4228                             [- 6.27240077, - 0.00073820, 0.00045242, 7.27166257, 0.99774439, 0.99880938, 0.49311929],
     4229                             [- 6.27240119, - 0.00073802, 0.00045232, 7.27166317, 0.99774492, 0.99880966, 0.49311935],
     4230                             [- 6.27240162, - 0.00073784, 0.00045221, 7.27166378, 0.99774546, 0.99880995, 0.49311941],
     4231                             [- 6.27240205, - 0.00073767, 0.00045210, 7.27166438, 0.99774600, 0.99881023, 0.49311949],
     4232                             [- 6.27240247, - 0.00073749, 0.00045199, 7.27166498, 0.99774654, 0.99881051, 0.49311956],
     4233                             [- 6.27240289, - 0.00073732, 0.00045188, 7.27166558, 0.99774707, 0.99881080, 0.49311961],
     4234                             [- 6.27240332, - 0.00073714, 0.00045178, 7.27166618, 0.99774761, 0.99881108, 0.49311968],
     4235                             [- 6.27240374, - 0.00073697, 0.00045167, 7.27166678, 0.99774815, 0.99881136, 0.49311975],
     4236                             [- 6.27240417, - 0.00073679, 0.00045156, 7.27166738, 0.99774868, 0.99881165, 0.49311980],
     4237                             [- 6.27240459, - 0.00073662, 0.00045145, 7.27166798, 0.99774922, 0.99881193, 0.49311987],
     4238                             [- 6.27240502, - 0.00073644, 0.00045135, 7.27166858, 0.99774976, 0.99881221, 0.49311992],
     4239                             [- 6.27240544, - 0.00073626, 0.00045124, 7.27166917, 0.99775029, 0.99881250, 0.49312000],
     4240                             [- 6.27240586, - 0.00073609, 0.00045113, 7.27166977, 0.99775083, 0.99881278, 0.49312006],
     4241                             [- 6.27240628, - 0.00073591, 0.00045102, 7.27167037, 0.99775136, 0.99881306, 0.49312011],
     4242                             [- 6.27240671, - 0.00073574, 0.00045092, 7.27167097, 0.99775190, 0.99881334, 0.49312017],
     4243                             [- 6.27240713, - 0.00073556, 0.00045081, 7.27167157, 0.99775243, 0.99881362, 0.49312022],
     4244                             [- 6.27240755, - 0.00073539, 0.00045070, 7.27167216, 0.99775297, 0.99881391, 0.49312031],
     4245                             [- 6.27240797, - 0.00073522, 0.00045060, 7.27167276, 0.99775350, 0.99881419, 0.49312033],
     4246                             [- 6.27240840, - 0.00073504, 0.00045049, 7.27167336, 0.99775403, 0.99881447, 0.49312043],
     4247                             [- 6.27240882, - 0.00073487, 0.00045038, 7.27167395, 0.99775457, 0.99881475, 0.49312049],
     4248                             [- 6.27240924, - 0.00073469, 0.00045027, 7.27167455, 0.99775510, 0.99881503, 0.49312054],
     4249                             [- 6.27240966, - 0.00073452, 0.00045017, 7.27167514, 0.99775563, 0.99881531, 0.49312061],
     4250                             [- 6.27241008, - 0.00073434, 0.00045006, 7.27167574, 0.99775617, 0.99881560, 0.49312068],
     4251                             [- 6.27241050, - 0.00073417, 0.00044995, 7.27167633, 0.99775670, 0.99881588, 0.49312074],
     4252                             [- 6.27241092, - 0.00073400, 0.00044985, 7.27167693, 0.99775723, 0.99881616, 0.49312080],
     4253                             [- 6.27241134, - 0.00073382, 0.00044974, 7.27167752, 0.99775776, 0.99881644, 0.49312087],
     4254                             [- 6.27241176, - 0.00073365, 0.00044963, 7.27167812, 0.99775829, 0.99881672, 0.49312093],
     4255                             [- 6.27241218, - 0.00073347, 0.00044953, 7.27167871, 0.99775883, 0.99881700, 0.49312099],
     4256                             [- 6.27241260, - 0.00073330, 0.00044942, 7.27167930, 0.99775936, 0.99881728, 0.49312106],
     4257                             [- 6.27241302, - 0.00073313, 0.00044931, 7.27167990, 0.99775989, 0.99881756, 0.49312110],
     4258                             [- 6.27241344, - 0.00073295, 0.00044921, 7.27168049, 0.99776042, 0.99881784, 0.49312117],
     4259                             [- 6.27241386, - 0.00073278, 0.00044910, 7.27168108, 0.99776095, 0.99881812, 0.49312124],
     4260                             [- 6.27241428, - 0.00073261, 0.00044899, 7.27168167, 0.99776148, 0.99881840, 0.49312129],
     4261                             [- 6.27241470, - 0.00073243, 0.00044889, 7.27168227, 0.99776201, 0.99881868, 0.49312137],
     4262                             [- 6.27241512, - 0.00073226, 0.00044878, 7.27168286, 0.99776254, 0.99881896, 0.49312141],
     4263                             [- 6.27241554, - 0.00073209, 0.00044868, 7.27168345, 0.99776307, 0.99881924, 0.49312147],
     4264                             [- 6.27241595, - 0.00073191, 0.00044857, 7.27168404, 0.99776360, 0.99881952, 0.49312156],
     4265                             [- 6.27241637, - 0.00073174, 0.00044846, 7.27168463, 0.99776413, 0.99881980, 0.49312161],
     4266                             [- 6.27241679, - 0.00073157, 0.00044836, 7.27168522, 0.99776466, 0.99882008, 0.49312166],
     4267                             [- 6.27241721, - 0.00073139, 0.00044825, 7.27168581, 0.99776518, 0.99882035, 0.49312172],
     4268                             [- 6.27241762, - 0.00073122, 0.00044815, 7.27168640, 0.99776571, 0.99882063, 0.49312178],
     4269                             [- 6.27241804, - 0.00073105, 0.00044804, 7.27168699, 0.99776624, 0.99882091, 0.49312185],
     4270                             [- 6.27241846, - 0.00073088, 0.00044793, 7.27168758, 0.99776677, 0.99882119, 0.49312193],
     4271                             [- 6.27241887, - 0.00073070, 0.00044783, 7.27168817, 0.99776730, 0.99882147, 0.49312197],
     4272                             [- 6.27241929, - 0.00073053, 0.00044772, 7.27168876, 0.99776782, 0.99882175, 0.49312203],
     4273                             [- 6.27241971, - 0.00073036, 0.00044762, 7.27168935, 0.99776835, 0.99882202, 0.49312211],
     4274                             [- 6.27242012, - 0.00073019, 0.00044751, 7.27168994, 0.99776888, 0.99882230, 0.49312215],
     4275                             [- 6.27242054, - 0.00073001, 0.00044741, 7.27169052, 0.99776940, 0.99882258, 0.49312222],
     4276                             [- 6.27242095, - 0.00072984, 0.00044730, 7.27169111, 0.99776993, 0.99882286, 0.49312230],
     4277                             [- 6.27242137, - 0.00072967, 0.00044719, 7.27169170, 0.99777045, 0.99882314, 0.49312233],
     4278                             [- 6.27242178, - 0.00072950, 0.00044709, 7.27169229, 0.99777098, 0.99882341, 0.49312241],
     4279                             [- 6.27242220, - 0.00072933, 0.00044698, 7.27169287, 0.99777151, 0.99882369, 0.49312246],
     4280                             [- 6.27242261, - 0.00072915, 0.00044688, 7.27169346, 0.99777203, 0.99882397, 0.49312253],
     4281                             [- 6.27242303, - 0.00072898, 0.00044677, 7.27169405, 0.99777256, 0.99882424, 0.49312260],
     4282                             [- 6.27242344, - 0.00072881, 0.00044667, 7.27169463, 0.99777308, 0.99882452, 0.49312265],
     4283                             [- 6.27242386, - 0.00072864, 0.00044656, 7.27169522, 0.99777361, 0.99882480, 0.49312272],
     4284                             [- 6.27242427, - 0.00072847, 0.00044646, 7.27169580, 0.99777413, 0.99882508, 0.49312276],
     4285                             [- 6.27242468, - 0.00072830, 0.00044635, 7.27169639, 0.99777465, 0.99882535, 0.49312285],
     4286                             [- 6.27242510, - 0.00072813, 0.00044625, 7.27169697, 0.99777518, 0.99882563, 0.49312291],
     4287                             [- 6.27242551, - 0.00072795, 0.00044614, 7.27169756, 0.99777570, 0.99882590, 0.49312295],
     4288                             [- 6.27242592, - 0.00072778, 0.00044604, 7.27169814, 0.99777622, 0.99882618, 0.49312303],
     4289                             [- 6.27242634, - 0.00072761, 0.00044593, 7.27169872, 0.99777675, 0.99882646, 0.49312307],
     4290                             [- 6.27242675, - 0.00072744, 0.00044583, 7.27169931, 0.99777727, 0.99882673, 0.49312312],
     4291                             [- 6.27242716, - 0.00072727, 0.00044572, 7.27169989, 0.99777779, 0.99882701, 0.49312319],
     4292                             [- 6.27242757, - 0.00072710, 0.00044562, 7.27170047, 0.99777831, 0.99882728, 0.49312326],
     4293                             [- 6.27242798, - 0.00072693, 0.00044551, 7.27170106, 0.99777884, 0.99882756, 0.49312335],
     4294                             [- 6.27242840, - 0.00072676, 0.00044541, 7.27170164, 0.99777936, 0.99882783, 0.49312338],
     4295                             [- 6.27242881, - 0.00072659, 0.00044530, 7.27170222, 0.99777988, 0.99882811, 0.49312345],
     4296                             [- 6.27242922, - 0.00072642, 0.00044520, 7.27170280, 0.99778040, 0.99882838, 0.49312349],
     4297                             [- 6.27242963, - 0.00072625, 0.00044509, 7.27170338, 0.99778092, 0.99882866, 0.49312358],
     4298                             [- 6.27243004, - 0.00072608, 0.00044499, 7.27170397, 0.99778144, 0.99882893, 0.49312364],
     4299                             [- 6.27243045, - 0.00072591, 0.00044488, 7.27170455, 0.99778196, 0.99882921, 0.49312368],
     4300                             [- 6.27243086, - 0.00072574, 0.00044478, 7.27170513, 0.99778248, 0.99882948, 0.49312376],
     4301                             [- 6.27243127, - 0.00072557, 0.00044468, 7.27170571, 0.99778300, 0.99882976, 0.49312381],
     4302                             [- 6.27243168, - 0.00072540, 0.00044457, 7.27170629, 0.99778352, 0.99883003, 0.49312388],
     4303                             [- 6.27243209, - 0.00072523, 0.00044447, 7.27170687, 0.99778404, 0.99883031, 0.49312394],
     4304                             [- 6.27243250, - 0.00072506, 0.00044436, 7.27170745, 0.99778456, 0.99883058, 0.49312397],
     4305                             [- 6.27243291, - 0.00072489, 0.00044426, 7.27170803, 0.99778508, 0.99883086, 0.49312405],
     4306                             [- 6.27243332, - 0.00072472, 0.00044416, 7.27170860, 0.99778560, 0.99883113, 0.49312410],
     4307                             [- 6.27243373, - 0.00072455, 0.00044405, 7.27170918, 0.99778612, 0.99883140, 0.49312419],
     4308                             [- 6.27243414, - 0.00072438, 0.00044395, 7.27170976, 0.99778664, 0.99883168, 0.49312424],
     4309                             [- 6.27243455, - 0.00072421, 0.00044384, 7.27171034, 0.99778716, 0.99883195, 0.49312429],
     4310                             [- 6.27243496, - 0.00072404, 0.00044374, 7.27171092, 0.99778767, 0.99883222, 0.49312436],
     4311                             [- 6.27243536, - 0.00072387, 0.00044364, 7.27171150, 0.99778819, 0.99883250, 0.49312441],
     4312                             [- 6.27243577, - 0.00072370, 0.00044353, 7.27171207, 0.99778871, 0.99883277, 0.49312447],
     4313                             [- 6.27243618, - 0.00072353, 0.00044343, 7.27171265, 0.99778923, 0.99883304, 0.49312454],
     4314                             [- 6.27243659, - 0.00072336, 0.00044332, 7.27171323, 0.99778974, 0.99883331, 0.49312460],
     4315                             [- 6.27243700, - 0.00072319, 0.00044322, 7.27171380, 0.99779026, 0.99883359, 0.49312464],
     4316                             [- 6.27243740, - 0.00072302, 0.00044312, 7.27171438, 0.99779078, 0.99883386, 0.49312471],
     4317                             [- 6.27243781, - 0.00072285, 0.00044301, 7.27171495, 0.99779129, 0.99883413, 0.49312476],
     4318                             [- 6.27243822, - 0.00072269, 0.00044291, 7.27171553, 0.99779181, 0.99883440, 0.49312483],
     4319                             [- 6.27243862, - 0.00072252, 0.00044281, 7.27171611, 0.99779232, 0.99883468, 0.49312489],
     4320                             [- 6.27243903, - 0.00072235, 0.00044270, 7.27171668, 0.99779284, 0.99883495, 0.49312495],
     4321                             [- 6.27243944, - 0.00072218, 0.00044260, 7.27171726, 0.99779336, 0.99883522, 0.49312500],
     4322                             [- 6.27243984, - 0.00072201, 0.00044250, 7.27171783, 0.99779387, 0.99883549, 0.49312508],
     4323                             [- 6.27244025, - 0.00072184, 0.00044239, 7.27171840, 0.99779438, 0.99883576, 0.49312514],
     4324                             [- 6.27244065, - 0.00072167, 0.00044229, 7.27171898, 0.99779490, 0.99883604, 0.49312518],
     4325                             [- 6.27244106, - 0.00072151, 0.00044219, 7.27171955, 0.99779541, 0.99883631, 0.49312525],
     4326                             [- 6.27244146, - 0.00072134, 0.00044208, 7.27172012, 0.99779593, 0.99883658, 0.49312531],
     4327                             [- 6.27244187, - 0.00072117, 0.00044198, 7.27172070, 0.99779644, 0.99883685, 0.49312537],
     4328                             [- 6.27244227, - 0.00072100, 0.00044188, 7.27172127, 0.99779696, 0.99883712, 0.49312544],
     4329                             [- 6.27244268, - 0.00072083, 0.00044177, 7.27172184, 0.99779747, 0.99883739, 0.49312550],
     4330                             [- 6.27244308, - 0.00072067, 0.00044167, 7.27172242, 0.99779798, 0.99883766, 0.49312555],
     4331                             [- 6.27244349, - 0.00072050, 0.00044157, 7.27172299, 0.99779849, 0.99883793, 0.49312563],
     4332                             [- 6.27244389, - 0.00072033, 0.00044147, 7.27172356, 0.99779901, 0.99883820, 0.49312567],
     4333                             [- 6.27244429, - 0.00072016, 0.00044136, 7.27172413, 0.99779952, 0.99883847, 0.49312573],
     4334                             [- 6.27244470, - 0.00072000, 0.00044126, 7.27172470, 0.99780003, 0.99883874, 0.49312578],
     4335                             [- 6.27244510, - 0.00071983, 0.00044116, 7.27172527, 0.99780054, 0.99883901, 0.49312585],
     4336                             [- 6.27244550, - 0.00071966, 0.00044105, 7.27172584, 0.99780105, 0.99883928, 0.49312592],
     4337                             [- 6.27244591, - 0.00071949, 0.00044095, 7.27172641, 0.99780157, 0.99883955, 0.49312598],
     4338                             [- 6.27244631, - 0.00071933, 0.00044085, 7.27172698, 0.99780208, 0.99883982, 0.49312604],
     4339                             [- 6.27244671, - 0.00071916, 0.00044075, 7.27172755, 0.99780259, 0.99884009, 0.49312608],
     4340                             [- 6.27244712, - 0.00071899, 0.00044064, 7.27172812, 0.99780310, 0.99884036, 0.49312614],
     4341                             [- 6.27244752, - 0.00071883, 0.00044054, 7.27172869, 0.99780361, 0.99884063, 0.49312622],
     4342                             [- 6.27244792, - 0.00071866, 0.00044044, 7.27172926, 0.99780412, 0.99884090, 0.49312626],
     4343                             [- 6.27244832, - 0.00071849, 0.00044034, 7.27172983, 0.99780463, 0.99884117, 0.49312632],
     4344                             [- 6.27244872, - 0.00071833, 0.00044024, 7.27173040, 0.99780514, 0.99884144, 0.49312638],
     4345                             [- 6.27244912, - 0.00071816, 0.00044013, 7.27173097, 0.99780565, 0.99884171, 0.49312645],
     4346                             [- 6.27244953, - 0.00071799, 0.00044003, 7.27173153, 0.99780616, 0.99884198, 0.49312649],
     4347                             [- 6.27244993, - 0.00071783, 0.00043993, 7.27173210, 0.99780667, 0.99884225, 0.49312657],
     4348                             [- 6.27245033, - 0.00071766, 0.00043983, 7.27173267, 0.99780718, 0.99884251, 0.49312664],
     4349                             [- 6.27245073, - 0.00071749, 0.00043972, 7.27173323, 0.99780768, 0.99884278, 0.49312669],
     4350                             [- 6.27245113, - 0.00071733, 0.00043962, 7.27173380, 0.99780819, 0.99884305, 0.49312674],
     4351                             [- 6.27245153, - 0.00071716, 0.00043952, 7.27173437, 0.99780870, 0.99884332, 0.49312680],
     4352                             [- 6.27245193, - 0.00071699, 0.00043942, 7.27173493, 0.99780921, 0.99884359, 0.49312685],
     4353                             [- 6.27245233, - 0.00071683, 0.00043932, 7.27173550, 0.99780972, 0.99884385, 0.49312691],
     4354                             [- 6.27245273, - 0.00071666, 0.00043922, 7.27173607, 0.99781022, 0.99884412, 0.49312701],
     4355                             [- 6.27245313, - 0.00071650, 0.00043911, 7.27173663, 0.99781073, 0.99884439, 0.49312703],
     4356                             [- 6.27245353, - 0.00071633, 0.00043901, 7.27173720, 0.99781124, 0.99884466, 0.49312710],
     4357                             [- 6.27245393, - 0.00071617, 0.00043891, 7.27173776, 0.99781174, 0.99884492, 0.49312716],
     4358                             [- 6.27245432, - 0.00071600, 0.00043881, 7.27173833, 0.99781225, 0.99884519, 0.49312722],
     4359                             [- 6.27245472, - 0.00071583, 0.00043871, 7.27173889, 0.99781276, 0.99884546, 0.49312728],
     4360                             [- 6.27245512, - 0.00071567, 0.00043861, 7.27173945, 0.99781326, 0.99884573, 0.49312736],
     4361                             [- 6.27245552, - 0.00071550, 0.00043850, 7.27174002, 0.99781377, 0.99884599, 0.49312741],
     4362                             [- 6.27245592, - 0.00071534, 0.00043840, 7.27174058, 0.99781427, 0.99884626, 0.49312745],
     4363                             [- 6.27245632, - 0.00071517, 0.00043830, 7.27174114, 0.99781478, 0.99884653, 0.49312752],
     4364                             [- 6.27245671, - 0.00071501, 0.00043820, 7.27174171, 0.99781528, 0.99884679, 0.49312756],
     4365                             [- 6.27245711, - 0.00071484, 0.00043810, 7.27174227, 0.99781579, 0.99884706, 0.49312763],
     4366                             [- 6.27245751, - 0.00071468, 0.00043800, 7.27174283, 0.99781629, 0.99884733, 0.49312770],
     4367                             [- 6.27245791, - 0.00071451, 0.00043790, 7.27174339, 0.99781680, 0.99884759, 0.49312773],
     4368                             [- 6.27245830, - 0.00071435, 0.00043779, 7.27174396, 0.99781730, 0.99884786, 0.49312781],
     4369                             [- 6.27245870, - 0.00071418, 0.00043769, 7.27174452, 0.99781781, 0.99884812, 0.49312788],
     4370                             [- 6.27245910, - 0.00071402, 0.00043759, 7.27174508, 0.99781831, 0.99884839, 0.49312794],
     4371                             [- 6.27245949, - 0.00071385, 0.00043749, 7.27174564, 0.99781881, 0.99884866, 0.49312798],
     4372                             [- 6.27245989, - 0.00071369, 0.00043739, 7.27174620, 0.99781932, 0.99884892, 0.49312802],
     4373                             [- 6.27246028, - 0.00071352, 0.00043729, 7.27174676, 0.99781982, 0.99884919, 0.49312810],
     4374                             [- 6.27246068, - 0.00071336, 0.00043719, 7.27174732, 0.99782032, 0.99884945, 0.49312816],
     4375                             [- 6.27246108, - 0.00071320, 0.00043709, 7.27174788, 0.99782083, 0.99884972, 0.49312820],
     4376                             [- 6.27246147, - 0.00071303, 0.00043699, 7.27174844, 0.99782133, 0.99884998, 0.49312828],
     4377                             [- 6.27246187, - 0.00071287, 0.00043689, 7.27174900, 0.99782183, 0.99885025, 0.49312834],
     4378                             [- 6.27246226, - 0.00071270, 0.00043679, 7.27174956, 0.99782233, 0.99885051, 0.49312839],
     4379                             [- 6.27246266, - 0.00071254, 0.00043669, 7.27175012, 0.99782283, 0.99885078, 0.49312847],
     4380                             [- 6.27246305, - 0.00071237, 0.00043658, 7.27175068, 0.99782333, 0.99885104, 0.49312849],
     4381                             [- 6.27246345, - 0.00071221, 0.00043648, 7.27175123, 0.99782384, 0.99885131, 0.49312857],
     4382                             [- 6.27246384, - 0.00071205, 0.00043638, 7.27175179, 0.99782434, 0.99885157, 0.49312862],
     4383                             [- 6.27246423, - 0.00071188, 0.00043628, 7.27175235, 0.99782484, 0.99885183, 0.49312870],
     4384                             [- 6.27246463, - 0.00071172, 0.00043618, 7.27175291, 0.99782534, 0.99885210, 0.49312875],
     4385                             [- 6.27246502, - 0.00071156, 0.00043608, 7.27175347, 0.99782584, 0.99885236, 0.49312878],
     4386                             [- 6.27246541, - 0.00071139, 0.00043598, 7.27175402, 0.99782634, 0.99885263, 0.49312886],
     4387                             [- 6.27246581, - 0.00071123, 0.00043588, 7.27175458, 0.99782684, 0.99885289, 0.49312892],
     4388                             [- 6.27246620, - 0.00071107, 0.00043578, 7.27175514, 0.99782734, 0.99885315, 0.49312899],
     4389                             [- 6.27246659, - 0.00071090, 0.00043568, 7.27175569, 0.99782784, 0.99885342, 0.49312906],
     4390                             [- 6.27246699, - 0.00071074, 0.00043558, 7.27175625, 0.99782833, 0.99885368, 0.49312908],
     4391                             [- 6.27246738, - 0.00071058, 0.00043548, 7.27175680, 0.99782883, 0.99885394, 0.49312914],
     4392                             [- 6.27246777, - 0.00071041, 0.00043538, 7.27175736, 0.99782933, 0.99885421, 0.49312922],
     4393                             [- 6.27246816, - 0.00071025, 0.00043528, 7.27175791, 0.99782983, 0.99885447, 0.49312926],
     4394                             [- 6.27246856, - 0.00071009, 0.00043518, 7.27175847, 0.99783033, 0.99885473, 0.49312934],
     4395                             [- 6.27246895, - 0.00070992, 0.00043508, 7.27175902, 0.99783083, 0.99885499, 0.49312938],
     4396                             [- 6.27246934, - 0.00070976, 0.00043498, 7.27175958, 0.99783132, 0.99885526, 0.49312944],
     4397                             [- 6.27246973, - 0.00070960, 0.00043488, 7.27176013, 0.99783182, 0.99885552, 0.49312948],
     4398                             [- 6.27247012, - 0.00070944, 0.00043478, 7.27176069, 0.99783232, 0.99885578, 0.49312957],
     4399                             [- 6.27247051, - 0.00070927, 0.00043468, 7.27176124, 0.99783282, 0.99885604, 0.49312962],
     4400                             [- 6.27247090, - 0.00070911, 0.00043458, 7.27176179, 0.99783331, 0.99885631, 0.49312968],
     4401                             [- 6.27247129, - 0.00070895, 0.00043448, 7.27176235, 0.99783381, 0.99885657, 0.49312972],
     4402                             [- 6.27247168, - 0.00070879, 0.00043438, 7.27176290, 0.99783431, 0.99885683, 0.49312980],
     4403                             [- 6.27247207, - 0.00070862, 0.00043428, 7.27176345, 0.99783480, 0.99885709, 0.49312985],
     4404                             [- 6.27247246, - 0.00070846, 0.00043418, 7.27176400, 0.99783530, 0.99885735, 0.49312992],
     4405                             [- 6.27247285, - 0.00070830, 0.00043409, 7.27176456, 0.99783579, 0.99885762, 0.49312999],
     4406                             [- 6.27247324, - 0.00070814, 0.00043399, 7.27176511, 0.99783629, 0.99885788, 0.49313003],
     4407                             [- 6.27247363, - 0.00070798, 0.00043389, 7.27176566, 0.99783678, 0.99885814, 0.49313009],
     4408                             [- 6.27247402, - 0.00070781, 0.00043379, 7.27176621, 0.99783728, 0.99885840, 0.49313014],
     4409                             [- 6.27247441, - 0.00070765, 0.00043369, 7.27176676, 0.99783777, 0.99885866, 0.49313021],
     4410                             [- 6.27247480, - 0.00070749, 0.00043359, 7.27176731, 0.99783827, 0.99885892, 0.49313025],
     4411                             [- 6.27247519, - 0.00070733, 0.00043349, 7.27176786, 0.99783876, 0.99885918, 0.49313031],
     4412                             [- 6.27247558, - 0.00070717, 0.00043339, 7.27176841, 0.99783926, 0.99885944, 0.49313036],
     4413                             [- 6.27247597, - 0.00070701, 0.00043329, 7.27176896, 0.99783975, 0.99885970, 0.49313043],
     4414                             [- 6.27247636, - 0.00070684, 0.00043319, 7.27176951, 0.99784024, 0.99885996, 0.49313047],
     4415                             [- 6.27247674, - 0.00070668, 0.00043309, 7.27177006, 0.99784074, 0.99886022, 0.49313056],
     4416                             [- 6.27247713, - 0.00070652, 0.00043299, 7.27177061, 0.99784123, 0.99886048, 0.49313062],
     4417                             [- 6.27247752, - 0.00070636, 0.00043290, 7.27177116, 0.99784172, 0.99886074, 0.49313067],
     4418                             [- 6.27247791, - 0.00070620, 0.00043280, 7.27177171, 0.99784222, 0.99886100, 0.49313072],
     4419                             [- 6.27247829, - 0.00070604, 0.00043270, 7.27177226, 0.99784271, 0.99886126, 0.49313077],
     4420                             [- 6.27247868, - 0.00070588, 0.00043260, 7.27177280, 0.99784320, 0.99886152, 0.49313084],
     4421                             [- 6.27247907, - 0.00070572, 0.00043250, 7.27177335, 0.99784369, 0.99886178, 0.49313089],
     4422                             [- 6.27247945, - 0.00070556, 0.00043240, 7.27177390, 0.99784418, 0.99886204, 0.49313094],
     4423                             [- 6.27247984, - 0.00070539, 0.00043230, 7.27177445, 0.99784468, 0.99886230, 0.49313101],
     4424                             [- 6.27248023, - 0.00070523, 0.00043220, 7.27177499, 0.99784517, 0.99886256, 0.49313105],
     4425                             [- 6.27248061, - 0.00070507, 0.00043211, 7.27177554, 0.99784566, 0.99886282, 0.49313111],
     4426                             [- 6.27248100, - 0.00070491, 0.00043201, 7.27177609, 0.99784615, 0.99886308, 0.49313117],
     4427                             [- 6.27248139, - 0.00070475, 0.00043191, 7.27177663, 0.99784664, 0.99886334, 0.49313123],
     4428                             [- 6.27248177, - 0.00070459, 0.00043181, 7.27177718, 0.99784713, 0.99886360, 0.49313129],
     4429                             [- 6.27248216, - 0.00070443, 0.00043171, 7.27177773, 0.99784762, 0.99886386, 0.49313133],
     4430                             [- 6.27248254, - 0.00070427, 0.00043161, 7.27177827, 0.99784811, 0.99886411, 0.49313142],
     4431                             [- 6.27248293, - 0.00070411, 0.00043152, 7.27177882, 0.99784860, 0.99886437, 0.49313147],
     4432                             [- 6.27248331, - 0.00070395, 0.00043142, 7.27177936, 0.99784909, 0.99886463, 0.49313152],
     4433                             [- 6.27248370, - 0.00070379, 0.00043132, 7.27177991, 0.99784958, 0.99886489, 0.49313157],
     4434                             [- 6.27248408, - 0.00070363, 0.00043122, 7.27178045, 0.99785007, 0.99886515, 0.49313161],
     4435                             [- 6.27248447, - 0.00070347, 0.00043112, 7.27178099, 0.99785056, 0.99886541, 0.49313168],
     4436                             [- 6.27248485, - 0.00070331, 0.00043103, 7.27178154, 0.99785104, 0.99886566, 0.49313174],
     4437                             [- 6.27248523, - 0.00070315, 0.00043093, 7.27178208, 0.99785153, 0.99886592, 0.49313183],
     4438                             [- 6.27248562, - 0.00070299, 0.00043083, 7.27178263, 0.99785202, 0.99886618, 0.49313186],
     4439                             [- 6.27248600, - 0.00070283, 0.00043073, 7.27178317, 0.99785251, 0.99886644, 0.49313191],
     4440                             [- 6.27248638, - 0.00070267, 0.00043063, 7.27178371, 0.99785300, 0.99886669, 0.49313198],
     4441                             [- 6.27248677, - 0.00070251, 0.00043054, 7.27178425, 0.99785348, 0.99886695, 0.49313204],
     4442                             [- 6.27248715, - 0.00070235, 0.00043044, 7.27178480, 0.99785397, 0.99886721, 0.49313208],
     4443                             [- 6.27248753, - 0.00070219, 0.00043034, 7.27178534, 0.99785446, 0.99886747, 0.49313214],
     4444                             [- 6.27248792, - 0.00070203, 0.00043024, 7.27178588, 0.99785495, 0.99886772, 0.49313220],
     4445                             [- 6.27248830, - 0.00070188, 0.00043014, 7.27178642, 0.99785543, 0.99886798, 0.49313224],
     4446                             [- 6.27248868, - 0.00070172, 0.00043005, 7.27178696, 0.99785592, 0.99886824, 0.49313233],
     4447                             [- 6.27248906, - 0.00070156, 0.00042995, 7.27178751, 0.99785641, 0.99886849, 0.49313235],
     4448                             [- 6.27248945, - 0.00070140, 0.00042985, 7.27178805, 0.99785689, 0.99886875, 0.49313243],
     4449                             [- 6.27248983, - 0.00070124, 0.00042975, 7.27178859, 0.99785738, 0.99886901, 0.49313250],
     4450                             [- 6.27249021, - 0.00070108, 0.00042966, 7.27178913, 0.99785786, 0.99886926, 0.49313254],
     4451                             [- 6.27249059, - 0.00070092, 0.00042956, 7.27178967, 0.99785835, 0.99886952, 0.49313259],
     4452                             [- 6.27249097, - 0.00070076, 0.00042946, 7.27179021, 0.99785883, 0.99886977, 0.49313265],
     4453                             [- 6.27249135, - 0.00070060, 0.00042937, 7.27179075, 0.99785932, 0.99887003, 0.49313270],
     4454                             [- 6.27249173, - 0.00070045, 0.00042927, 7.27179129, 0.99785980, 0.99887029, 0.49313277],
     4455                             [- 6.27249211, - 0.00070029, 0.00042917, 7.27179183, 0.99786029, 0.99887054, 0.49313282],
     4456                             [- 6.27249250, - 0.00070013, 0.00042907, 7.27179237, 0.99786077, 0.99887080, 0.49313289],
     4457                             [- 6.27249288, - 0.00069997, 0.00042898, 7.27179290, 0.99786126, 0.99887105, 0.49313291],
     4458                             [- 6.27249326, - 0.00069981, 0.00042888, 7.27179344, 0.99786174, 0.99887131, 0.49313301],
     4459                             [- 6.27249364, - 0.00069965, 0.00042878, 7.27179398, 0.99786222, 0.99887156, 0.49313305],
     4460                             [- 6.27249402, - 0.00069950, 0.00042869, 7.27179452, 0.99786271, 0.99887182, 0.49313311],
     4461                             [- 6.27249440, - 0.00069934, 0.00042859, 7.27179506, 0.99786319, 0.99887207, 0.49313316],
     4462                             [- 6.27249477, - 0.00069918, 0.00042849, 7.27179559, 0.99786367, 0.99887233, 0.49313322],
     4463                             [- 6.27249515, - 0.00069902, 0.00042840, 7.27179613, 0.99786415, 0.99887258, 0.49313329],
     4464                             [- 6.27249553, - 0.00069887, 0.00042830, 7.27179667, 0.99786464, 0.99887284, 0.49313333],
     4465                             [- 6.27249591, - 0.00069871, 0.00042820, 7.27179720, 0.99786512, 0.99887309, 0.49313340],
     4466                             [- 6.27249629, - 0.00069855, 0.00042810, 7.27179774, 0.99786560, 0.99887335, 0.49313343],
     4467                             [- 6.27249667, - 0.00069839, 0.00042801, 7.27179828, 0.99786608, 0.99887360, 0.49313349],
     4468                             [- 6.27249705, - 0.00069823, 0.00042791, 7.27179881, 0.99786656, 0.99887385, 0.49313355],
     4469                             [- 6.27249743, - 0.00069808, 0.00042781, 7.27179935, 0.99786705, 0.99887411, 0.49313361],
     4470                             [- 6.27249780, - 0.00069792, 0.00042772, 7.27179988, 0.99786753, 0.99887436, 0.49313365],
     4471                             [- 6.27249818, - 0.00069776, 0.00042762, 7.27180042, 0.99786801, 0.99887462, 0.49313373],
     4472                             [- 6.27249856, - 0.00069761, 0.00042753, 7.27180095, 0.99786849, 0.99887487, 0.49313378],
     4473                             [- 6.27249894, - 0.00069745, 0.00042743, 7.27180149, 0.99786897, 0.99887512, 0.49313382],
     4474                             [- 6.27249931, - 0.00069729, 0.00042733, 7.27180202, 0.99786945, 0.99887538, 0.49313387],
     4475                             [- 6.27249969, - 0.00069713, 0.00042724, 7.27180256, 0.99786993, 0.99887563, 0.49313395],
     4476                             [- 6.27250007, - 0.00069698, 0.00042714, 7.27180309, 0.99787041, 0.99887588, 0.49313401],
     4477                             [- 6.27250045, - 0.00069682, 0.00042704, 7.27180363, 0.99787089, 0.99887614, 0.49313405],
     4478                             [- 6.27250082, - 0.00069666, 0.00042695, 7.27180416, 0.99787137, 0.99887639, 0.49313411],
     4479                             [- 6.27250120, - 0.00069651, 0.00042685, 7.27180469, 0.99787185, 0.99887664, 0.49313417],
     4480                             [- 6.27250158, - 0.00069635, 0.00042676, 7.27180523, 0.99787233, 0.99887689, 0.49313425],
     4481                             [- 6.27250195, - 0.00069619, 0.00042666, 7.27180576, 0.99787281, 0.99887715, 0.49313428],
     4482                             [- 6.27250233, - 0.00069604, 0.00042656, 7.27180629, 0.99787328, 0.99887740, 0.49313433],
     4483                             [- 6.27250270, - 0.00069588, 0.00042647, 7.27180682, 0.99787376, 0.99887765, 0.49313436],
     4484                             [- 6.27250308, - 0.00069572, 0.00042637, 7.27180736, 0.99787424, 0.99887790, 0.49313447],
     4485                             [- 6.27250345, - 0.00069557, 0.00042628, 7.27180789, 0.99787472, 0.99887816, 0.49313453],
     4486                             [- 6.27250383, - 0.00069541, 0.00042618, 7.27180842, 0.99787520, 0.99887841, 0.49313456],
     4487                             [- 6.27250420, - 0.00069525, 0.00042608, 7.27180895, 0.99787567, 0.99887866, 0.49313463],
     4488                             [- 6.27250458, - 0.00069510, 0.00042599, 7.27180948, 0.99787615, 0.99887891, 0.49313466],
     4489                             [- 6.27250495, - 0.00069494, 0.00042589, 7.27181001, 0.99787663, 0.99887916, 0.49313471],
     4490                             [- 6.27250533, - 0.00069479, 0.00042580, 7.27181054, 0.99787711, 0.99887942, 0.49313478],
     4491                             [- 6.27250570, - 0.00069463, 0.00042570, 7.27181107, 0.99787758, 0.99887967, 0.49313484],
     4492                             [- 6.27250608, - 0.00069447, 0.00042561, 7.27181160, 0.99787806, 0.99887992, 0.49313489],
     4493                             [- 6.27250645, - 0.00069432, 0.00042551, 7.27181213, 0.99787854, 0.99888017, 0.49313499],
     4494                             [- 6.27250683, - 0.00069416, 0.00042541, 7.27181266, 0.99787901, 0.99888042, 0.49313500],
     4495                             [- 6.27250720, - 0.00069401, 0.00042532, 7.27181319, 0.99787949, 0.99888067, 0.49313506],
     4496                             [- 6.27250757, - 0.00069385, 0.00042522, 7.27181372, 0.99787996, 0.99888092, 0.49313510],
     4497                             [- 6.27250795, - 0.00069370, 0.00042513, 7.27181425, 0.99788044, 0.99888117, 0.49313518],
     4498                             [- 6.27250832, - 0.00069354, 0.00042503, 7.27181478, 0.99788091, 0.99888143, 0.49313523],
     4499                             [- 6.27250869, - 0.00069339, 0.00042494, 7.27181531, 0.99788139, 0.99888168, 0.49313528],
     4500                             [- 6.27250906, - 0.00069323, 0.00042484, 7.27181583, 0.99788186, 0.99888193, 0.49313532],
     4501                             [- 6.27250944, - 0.00069308, 0.00042475, 7.27181636, 0.99788234, 0.99888218, 0.49313537],
     4502                             [- 6.27250981, - 0.00069292, 0.00042465, 7.27181689, 0.99788281, 0.99888243, 0.49313545],
     4503                             [- 6.27251018, - 0.00069277, 0.00042456, 7.27181742, 0.99788329, 0.99888268, 0.49313551],
     4504                             [- 6.27251055, - 0.00069261, 0.00042446, 7.27181794, 0.99788376, 0.99888293, 0.49313557],
     4505                             [- 6.27251093, - 0.00069246, 0.00042437, 7.27181847, 0.99788423, 0.99888318, 0.49313560],
     4506                             [- 6.27251130, - 0.00069230, 0.00042427, 7.27181900, 0.99788471, 0.99888343, 0.49313566],
     4507                             [- 6.27251167, - 0.00069215, 0.00042418, 7.27181952, 0.99788518, 0.99888368, 0.49313574],
     4508                             [- 6.27251204, - 0.00069199, 0.00042408, 7.27182005, 0.99788565, 0.99888393, 0.49313579],
     4509                             [- 6.27251241, - 0.00069184, 0.00042399, 7.27182058, 0.99788613, 0.99888418, 0.49313583],
     4510                             [- 6.27251278, - 0.00069168, 0.00042389, 7.27182110, 0.99788660, 0.99888443, 0.49313587],
     4511                             [- 6.27251315, - 0.00069153, 0.00042380, 7.27182163, 0.99788707, 0.99888468, 0.49313593],
     4512                             [- 6.27251353, - 0.00069137, 0.00042370, 7.27182215, 0.99788754, 0.99888492, 0.49313600],
     4513                             [- 6.27251390, - 0.00069122, 0.00042361, 7.27182268, 0.99788801, 0.99888517, 0.49313604],
     4514                             [- 6.27251427, - 0.00069106, 0.00042351, 7.27182320, 0.99788849, 0.99888542, 0.49313613],
     4515                             [- 6.27251464, - 0.00069091, 0.00042342, 7.27182373, 0.99788896, 0.99888567, 0.49313616],
     4516                             [- 6.27251501, - 0.00069076, 0.00042332, 7.27182425, 0.99788943, 0.99888592, 0.49313621],
     4517                             [- 6.27251538, - 0.00069060, 0.00042323, 7.27182478, 0.99788990, 0.99888617, 0.49313628],
     4518                             [- 6.27251575, - 0.00069045, 0.00042314, 7.27182530, 0.99789037, 0.99888642, 0.49313634],
     4519                             [- 6.27251612, - 0.00069029, 0.00042304, 7.27182582, 0.99789084, 0.99888667, 0.49313637],
     4520                             [- 6.27251649, - 0.00069014, 0.00042295, 7.27182635, 0.99789131, 0.99888691, 0.49313644],
     4521                             [- 6.27251685, - 0.00068999, 0.00042285, 7.27182687, 0.99789178, 0.99888716, 0.49313651],
     4522                             [- 6.27251722, - 0.00068983, 0.00042276, 7.27182739, 0.99789225, 0.99888741, 0.49313656],
     4523                             [- 6.27251759, - 0.00068968, 0.00042266, 7.27182791, 0.99789272, 0.99888766, 0.49313664],
     4524                             [- 6.27251796, - 0.00068952, 0.00042257, 7.27182844, 0.99789319, 0.99888791, 0.49313666],
     4525                             [- 6.27251833, - 0.00068937, 0.00042248, 7.27182896, 0.99789366, 0.99888815, 0.49313670],
     4526                             [- 6.27251870, - 0.00068922, 0.00042238, 7.27182948, 0.99789413, 0.99888840, 0.49313677],
     4527                             [- 6.27251907, - 0.00068906, 0.00042229, 7.27183000, 0.99789460, 0.99888865, 0.49313683],
     4528                             [- 6.27251943, - 0.00068891, 0.00042219, 7.27183052, 0.99789507, 0.99888890, 0.49313687],
     4529                             [- 6.27251980, - 0.00068876, 0.00042210, 7.27183104, 0.99789554, 0.99888914, 0.49313691],
     4530                             [- 6.27252017, - 0.00068860, 0.00042200, 7.27183157, 0.99789601, 0.99888939, 0.49313700],
     4531                             [- 6.27252054, - 0.00068845, 0.00042191, 7.27183209, 0.99789647, 0.99888964, 0.49313706],
     4532                             [- 6.27252091, - 0.00068830, 0.00042182, 7.27183261, 0.99789694, 0.99888988, 0.49313707],
     4533                             [- 6.27252127, - 0.00068815, 0.00042172, 7.27183313, 0.99789741, 0.99889013, 0.49313711],
     4534                             [- 6.27252164, - 0.00068799, 0.00042163, 7.27183365, 0.99789788, 0.99889038, 0.49313720],
     4535                             [- 6.27252201, - 0.00068784, 0.00042154, 7.27183417, 0.99789835, 0.99889062, 0.49313727],
     4536                             [- 6.27252237, - 0.00068769, 0.00042144, 7.27183469, 0.99789881, 0.99889087, 0.49313733],
     4537                             [- 6.27252274, - 0.00068753, 0.00042135, 7.27183521, 0.99789928, 0.99889112, 0.49313737],
     4538                             [- 6.27252311, - 0.00068738, 0.00042125, 7.27183572, 0.99789975, 0.99889136, 0.49313744],
     4539                             [- 6.27252347, - 0.00068723, 0.00042116, 7.27183624, 0.99790021, 0.99889161, 0.49313749],
     4540                             [- 6.27252384, - 0.00068708, 0.00042107, 7.27183676, 0.99790068, 0.99889186, 0.49313754],
     4541                             [- 6.27252420, - 0.00068692, 0.00042097, 7.27183728, 0.99790115, 0.99889210, 0.49313760],
     4542                             [- 6.27252457, - 0.00068677, 0.00042088, 7.27183780, 0.99790161, 0.99889235, 0.49313767],
     4543                             [- 6.27252494, - 0.00068662, 0.00042079, 7.27183832, 0.99790208, 0.99889259, 0.49313771],
     4544                             [- 6.27252530, - 0.00068647, 0.00042069, 7.27183883, 0.99790254, 0.99889284, 0.49313775],
     4545                             [- 6.27252567, - 0.00068631, 0.00042060, 7.27183935, 0.99790301, 0.99889309, 0.49313782],
     4546                             [- 6.27252603, - 0.00068616, 0.00042051, 7.27183987, 0.99790347, 0.99889333, 0.49313786],
     4547                             [- 6.27252640, - 0.00068601, 0.00042041, 7.27184039, 0.99790394, 0.99889358, 0.49313791],
     4548                             [- 6.27252676, - 0.00068586, 0.00042032, 7.27184090, 0.99790440, 0.99889382, 0.49313797],
     4549                             [- 6.27252712, - 0.00068571, 0.00042023, 7.27184142, 0.99790487, 0.99889407, 0.49313801],
     4550                             [- 6.27252749, - 0.00068555, 0.00042013, 7.27184193, 0.99790533, 0.99889431, 0.49313810],
     4551                             [- 6.27252785, - 0.00068540, 0.00042004, 7.27184245, 0.99790579, 0.99889456, 0.49313815],
     4552                             [- 6.27252822, - 0.00068525, 0.00041995, 7.27184297, 0.99790626, 0.99889480, 0.49313818],
     4553                             [- 6.27252858, - 0.00068510, 0.00041985, 7.27184348, 0.99790672, 0.99889505, 0.49313824],
     4554                             [- 6.27252895, - 0.00068495, 0.00041976, 7.27184400, 0.99790719, 0.99889529, 0.49313828],
     4555                             [- 6.27252931, - 0.00068480, 0.00041967, 7.27184451, 0.99790765, 0.99889553, 0.49313835],
     4556                             [- 6.27252967, - 0.00068464, 0.00041958, 7.27184503, 0.99790811, 0.99889578, 0.49313842],
     4557                             [- 6.27253004, - 0.00068449, 0.00041948, 7.27184554, 0.99790857, 0.99889602, 0.49313845],
     4558                             [- 6.27253040, - 0.00068434, 0.00041939, 7.27184606, 0.99790904, 0.99889627, 0.49313853],
     4559                             [- 6.27253076, - 0.00068419, 0.00041930, 7.27184657, 0.99790950, 0.99889651, 0.49313854],
     4560                             [- 6.27253112, - 0.00068404, 0.00041920, 7.27184708, 0.99790996, 0.99889676, 0.49313861],
     4561                             [- 6.27253149, - 0.00068389, 0.00041911, 7.27184760, 0.99791042, 0.99889700, 0.49313867],
     4562                             [- 6.27253185, - 0.00068374, 0.00041902, 7.27184811, 0.99791089, 0.99889724, 0.49313874],
     4563                             [- 6.27253221, - 0.00068359, 0.00041893, 7.27184862, 0.99791135, 0.99889749, 0.49313876],
     4564                             [- 6.27253257, - 0.00068344, 0.00041883, 7.27184914, 0.99791181, 0.99889773, 0.49313881],
     4565                             [- 6.27253293, - 0.00068328, 0.00041874, 7.27184965, 0.99791227, 0.99889797, 0.49313886],
     4566                             [- 6.27253330, - 0.00068313, 0.00041865, 7.27185016, 0.99791273, 0.99889822, 0.49313893],
     4567                             [- 6.27253366, - 0.00068298, 0.00041856, 7.27185068, 0.99791319, 0.99889846, 0.49313897],
     4568                             [- 6.27253402, - 0.00068283, 0.00041846, 7.27185119, 0.99791365, 0.99889870, 0.49313904],
     4569                             [- 6.27253438, - 0.00068268, 0.00041837, 7.27185170, 0.99791411, 0.99889895, 0.49313909],
     4570                             [- 6.27253474, - 0.00068253, 0.00041828, 7.27185221, 0.99791457, 0.99889919, 0.49313915],
     4571                             [- 6.27253510, - 0.00068238, 0.00041819, 7.27185272, 0.99791503, 0.99889943, 0.49313920],
     4572                             [- 6.27253546, - 0.00068223, 0.00041810, 7.27185323, 0.99791549, 0.99889967, 0.49313924],
     4573                             [- 6.27253582, - 0.00068208, 0.00041800, 7.27185374, 0.99791595, 0.99889992, 0.49313932],
     4574                             [- 6.27253618, - 0.00068193, 0.00041791, 7.27185425, 0.99791641, 0.99890016, 0.49313937],
     4575                             [- 6.27253654, - 0.00068178, 0.00041782, 7.27185477, 0.99791687, 0.99890040, 0.49313944],
     4576                             [- 6.27253690, - 0.00068163, 0.00041773, 7.27185528, 0.99791733, 0.99890064, 0.49313947],
     4577                             [- 6.27253726, - 0.00068148, 0.00041763, 7.27185579, 0.99791779, 0.99890089, 0.49313953],
     4578                             [- 6.27253762, - 0.00068133, 0.00041754, 7.27185630, 0.99791825, 0.99890113, 0.49313960],
     4579                             [- 6.27253798, - 0.00068118, 0.00041745, 7.27185680, 0.99791871, 0.99890137, 0.49313964],
     4580                             [- 6.27253834, - 0.00068103, 0.00041736, 7.27185731, 0.99791916, 0.99890161, 0.49313969],
     4581                             [- 6.27253870, - 0.00068088, 0.00041727, 7.27185782, 0.99791962, 0.99890185, 0.49313973],
     4582                             [- 6.27253906, - 0.00068073, 0.00041718, 7.27185833, 0.99792008, 0.99890209, 0.49313978],
     4583                             [- 6.27253942, - 0.00068058, 0.00041708, 7.27185884, 0.99792054, 0.99890234, 0.49313983],
     4584                             [- 6.27253978, - 0.00068043, 0.00041699, 7.27185935, 0.99792099, 0.99890258, 0.49313991],
     4585                             [- 6.27254014, - 0.00068028, 0.00041690, 7.27185986, 0.99792145, 0.99890282, 0.49313998],
     4586                             [- 6.27254050, - 0.00068013, 0.00041681, 7.27186036, 0.99792191, 0.99890306, 0.49314002],
     4587                             [- 6.27254086, - 0.00067998, 0.00041672, 7.27186087, 0.99792237, 0.99890330, 0.49314008],
     4588                             [- 6.27254121, - 0.00067983, 0.00041662, 7.27186138, 0.99792282, 0.99890354, 0.49314012],
     4589                             [- 6.27254157, - 0.00067968, 0.00041653, 7.27186189, 0.99792328, 0.99890378, 0.49314018],
     4590                             [- 6.27254193, - 0.00067953, 0.00041644, 7.27186239, 0.99792373, 0.99890402, 0.49314019],
     4591                             [- 6.27254229, - 0.00067939, 0.00041635, 7.27186290, 0.99792419, 0.99890426, 0.49314025],
     4592                             [- 6.27254264, - 0.00067924, 0.00041626, 7.27186341, 0.99792465, 0.99890450, 0.49314034],
     4593                             [- 6.27254300, - 0.00067909, 0.00041617, 7.27186391, 0.99792510, 0.99890474, 0.49314040],
     4594                             [- 6.27254336, - 0.00067894, 0.00041608, 7.27186442, 0.99792556, 0.99890499, 0.49314044],
     4595                             [- 6.27254372, - 0.00067879, 0.00041598, 7.27186493, 0.99792601, 0.99890523, 0.49314049],
     4596                             [- 6.27254407, - 0.00067864, 0.00041589, 7.27186543, 0.99792647, 0.99890547, 0.49314054],
     4597                             [- 6.27254443, - 0.00067849, 0.00041580, 7.27186594, 0.99792692, 0.99890571, 0.49314058],
     4598                             [- 6.27254479, - 0.00067834, 0.00041571, 7.27186644, 0.99792738, 0.99890595, 0.49314062],
     4599                             [- 6.27254514, - 0.00067819, 0.00041562, 7.27186695, 0.99792783, 0.99890618, 0.49314070],
     4600                             [- 6.27254550, - 0.00067805, 0.00041553, 7.27186745, 0.99792828, 0.99890642, 0.49314075],
     4601                             [- 6.27254585, - 0.00067790, 0.00041544, 7.27186796, 0.99792874, 0.99890666, 0.49314079],
     4602                             [- 6.27254621, - 0.00067775, 0.00041535, 7.27186846, 0.99792919, 0.99890690, 0.49314085],
     4603                             [- 6.27254657, - 0.00067760, 0.00041526, 7.27186897, 0.99792965, 0.99890714, 0.49314090],
     4604                             [- 6.27254692, - 0.00067745, 0.00041516, 7.27186947, 0.99793010, 0.99890738, 0.49314094],
     4605                             [- 6.27254728, - 0.00067730, 0.00041507, 7.27186997, 0.99793055, 0.99890762, 0.49314100],
     4606                             [- 6.27254763, - 0.00067716, 0.00041498, 7.27187048, 0.99793101, 0.99890786, 0.49314106],
     4607                             [- 6.27254799, - 0.00067701, 0.00041489, 7.27187098, 0.99793146, 0.99890810, 0.49314111],
     4608                             [- 6.27254834, - 0.00067686, 0.00041480, 7.27187148, 0.99793191, 0.99890834, 0.49314118],
     4609                             [- 6.27254870, - 0.00067671, 0.00041471, 7.27187199, 0.99793236, 0.99890858, 0.49314123],
     4610                             [- 6.27254905, - 0.00067656, 0.00041462, 7.27187249, 0.99793282, 0.99890882, 0.49314127],
     4611                             [- 6.27254941, - 0.00067642, 0.00041453, 7.27187299, 0.99793327, 0.99890905, 0.49314132],
     4612                             [- 6.27254976, - 0.00067627, 0.00041444, 7.27187349, 0.99793372, 0.99890929, 0.49314138],
     4613                             [- 6.27255012, - 0.00067612, 0.00041435, 7.27187399, 0.99793417, 0.99890953, 0.49314144],
     4614                             [- 6.27255047, - 0.00067597, 0.00041426, 7.27187450, 0.99793462, 0.99890977, 0.49314149],
     4615                             [- 6.27255082, - 0.00067583, 0.00041417, 7.27187500, 0.99793507, 0.99891001, 0.49314155],
     4616                             [- 6.27255118, - 0.00067568, 0.00041408, 7.27187550, 0.99793552, 0.99891025, 0.49314159],
     4617                             [- 6.27255153, - 0.00067553, 0.00041399, 7.27187600, 0.99793597, 0.99891048, 0.49314164],
     4618                             [- 6.27255188, - 0.00067538, 0.00041390, 7.27187650, 0.99793643, 0.99891072, 0.49314169],
     4619                             [- 6.27255224, - 0.00067524, 0.00041381, 7.27187700, 0.99793688, 0.99891096, 0.49314176],
     4620                             [- 6.27255259, - 0.00067509, 0.00041372, 7.27187750, 0.99793733, 0.99891120, 0.49314181],
     4621                             [- 6.27255294, - 0.00067494, 0.00041362, 7.27187800, 0.99793778, 0.99891143, 0.49314185],
     4622                             [- 6.27255330, - 0.00067479, 0.00041353, 7.27187850, 0.99793823, 0.99891167, 0.49314190],
     4623                             [- 6.27255365, - 0.00067465, 0.00041344, 7.27187900, 0.99793868, 0.99891191, 0.49314197],
     4624                             [- 6.27255400, - 0.00067450, 0.00041335, 7.27187950, 0.99793912, 0.99891215, 0.49314200],
     4625                             [- 6.27255435, - 0.00067435, 0.00041326, 7.27188000, 0.99793957, 0.99891238, 0.49314208],
     4626                             [- 6.27255470, - 0.00067421, 0.00041317, 7.27188050, 0.99794002, 0.99891262, 0.49314213],
     4627                             [- 6.27255506, - 0.00067406, 0.00041308, 7.27188100, 0.99794047, 0.99891286, 0.49314217],
     4628                             [- 6.27255541, - 0.00067391, 0.00041299, 7.27188150, 0.99794092, 0.99891309, 0.49314220],
     4629                             [- 6.27255576, - 0.00067377, 0.00041290, 7.27188199, 0.99794137, 0.99891333, 0.49314225],
     4630                             [- 6.27255611, - 0.00067362, 0.00041281, 7.27188249, 0.99794182, 0.99891357, 0.49314232],
     4631                             [- 6.27255646, - 0.00067347, 0.00041272, 7.27188299, 0.99794227, 0.99891380, 0.49314238],
     4632                             [- 6.27255681, - 0.00067333, 0.00041263, 7.27188349, 0.99794271, 0.99891404, 0.49314241],
     4633                             [- 6.27255717, - 0.00067318, 0.00041254, 7.27188398, 0.99794316, 0.99891428, 0.49314247],
     4634                             [- 6.27255752, - 0.00067303, 0.00041245, 7.27188448, 0.99794361, 0.99891451, 0.49314253],
     4635                             [- 6.27255787, - 0.00067289, 0.00041236, 7.27188498, 0.99794406, 0.99891475, 0.49314258],
     4636                             [- 6.27255822, - 0.00067274, 0.00041228, 7.27188548, 0.99794450, 0.99891498, 0.49314263],
     4637                             [- 6.27255857, - 0.00067260, 0.00041219, 7.27188597, 0.99794495, 0.99891522, 0.49314268],
     4638                             [- 6.27255892, - 0.00067245, 0.00041210, 7.27188647, 0.99794540, 0.99891545, 0.49314274],
     4639                             [- 6.27255927, - 0.00067230, 0.00041201, 7.27188696, 0.99794584, 0.99891569, 0.49314280],
     4640                             [- 6.27255962, - 0.00067216, 0.00041192, 7.27188746, 0.99794629, 0.99891593, 0.49314284],
     4641                             [- 6.27255997, - 0.00067201, 0.00041183, 7.27188796, 0.99794673, 0.99891616, 0.49314287],
     4642                             [- 6.27256032, - 0.00067187, 0.00041174, 7.27188845, 0.99794718, 0.99891640, 0.49314297],
     4643                             [- 6.27256067, - 0.00067172, 0.00041165, 7.27188895, 0.99794763, 0.99891663, 0.49314303],
     4644                             [- 6.27256102, - 0.00067157, 0.00041156, 7.27188944, 0.99794807, 0.99891687, 0.49314307],
     4645                             [- 6.27256137, - 0.00067143, 0.00041147, 7.27188994, 0.99794852, 0.99891710, 0.49314312],
     4646                             [- 6.27256171, - 0.00067128, 0.00041138, 7.27189043, 0.99794896, 0.99891734, 0.49314315],
     4647                             [- 6.27256206, - 0.00067114, 0.00041129, 7.27189093, 0.99794941, 0.99891757, 0.49314322],
     4648                             [- 6.27256241, - 0.00067099, 0.00041120, 7.27189142, 0.99794985, 0.99891781, 0.49314325],
     4649                             [- 6.27256276, - 0.00067085, 0.00041111, 7.27189191, 0.99795030, 0.99891804, 0.49314333],
     4650                             [- 6.27256311, - 0.00067070, 0.00041102, 7.27189241, 0.99795074, 0.99891828, 0.49314337],
     4651                             [- 6.27256346, - 0.00067056, 0.00041093, 7.27189290, 0.99795119, 0.99891851, 0.49314340],
     4652                             [- 6.27256381, - 0.00067041, 0.00041085, 7.27189339, 0.99795163, 0.99891874, 0.49314348],
     4653                             [- 6.27256415, - 0.00067027, 0.00041076, 7.27189389, 0.99795207, 0.99891898, 0.49314353],
     4654                             [- 6.27256450, - 0.00067012, 0.00041067, 7.27189438, 0.99795252, 0.99891921, 0.49314358],
     4655                             [- 6.27256485, - 0.00066998, 0.00041058, 7.27189487, 0.99795296, 0.99891945, 0.49314365],
     4656                             [- 6.27256520, - 0.00066983, 0.00041049, 7.27189537, 0.99795340, 0.99891968, 0.49314368],
     4657                             [- 6.27256554, - 0.00066969, 0.00041040, 7.27189586, 0.99795385, 0.99891991, 0.49314376],
     4658                             [- 6.27256589, - 0.00066954, 0.00041031, 7.27189635, 0.99795429, 0.99892015, 0.49314379],
     4659                             [- 6.27256624, - 0.00066940, 0.00041022, 7.27189684, 0.99795473, 0.99892038, 0.49314383],
     4660                             [- 6.27256658, - 0.00066925, 0.00041013, 7.27189733, 0.99795517, 0.99892061, 0.49314389],
     4661                             [- 6.27256693, - 0.00066911, 0.00041005, 7.27189782, 0.99795562, 0.99892085, 0.49314395],
     4662                             [- 6.27256728, - 0.00066896, 0.00040996, 7.27189832, 0.99795606, 0.99892108, 0.49314398],
     4663                             [- 6.27256762, - 0.00066882, 0.00040987, 7.27189881, 0.99795650, 0.99892131, 0.49314403],
     4664                             [- 6.27256797, - 0.00066867, 0.00040978, 7.27189930, 0.99795694, 0.99892155, 0.49314409],
     4665                             [- 6.27256832, - 0.00066853, 0.00040969, 7.27189979, 0.99795738, 0.99892178, 0.49314415],
     4666                             [- 6.27256866, - 0.00066838, 0.00040960, 7.27190028, 0.99795782, 0.99892201, 0.49314419],
     4667                             [- 6.27256901, - 0.00066824, 0.00040951, 7.27190077, 0.99795827, 0.99892225, 0.49314425],
     4668                             [- 6.27256935, - 0.00066810, 0.00040943, 7.27190126, 0.99795871, 0.99892248, 0.49314428],
     4669                             [- 6.27256970, - 0.00066795, 0.00040934, 7.27190175, 0.99795915, 0.99892271, 0.49314436],
     4670                             [- 6.27257004, - 0.00066781, 0.00040925, 7.27190224, 0.99795959, 0.99892294, 0.49314439],
     4671                             [- 6.27257039, - 0.00066766, 0.00040916, 7.27190273, 0.99796003, 0.99892318, 0.49314446],
     4672                             [- 6.27257073, - 0.00066752, 0.00040907, 7.27190322, 0.99796047, 0.99892341, 0.49314452],
     4673                             [- 6.27257108, - 0.00066738, 0.00040898, 7.27190370, 0.99796091, 0.99892364, 0.49314453],
     4674                             [- 6.27257142, - 0.00066723, 0.00040890, 7.27190419, 0.99796135, 0.99892387, 0.49314460],
     4675                             [- 6.27257177, - 0.00066709, 0.00040881, 7.27190468, 0.99796179, 0.99892410, 0.49314466],
     4676                             [- 6.27257211, - 0.00066694, 0.00040872, 7.27190517, 0.99796223, 0.99892434, 0.49314470],
     4677                             [- 6.27257246, - 0.00066680, 0.00040863, 7.27190566, 0.99796267, 0.99892457, 0.49314476],
     4678                             [- 6.27257280, - 0.00066666, 0.00040854, 7.27190615, 0.99796311, 0.99892480, 0.49314482],
     4679                             [- 6.27257315, - 0.00066651, 0.00040846, 7.27190663, 0.99796354, 0.99892503, 0.49314486],
     4680                             [- 6.27257349, - 0.00066637, 0.00040837, 7.27190712, 0.99796398, 0.99892526, 0.49314490],
     4681                             [- 6.27257383, - 0.00066623, 0.00040828, 7.27190761, 0.99796442, 0.99892549, 0.49314498],
     4682                             [- 6.27257418, - 0.00066608, 0.00040819, 7.27190809, 0.99796486, 0.99892573, 0.49314501],
     4683                             [- 6.27257452, - 0.00066594, 0.00040810, 7.27190858, 0.99796530, 0.99892596, 0.49314505],
     4684                             [- 6.27257486, - 0.00066580, 0.00040802, 7.27190907, 0.99796574, 0.99892619, 0.49314512],
     4685                             [- 6.27257521, - 0.00066565, 0.00040793, 7.27190955, 0.99796617, 0.99892642, 0.49314515],
     4686                             [- 6.27257555, - 0.00066551, 0.00040784, 7.27191004, 0.99796661, 0.99892665, 0.49314521],
     4687                             [- 6.27257589, - 0.00066537, 0.00040775, 7.27191053, 0.99796705, 0.99892688, 0.49314528],
     4688                             [- 6.27257623, - 0.00066522, 0.00040766, 7.27191101, 0.99796748, 0.99892711, 0.49314532],
     4689                             [- 6.27257658, - 0.00066508, 0.00040758, 7.27191150, 0.99796792, 0.99892734, 0.49314537],
     4690                             [- 6.27257692, - 0.00066494, 0.00040749, 7.27191198, 0.99796836, 0.99892757, 0.49314541],
     4691                             [- 6.27257726, - 0.00066480, 0.00040740, 7.27191247, 0.99796880, 0.99892780, 0.49314547],
     4692                             [- 6.27257760, - 0.00066465, 0.00040731, 7.27191295, 0.99796923, 0.99892803, 0.49314555],
     4693                             [- 6.27257795, - 0.00066451, 0.00040723, 7.27191344, 0.99796967, 0.99892826, 0.49314558],
     4694                             [- 6.27257829, - 0.00066437, 0.00040714, 7.27191392, 0.99797010, 0.99892849, 0.49314564],
     4695                             [- 6.27257863, - 0.00066422, 0.00040705, 7.27191440, 0.99797054, 0.99892872, 0.49314568],
     4696                             [- 6.27257897, - 0.00066408, 0.00040696, 7.27191489, 0.99797098, 0.99892895, 0.49314573],
     4697                             [- 6.27257931, - 0.00066394, 0.00040688, 7.27191537, 0.99797141, 0.99892918, 0.49314579],
     4698                             [- 6.27257965, - 0.00066380, 0.00040679, 7.27191586, 0.99797185, 0.99892941, 0.49314582],
     4699                             [- 6.27257999, - 0.00066366, 0.00040670, 7.27191634, 0.99797228, 0.99892964, 0.49314588],
     4700                             [- 6.27258033, - 0.00066351, 0.00040662, 7.27191682, 0.99797272, 0.99892987, 0.49314593],
     4701                             [- 6.27258068, - 0.00066337, 0.00040653, 7.27191730, 0.99797315, 0.99893010, 0.49314598],
     4702                             [- 6.27258102, - 0.00066323, 0.00040644, 7.27191779, 0.99797358, 0.99893033, 0.49314603],
     4703                             [- 6.27258136, - 0.00066309, 0.00040635, 7.27191827, 0.99797402, 0.99893056, 0.49314608],
     4704                             [- 6.27258170, - 0.00066294, 0.00040627, 7.27191875, 0.99797445, 0.99893079, 0.49314611],
     4705                             [- 6.27258204, - 0.00066280, 0.00040618, 7.27191923, 0.99797489, 0.99893102, 0.49314621],
     4706                             [- 6.27258238, - 0.00066266, 0.00040609, 7.27191972, 0.99797532, 0.99893125, 0.49314623],
     4707                             [- 6.27258272, - 0.00066252, 0.00040601, 7.27192020, 0.99797575, 0.99893148, 0.49314626],
     4708                             [- 6.27258306, - 0.00066238, 0.00040592, 7.27192068, 0.99797619, 0.99893170, 0.49314635],
     4709                             [- 6.27258340, - 0.00066224, 0.00040583, 7.27192116, 0.99797662, 0.99893193, 0.49314639],
     4710                             [- 6.27258373, - 0.00066209, 0.00040574, 7.27192164, 0.99797705, 0.99893216, 0.49314644],
     4711                             [- 6.27258407, - 0.00066195, 0.00040566, 7.27192212, 0.99797749, 0.99893239, 0.49314649],
     4712                             [- 6.27258441, - 0.00066181, 0.00040557, 7.27192260, 0.99797792, 0.99893262, 0.49314651],
     4713                             [- 6.27258475, - 0.00066167, 0.00040548, 7.27192308, 0.99797835, 0.99893285, 0.49314660],
     4714                             [- 6.27258509, - 0.00066153, 0.00040540, 7.27192356, 0.99797878, 0.99893307, 0.49314663],
     4715                             [- 6.27258543, - 0.00066139, 0.00040531, 7.27192404, 0.99797922, 0.99893330, 0.49314669],
     4716                             [- 6.27258577, - 0.00066125, 0.00040522, 7.27192452, 0.99797965, 0.99893353, 0.49314673],
     4717                             [- 6.27258611, - 0.00066110, 0.00040514, 7.27192500, 0.99798008, 0.99893376, 0.49314679],
     4718                             [- 6.27258644, - 0.00066096, 0.00040505, 7.27192548, 0.99798051, 0.99893399, 0.49314686],
     4719                             [- 6.27258678, - 0.00066082, 0.00040496, 7.27192596, 0.99798094, 0.99893421, 0.49314689],
     4720                             [- 6.27258712, - 0.00066068, 0.00040488, 7.27192644, 0.99798137, 0.99893444, 0.49314694],
     4721                             [- 6.27258746, - 0.00066054, 0.00040479, 7.27192692, 0.99798181, 0.99893467, 0.49314700],
     4722                             [- 6.27258780, - 0.00066040, 0.00040471, 7.27192740, 0.99798224, 0.99893490, 0.49314705],
     4723                             [- 6.27258813, - 0.00066026, 0.00040462, 7.27192788, 0.99798267, 0.99893512, 0.49314708],
     4724                             [- 6.27258847, - 0.00066012, 0.00040453, 7.27192835, 0.99798310, 0.99893535, 0.49314712],
     4725                             [- 6.27258881, - 0.00065998, 0.00040445, 7.27192883, 0.99798353, 0.99893558, 0.49314719],
     4726                             [- 6.27258914, - 0.00065984, 0.00040436, 7.27192931, 0.99798396, 0.99893580, 0.49314727],
     4727                             [- 6.27258948, - 0.00065970, 0.00040427, 7.27192979, 0.99798439, 0.99893603, 0.49314727],
     4728                             [- 6.27258982, - 0.00065955, 0.00040419, 7.27193026, 0.99798482, 0.99893626, 0.49314731],
     4729                             [- 6.27259015, - 0.00065941, 0.00040410, 7.27193074, 0.99798525, 0.99893648, 0.49314740],
     4730                             [- 6.27259049, - 0.00065927, 0.00040401, 7.27193122, 0.99798568, 0.99893671, 0.49314745],
     4731                             [- 6.27259083, - 0.00065913, 0.00040393, 7.27193169, 0.99798610, 0.99893694, 0.49314746],
     4732                             [- 6.27259116, - 0.00065899, 0.00040384, 7.27193217, 0.99798653, 0.99893716, 0.49314754],
     4733                             [- 6.27259150, - 0.00065885, 0.00040376, 7.27193265, 0.99798696, 0.99893739, 0.49314761],
     4734                             [- 6.27259184, - 0.00065871, 0.00040367, 7.27193312, 0.99798739, 0.99893762, 0.49314766],
     4735                             [- 6.27259217, - 0.00065857, 0.00040358, 7.27193360, 0.99798782, 0.99893784, 0.49314769],
     4736                             [- 6.27259251, - 0.00065843, 0.00040350, 7.27193407, 0.99798825, 0.99893807, 0.49314775],
     4737                             [- 6.27259284, - 0.00065829, 0.00040341, 7.27193455, 0.99798868, 0.99893829, 0.49314778],
     4738                             [- 6.27259318, - 0.00065815, 0.00040333, 7.27193502, 0.99798910, 0.99893852, 0.49314784],
     4739                             [- 6.27259351, - 0.00065801, 0.00040324, 7.27193550, 0.99798953, 0.99893875, 0.49314788],
     4740                             [- 6.27259385, - 0.00065787, 0.00040316, 7.27193597, 0.99798996, 0.99893897, 0.49314794],
     4741                             [- 6.27259418, - 0.00065773, 0.00040307, 7.27193645, 0.99799039, 0.99893920, 0.49314799],
     4742                             [- 6.27259452, - 0.00065759, 0.00040298, 7.27193692, 0.99799081, 0.99893942, 0.49314805],
     4743                             [- 6.27259485, - 0.00065745, 0.00040290, 7.27193740, 0.99799124, 0.99893965, 0.49314807],
     4744                             [- 6.27259519, - 0.00065731, 0.00040281, 7.27193787, 0.99799167, 0.99893987, 0.49314813],
     4745                             [- 6.27259552, - 0.00065717, 0.00040273, 7.27193835, 0.99799209, 0.99894010, 0.49314822],
     4746                             [- 6.27259585, - 0.00065703, 0.00040264, 7.27193882, 0.99799252, 0.99894032, 0.49314825],
     4747                             [- 6.27259619, - 0.00065690, 0.00040256, 7.27193929, 0.99799295, 0.99894055, 0.49314830],
     4748                             [- 6.27259652, - 0.00065676, 0.00040247, 7.27193977, 0.99799337, 0.99894077, 0.49314836],
     4749                             [- 6.27259686, - 0.00065662, 0.00040239, 7.27194024, 0.99799380, 0.99894100, 0.49314839],
     4750                             [- 6.27259719, - 0.00065648, 0.00040230, 7.27194071, 0.99799422, 0.99894122, 0.49314844],
     4751                             [- 6.27259752, - 0.00065634, 0.00040221, 7.27194118, 0.99799465, 0.99894145, 0.49314848],
     4752                             [- 6.27259786, - 0.00065620, 0.00040213, 7.27194166, 0.99799507, 0.99894167, 0.49314852],
     4753                             [- 6.27259819, - 0.00065606, 0.00040204, 7.27194213, 0.99799550, 0.99894190, 0.49314858],
     4754                             [- 6.27259852, - 0.00065592, 0.00040196, 7.27194260, 0.99799593, 0.99894212, 0.49314864],
     4755                             [- 6.27259885, - 0.00065578, 0.00040187, 7.27194307, 0.99799635, 0.99894234, 0.49314867],
     4756                             [- 6.27259919, - 0.00065564, 0.00040179, 7.27194354, 0.99799677, 0.99894257, 0.49314872],
     4757                             [- 6.27259952, - 0.00065550, 0.00040170, 7.27194402, 0.99799720, 0.99894279, 0.49314880],
     4758                             [- 6.27259985, - 0.00065537, 0.00040162, 7.27194449, 0.99799762, 0.99894302, 0.49314880],
     4759                             [- 6.27260018, - 0.00065523, 0.00040153, 7.27194496, 0.99799805, 0.99894324, 0.49314888],
     4760                             [- 6.27260052, - 0.00065509, 0.00040145, 7.27194543, 0.99799847, 0.99894346, 0.49314897],
     4761                             [- 6.27260085, - 0.00065495, 0.00040136, 7.27194590, 0.99799889, 0.99894369, 0.49314899],
     4762                             [- 6.27260118, - 0.00065481, 0.00040128, 7.27194637, 0.99799932, 0.99894391, 0.49314902],
     4763                             [- 6.27260151, - 0.00065467, 0.00040119, 7.27194684, 0.99799974, 0.99894413, 0.49314908],
     4764                             [- 6.27260184, - 0.00065453, 0.00040111, 7.27194731, 0.99800016, 0.99894436, 0.49314911],
     4765                             [- 6.27260217, - 0.00065440, 0.00040102, 7.27194778, 0.99800059, 0.99894458, 0.49314920],
     4766                             [- 6.27260251, - 0.00065426, 0.00040094, 7.27194825, 0.99800101, 0.99894480, 0.49314922],
     4767                             [- 6.27260284, - 0.00065412, 0.00040085, 7.27194872, 0.99800143, 0.99894503, 0.49314928],
     4768                             [- 6.27260317, - 0.00065398, 0.00040077, 7.27194919, 0.99800186, 0.99894525, 0.49314931],
     4769                             [- 6.27260350, - 0.00065384, 0.00040068, 7.27194966, 0.99800228, 0.99894547, 0.49314937],
     4770                             [- 6.27260383, - 0.00065370, 0.00040060, 7.27195013, 0.99800270, 0.99894570, 0.49314942],
     4771                             [- 6.27260416, - 0.00065357, 0.00040051, 7.27195059, 0.99800312, 0.99894592, 0.49314947],
     4772                             [- 6.27260449, - 0.00065343, 0.00040043, 7.27195106, 0.99800354, 0.99894614, 0.49314952],
     4773                             [- 6.27260482, - 0.00065329, 0.00040035, 7.27195153, 0.99800397, 0.99894636, 0.49314960],
     4774                             [- 6.27260515, - 0.00065315, 0.00040026, 7.27195200, 0.99800439, 0.99894659, 0.49314963],
     4775                             [- 6.27260548, - 0.00065302, 0.00040018, 7.27195247, 0.99800481, 0.99894681, 0.49314965],
     4776                             [- 6.27260581, - 0.00065288, 0.00040009, 7.27195293, 0.99800523, 0.99894703, 0.49314972],
     4777                             [- 6.27260614, - 0.00065274, 0.00040001, 7.27195340, 0.99800565, 0.99894725, 0.49314975],
     4778                             [- 6.27260647, - 0.00065260, 0.00039992, 7.27195387, 0.99800607, 0.99894747, 0.49314983],
     4779                             [- 6.27260680, - 0.00065246, 0.00039984, 7.27195434, 0.99800649, 0.99894770, 0.49314987],
     4780                             [- 6.27260713, - 0.00065233, 0.00039975, 7.27195480, 0.99800691, 0.99894792, 0.49314994],
     4781                             [- 6.27260746, - 0.00065219, 0.00039967, 7.27195527, 0.99800733, 0.99894814, 0.49314996],
     4782                             [- 6.27260779, - 0.00065205, 0.00039959, 7.27195573, 0.99800775, 0.99894836, 0.49314998],
     4783                             [- 6.27260812, - 0.00065192, 0.00039950, 7.27195620, 0.99800817, 0.99894858, 0.49315004],
     4784                             [- 6.27260844, - 0.00065178, 0.00039942, 7.27195667, 0.99800859, 0.99894880, 0.49315011],
     4785                             [- 6.27260877, - 0.00065164, 0.00039933, 7.27195713, 0.99800901, 0.99894903, 0.49315016],
     4786                             [- 6.27260910, - 0.00065150, 0.00039925, 7.27195760, 0.99800943, 0.99894925, 0.49315020],
     4787                             [- 6.27260943, - 0.00065137, 0.00039917, 7.27195806, 0.99800985, 0.99894947, 0.49315028],
     4788                             [- 6.27260976, - 0.00065123, 0.00039908, 7.27195853, 0.99801027, 0.99894969, 0.49315027],
     4789                             [- 6.27261009, - 0.00065109, 0.00039900, 7.27195899, 0.99801069, 0.99894991, 0.49315035],
     4790                             [- 6.27261041, - 0.00065096, 0.00039891, 7.27195946, 0.99801110, 0.99895013, 0.49315041],
     4791                             [- 6.27261074, - 0.00065082, 0.00039883, 7.27195992, 0.99801152, 0.99895035, 0.49315047],
     4792                             [- 6.27261107, - 0.00065068, 0.00039875, 7.27196039, 0.99801194, 0.99895057, 0.49315053],
     4793                             [- 6.27261140, - 0.00065055, 0.00039866, 7.27196085, 0.99801236, 0.99895079, 0.49315055],
     4794                             [- 6.27261172, - 0.00065041, 0.00039858, 7.27196132, 0.99801278, 0.99895101, 0.49315059],
     4795                             [- 6.27261205, - 0.00065027, 0.00039849, 7.27196178, 0.99801320, 0.99895123, 0.49315063],
     4796                             [- 6.27261238, - 0.00065014, 0.00039841, 7.27196224, 0.99801361, 0.99895145, 0.49315070],
     4797                             [- 6.27261271, - 0.00065000, 0.00039833, 7.27196271, 0.99801403, 0.99895167, 0.49315074],
     4798                             [- 6.27261303, - 0.00064986, 0.00039824, 7.27196317, 0.99801445, 0.99895189, 0.49315081],
     4799                             [- 6.27261336, - 0.00064973, 0.00039816, 7.27196363, 0.99801486, 0.99895212, 0.49315083],
     4800                             [- 6.27261369, - 0.00064959, 0.00039808, 7.27196410, 0.99801528, 0.99895233, 0.49315088],
     4801                             [- 6.27261401, - 0.00064945, 0.00039799, 7.27196456, 0.99801570, 0.99895255, 0.49315095],
     4802                             [- 6.27261434, - 0.00064932, 0.00039791, 7.27196502, 0.99801611, 0.99895277, 0.49315102],
     4803                             [- 6.27261466, - 0.00064918, 0.00039782, 7.27196548, 0.99801653, 0.99895299, 0.49315101],
     4804                             [- 6.27261499, - 0.00064904, 0.00039774, 7.27196595, 0.99801695, 0.99895321, 0.49315109],
     4805                             [- 6.27261532, - 0.00064891, 0.00039766, 7.27196641, 0.99801736, 0.99895343, 0.49315112],
     4806                             [- 6.27261564, - 0.00064877, 0.00039757, 7.27196687, 0.99801778, 0.99895365, 0.49315120],
     4807                             [- 6.27261597, - 0.00064864, 0.00039749, 7.27196733, 0.99801819, 0.99895387, 0.49315122],
     4808                             [- 6.27261629, - 0.00064850, 0.00039741, 7.27196779, 0.99801861, 0.99895409, 0.49315129],
     4809                             [- 6.27261662, - 0.00064836, 0.00039732, 7.27196825, 0.99801902, 0.99895431, 0.49315134],
     4810                             [- 6.27261694, - 0.00064823, 0.00039724, 7.27196871, 0.99801944, 0.99895453, 0.49315136],
     4811                             [- 6.27261727, - 0.00064809, 0.00039716, 7.27196917, 0.99801985, 0.99895475, 0.49315141],
     4812                             [- 6.27261759, - 0.00064796, 0.00039707, 7.27196963, 0.99802027, 0.99895497, 0.49315149],
     4813                             [- 6.27261792, - 0.00064782, 0.00039699, 7.27197009, 0.99802068, 0.99895519, 0.49315153],
     4814                             [- 6.27261824, - 0.00064769, 0.00039691, 7.27197056, 0.99802110, 0.99895540, 0.49315156],
     4815                             [- 6.27261857, - 0.00064755, 0.00039683, 7.27197101, 0.99802151, 0.99895562, 0.49315162],
     4816                             [- 6.27261889, - 0.00064742, 0.00039674, 7.27197147, 0.99802193, 0.99895584, 0.49315167],
     4817                             [- 6.27261921, - 0.00064728, 0.00039666, 7.27197193, 0.99802234, 0.99895606, 0.49315173],
     4818                             [- 6.27261954, - 0.00064715, 0.00039658, 7.27197239, 0.99802275, 0.99895628, 0.49315176],
     4819                             [- 6.27261986, - 0.00064701, 0.00039649, 7.27197285, 0.99802317, 0.99895650, 0.49315180],
     4820                             [- 6.27262019, - 0.00064687, 0.00039641, 7.27197331, 0.99802358, 0.99895671, 0.49315186],
     4821                             [- 6.27262051, - 0.00064674, 0.00039633, 7.27197377, 0.99802399, 0.99895693, 0.49315191],
     4822                             [- 6.27262083, - 0.00064660, 0.00039624, 7.27197423, 0.99802441, 0.99895715, 0.49315198],
     4823                             [- 6.27262116, - 0.00064647, 0.00039616, 7.27197469, 0.99802482, 0.99895737, 0.49315200],
     4824                             [- 6.27262148, - 0.00064633, 0.00039608, 7.27197515, 0.99802523, 0.99895759, 0.49315204],
     4825                             [- 6.27262180, - 0.00064620, 0.00039600, 7.27197560, 0.99802564, 0.99895780, 0.49315211],
     4826                             [- 6.27262213, - 0.00064606, 0.00039591, 7.27197606, 0.99802606, 0.99895802, 0.49315216],
     4827                             [- 6.27262245, - 0.00064593, 0.00039583, 7.27197652, 0.99802647, 0.99895824, 0.49315219],
     4828                             [- 6.27262277, - 0.00064579, 0.00039575, 7.27197698, 0.99802688, 0.99895846, 0.49315225],
     4829                             [- 6.27262309, - 0.00064566, 0.00039567, 7.27197743, 0.99802729, 0.99895867, 0.49315226],
     4830                             [- 6.27262342, - 0.00064553, 0.00039558, 7.27197789, 0.99802770, 0.99895889, 0.49315233],
     4831                             [- 6.27262374, - 0.00064539, 0.00039550, 7.27197835, 0.99802812, 0.99895911, 0.49315238],
     4832                             [- 6.27262406, - 0.00064526, 0.00039542, 7.27197880, 0.99802853, 0.99895933, 0.49315244],
     4833                             [- 6.27262438, - 0.00064512, 0.00039534, 7.27197926, 0.99802894, 0.99895954, 0.49315248],
     4834                             [- 6.27262470, - 0.00064499, 0.00039525, 7.27197972, 0.99802935, 0.99895976, 0.49315254],
     4835                             [- 6.27262503, - 0.00064485, 0.00039517, 7.27198017, 0.99802976, 0.99895998, 0.49315255],
     4836                             [- 6.27262535, - 0.00064472, 0.00039509, 7.27198063, 0.99803017, 0.99896019, 0.49315260],
     4837                             [- 6.27262567, - 0.00064458, 0.00039501, 7.27198108, 0.99803058, 0.99896041, 0.49315266],
     4838                             [- 6.27262599, - 0.00064445, 0.00039492, 7.27198154, 0.99803099, 0.99896063, 0.49315272],
     4839                             [- 6.27262631, - 0.00064432, 0.00039484, 7.27198199, 0.99803140, 0.99896084, 0.49315276],
     4840                             [- 6.27262663, - 0.00064418, 0.00039476, 7.27198245, 0.99803181, 0.99896106, 0.49315283],
     4841                             [- 6.27262695, - 0.00064405, 0.00039468, 7.27198290, 0.99803222, 0.99896127, 0.49315287],
     4842                             [- 6.27262727, - 0.00064391, 0.00039460, 7.27198336, 0.99803263, 0.99896149, 0.49315291],
     4843                             [- 6.27262759, - 0.00064378, 0.00039451, 7.27198381, 0.99803304, 0.99896171, 0.49315298],
     4844                             [- 6.27262792, - 0.00064365, 0.00039443, 7.27198427, 0.99803345, 0.99896192, 0.49315301],
     4845                             [- 6.27262824, - 0.00064351, 0.00039435, 7.27198472, 0.99803386, 0.99896214, 0.49315305],
     4846                             [- 6.27262856, - 0.00064338, 0.00039427, 7.27198518, 0.99803427, 0.99896235, 0.49315310],
     4847                             [- 6.27262888, - 0.00064325, 0.00039418, 7.27198563, 0.99803468, 0.99896257, 0.49315315],
     4848                             [- 6.27262920, - 0.00064311, 0.00039410, 7.27198608, 0.99803508, 0.99896279, 0.49315320],
     4849                             [- 6.27262952, - 0.00064298, 0.00039402, 7.27198654, 0.99803549, 0.99896300, 0.49315324],
     4850                             [- 6.27262984, - 0.00064284, 0.00039394, 7.27198699, 0.99803590, 0.99896322, 0.49315329],
     4851                             [- 6.27263015, - 0.00064271, 0.00039386, 7.27198744, 0.99803631, 0.99896343, 0.49315335],
     4852                             [- 6.27263047, - 0.00064258, 0.00039378, 7.27198790, 0.99803672, 0.99896365, 0.49315341],
     4853                             [- 6.27263079, - 0.00064244, 0.00039369, 7.27198835, 0.99803712, 0.99896386, 0.49315341],
     4854                             [- 6.27263111, - 0.00064231, 0.00039361, 7.27198880, 0.99803753, 0.99896408, 0.49315348],
     4855                             [- 6.27263143, - 0.00064218, 0.00039353, 7.27198925, 0.99803794, 0.99896429, 0.49315355],
     4856                             [- 6.27263175, - 0.00064204, 0.00039345, 7.27198971, 0.99803835, 0.99896451, 0.49315360],
     4857                             [- 6.27263207, - 0.00064191, 0.00039337, 7.27199016, 0.99803875, 0.99896472, 0.49315362],
     4858                             [- 6.27263239, - 0.00064178, 0.00039329, 7.27199061, 0.99803916, 0.99896494, 0.49315366],
     4859                             [- 6.27263271, - 0.00064165, 0.00039320, 7.27199106, 0.99803957, 0.99896515, 0.49315370],
     4860                             [- 6.27263302, - 0.00064151, 0.00039312, 7.27199151, 0.99803997, 0.99896537, 0.49315378],
     4861                             [- 6.27263334, - 0.00064138, 0.00039304, 7.27199196, 0.99804038, 0.99896558, 0.49315382],
     4862                             [- 6.27263366, - 0.00064125, 0.00039296, 7.27199241, 0.99804079, 0.99896579, 0.49315384],
     4863                             [- 6.27263398, - 0.00064111, 0.00039288, 7.27199287, 0.99804119, 0.99896601, 0.49315390],
     4864                             [- 6.27263430, - 0.00064098, 0.00039280, 7.27199332, 0.99804160, 0.99896622, 0.49315398],
     4865                             [- 6.27263461, - 0.00064085, 0.00039271, 7.27199377, 0.99804200, 0.99896644, 0.49315398],
     4866                             [- 6.27263493, - 0.00064072, 0.00039263, 7.27199422, 0.99804241, 0.99896665, 0.49315402],
     4867                             [- 6.27263525, - 0.00064058, 0.00039255, 7.27199467, 0.99804281, 0.99896686, 0.49315410],
     4868                             [- 6.27263557, - 0.00064045, 0.00039247, 7.27199512, 0.99804322, 0.99896708, 0.49315415],
     4869                             [- 6.27263588, - 0.00064032, 0.00039239, 7.27199557, 0.99804362, 0.99896729, 0.49315420],
     4870                             [- 6.27263620, - 0.00064019, 0.00039231, 7.27199602, 0.99804403, 0.99896751, 0.49315423],
     4871                             [- 6.27263652, - 0.00064005, 0.00039223, 7.27199646, 0.99804443, 0.99896772, 0.49315429],
     4872                             [- 6.27263683, - 0.00063992, 0.00039215, 7.27199691, 0.99804484, 0.99896793, 0.49315433],
     4873                             [- 6.27263715, - 0.00063979, 0.00039206, 7.27199736, 0.99804524, 0.99896815, 0.49315438],
     4874                             [- 6.27263747, - 0.00063966, 0.00039198, 7.27199781, 0.99804565, 0.99896836, 0.49315441],
     4875                             [- 6.27263778, - 0.00063952, 0.00039190, 7.27199826, 0.99804605, 0.99896857, 0.49315445],
     4876                             [- 6.27263810, - 0.00063939, 0.00039182, 7.27199871, 0.99804645, 0.99896879, 0.49315452],
     4877                             [- 6.27263842, - 0.00063926, 0.00039174, 7.27199916, 0.99804686, 0.99896900, 0.49315453],
     4878                             [- 6.27263873, - 0.00063913, 0.00039166, 7.27199960, 0.99804726, 0.99896921, 0.49315461],
     4879                             [- 6.27263905, - 0.00063900, 0.00039158, 7.27200005, 0.99804766, 0.99896942, 0.49315465],
     4880                             [- 6.27263936, - 0.00063886, 0.00039150, 7.27200050, 0.99804807, 0.99896964, 0.49315471],
     4881                             [- 6.27263968, - 0.00063873, 0.00039142, 7.27200095, 0.99804847, 0.99896985, 0.49315476],
     4882                             [- 6.27263999, - 0.00063860, 0.00039134, 7.27200139, 0.99804887, 0.99897006, 0.49315480],
     4883                             [- 6.27264031, - 0.00063847, 0.00039126, 7.27200184, 0.99804928, 0.99897028, 0.49315486],
     4884                             [- 6.27264063, - 0.00063834, 0.00039117, 7.27200229, 0.99804968, 0.99897049, 0.49315489],
     4885                             [- 6.27264094, - 0.00063821, 0.00039109, 7.27200273, 0.99805008, 0.99897070, 0.49315491],
     4886                             [- 6.27264126, - 0.00063807, 0.00039101, 7.27200318, 0.99805048, 0.99897091, 0.49315503],
     4887                             [- 6.27264157, - 0.00063794, 0.00039093, 7.27200363, 0.99805088, 0.99897112, 0.49315504],
     4888                             [- 6.27264188, - 0.00063781, 0.00039085, 7.27200407, 0.99805129, 0.99897134, 0.49315507],
     4889                             [- 6.27264220, - 0.00063768, 0.00039077, 7.27200452, 0.99805169, 0.99897155, 0.49315512],
     4890                             [- 6.27264251, - 0.00063755, 0.00039069, 7.27200496, 0.99805209, 0.99897176, 0.49315517],
     4891                             [- 6.27264283, - 0.00063742, 0.00039061, 7.27200541, 0.99805249, 0.99897197, 0.49315521],
     4892                             [- 6.27264314, - 0.00063729, 0.00039053, 7.27200586, 0.99805289, 0.99897218, 0.49315529],
     4893                             [- 6.27264346, - 0.00063716, 0.00039045, 7.27200630, 0.99805329, 0.99897240, 0.49315533],
     4894                             [- 6.27264377, - 0.00063702, 0.00039037, 7.27200675, 0.99805369, 0.99897261, 0.49315538],
     4895                             [- 6.27264408, - 0.00063689, 0.00039029, 7.27200719, 0.99805409, 0.99897282, 0.49315540],
     4896                             [- 6.27264440, - 0.00063676, 0.00039021, 7.27200764, 0.99805450, 0.99897303, 0.49315545],
     4897                             [- 6.27264471, - 0.00063663, 0.00039013, 7.27200808, 0.99805490, 0.99897324, 0.49315550],
     4898                             [- 6.27264502, - 0.00063650, 0.00039005, 7.27200852, 0.99805530, 0.99897345, 0.49315556],
     4899                             [- 6.27264534, - 0.00063637, 0.00038997, 7.27200897, 0.99805570, 0.99897366, 0.49315563],
     4900                             [- 6.27264565, - 0.00063624, 0.00038989, 7.27200941, 0.99805610, 0.99897387, 0.49315563],
     4901                             [- 6.27264596, - 0.00063611, 0.00038981, 7.27200986, 0.99805649, 0.99897409, 0.49315568],
     4902                             [- 6.27264628, - 0.00063598, 0.00038973, 7.27201030, 0.99805689, 0.99897430, 0.49315572],
     4903                             [- 6.27264659, - 0.00063585, 0.00038965, 7.27201074, 0.99805729, 0.99897451, 0.49315579],
     4904                             [- 6.27264690, - 0.00063572, 0.00038957, 7.27201119, 0.99805769, 0.99897472, 0.49315582],
     4905                             [- 6.27264721, - 0.00063559, 0.00038949, 7.27201163, 0.99805809, 0.99897493, 0.49315589],
     4906                             [- 6.27264753, - 0.00063545, 0.00038941, 7.27201207, 0.99805849, 0.99897514, 0.49315595],
     4907                             [- 6.27264784, - 0.00063532, 0.00038933, 7.27201251, 0.99805889, 0.99897535, 0.49315600],
     4908                             [- 6.27264815, - 0.00063519, 0.00038925, 7.27201296, 0.99805929, 0.99897556, 0.49315603],
     4909                             [- 6.27264846, - 0.00063506, 0.00038917, 7.27201340, 0.99805969, 0.99897577, 0.49315606],
     4910                             [- 6.27264877, - 0.00063493, 0.00038909, 7.27201384, 0.99806008, 0.99897598, 0.49315609],
     4911                             [- 6.27264909, - 0.00063480, 0.00038901, 7.27201428, 0.99806048, 0.99897619, 0.49315614],
     4912                             [- 6.27264940, - 0.00063467, 0.00038893, 7.27201472, 0.99806088, 0.99897640, 0.49315621],
     4913                             [- 6.27264971, - 0.00063454, 0.00038885, 7.27201517, 0.99806128, 0.99897661, 0.49315622],
     4914                             [- 6.27265002, - 0.00063441, 0.00038877, 7.27201561, 0.99806168, 0.99897682, 0.49315632],
     4915                             [- 6.27265033, - 0.00063428, 0.00038869, 7.27201605, 0.99806207, 0.99897703, 0.49315636],
     4916                             [- 6.27265064, - 0.00063415, 0.00038861, 7.27201649, 0.99806247, 0.99897724, 0.49315639],
     4917                             [- 6.27265095, - 0.00063402, 0.00038853, 7.27201693, 0.99806287, 0.99897745, 0.49315644],
     4918                             [- 6.27265126, - 0.00063389, 0.00038845, 7.27201737, 0.99806326, 0.99897766, 0.49315648],
     4919                             [- 6.27265157, - 0.00063376, 0.00038837, 7.27201781, 0.99806366, 0.99897787, 0.49315654],
     4920                             [- 6.27265189, - 0.00063363, 0.00038829, 7.27201825, 0.99806406, 0.99897808, 0.49315656],
     4921                             [- 6.27265220, - 0.00063350, 0.00038821, 7.27201869, 0.99806445, 0.99897829, 0.49315663],
     4922                             [- 6.27265251, - 0.00063337, 0.00038813, 7.27201913, 0.99806485, 0.99897849, 0.49315664],
     4923                             [- 6.27265282, - 0.00063324, 0.00038805, 7.27201957, 0.99806525, 0.99897870, 0.49315672],
     4924                             [- 6.27265313, - 0.00063312, 0.00038797, 7.27202001, 0.99806564, 0.99897891, 0.49315678],
     4925                             [- 6.27265344, - 0.00063299, 0.00038789, 7.27202045, 0.99806604, 0.99897912, 0.49315679],
     4926                             [- 6.27265375, - 0.00063286, 0.00038781, 7.27202089, 0.99806643, 0.99897933, 0.49315682],
     4927                             [- 6.27265406, - 0.00063273, 0.00038773, 7.27202133, 0.99806683, 0.99897954, 0.49315688],
     4928                             [- 6.27265436, - 0.00063260, 0.00038765, 7.27202177, 0.99806722, 0.99897975, 0.49315697],
     4929                             [- 6.27265467, - 0.00063247, 0.00038758, 7.27202221, 0.99806762, 0.99897996, 0.49315698],
     4930                             [- 6.27265498, - 0.00063234, 0.00038750, 7.27202264, 0.99806801, 0.99898016, 0.49315705],
     4931                             [- 6.27265529, - 0.00063221, 0.00038742, 7.27202308, 0.99806841, 0.99898037, 0.49315710],
     4932                             [- 6.27265560, - 0.00063208, 0.00038734, 7.27202352, 0.99806880, 0.99898058, 0.49315714],
     4933                             [- 6.27265591, - 0.00063195, 0.00038726, 7.27202396, 0.99806920, 0.99898079, 0.49315716],
     4934                             [- 6.27265622, - 0.00063182, 0.00038718, 7.27202440, 0.99806959, 0.99898100, 0.49315722],
     4935                             [- 6.27265653, - 0.00063169, 0.00038710, 7.27202483, 0.99806999, 0.99898121, 0.49315726],
     4936                             [- 6.27265684, - 0.00063157, 0.00038702, 7.27202527, 0.99807038, 0.99898141, 0.49315731],
     4937                             [- 6.27265714, - 0.00063144, 0.00038694, 7.27202571, 0.99807077, 0.99898162, 0.49315737],
     4938                             [- 6.27265745, - 0.00063131, 0.00038686, 7.27202614, 0.99807117, 0.99898183, 0.49315740],
     4939                             [- 6.27265776, - 0.00063118, 0.00038678, 7.27202658, 0.99807156, 0.99898204, 0.49315744],
     4940                             [- 6.27265807, - 0.00063105, 0.00038671, 7.27202702, 0.99807195, 0.99898224, 0.49315747],
     4941                             [- 6.27265838, - 0.00063092, 0.00038663, 7.27202745, 0.99807235, 0.99898245, 0.49315751],
     4942                             [- 6.27265868, - 0.00063079, 0.00038655, 7.27202789, 0.99807274, 0.99898266, 0.49315758],
     4943                             [- 6.27265899, - 0.00063066, 0.00038647, 7.27202833, 0.99807313, 0.99898287, 0.49315760],
     4944                             [- 6.27265930, - 0.00063054, 0.00038639, 7.27202876, 0.99807353, 0.99898307, 0.49315770],
     4945                             [- 6.27265961, - 0.00063041, 0.00038631, 7.27202920, 0.99807392, 0.99898328, 0.49315771],
     4946                             [- 6.27265991, - 0.00063028, 0.00038623, 7.27202963, 0.99807431, 0.99898349, 0.49315780],
     4947                             [- 6.27266022, - 0.00063015, 0.00038615, 7.27203007, 0.99807470, 0.99898369, 0.49315780],
     4948                             [- 6.27266053, - 0.00063002, 0.00038608, 7.27203051, 0.99807510, 0.99898390, 0.49315786],
     4949                             [- 6.27266083, - 0.00062989, 0.00038600, 7.27203094, 0.99807549, 0.99898411, 0.49315792],
     4950                             [- 6.27266114, - 0.00062977, 0.00038592, 7.27203138, 0.99807588, 0.99898432, 0.49315794],
     4951                             [- 6.27266145, - 0.00062964, 0.00038584, 7.27203181, 0.99807627, 0.99898452, 0.49315802],
     4952                             [- 6.27266175, - 0.00062951, 0.00038576, 7.27203224, 0.99807666, 0.99898473, 0.49315805],
     4953                             [- 6.27266206, - 0.00062938, 0.00038568, 7.27203268, 0.99807705, 0.99898493, 0.49315808],
     4954                             [- 6.27266237, - 0.00062925, 0.00038560, 7.27203311, 0.99807744, 0.99898514, 0.49315812],
     4955                             [- 6.27266267, - 0.00062913, 0.00038553, 7.27203355, 0.99807784, 0.99898535, 0.49315818],
     4956                             [- 6.27266298, - 0.00062900, 0.00038545, 7.27203398, 0.99807823, 0.99898555, 0.49315821],
     4957                             [- 6.27266329, - 0.00062887, 0.00038537, 7.27203441, 0.99807862, 0.99898576, 0.49315828],
     4958                             [- 6.27266359, - 0.00062874, 0.00038529, 7.27203485, 0.99807901, 0.99898597, 0.49315830],
     4959                             [- 6.27266390, - 0.00062862, 0.00038521, 7.27203528, 0.99807940, 0.99898617, 0.49315836],
     4960                             [- 6.27266420, - 0.00062849, 0.00038513, 7.27203571, 0.99807979, 0.99898638, 0.49315841],
     4961                             [- 6.27266451, - 0.00062836, 0.00038506, 7.27203615, 0.99808018, 0.99898658, 0.49315847],
     4962                             [- 6.27266481, - 0.00062823, 0.00038498, 7.27203658, 0.99808057, 0.99898679, 0.49315850],
     4963                             [- 6.27266512, - 0.00062811, 0.00038490, 7.27203701, 0.99808096, 0.99898700, 0.49315856],
     4964                             [- 6.27266542, - 0.00062798, 0.00038482, 7.27203744, 0.99808135, 0.99898720, 0.49315859],
     4965                             [- 6.27266573, - 0.00062785, 0.00038474, 7.27203788, 0.99808174, 0.99898741, 0.49315862],
     4966                             [- 6.27266603, - 0.00062772, 0.00038467, 7.27203831, 0.99808213, 0.99898761, 0.49315867],
     4967                             [- 6.27266634, - 0.00062760, 0.00038459, 7.27203874, 0.99808251, 0.99898782, 0.49315875],
     4968                             [- 6.27266664, - 0.00062747, 0.00038451, 7.27203917, 0.99808290, 0.99898802, 0.49315880],
     4969                             [- 6.27266695, - 0.00062734, 0.00038443, 7.27203960, 0.99808329, 0.99898823, 0.49315883],
     4970                             [- 6.27266725, - 0.00062721, 0.00038435, 7.27204004, 0.99808368, 0.99898843, 0.49315887],
     4971                             [- 6.27266755, - 0.00062709, 0.00038428, 7.27204047, 0.99808407, 0.99898864, 0.49315892],
     4972                             [- 6.27266786, - 0.00062696, 0.00038420, 7.27204090, 0.99808446, 0.99898884, 0.49315895],
     4973                             [- 6.27266816, - 0.00062683, 0.00038412, 7.27204133, 0.99808485, 0.99898905, 0.49315899],
     4974                             [- 6.27266847, - 0.00062671, 0.00038404, 7.27204176, 0.99808523, 0.99898925, 0.49315906],
     4975                             [- 6.27266877, - 0.00062658, 0.00038396, 7.27204219, 0.99808562, 0.99898946, 0.49315910],
     4976                             [- 6.27266907, - 0.00062645, 0.00038389, 7.27204262, 0.99808601, 0.99898966, 0.49315911],
     4977                             [- 6.27266938, - 0.00062633, 0.00038381, 7.27204305, 0.99808640, 0.99898987, 0.49315917],
     4978                             [- 6.27266968, - 0.00062620, 0.00038373, 7.27204348, 0.99808678, 0.99899007, 0.49315922],
     4979                             [- 6.27266998, - 0.00062607, 0.00038365, 7.27204391, 0.99808717, 0.99899027, 0.49315926],
     4980                             [- 6.27267028, - 0.00062595, 0.00038358, 7.27204434, 0.99808756, 0.99899048, 0.49315930],
     4981                             [- 6.27267059, - 0.00062582, 0.00038350, 7.27204477, 0.99808794, 0.99899068, 0.49315934],
     4982                             [- 6.27267089, - 0.00062569, 0.00038342, 7.27204520, 0.99808833, 0.99899089, 0.49315940],
     4983                             [- 6.27267119, - 0.00062557, 0.00038334, 7.27204563, 0.99808872, 0.99899109, 0.49315945],
     4984                             [- 6.27267150, - 0.00062544, 0.00038327, 7.27204606, 0.99808910, 0.99899129, 0.49315950],
     4985                             [- 6.27267180, - 0.00062531, 0.00038319, 7.27204648, 0.99808949, 0.99899150, 0.49315953],
     4986                             [- 6.27267210, - 0.00062519, 0.00038311, 7.27204691, 0.99808988, 0.99899170, 0.49315956],
     4987                             [- 6.27267240, - 0.00062506, 0.00038303, 7.27204734, 0.99809026, 0.99899191, 0.49315961],
     4988                             [- 6.27267270, - 0.00062494, 0.00038296, 7.27204777, 0.99809065, 0.99899211, 0.49315968],
     4989                             [- 6.27267301, - 0.00062481, 0.00038288, 7.27204820, 0.99809103, 0.99899231, 0.49315973],
     4990                             [- 6.27267331, - 0.00062468, 0.00038280, 7.27204863, 0.99809142, 0.99899252, 0.49315977],
     4991                             [- 6.27267361, - 0.00062456, 0.00038272, 7.27204905, 0.99809180, 0.99899272, 0.49315980],
     4992                             [- 6.27267391, - 0.00062443, 0.00038265, 7.27204948, 0.99809219, 0.99899292, 0.49315984],
     4993                             [- 6.27267421, - 0.00062431, 0.00038257, 7.27204991, 0.99809257, 0.99899313, 0.49315989],
     4994                             [- 6.27267451, - 0.00062418, 0.00038249, 7.27205033, 0.99809296, 0.99899333, 0.49315993],
     4995                             [- 6.27267481, - 0.00062405, 0.00038241, 7.27205076, 0.99809334, 0.99899353, 0.49315999],
     4996                             [- 6.27267512, - 0.00062393, 0.00038234, 7.27205119, 0.99809373, 0.99899373, 0.49316004],
     4997                             [- 6.27267542, - 0.00062380, 0.00038226, 7.27205162, 0.99809411, 0.99899394, 0.49316007],
     4998                             [- 6.27267572, - 0.00062368, 0.00038218, 7.27205204, 0.99809450, 0.99899414, 0.49316011],
     4999                             [- 6.27267602, - 0.00062355, 0.00038211, 7.27205247, 0.99809488, 0.99899434, 0.49316016],
     5000                             [- 6.27267632, - 0.00062342, 0.00038203, 7.27205289, 0.99809527, 0.99899455, 0.49316020],
     5001                             [- 6.27267662, - 0.00062330, 0.00038195, 7.27205332, 0.99809565, 0.99899475, 0.49316023],
     5002                             [- 6.27267692, - 0.00062317, 0.00038188, 7.27205375, 0.99809603, 0.99899495, 0.49316033],
     5003                             [- 6.27267722, - 0.00062305, 0.00038180, 7.27205417, 0.99809642, 0.99899515, 0.49316032],
     5004                             [- 6.27267752, - 0.00062292, 0.00038172, 7.27205460, 0.99809680, 0.99899536, 0.49316037],
     5005                             [- 6.27267782, - 0.00062280, 0.00038164, 7.27205502, 0.99809718, 0.99899556, 0.49316043],
     5006                             [- 6.27267812, - 0.00062267, 0.00038157, 7.27205545, 0.99809757, 0.99899576, 0.49316049],
     5007                             [- 6.27267842, - 0.00062255, 0.00038149, 7.27205587, 0.99809795, 0.99899596, 0.49316053],
     5008                             [- 6.27267872, - 0.00062242, 0.00038141, 7.27205630, 0.99809833, 0.99899616, 0.49316060],
     5009                             [- 6.27267902, - 0.00062230, 0.00038134, 7.27205672, 0.99809871, 0.99899637, 0.49316061],
     5010                             [- 6.27267932, - 0.00062217, 0.00038126, 7.27205715, 0.99809910, 0.99899657, 0.49316068],
     5011                             [- 6.27267962, - 0.00062205, 0.00038118, 7.27205757, 0.99809948, 0.99899677, 0.49316072],
     5012                             [- 6.27267992, - 0.00062192, 0.00038111, 7.27205799, 0.99809986, 0.99899697, 0.49316074],
     5013                             [- 6.27268021, - 0.00062180, 0.00038103, 7.27205842, 0.99810024, 0.99899717, 0.49316079],
     5014                             [- 6.27268051, - 0.00062167, 0.00038095, 7.27205884, 0.99810062, 0.99899737, 0.49316083],
     5015                             [- 6.27268081, - 0.00062155, 0.00038088, 7.27205927, 0.99810100, 0.99899757, 0.49316088],
     5016                             [- 6.27268111, - 0.00062142, 0.00038080, 7.27205969, 0.99810139, 0.99899778, 0.49316090],
     5017                             [- 6.27268141, - 0.00062130, 0.00038072, 7.27206011, 0.99810177, 0.99899798, 0.49316099],
     5018                             [- 6.27268171, - 0.00062117, 0.00038065, 7.27206053, 0.99810215, 0.99899818, 0.49316102],
     5019                             [- 6.27268201, - 0.00062105, 0.00038057, 7.27206096, 0.99810253, 0.99899838, 0.49316107],
     5020                             [- 6.27268230, - 0.00062092, 0.00038050, 7.27206138, 0.99810291, 0.99899858, 0.49316107],
     5021                             [- 6.27268260, - 0.00062080, 0.00038042, 7.27206180, 0.99810329, 0.99899878, 0.49316112],
     5022                             [- 6.27268290, - 0.00062067, 0.00038034, 7.27206223, 0.99810367, 0.99899898, 0.49316121],
     5023                             [- 6.27268320, - 0.00062055, 0.00038027, 7.27206265, 0.99810405, 0.99899918, 0.49316122],
     5024                             [- 6.27268350, - 0.00062043, 0.00038019, 7.27206307, 0.99810443, 0.99899938, 0.49316127],
     5025                             [- 6.27268379, - 0.00062030, 0.00038011, 7.27206349, 0.99810481, 0.99899958, 0.49316133],
     5026                             [- 6.27268409, - 0.00062018, 0.00038004, 7.27206391, 0.99810519, 0.99899978, 0.49316137],
     5027                             [- 6.27268439, - 0.00062005, 0.00037996, 7.27206433, 0.99810557, 0.99899999, 0.49316141],
     5028                             [- 6.27268468, - 0.00061993, 0.00037989, 7.27206476, 0.99810595, 0.99900019, 0.49316145],
     5029                             [- 6.27268498, - 0.00061980, 0.00037981, 7.27206518, 0.99810633, 0.99900039, 0.49316150],
     5030                             [- 6.27268528, - 0.00061968, 0.00037973, 7.27206560, 0.99810671, 0.99900059, 0.49316152],
     5031                             [- 6.27268558, - 0.00061956, 0.00037966, 7.27206602, 0.99810709, 0.99900079, 0.49316158],
     5032                             [- 6.27268587, - 0.00061943, 0.00037958, 7.27206644, 0.99810747, 0.99900099, 0.49316160],
     5033                             [- 6.27268617, - 0.00061931, 0.00037951, 7.27206686, 0.99810785, 0.99900119, 0.49316174],
     5034                             [- 6.27268647, - 0.00061919, 0.00037943, 7.27206728, 0.99810823, 0.99900139, 0.49316174],
     5035                             [- 6.27268676, - 0.00061906, 0.00037935, 7.27206770, 0.99810860, 0.99900159, 0.49316173],
     5036                             [- 6.27268706, - 0.00061894, 0.00037928, 7.27206812, 0.99810898, 0.99900179, 0.49316182],
     5037                             [- 6.27268735, - 0.00061881, 0.00037920, 7.27206854, 0.99810936, 0.99900198, 0.49316185],
     5038                             [- 6.27268765, - 0.00061869, 0.00037913, 7.27206896, 0.99810974, 0.99900218, 0.49316190],
     5039                             [- 6.27268795, - 0.00061857, 0.00037905, 7.27206938, 0.99811012, 0.99900238, 0.49316194],
     5040                             [- 6.27268824, - 0.00061844, 0.00037897, 7.27206980, 0.99811049, 0.99900258, 0.49316199],
     5041                             [- 6.27268854, - 0.00061832, 0.00037890, 7.27207022, 0.99811087, 0.99900278, 0.49316201],
     5042                             [- 6.27268883, - 0.00061820, 0.00037882, 7.27207064, 0.99811125, 0.99900298, 0.49316207],
     5043                             [- 6.27268913, - 0.00061807, 0.00037875, 7.27207106, 0.99811163, 0.99900318, 0.49316215],
     5044                             [- 6.27268942, - 0.00061795, 0.00037867, 7.27207147, 0.99811200, 0.99900338, 0.49316215],
     5045                             [- 6.27268972, - 0.00061783, 0.00037860, 7.27207189, 0.99811238, 0.99900358, 0.49316222],
     5046                             [- 6.27269001, - 0.00061770, 0.00037852, 7.27207231, 0.99811276, 0.99900378, 0.49316225],
     5047                             [- 6.27269031, - 0.00061758, 0.00037844, 7.27207273, 0.99811313, 0.99900398, 0.49316226],
     5048                             [- 6.27269060, - 0.00061746, 0.00037837, 7.27207315, 0.99811351, 0.99900418, 0.49316232],
     5049                             [- 6.27269090, - 0.00061733, 0.00037829, 7.27207356, 0.99811389, 0.99900437, 0.49316241],
     5050                             [- 6.27269119, - 0.00061721, 0.00037822, 7.27207398, 0.99811426, 0.99900457, 0.49316240],
     5051                             [- 6.27269149, - 0.00061709, 0.00037814, 7.27207440, 0.99811464, 0.99900477, 0.49316244],
     5052                             [- 6.27269178, - 0.00061696, 0.00037807, 7.27207482, 0.99811502, 0.99900497, 0.49316250],
     5053                             [- 6.27269208, - 0.00061684, 0.00037799, 7.27207523, 0.99811539, 0.99900517, 0.49316255],
     5054                             [- 6.27269237, - 0.00061672, 0.00037792, 7.27207565, 0.99811577, 0.99900537, 0.49316260],
     5055                             [- 6.27269266, - 0.00061660, 0.00037784, 7.27207607, 0.99811614, 0.99900556, 0.49316268],
     5056                             [- 6.27269296, - 0.00061647, 0.00037777, 7.27207648, 0.99811652, 0.99900576, 0.49316264],
     5057                             [- 6.27269325, - 0.00061635, 0.00037769, 7.27207690, 0.99811689, 0.99900596, 0.49316274],
     5058                             [- 6.27269354, - 0.00061623, 0.00037762, 7.27207732, 0.99811727, 0.99900616, 0.49316275],
     5059                             [- 6.27269384, - 0.00061610, 0.00037754, 7.27207773, 0.99811764, 0.99900636, 0.49316280],
     5060                             [- 6.27269413, - 0.00061598, 0.00037746, 7.27207815, 0.99811802, 0.99900655, 0.49316280],
     5061                             [- 6.27269442, - 0.00061586, 0.00037739, 7.27207857, 0.99811839, 0.99900675, 0.49316288],
     5062                             [- 6.27269472, - 0.00061574, 0.00037731, 7.27207898, 0.99811877, 0.99900695, 0.49316293],
     5063                             [- 6.27269501, - 0.00061561, 0.00037724, 7.27207940, 0.99811914, 0.99900715, 0.49316299],
     5064                             [- 6.27269530, - 0.00061549, 0.00037716, 7.27207981, 0.99811952, 0.99900734, 0.49316305],
     5065                             [- 6.27269560, - 0.00061537, 0.00037709, 7.27208023, 0.99811989, 0.99900754, 0.49316305],
     5066                             [- 6.27269589, - 0.00061525, 0.00037701, 7.27208064, 0.99812026, 0.99900774, 0.49316309],
     5067                             [- 6.27269618, - 0.00061512, 0.00037694, 7.27208106, 0.99812064, 0.99900794, 0.49316319],
     5068                             [- 6.27269647, - 0.00061500, 0.00037686, 7.27208147, 0.99812101, 0.99900813, 0.49316320],
     5069                             [- 6.27269677, - 0.00061488, 0.00037679, 7.27208189, 0.99812138, 0.99900833, 0.49316326],
     5070                             [- 6.27269706, - 0.00061476, 0.00037671, 7.27208230, 0.99812176, 0.99900853, 0.49316331],
     5071                             [- 6.27269735, - 0.00061464, 0.00037664, 7.27208271, 0.99812213, 0.99900872, 0.49316334],
     5072                             [- 6.27269764, - 0.00061451, 0.00037656, 7.27208313, 0.99812250, 0.99900892, 0.49316337],
     5073                             [- 6.27269793, - 0.00061439, 0.00037649, 7.27208354, 0.99812288, 0.99900912, 0.49316343],
     5074                             [- 6.27269823, - 0.00061427, 0.00037642, 7.27208396, 0.99812325, 0.99900931, 0.49316350],
     5075                             [- 6.27269852, - 0.00061415, 0.00037634, 7.27208437, 0.99812362, 0.99900951, 0.49316348],
     5076                             [- 6.27269881, - 0.00061403, 0.00037627, 7.27208478, 0.99812399, 0.99900971, 0.49316356],
     5077                             [- 6.27269910, - 0.00061390, 0.00037619, 7.27208520, 0.99812437, 0.99900990, 0.49316359],
     5078                             [- 6.27269939, - 0.00061378, 0.00037612, 7.27208561, 0.99812474, 0.99901010, 0.49316364],
     5079                             [- 6.27269968, - 0.00061366, 0.00037604, 7.27208602, 0.99812511, 0.99901030, 0.49316368],
     5080                             [- 6.27269997, - 0.00061354, 0.00037597, 7.27208643, 0.99812548, 0.99901049, 0.49316372],
     5081                             [- 6.27270027, - 0.00061342, 0.00037589, 7.27208685, 0.99812585, 0.99901069, 0.49316379],
     5082                             [- 6.27270056, - 0.00061330, 0.00037582, 7.27208726, 0.99812623, 0.99901089, 0.49316380],
     5083                             [- 6.27270085, - 0.00061318, 0.00037574, 7.27208767, 0.99812660, 0.99901108, 0.49316383],
     5084                             [- 6.27270114, - 0.00061305, 0.00037567, 7.27208808, 0.99812697, 0.99901128, 0.49316392],
     5085                             [- 6.27270143, - 0.00061293, 0.00037559, 7.27208850, 0.99812734, 0.99901147, 0.49316393],
     5086                             [- 6.27270172, - 0.00061281, 0.00037552, 7.27208891, 0.99812771, 0.99901167, 0.49316398],
     5087                             [- 6.27270201, - 0.00061269, 0.00037545, 7.27208932, 0.99812808, 0.99901186, 0.49316403],
     5088                             [- 6.27270230, - 0.00061257, 0.00037537, 7.27208973, 0.99812845, 0.99901206, 0.49316407],
     5089                             [- 6.27270259, - 0.00061245, 0.00037530, 7.27209014, 0.99812882, 0.99901226, 0.49316411],
     5090                             [- 6.27270288, - 0.00061233, 0.00037522, 7.27209055, 0.99812919, 0.99901245, 0.49316419],
     5091                             [- 6.27270317, - 0.00061221, 0.00037515, 7.27209096, 0.99812956, 0.99901265, 0.49316420],
     5092                             [- 6.27270346, - 0.00061208, 0.00037507, 7.27209137, 0.99812993, 0.99901284, 0.49316424],
     5093                             [- 6.27270375, - 0.00061196, 0.00037500, 7.27209178, 0.99813030, 0.99901304, 0.49316431],
     5094                             [- 6.27270404, - 0.00061184, 0.00037493, 7.27209219, 0.99813067, 0.99901323, 0.49316432],
     5095                             [- 6.27270433, - 0.00061172, 0.00037485, 7.27209260, 0.99813104, 0.99901343, 0.49316435],
     5096                             [- 6.27270462, - 0.00061160, 0.00037478, 7.27209301, 0.99813141, 0.99901362, 0.49316437],
     5097                             [- 6.27270490, - 0.00061148, 0.00037470, 7.27209342, 0.99813178, 0.99901382, 0.49316447],
     5098                             [- 6.27270519, - 0.00061136, 0.00037463, 7.27209383, 0.99813215, 0.99901401, 0.49316452],
     5099                             [- 6.27270548, - 0.00061124, 0.00037456, 7.27209424, 0.99813252, 0.99901421, 0.49316453],
     5100                             [- 6.27270577, - 0.00061112, 0.00037448, 7.27209465, 0.99813289, 0.99901440, 0.49316460],
     5101                             [- 6.27270606, - 0.00061100, 0.00037441, 7.27209506, 0.99813326, 0.99901460, 0.49316462],
     5102                             [- 6.27270635, - 0.00061088, 0.00037433, 7.27209547, 0.99813362, 0.99901479, 0.49316468],
     5103                             [- 6.27270664, - 0.00061076, 0.00037426, 7.27209588, 0.99813399, 0.99901498, 0.49316472],
     5104                             [- 6.27270692, - 0.00061064, 0.00037419, 7.27209629, 0.99813436, 0.99901518, 0.49316476],
     5105                             [- 6.27270721, - 0.00061051, 0.00037411, 7.27209670, 0.99813473, 0.99901537, 0.49316483],
     5106                             [- 6.27270750, - 0.00061039, 0.00037404, 7.27209711, 0.99813510, 0.99901557, 0.49316482],
     5107                             [- 6.27270779, - 0.00061027, 0.00037396, 7.27209751, 0.99813547, 0.99901576, 0.49316493],
     5108                             [- 6.27270808, - 0.00061015, 0.00037389, 7.27209792, 0.99813583, 0.99901596, 0.49316495],
     5109                             [- 6.27270836, - 0.00061003, 0.00037382, 7.27209833, 0.99813620, 0.99901615, 0.49316498],
     5110                             [- 6.27270865, - 0.00060991, 0.00037374, 7.27209874, 0.99813657, 0.99901634, 0.49316501],
     5111                             [- 6.27270894, - 0.00060979, 0.00037367, 7.27209915, 0.99813694, 0.99901654, 0.49316504],
     5112                             [- 6.27270923, - 0.00060967, 0.00037360, 7.27209955, 0.99813730, 0.99901673, 0.49316509],
     5113                             [- 6.27270951, - 0.00060955, 0.00037352, 7.27209996, 0.99813767, 0.99901692, 0.49316516],
     5114                             [- 6.27270980, - 0.00060943, 0.00037345, 7.27210037, 0.99813804, 0.99901712, 0.49316521],
     5115                             [- 6.27271009, - 0.00060931, 0.00037338, 7.27210078, 0.99813840, 0.99901731, 0.49316522],
     5116                             [- 6.27271038, - 0.00060919, 0.00037330, 7.27210118, 0.99813877, 0.99901751, 0.49316529],
     5117                             [- 6.27271066, - 0.00060907, 0.00037323, 7.27210159, 0.99813914, 0.99901770, 0.49316533],
     5118                             [- 6.27271095, - 0.00060895, 0.00037315, 7.27210200, 0.99813950, 0.99901789, 0.49316538],
     5119                             [- 6.27271124, - 0.00060883, 0.00037308, 7.27210240, 0.99813987, 0.99901808, 0.49316545],
     5120                             [- 6.27271152, - 0.00060871, 0.00037301, 7.27210281, 0.99814023, 0.99901828, 0.49316550],
     5121                             [- 6.27271181, - 0.00060859, 0.00037293, 7.27210321, 0.99814060, 0.99901847, 0.49316550],
     5122                             [- 6.27271209, - 0.00060847, 0.00037286, 7.27210362, 0.99814097, 0.99901866, 0.49316554],
     5123                             [- 6.27271238, - 0.00060836, 0.00037279, 7.27210403, 0.99814133, 0.99901886, 0.49316555],
     5124                             [- 6.27271267, - 0.00060824, 0.00037271, 7.27210443, 0.99814170, 0.99901905, 0.49316564],
     5125                             [- 6.27271295, - 0.00060812, 0.00037264, 7.27210484, 0.99814206, 0.99901924, 0.49316569],
     5126                             [- 6.27271324, - 0.00060800, 0.00037257, 7.27210524, 0.99814243, 0.99901944, 0.49316569],
     5127                             [- 6.27271352, - 0.00060788, 0.00037249, 7.27210565, 0.99814279, 0.99901963, 0.49316572],
     5128                             [- 6.27271381, - 0.00060776, 0.00037242, 7.27210605, 0.99814316, 0.99901982, 0.49316582],
     5129                             [- 6.27271410, - 0.00060764, 0.00037235, 7.27210646, 0.99814352, 0.99902001, 0.49316585],
     5130                             [- 6.27271438, - 0.00060752, 0.00037228, 7.27210686, 0.99814389, 0.99902021, 0.49316587],
     5131                             [- 6.27271467, - 0.00060740, 0.00037220, 7.27210727, 0.99814425, 0.99902040, 0.49316592],
     5132                             [- 6.27271495, - 0.00060728, 0.00037213, 7.27210767, 0.99814461, 0.99902059, 0.49316598],
     5133                             [- 6.27271524, - 0.00060716, 0.00037206, 7.27210807, 0.99814498, 0.99902078, 0.49316599],
     5134                             [- 6.27271552, - 0.00060704, 0.00037198, 7.27210848, 0.99814534, 0.99902097, 0.49316604],
     5135                             [- 6.27271581, - 0.00060692, 0.00037191, 7.27210888, 0.99814571, 0.99902117, 0.49316608],
     5136                             [- 6.27271609, - 0.00060680, 0.00037184, 7.27210929, 0.99814607, 0.99902136, 0.49316611],
     5137                             [- 6.27271637, - 0.00060669, 0.00037176, 7.27210969, 0.99814643, 0.99902155, 0.49316616],
     5138                             [- 6.27271666, - 0.00060657, 0.00037169, 7.27211009, 0.99814680, 0.99902174, 0.49316618],
     5139                             [- 6.27271694, - 0.00060645, 0.00037162, 7.27211050, 0.99814716, 0.99902193, 0.49316624],
     5140                             [- 6.27271723, - 0.00060633, 0.00037155, 7.27211090, 0.99814752, 0.99902213, 0.49316630],
     5141                             [- 6.27271751, - 0.00060621, 0.00037147, 7.27211130, 0.99814789, 0.99902232, 0.49316633],
     5142                             [- 6.27271780, - 0.00060609, 0.00037140, 7.27211170, 0.99814825, 0.99902251, 0.49316640],
     5143                             [- 6.27271808, - 0.00060597, 0.00037133, 7.27211211, 0.99814861, 0.99902270, 0.49316642],
     5144                             [- 6.27271836, - 0.00060585, 0.00037125, 7.27211251, 0.99814897, 0.99902289, 0.49316649],
     5145                             [- 6.27271865, - 0.00060574, 0.00037118, 7.27211291, 0.99814934, 0.99902308, 0.49316653],
     5146                             [- 6.27271893, - 0.00060562, 0.00037111, 7.27211331, 0.99814970, 0.99902327, 0.49316657],
     5147                             [- 6.27271921, - 0.00060550, 0.00037104, 7.27211371, 0.99815006, 0.99902346, 0.49316659],
     5148                             [- 6.27271950, - 0.00060538, 0.00037096, 7.27211412, 0.99815042, 0.99902366, 0.49316664],
     5149                             [- 6.27271978, - 0.00060526, 0.00037089, 7.27211452, 0.99815079, 0.99902385, 0.49316670],
     5150                             [- 6.27272006, - 0.00060514, 0.00037082, 7.27211492, 0.99815115, 0.99902404, 0.49316670],
     5151                             [- 6.27272035, - 0.00060503, 0.00037075, 7.27211532, 0.99815151, 0.99902423, 0.49316673],
     5152                             [- 6.27272063, - 0.00060491, 0.00037067, 7.27211572, 0.99815187, 0.99902442, 0.49316679],
     5153                             [- 6.27272091, - 0.00060479, 0.00037060, 7.27211612, 0.99815223, 0.99902461, 0.49316685],
     5154                             [- 6.27272120, - 0.00060467, 0.00037053, 7.27211652, 0.99815259, 0.99902480, 0.49316688],
     5155                             [- 6.27272148, - 0.00060455, 0.00037046, 7.27211692, 0.99815295, 0.99902499, 0.49316692],
     5156                             [- 6.27272176, - 0.00060444, 0.00037038, 7.27211732, 0.99815331, 0.99902518, 0.49316699],
     5157                             [- 6.27272204, - 0.00060432, 0.00037031, 7.27211773, 0.99815367, 0.99902537, 0.49316698],
     5158                             [- 6.27272232, - 0.00060420, 0.00037024, 7.27211813, 0.99815404, 0.99902556, 0.49316707],
     5159                             [- 6.27272261, - 0.00060408, 0.00037017, 7.27211853, 0.99815440, 0.99902575, 0.49316710],
     5160                             [- 6.27272289, - 0.00060396, 0.00037009, 7.27211893, 0.99815476, 0.99902594, 0.49316715],
     5161                             [- 6.27272317, - 0.00060385, 0.00037002, 7.27211933, 0.99815512, 0.99902613, 0.49316718],
     5162                             [- 6.27272345, - 0.00060373, 0.00036995, 7.27211972, 0.99815548, 0.99902632, 0.49316722],
     5163                             [- 6.27272373, - 0.00060361, 0.00036988, 7.27212012, 0.99815584, 0.99902651, 0.49316726],
     5164                             [- 6.27272402, - 0.00060349, 0.00036981, 7.27212052, 0.99815620, 0.99902670, 0.49316729],
     5165                             [- 6.27272430, - 0.00060337, 0.00036973, 7.27212092, 0.99815656, 0.99902689, 0.49316735],
     5166                             [- 6.27272458, - 0.00060326, 0.00036966, 7.27212132, 0.99815691, 0.99902708, 0.49316741],
     5167                             [- 6.27272486, - 0.00060314, 0.00036959, 7.27212172, 0.99815727, 0.99902727, 0.49316741],
     5168                             [- 6.27272514, - 0.00060302, 0.00036952, 7.27212212, 0.99815763, 0.99902746, 0.49316748],
     5169                             [- 6.27272542, - 0.00060290, 0.00036945, 7.27212252, 0.99815799, 0.99902765, 0.49316753],
     5170                             [- 6.27272570, - 0.00060279, 0.00036937, 7.27212292, 0.99815835, 0.99902784, 0.49316756],
     5171                             [- 6.27272598, - 0.00060267, 0.00036930, 7.27212331, 0.99815871, 0.99902803, 0.49316761],
     5172                             [- 6.27272626, - 0.00060255, 0.00036923, 7.27212371, 0.99815907, 0.99902822, 0.49316767],
     5173                             [- 6.27272654, - 0.00060244, 0.00036916, 7.27212411, 0.99815943, 0.99902841, 0.49316768],
     5174                             [- 6.27272683, - 0.00060232, 0.00036909, 7.27212451, 0.99815978, 0.99902860, 0.49316772],
     5175                             [- 6.27272711, - 0.00060220, 0.00036901, 7.27212490, 0.99816014, 0.99902879, 0.49316778],
     5176                             [- 6.27272739, - 0.00060208, 0.00036894, 7.27212530, 0.99816050, 0.99902897, 0.49316778],
     5177                             [- 6.27272767, - 0.00060197, 0.00036887, 7.27212570, 0.99816086, 0.99902916, 0.49316783],
     5178                             [- 6.27272795, - 0.00060185, 0.00036880, 7.27212610, 0.99816122, 0.99902935, 0.49316788],
     5179                             [- 6.27272823, - 0.00060173, 0.00036873, 7.27212649, 0.99816157, 0.99902954, 0.49316787],
     5180                             [- 6.27272851, - 0.00060162, 0.00036865, 7.27212689, 0.99816193, 0.99902973, 0.49316799],
     5181                             [- 6.27272879, - 0.00060150, 0.00036858, 7.27212729, 0.99816229, 0.99902992, 0.49316801],
     5182                             [- 6.27272907, - 0.00060138, 0.00036851, 7.27212768, 0.99816265, 0.99903011, 0.49316805],
     5183                             [- 6.27272934, - 0.00060127, 0.00036844, 7.27212808, 0.99816300, 0.99903029, 0.49316810],
     5184                             [- 6.27272962, - 0.00060115, 0.00036837, 7.27212848, 0.99816336, 0.99903048, 0.49316812],
     5185                             [- 6.27272990, - 0.00060103, 0.00036830, 7.27212887, 0.99816372, 0.99903067, 0.49316815],
     5186                             [- 6.27273018, - 0.00060092, 0.00036823, 7.27212927, 0.99816407, 0.99903086, 0.49316824],
     5187                             [- 6.27273046, - 0.00060080, 0.00036815, 7.27212966, 0.99816443, 0.99903105, 0.49316825],
     5188                             [- 6.27273074, - 0.00060068, 0.00036808, 7.27213006, 0.99816479, 0.99903124, 0.49316832],
     5189                             [- 6.27273102, - 0.00060057, 0.00036801, 7.27213045, 0.99816514, 0.99903142, 0.49316835],
     5190                             [- 6.27273130, - 0.00060045, 0.00036794, 7.27213085, 0.99816550, 0.99903161, 0.49316839],
     5191                             [- 6.27273158, - 0.00060033, 0.00036787, 7.27213124, 0.99816585, 0.99903180, 0.49316844],
     5192                             [- 6.27273186, - 0.00060022, 0.00036780, 7.27213164, 0.99816621, 0.99903199, 0.49316848],
     5193                             [- 6.27273213, - 0.00060010, 0.00036773, 7.27213203, 0.99816657, 0.99903218, 0.49316850],
     5194                             [- 6.27273241, - 0.00059998, 0.00036765, 7.27213243, 0.99816692, 0.99903236, 0.49316856],
     5195                             [- 6.27273269, - 0.00059987, 0.00036758, 7.27213282, 0.99816728, 0.99903255, 0.49316861],
     5196                             [- 6.27273297, - 0.00059975, 0.00036751, 7.27213322, 0.99816763, 0.99903274, 0.49316864],
     5197                             [- 6.27273325, - 0.00059963, 0.00036744, 7.27213361, 0.99816799, 0.99903293, 0.49316869],
     5198                             [- 6.27273352, - 0.00059952, 0.00036737, 7.27213401, 0.99816834, 0.99903311, 0.49316872],
     5199                             [- 6.27273380, - 0.00059940, 0.00036730, 7.27213440, 0.99816870, 0.99903330, 0.49316876],
     5200                             [- 6.27273408, - 0.00059929, 0.00036723, 7.27213479, 0.99816905, 0.99903349, 0.49316877],
     5201                             [- 6.27273436, - 0.00059917, 0.00036716, 7.27213519, 0.99816941, 0.99903367, 0.49316887],
     5202                             [- 6.27273463, - 0.00059905, 0.00036708, 7.27213558, 0.99816976, 0.99903386, 0.49316888],
     5203                             [- 6.27273491, - 0.00059894, 0.00036701, 7.27213597, 0.99817012, 0.99903405, 0.49316895],
     5204                             [- 6.27273519, - 0.00059882, 0.00036694, 7.27213637, 0.99817047, 0.99903424, 0.49316897],
     5205                             [- 6.27273547, - 0.00059871, 0.00036687, 7.27213676, 0.99817082, 0.99903442, 0.49316901],
     5206                             [- 6.27273574, - 0.00059859, 0.00036680, 7.27213715, 0.99817118, 0.99903461, 0.49316906],
     5207                             [- 6.27273602, - 0.00059848, 0.00036673, 7.27213754, 0.99817153, 0.99903480, 0.49316911],
     5208                             [- 6.27273630, - 0.00059836, 0.00036666, 7.27213794, 0.99817189, 0.99903498, 0.49316913],
     5209                             [- 6.27273657, - 0.00059824, 0.00036659, 7.27213833, 0.99817224, 0.99903517, 0.49316914],
     5210                             [- 6.27273685, - 0.00059813, 0.00036652, 7.27213872, 0.99817259, 0.99903535, 0.49316924],
     5211                             [- 6.27273713, - 0.00059801, 0.00036645, 7.27213911, 0.99817295, 0.99903554, 0.49316926],
     5212                             [- 6.27273740, - 0.00059790, 0.00036637, 7.27213951, 0.99817330, 0.99903573, 0.49316930],
     5213                             [- 6.27273768, - 0.00059778, 0.00036630, 7.27213990, 0.99817365, 0.99903591, 0.49316938],
     5214                             [- 6.27273796, - 0.00059767, 0.00036623, 7.27214029, 0.99817400, 0.99903610, 0.49316938],
     5215                             [- 6.27273823, - 0.00059755, 0.00036616, 7.27214068, 0.99817436, 0.99903629, 0.49316938],
     5216                             [- 6.27273851, - 0.00059744, 0.00036609, 7.27214107, 0.99817471, 0.99903647, 0.49316946],
     5217                             [- 6.27273878, - 0.00059732, 0.00036602, 7.27214146, 0.99817506, 0.99903666, 0.49316948],
     5218                             [- 6.27273906, - 0.00059721, 0.00036595, 7.27214185, 0.99817541, 0.99903684, 0.49316954],
     5219                             [- 6.27273933, - 0.00059709, 0.00036588, 7.27214224, 0.99817577, 0.99903703, 0.49316961],
     5220                             [- 6.27273961, - 0.00059698, 0.00036581, 7.27214263, 0.99817612, 0.99903722, 0.49316964],
     5221                             [- 6.27273989, - 0.00059686, 0.00036574, 7.27214303, 0.99817647, 0.99903740, 0.49316966],
     5222                             [- 6.27274016, - 0.00059674, 0.00036567, 7.27214342, 0.99817682, 0.99903759, 0.49316973],
     5223                             [- 6.27274044, - 0.00059663, 0.00036560, 7.27214381, 0.99817717, 0.99903777, 0.49316976],
     5224                             [- 6.27274071, - 0.00059651, 0.00036553, 7.27214420, 0.99817752, 0.99903796, 0.49316978],
     5225                             [- 6.27274099, - 0.00059640, 0.00036546, 7.27214459, 0.99817788, 0.99903814, 0.49316985],
     5226                             [- 6.27274126, - 0.00059629, 0.00036539, 7.27214498, 0.99817823, 0.99903833, 0.49316985],
     5227                             [- 6.27274154, - 0.00059617, 0.00036532, 7.27214537, 0.99817858, 0.99903851, 0.49316990],
     5228                             [- 6.27274181, - 0.00059606, 0.00036525, 7.27214575, 0.99817893, 0.99903870, 0.49316996],
     5229                             [- 6.27274208, - 0.00059594, 0.00036517, 7.27214614, 0.99817928, 0.99903888, 0.49317001],
     5230                             [- 6.27274236, - 0.00059583, 0.00036510, 7.27214653, 0.99817963, 0.99903907, 0.49317000],
     5231                             [- 6.27274263, - 0.00059571, 0.00036503, 7.27214692, 0.99817998, 0.99903925, 0.49317004],
     5232                             [- 6.27274291, - 0.00059560, 0.00036496, 7.27214731, 0.99818033, 0.99903944, 0.49317008],
     5233                             [- 6.27274318, - 0.00059548, 0.00036489, 7.27214770, 0.99818068, 0.99903962, 0.49317014],
     5234                             [- 6.27274346, - 0.00059537, 0.00036482, 7.27214809, 0.99818103, 0.99903981, 0.49317022],
     5235                             [- 6.27274373, - 0.00059525, 0.00036475, 7.27214848, 0.99818138, 0.99903999, 0.49317024],
     5236                             [- 6.27274400, - 0.00059514, 0.00036468, 7.27214886, 0.99818173, 0.99904018, 0.49317029],
     5237                             [- 6.27274428, - 0.00059502, 0.00036461, 7.27214925, 0.99818208, 0.99904036, 0.49317032],
     5238                             [- 6.27274455, - 0.00059491, 0.00036454, 7.27214964, 0.99818243, 0.99904055, 0.49317037],
     5239                             [- 6.27274482, - 0.00059480, 0.00036447, 7.27215003, 0.99818278, 0.99904073, 0.49317042],
     5240                             [- 6.27274510, - 0.00059468, 0.00036440, 7.27215042, 0.99818313, 0.99904092, 0.49317048],
     5241                             [- 6.27274537, - 0.00059457, 0.00036433, 7.27215080, 0.99818348, 0.99904110, 0.49317047],
     5242                             [- 6.27274564, - 0.00059445, 0.00036426, 7.27215119, 0.99818383, 0.99904128, 0.49317056],
     5243                             [- 6.27274592, - 0.00059434, 0.00036419, 7.27215158, 0.99818418, 0.99904147, 0.49317055],
     5244                             [- 6.27274619, - 0.00059422, 0.00036412, 7.27215197, 0.99818452, 0.99904165, 0.49317062],
     5245                             [- 6.27274646, - 0.00059411, 0.00036405, 7.27215235, 0.99818487, 0.99904184, 0.49317064],
     5246                             [- 6.27274674, - 0.00059400, 0.00036398, 7.27215274, 0.99818522, 0.99904202, 0.49317066],
     5247                             [- 6.27274701, - 0.00059388, 0.00036391, 7.27215313, 0.99818557, 0.99904220, 0.49317073],
     5248                             [- 6.27274728, - 0.00059377, 0.00036384, 7.27215351, 0.99818592, 0.99904239, 0.49317076],
     5249                             [- 6.27274755, - 0.00059365, 0.00036377, 7.27215390, 0.99818627, 0.99904257, 0.49317082],
     5250                             [- 6.27274783, - 0.00059354, 0.00036370, 7.27215428, 0.99818661, 0.99904276, 0.49317086],
     5251                             [- 6.27274810, - 0.00059343, 0.00036363, 7.27215467, 0.99818696, 0.99904294, 0.49317091],
     5252                             [- 6.27274837, - 0.00059331, 0.00036356, 7.27215506, 0.99818731, 0.99904312, 0.49317096],
     5253                             [- 6.27274864, - 0.00059320, 0.00036349, 7.27215544, 0.99818766, 0.99904331, 0.49317092],
     5254                             [- 6.27274891, - 0.00059309, 0.00036342, 7.27215583, 0.99818800, 0.99904349, 0.49317097],
     5255                             [- 6.27274919, - 0.00059297, 0.00036335, 7.27215621, 0.99818835, 0.99904367, 0.49317108],
     5256                             [- 6.27274946, - 0.00059286, 0.00036329, 7.27215660, 0.99818870, 0.99904386, 0.49317108],
     5257                             [- 6.27274973, - 0.00059275, 0.00036322, 7.27215698, 0.99818905, 0.99904404, 0.49317113],
     5258                             [- 6.27275000, - 0.00059263, 0.00036315, 7.27215737, 0.99818939, 0.99904422, 0.49317119],
     5259                             [- 6.27275027, - 0.00059252, 0.00036308, 7.27215775, 0.99818974, 0.99904440, 0.49317125],
     5260                             [- 6.27275054, - 0.00059241, 0.00036301, 7.27215814, 0.99819009, 0.99904459, 0.49317124],
     5261                             [- 6.27275081, - 0.00059229, 0.00036294, 7.27215852, 0.99819043, 0.99904477, 0.49317130],
     5262                             [- 6.27275109, - 0.00059218, 0.00036287, 7.27215891, 0.99819078, 0.99904495, 0.49317131],
     5263                             [- 6.27275136, - 0.00059207, 0.00036280, 7.27215929, 0.99819113, 0.99904514, 0.49317136],
     5264                             [- 6.27275163, - 0.00059195, 0.00036273, 7.27215968, 0.99819147, 0.99904532, 0.49317137],
     5265                             [- 6.27275190, - 0.00059184, 0.00036266, 7.27216006, 0.99819182, 0.99904550, 0.49317148],
     5266                             [- 6.27275217, - 0.00059173, 0.00036259, 7.27216044, 0.99819216, 0.99904568, 0.49317152],
     5267                             [- 6.27275244, - 0.00059161, 0.00036252, 7.27216083, 0.99819251, 0.99904587, 0.49317157],
     5268                             [- 6.27275271, - 0.00059150, 0.00036245, 7.27216121, 0.99819285, 0.99904605, 0.49317157],
     5269                             [- 6.27275298, - 0.00059139, 0.00036238, 7.27216159, 0.99819320, 0.99904623, 0.49317163],
     5270                             [- 6.27275325, - 0.00059127, 0.00036231, 7.27216198, 0.99819355, 0.99904641, 0.49317168],
     5271                             [- 6.27275352, - 0.00059116, 0.00036224, 7.27216236, 0.99819389, 0.99904660, 0.49317166],
     5272                             [- 6.27275379, - 0.00059105, 0.00036217, 7.27216274, 0.99819424, 0.99904678, 0.49317177],
     5273                             [- 6.27275406, - 0.00059094, 0.00036211, 7.27216313, 0.99819458, 0.99904696, 0.49317179],
     5274                             [- 6.27275433, - 0.00059082, 0.00036204, 7.27216351, 0.99819493, 0.99904714, 0.49317185],
     5275                             [- 6.27275460, - 0.00059071, 0.00036197, 7.27216389, 0.99819527, 0.99904732, 0.49317189],
     5276                             [- 6.27275487, - 0.00059060, 0.00036190, 7.27216427, 0.99819561, 0.99904751, 0.49317188],
     5277                             [- 6.27275514, - 0.00059048, 0.00036183, 7.27216466, 0.99819596, 0.99904769, 0.49317197],
     5278                             [- 6.27275541, - 0.00059037, 0.00036176, 7.27216504, 0.99819630, 0.99904787, 0.49317199],
     5279                             [- 6.27275568, - 0.00059026, 0.00036169, 7.27216542, 0.99819665, 0.99904805, 0.49317206],
     5280                             [- 6.27275595, - 0.00059015, 0.00036162, 7.27216580, 0.99819699, 0.99904823, 0.49317206],
     5281                             [- 6.27275622, - 0.00059003, 0.00036155, 7.27216618, 0.99819733, 0.99904841, 0.49317210],
     5282                             [- 6.27275649, - 0.00058992, 0.00036148, 7.27216656, 0.99819768, 0.99904859, 0.49317215],
     5283                             [- 6.27275675, - 0.00058981, 0.00036141, 7.27216695, 0.99819802, 0.99904878, 0.49317218],
     5284                             [- 6.27275702, - 0.00058970, 0.00036135, 7.27216733, 0.99819837, 0.99904896, 0.49317220],
     5285                             [- 6.27275729, - 0.00058958, 0.00036128, 7.27216771, 0.99819871, 0.99904914, 0.49317224],
     5286                             [- 6.27275756, - 0.00058947, 0.00036121, 7.27216809, 0.99819905, 0.99904932, 0.49317231],
     5287                             [- 6.27275783, - 0.00058936, 0.00036114, 7.27216847, 0.99819939, 0.99904950, 0.49317228],
     5288                             [- 6.27275810, - 0.00058925, 0.00036107, 7.27216885, 0.99819974, 0.99904968, 0.49317238],
     5289                             [- 6.27275837, - 0.00058914, 0.00036100, 7.27216923, 0.99820008, 0.99904986, 0.49317241],
     5290                             [- 6.27275863, - 0.00058902, 0.00036093, 7.27216961, 0.99820042, 0.99905004, 0.49317245],
     5291                             [- 6.27275890, - 0.00058891, 0.00036086, 7.27216999, 0.99820077, 0.99905022, 0.49317253],
     5292                             [- 6.27275917, - 0.00058880, 0.00036080, 7.27217037, 0.99820111, 0.99905040, 0.49317256],
     5293                             [- 6.27275944, - 0.00058869, 0.00036073, 7.27217075, 0.99820145, 0.99905059, 0.49317260],
     5294                             [- 6.27275971, - 0.00058858, 0.00036066, 7.27217113, 0.99820179, 0.99905077, 0.49317263],
     5295                             [- 6.27275997, - 0.00058846, 0.00036059, 7.27217151, 0.99820213, 0.99905095, 0.49317270],
     5296                             [- 6.27276024, - 0.00058835, 0.00036052, 7.27217189, 0.99820248, 0.99905113, 0.49317272],
     5297                             [- 6.27276051, - 0.00058824, 0.00036045, 7.27217227, 0.99820282, 0.99905131, 0.49317275],
     5298                             [- 6.27276078, - 0.00058813, 0.00036038, 7.27217265, 0.99820316, 0.99905149, 0.49317277],
     5299                             [- 6.27276104, - 0.00058802, 0.00036032, 7.27217303, 0.99820350, 0.99905167, 0.49317281],
     5300                             [- 6.27276131, - 0.00058790, 0.00036025, 7.27217341, 0.99820384, 0.99905185, 0.49317287],
     5301                             [- 6.27276158, - 0.00058779, 0.00036018, 7.27217378, 0.99820418, 0.99905203, 0.49317289],
     5302                             [- 6.27276184, - 0.00058768, 0.00036011, 7.27217416, 0.99820453, 0.99905221, 0.49317299],
     5303                             [- 6.27276211, - 0.00058757, 0.00036004, 7.27217454, 0.99820487, 0.99905239, 0.49317296],
     5304                             [- 6.27276238, - 0.00058746, 0.00035997, 7.27217492, 0.99820521, 0.99905257, 0.49317302],
     5305                             [- 6.27276265, - 0.00058735, 0.00035991, 7.27217530, 0.99820555, 0.99905275, 0.49317307],
     5306                             [- 6.27276291, - 0.00058724, 0.00035984, 7.27217568, 0.99820589, 0.99905293, 0.49317310],
     5307                             [- 6.27276318, - 0.00058712, 0.00035977, 7.27217605, 0.99820623, 0.99905311, 0.49317316],
     5308                             [- 6.27276344, - 0.00058701, 0.00035970, 7.27217643, 0.99820657, 0.99905329, 0.49317319],
     5309                             [- 6.27276371, - 0.00058690, 0.00035963, 7.27217681, 0.99820691, 0.99905347, 0.49317321],
     5310                             [- 6.27276398, - 0.00058679, 0.00035956, 7.27217719, 0.99820725, 0.99905365, 0.49317328],
     5311                             [- 6.27276424, - 0.00058668, 0.00035950, 7.27217756, 0.99820759, 0.99905383, 0.49317329],
     5312                             [- 6.27276451, - 0.00058657, 0.00035943, 7.27217794, 0.99820793, 0.99905400, 0.49317335],
     5313                             [- 6.27276478, - 0.00058646, 0.00035936, 7.27217832, 0.99820827, 0.99905418, 0.49317337],
     5314                             [- 6.27276504, - 0.00058635, 0.00035929, 7.27217870, 0.99820861, 0.99905436, 0.49317339],
     5315                             [- 6.27276531, - 0.00058623, 0.00035922, 7.27217907, 0.99820895, 0.99905454, 0.49317346],
     5316                             [- 6.27276557, - 0.00058612, 0.00035916, 7.27217945, 0.99820929, 0.99905472, 0.49317350],
     5317                             [- 6.27276584, - 0.00058601, 0.00035909, 7.27217982, 0.99820963, 0.99905490, 0.49317354],
     5318                             [- 6.27276610, - 0.00058590, 0.00035902, 7.27218020, 0.99820997, 0.99905508, 0.49317358],
     5319                             [- 6.27276637, - 0.00058579, 0.00035895, 7.27218058, 0.99821030, 0.99905526, 0.49317361],
     5320                             [- 6.27276663, - 0.00058568, 0.00035888, 7.27218095, 0.99821064, 0.99905544, 0.49317361],
     5321                             [- 6.27276690, - 0.00058557, 0.00035882, 7.27218133, 0.99821098, 0.99905562, 0.49317370],
     5322                             [- 6.27276716, - 0.00058546, 0.00035875, 7.27218170, 0.99821132, 0.99905579, 0.49317372],
     5323                             [- 6.27276743, - 0.00058535, 0.00035868, 7.27218208, 0.99821166, 0.99905597, 0.49317378],
     5324                             [- 6.27276769, - 0.00058524, 0.00035861, 7.27218246, 0.99821200, 0.99905615, 0.49317376],
     5325                             [- 6.27276796, - 0.00058513, 0.00035854, 7.27218283, 0.99821233, 0.99905633, 0.49317387],
     5326                             [- 6.27276822, - 0.00058502, 0.00035848, 7.27218321, 0.99821267, 0.99905651, 0.49317387],
     5327                             [- 6.27276849, - 0.00058491, 0.00035841, 7.27218358, 0.99821301, 0.99905669, 0.49317394],
     5328                             [- 6.27276875, - 0.00058480, 0.00035834, 7.27218396, 0.99821335, 0.99905686, 0.49317397],
     5329                             [- 6.27276902, - 0.00058468, 0.00035827, 7.27218433, 0.99821369, 0.99905704, 0.49317398],
     5330                             [- 6.27276928, - 0.00058457, 0.00035820, 7.27218471, 0.99821402, 0.99905722, 0.49317402],
     5331                             [- 6.27276954, - 0.00058446, 0.00035814, 7.27218508, 0.99821436, 0.99905740, 0.49317408],
     5332                             [- 6.27276981, - 0.00058435, 0.00035807, 7.27218545, 0.99821470, 0.99905758, 0.49317410],
     5333                             [- 6.27277007, - 0.00058424, 0.00035800, 7.27218583, 0.99821504, 0.99905775, 0.49317417],
     5334                             [- 6.27277034, - 0.00058413, 0.00035793, 7.27218620, 0.99821537, 0.99905793, 0.49317422],
     5335                             [- 6.27277060, - 0.00058402, 0.00035787, 7.27218658, 0.99821571, 0.99905811, 0.49317425],
     5336                             [- 6.27277086, - 0.00058391, 0.00035780, 7.27218695, 0.99821605, 0.99905829, 0.49317429],
     5337                             [- 6.27277113, - 0.00058380, 0.00035773, 7.27218732, 0.99821638, 0.99905847, 0.49317428],
     5338                             [- 6.27277139, - 0.00058369, 0.00035766, 7.27218770, 0.99821672, 0.99905864, 0.49317437],
     5339                             [- 6.27277165, - 0.00058358, 0.00035760, 7.27218807, 0.99821706, 0.99905882, 0.49317446],
     5340                             [- 6.27277192, - 0.00058347, 0.00035753, 7.27218844, 0.99821739, 0.99905900, 0.49317445],
     5341                             [- 6.27277218, - 0.00058336, 0.00035746, 7.27218882, 0.99821773, 0.99905918, 0.49317449],
     5342                             [- 6.27277244, - 0.00058325, 0.00035739, 7.27218919, 0.99821806, 0.99905935, 0.49317453],
     5343                             [- 6.27277270, - 0.00058314, 0.00035733, 7.27218956, 0.99821840, 0.99905953, 0.49317457],
     5344                             [- 6.27277297, - 0.00058303, 0.00035726, 7.27218993, 0.99821874, 0.99905971, 0.49317458],
     5345                             [- 6.27277323, - 0.00058292, 0.00035719, 7.27219031, 0.99821907, 0.99905988, 0.49317467],
     5346                             [- 6.27277349, - 0.00058281, 0.00035712, 7.27219068, 0.99821941, 0.99906006, 0.49317464],
     5347                             [- 6.27277376, - 0.00058270, 0.00035706, 7.27219105, 0.99821974, 0.99906024, 0.49317472],
     5348                             [- 6.27277402, - 0.00058259, 0.00035699, 7.27219142, 0.99822008, 0.99906042, 0.49317476],
     5349                             [- 6.27277428, - 0.00058248, 0.00035692, 7.27219180, 0.99822041, 0.99906059, 0.49317478],
     5350                             [- 6.27277454, - 0.00058237, 0.00035686, 7.27219217, 0.99822075, 0.99906077, 0.49317481],
     5351                             [- 6.27277480, - 0.00058227, 0.00035679, 7.27219254, 0.99822108, 0.99906095, 0.49317486],
     5352                             [- 6.27277507, - 0.00058216, 0.00035672, 7.27219291, 0.99822142, 0.99906112, 0.49317492],
     5353                             [- 6.27277533, - 0.00058205, 0.00035665, 7.27219328, 0.99822175, 0.99906130, 0.49317497],
     5354                             [- 6.27277559, - 0.00058194, 0.00035659, 7.27219365, 0.99822209, 0.99906148, 0.49317500],
     5355                             [- 6.27277585, - 0.00058183, 0.00035652, 7.27219402, 0.99822242, 0.99906165, 0.49317504],
     5356                             [- 6.27277611, - 0.00058172, 0.00035645, 7.27219440, 0.99822275, 0.99906183, 0.49317502],
     5357                             [- 6.27277637, - 0.00058161, 0.00035639, 7.27219477, 0.99822309, 0.99906200, 0.49317510],
     5358                             [- 6.27277664, - 0.00058150, 0.00035632, 7.27219514, 0.99822342, 0.99906218, 0.49317515],
     5359                             [- 6.27277690, - 0.00058139, 0.00035625, 7.27219551, 0.99822376, 0.99906236, 0.49317515],
     5360                             [- 6.27277716, - 0.00058128, 0.00035619, 7.27219588, 0.99822409, 0.99906253, 0.49317527],
     5361                             [- 6.27277742, - 0.00058117, 0.00035612, 7.27219625, 0.99822442, 0.99906271, 0.49317521],
     5362                             [- 6.27277768, - 0.00058106, 0.00035605, 7.27219662, 0.99822476, 0.99906289, 0.49317533],
     5363                             [- 6.27277794, - 0.00058095, 0.00035598, 7.27219699, 0.99822509, 0.99906306, 0.49317536],
     5364                             [- 6.27277820, - 0.00058084, 0.00035592, 7.27219736, 0.99822542, 0.99906324, 0.49317532],
     5365                             [- 6.27277846, - 0.00058074, 0.00035585, 7.27219773, 0.99822576, 0.99906341, 0.49317542],
     5366                             [- 6.27277872, - 0.00058063, 0.00035578, 7.27219810, 0.99822609, 0.99906359, 0.49317544],
     5367                             [- 6.27277898, - 0.00058052, 0.00035572, 7.27219847, 0.99822642, 0.99906376, 0.49317549],
     5368                             [- 6.27277924, - 0.00058041, 0.00035565, 7.27219884, 0.99822675, 0.99906394, 0.49317552],
     5369                             [- 6.27277950, - 0.00058030, 0.00035558, 7.27219920, 0.99822709, 0.99906412, 0.49317558],
     5370                             [- 6.27277977, - 0.00058019, 0.00035552, 7.27219957, 0.99822742, 0.99906429, 0.49317562],
     5371                             [- 6.27278003, - 0.00058008, 0.00035545, 7.27219994, 0.99822775, 0.99906447, 0.49317566],
     5372                             [- 6.27278029, - 0.00057997, 0.00035538, 7.27220031, 0.99822808, 0.99906464, 0.49317568],
     5373                             [- 6.27278055, - 0.00057987, 0.00035532, 7.27220068, 0.99822842, 0.99906482, 0.49317573],
     5374                             [- 6.27278080, - 0.00057976, 0.00035525, 7.27220105, 0.99822875, 0.99906499, 0.49317574],
     5375                             [- 6.27278106, - 0.00057965, 0.00035518, 7.27220142, 0.99822908, 0.99906517, 0.49317581],
     5376                             [- 6.27278132, - 0.00057954, 0.00035512, 7.27220178, 0.99822941, 0.99906534, 0.49317584],
     5377                             [- 6.27278158, - 0.00057943, 0.00035505, 7.27220215, 0.99822974, 0.99906552, 0.49317591],
     5378                             [- 6.27278184, - 0.00057932, 0.00035498, 7.27220252, 0.99823008, 0.99906569, 0.49317591],
     5379                             [- 6.27278210, - 0.00057921, 0.00035492, 7.27220289, 0.99823041, 0.99906587, 0.49317595],
     5380                             [- 6.27278236, - 0.00057911, 0.00035485, 7.27220326, 0.99823074, 0.99906604, 0.49317597],
     5381                             [- 6.27278262, - 0.00057900, 0.00035479, 7.27220362, 0.99823107, 0.99906622, 0.49317601],
     5382                             [- 6.27278288, - 0.00057889, 0.00035472, 7.27220399, 0.99823140, 0.99906639, 0.49317609],
     5383                             [- 6.27278314, - 0.00057878, 0.00035465, 7.27220436, 0.99823173, 0.99906657, 0.49317610],
     5384                             [- 6.27278340, - 0.00057867, 0.00035459, 7.27220472, 0.99823206, 0.99906674, 0.49317615],
     5385                             [- 6.27278366, - 0.00057857, 0.00035452, 7.27220509, 0.99823239, 0.99906691, 0.49317621],
     5386                             [- 6.27278392, - 0.00057846, 0.00035445, 7.27220546, 0.99823272, 0.99906709, 0.49317622],
     5387                             [- 6.27278417, - 0.00057835, 0.00035439, 7.27220582, 0.99823305, 0.99906726, 0.49317632],
     5388                             [- 6.27278443, - 0.00057824, 0.00035432, 7.27220619, 0.99823338, 0.99906744, 0.49317629],
     5389                             [- 6.27278469, - 0.00057813, 0.00035425, 7.27220656, 0.99823371, 0.99906761, 0.49317636],
     5390                             [- 6.27278495, - 0.00057802, 0.00035419, 7.27220692, 0.99823404, 0.99906779, 0.49317638],
     5391                             [- 6.27278521, - 0.00057792, 0.00035412, 7.27220729, 0.99823437, 0.99906796, 0.49317641],
     5392                             [- 6.27278547, - 0.00057781, 0.00035406, 7.27220766, 0.99823470, 0.99906813, 0.49317644],
     5393                             [- 6.27278572, - 0.00057770, 0.00035399, 7.27220802, 0.99823503, 0.99906831, 0.49317646],
     5394                             [- 6.27278598, - 0.00057759, 0.00035392, 7.27220839, 0.99823536, 0.99906848, 0.49317651],
     5395                             [- 6.27278624, - 0.00057749, 0.00035386, 7.27220875, 0.99823569, 0.99906866, 0.49317654],
     5396                             [- 6.27278650, - 0.00057738, 0.00035379, 7.27220912, 0.99823602, 0.99906883, 0.49317660],
     5397                             [- 6.27278675, - 0.00057727, 0.00035373, 7.27220948, 0.99823635, 0.99906900, 0.49317666],
     5398                             [- 6.27278701, - 0.00057716, 0.00035366, 7.27220985, 0.99823668, 0.99906918, 0.49317668],
     5399                             [- 6.27278727, - 0.00057706, 0.00035359, 7.27221021, 0.99823701, 0.99906935, 0.49317676],
     5400                             [- 6.27278753, - 0.00057695, 0.00035353, 7.27221058, 0.99823734, 0.99906952, 0.49317676],
     5401                             [- 6.27278778, - 0.00057684, 0.00035346, 7.27221094, 0.99823766, 0.99906970, 0.49317678],
     5402                             [- 6.27278804, - 0.00057673, 0.00035340, 7.27221131, 0.99823799, 0.99906987, 0.49317683],
     5403                             [- 6.27278830, - 0.00057663, 0.00035333, 7.27221167, 0.99823832, 0.99907004, 0.49317687],
     5404                             [- 6.27278855, - 0.00057652, 0.00035326, 7.27221204, 0.99823865, 0.99907022, 0.49317691],
     5405                             [- 6.27278881, - 0.00057641, 0.00035320, 7.27221240, 0.99823898, 0.99907039, 0.49317697],
     5406                             [- 6.27278907, - 0.00057630, 0.00035313, 7.27221277, 0.99823931, 0.99907056, 0.49317699],
     5407                             [- 6.27278933, - 0.00057620, 0.00035307, 7.27221313, 0.99823963, 0.99907074, 0.49317702],
     5408                             [- 6.27278958, - 0.00057609, 0.00035300, 7.27221349, 0.99823996, 0.99907091, 0.49317708],
     5409                             [- 6.27278984, - 0.00057598, 0.00035294, 7.27221386, 0.99824029, 0.99907108, 0.49317710],
     5410                             [- 6.27279009, - 0.00057587, 0.00035287, 7.27221422, 0.99824062, 0.99907126, 0.49317717],
     5411                             [- 6.27279035, - 0.00057577, 0.00035280, 7.27221458, 0.99824094, 0.99907143, 0.49317720],
     5412                             [- 6.27279061, - 0.00057566, 0.00035274, 7.27221495, 0.99824127, 0.99907160, 0.49317720],
     5413                             [- 6.27279086, - 0.00057555, 0.00035267, 7.27221531, 0.99824160, 0.99907177, 0.49317727],
     5414                             [- 6.27279112, - 0.00057545, 0.00035261, 7.27221567, 0.99824193, 0.99907195, 0.49317735],
     5415                             [- 6.27279137, - 0.00057534, 0.00035254, 7.27221604, 0.99824225, 0.99907212, 0.49317732],
     5416                             [- 6.27279163, - 0.00057523, 0.00035248, 7.27221640, 0.99824258, 0.99907229, 0.49317739],
     5417                             [- 6.27279189, - 0.00057513, 0.00035241, 7.27221676, 0.99824291, 0.99907246, 0.49317738],
     5418                             [- 6.27279214, - 0.00057502, 0.00035235, 7.27221712, 0.99824323, 0.99907264, 0.49317745],
     5419                             [- 6.27279240, - 0.00057491, 0.00035228, 7.27221749, 0.99824356, 0.99907281, 0.49317748],
     5420                             [- 6.27279265, - 0.00057480, 0.00035221, 7.27221785, 0.99824389, 0.99907298, 0.49317752],
     5421                             [- 6.27279291, - 0.00057470, 0.00035215, 7.27221821, 0.99824421, 0.99907315, 0.49317757],
     5422                             [- 6.27279316, - 0.00057459, 0.00035208, 7.27221857, 0.99824454, 0.99907332, 0.49317760],
     5423                             [- 6.27279342, - 0.00057448, 0.00035202, 7.27221893, 0.99824486, 0.99907350, 0.49317764],
     5424                             [- 6.27279367, - 0.00057438, 0.00035195, 7.27221930, 0.99824519, 0.99907367, 0.49317766],
     5425                             [- 6.27279393, - 0.00057427, 0.00035189, 7.27221966, 0.99824551, 0.99907384, 0.49317770],
     5426                             [- 6.27279418, - 0.00057417, 0.00035182, 7.27222002, 0.99824584, 0.99907401, 0.49317777],
     5427                             [- 6.27279444, - 0.00057406, 0.00035176, 7.27222038, 0.99824617, 0.99907418, 0.49317774],
     5428                             [- 6.27279469, - 0.00057395, 0.00035169, 7.27222074, 0.99824649, 0.99907436, 0.49317781],
     5429                             [- 6.27279495, - 0.00057385, 0.00035163, 7.27222110, 0.99824682, 0.99907453, 0.49317792],
     5430                             [- 6.27279520, - 0.00057374, 0.00035156, 7.27222146, 0.99824714, 0.99907470, 0.49317788],
     5431                             [- 6.27279546, - 0.00057363, 0.00035150, 7.27222182, 0.99824747, 0.99907487, 0.49317793],
     5432                             [- 6.27279571, - 0.00057353, 0.00035143, 7.27222218, 0.99824779, 0.99907504, 0.49317800],
     5433                             [- 6.27279596, - 0.00057342, 0.00035137, 7.27222254, 0.99824812, 0.99907521, 0.49317798],
     5434                             [- 6.27279622, - 0.00057331, 0.00035130, 7.27222290, 0.99824844, 0.99907538, 0.49317810],
     5435                             [- 6.27279647, - 0.00057321, 0.00035124, 7.27222326, 0.99824877, 0.99907556, 0.49317811],
     5436                             [- 6.27279673, - 0.00057310, 0.00035117, 7.27222362, 0.99824909, 0.99907573, 0.49317808],
     5437                             [- 6.27279698, - 0.00057300, 0.00035111, 7.27222398, 0.99824941, 0.99907590, 0.49317818],
     5438                             [- 6.27279723, - 0.00057289, 0.00035104, 7.27222434, 0.99824974, 0.99907607, 0.49317820],
     5439                             [- 6.27279749, - 0.00057278, 0.00035098, 7.27222470, 0.99825006, 0.99907624, 0.49317824],
     5440                             [- 6.27279774, - 0.00057268, 0.00035091, 7.27222506, 0.99825039, 0.99907641, 0.49317828],
     5441                             [- 6.27279799, - 0.00057257, 0.00035085, 7.27222542, 0.99825071, 0.99907658, 0.49317828],
     5442                             [- 6.27279825, - 0.00057247, 0.00035078, 7.27222578, 0.99825103, 0.99907675, 0.49317836],
     5443                             [- 6.27279850, - 0.00057236, 0.00035072, 7.27222614, 0.99825136, 0.99907692, 0.49317841],
     5444                             [- 6.27279875, - 0.00057225, 0.00035065, 7.27222650, 0.99825168, 0.99907709, 0.49317844],
     5445                             [- 6.27279901, - 0.00057215, 0.00035059, 7.27222686, 0.99825200, 0.99907727, 0.49317846],
     5446                             [- 6.27279926, - 0.00057204, 0.00035052, 7.27222722, 0.99825233, 0.99907744, 0.49317853],
     5447                             [- 6.27279951, - 0.00057194, 0.00035046, 7.27222758, 0.99825265, 0.99907761, 0.49317855],
     5448                             [- 6.27279977, - 0.00057183, 0.00035039, 7.27222793, 0.99825297, 0.99907778, 0.49317862],
     5449                             [- 6.27280002, - 0.00057173, 0.00035033, 7.27222829, 0.99825330, 0.99907795, 0.49317862],
     5450                             [- 6.27280027, - 0.00057162, 0.00035026, 7.27222865, 0.99825362, 0.99907812, 0.49317865],
     5451                             [- 6.27280052, - 0.00057152, 0.00035020, 7.27222901, 0.99825394, 0.99907829, 0.49317872],
     5452                             [- 6.27280078, - 0.00057141, 0.00035013, 7.27222937, 0.99825426, 0.99907846, 0.49317874],
     5453                             [- 6.27280103, - 0.00057130, 0.00035007, 7.27222972, 0.99825459, 0.99907863, 0.49317875],
     5454                             [- 6.27280128, - 0.00057120, 0.00035000, 7.27223008, 0.99825491, 0.99907880, 0.49317879],
     5455                             [- 6.27280153, - 0.00057109, 0.00034994, 7.27223044, 0.99825523, 0.99907897, 0.49317885],
     5456                             [- 6.27280178, - 0.00057099, 0.00034987, 7.27223080, 0.99825555, 0.99907914, 0.49317886],
     5457                             [- 6.27280204, - 0.00057088, 0.00034981, 7.27223115, 0.99825587, 0.99907931, 0.49317891],
     5458                             [- 6.27280229, - 0.00057078, 0.00034974, 7.27223151, 0.99825620, 0.99907948, 0.49317896],
     5459                             [- 6.27280254, - 0.00057067, 0.00034968, 7.27223187, 0.99825652, 0.99907965, 0.49317901],
     5460                             [- 6.27280279, - 0.00057057, 0.00034962, 7.27223222, 0.99825684, 0.99907982, 0.49317904],
     5461                             [- 6.27280304, - 0.00057046, 0.00034955, 7.27223258, 0.99825716, 0.99907999, 0.49317904],
     5462                             [- 6.27280329, - 0.00057036, 0.00034949, 7.27223294, 0.99825748, 0.99908016, 0.49317910],
     5463                             [- 6.27280355, - 0.00057025, 0.00034942, 7.27223329, 0.99825780, 0.99908033, 0.49317919],
     5464                             [- 6.27280380, - 0.00057015, 0.00034936, 7.27223365, 0.99825812, 0.99908050, 0.49317919],
     5465                             [- 6.27280405, - 0.00057004, 0.00034929, 7.27223401, 0.99825844, 0.99908066, 0.49317919],
     5466                             [- 6.27280430, - 0.00056994, 0.00034923, 7.27223436, 0.99825877, 0.99908083, 0.49317929],
     5467                             [- 6.27280455, - 0.00056983, 0.00034916, 7.27223472, 0.99825909, 0.99908100, 0.49317932],
     5468                             [- 6.27280480, - 0.00056973, 0.00034910, 7.27223507, 0.99825941, 0.99908117, 0.49317933],
     5469                             [- 6.27280505, - 0.00056962, 0.00034904, 7.27223543, 0.99825973, 0.99908134, 0.49317936],
     5470                             [- 6.27280530, - 0.00056952, 0.00034897, 7.27223579, 0.99826005, 0.99908151, 0.49317942],
     5471                             [- 6.27280555, - 0.00056941, 0.00034891, 7.27223614, 0.99826037, 0.99908168, 0.49317941],
     5472                             [- 6.27280580, - 0.00056931, 0.00034884, 7.27223650, 0.99826069, 0.99908185, 0.49317944],
     5473                             [- 6.27280606, - 0.00056920, 0.00034878, 7.27223685, 0.99826101, 0.99908202, 0.49317951],
     5474                             [- 6.27280631, - 0.00056910, 0.00034872, 7.27223721, 0.99826133, 0.99908219, 0.49317958],
     5475                             [- 6.27280656, - 0.00056899, 0.00034865, 7.27223756, 0.99826165, 0.99908235, 0.49317962],
     5476                             [- 6.27280681, - 0.00056889, 0.00034859, 7.27223792, 0.99826197, 0.99908252, 0.49317961],
     5477                             [- 6.27280706, - 0.00056878, 0.00034852, 7.27223827, 0.99826229, 0.99908269, 0.49317963],
     5478                             [- 6.27280731, - 0.00056868, 0.00034846, 7.27223863, 0.99826261, 0.99908286, 0.49317970],
     5479                             [- 6.27280756, - 0.00056858, 0.00034839, 7.27223898, 0.99826293, 0.99908303, 0.49317974],
     5480                             [- 6.27280781, - 0.00056847, 0.00034833, 7.27223933, 0.99826324, 0.99908320, 0.49317978],
     5481                             [- 6.27280806, - 0.00056837, 0.00034827, 7.27223969, 0.99826356, 0.99908337, 0.49317977],
     5482                             [- 6.27280830, - 0.00056826, 0.00034820, 7.27224004, 0.99826388, 0.99908353, 0.49317984],
     5483                             [- 6.27280855, - 0.00056816, 0.00034814, 7.27224040, 0.99826420, 0.99908370, 0.49317991],
     5484                             [- 6.27280880, - 0.00056805, 0.00034807, 7.27224075, 0.99826452, 0.99908387, 0.49317993],
     5485                             [- 6.27280905, - 0.00056795, 0.00034801, 7.27224110, 0.99826484, 0.99908404, 0.49317997],
     5486                             [- 6.27280930, - 0.00056785, 0.00034795, 7.27224146, 0.99826516, 0.99908421, 0.49317999],
     5487                             [- 6.27280955, - 0.00056774, 0.00034788, 7.27224181, 0.99826547, 0.99908438, 0.49318004],
     5488                             [- 6.27280980, - 0.00056764, 0.00034782, 7.27224216, 0.99826579, 0.99908454, 0.49318009],
     5489                             [- 6.27281005, - 0.00056753, 0.00034776, 7.27224252, 0.99826611, 0.99908471, 0.49318013],
     5490                             [- 6.27281030, - 0.00056743, 0.00034769, 7.27224287, 0.99826643, 0.99908488, 0.49318014],
     5491                             [- 6.27281055, - 0.00056733, 0.00034763, 7.27224322, 0.99826675, 0.99908505, 0.49318020],
     5492                             [- 6.27281080, - 0.00056722, 0.00034756, 7.27224357, 0.99826706, 0.99908521, 0.49318023],
     5493                             [- 6.27281104, - 0.00056712, 0.00034750, 7.27224393, 0.99826738, 0.99908538, 0.49318021],
     5494                             [- 6.27281129, - 0.00056701, 0.00034744, 7.27224428, 0.99826770, 0.99908555, 0.49318033],
     5495                             [- 6.27281154, - 0.00056691, 0.00034737, 7.27224463, 0.99826802, 0.99908572, 0.49318033],
     5496                             [- 6.27281179, - 0.00056681, 0.00034731, 7.27224498, 0.99826833, 0.99908588, 0.49318036],
     5497                             [- 6.27281204, - 0.00056670, 0.00034725, 7.27224534, 0.99826865, 0.99908605, 0.49318042],
     5498                             [- 6.27281229, - 0.00056660, 0.00034718, 7.27224569, 0.99826897, 0.99908622, 0.49318046],
     5499                             [- 6.27281253, - 0.00056649, 0.00034712, 7.27224604, 0.99826929, 0.99908639, 0.49318048],
     5500                             [- 6.27281278, - 0.00056639, 0.00034706, 7.27224639, 0.99826960, 0.99908655, 0.49318053],
     5501                             [- 6.27281303, - 0.00056629, 0.00034699, 7.27224674, 0.99826992, 0.99908672, 0.49318056],
     5502                             [- 6.27281328, - 0.00056618, 0.00034693, 7.27224709, 0.99827024, 0.99908689, 0.49318059],
     5503                             [- 6.27281353, - 0.00056608, 0.00034686, 7.27224745, 0.99827055, 0.99908705, 0.49318066],
     5504                             [- 6.27281377, - 0.00056598, 0.00034680, 7.27224780, 0.99827087, 0.99908722, 0.49318067],
     5505                             [- 6.27281402, - 0.00056587, 0.00034674, 7.27224815, 0.99827119, 0.99908739, 0.49318073],
     5506                             [- 6.27281427, - 0.00056577, 0.00034667, 7.27224850, 0.99827150, 0.99908756, 0.49318072],
     5507                             [- 6.27281452, - 0.00056567, 0.00034661, 7.27224885, 0.99827182, 0.99908772, 0.49318077],
     5508                             [- 6.27281476, - 0.00056556, 0.00034655, 7.27224920, 0.99827213, 0.99908789, 0.49318079],
     5509                             [- 6.27281501, - 0.00056546, 0.00034648, 7.27224955, 0.99827245, 0.99908806, 0.49318086],
     5510                             [- 6.27281526, - 0.00056536, 0.00034642, 7.27224990, 0.99827276, 0.99908822, 0.49318086],
     5511                             [- 6.27281550, - 0.00056525, 0.00034636, 7.27225025, 0.99827308, 0.99908839, 0.49318091],
     5512                             [- 6.27281575, - 0.00056515, 0.00034629, 7.27225060, 0.99827340, 0.99908856, 0.49318093],
     5513                             [- 6.27281600, - 0.00056505, 0.00034623, 7.27225095, 0.99827371, 0.99908872, 0.49318097],
     5514                             [- 6.27281624, - 0.00056494, 0.00034617, 7.27225130, 0.99827403, 0.99908889, 0.49318102],
     5515                             [- 6.27281649, - 0.00056484, 0.00034610, 7.27225165, 0.99827434, 0.99908905, 0.49318109],
     5516                             [- 6.27281674, - 0.00056474, 0.00034604, 7.27225200, 0.99827466, 0.99908922, 0.49318111],
     5517                             [- 6.27281698, - 0.00056463, 0.00034598, 7.27225235, 0.99827497, 0.99908939, 0.49318114],
     5518                             [- 6.27281723, - 0.00056453, 0.00034592, 7.27225270, 0.99827529, 0.99908955, 0.49318118],
     5519                             [- 6.27281748, - 0.00056443, 0.00034585, 7.27225305, 0.99827560, 0.99908972, 0.49318122],
     5520                             [- 6.27281772, - 0.00056433, 0.00034579, 7.27225340, 0.99827591, 0.99908988, 0.49318124],
     5521                             [- 6.27281797, - 0.00056422, 0.00034573, 7.27225375, 0.99827623, 0.99909005, 0.49318128],
     5522                             [- 6.27281822, - 0.00056412, 0.00034566, 7.27225409, 0.99827654, 0.99909022, 0.49318131],
     5523                             [- 6.27281846, - 0.00056402, 0.00034560, 7.27225444, 0.99827686, 0.99909038, 0.49318135],
     5524                             [- 6.27281871, - 0.00056391, 0.00034554, 7.27225479, 0.99827717, 0.99909055, 0.49318140],
     5525                             [- 6.27281895, - 0.00056381, 0.00034547, 7.27225514, 0.99827749, 0.99909071, 0.49318139],
     5526                             [- 6.27281920, - 0.00056371, 0.00034541, 7.27225549, 0.99827780, 0.99909088, 0.49318148],
     5527                             [- 6.27281944, - 0.00056361, 0.00034535, 7.27225584, 0.99827811, 0.99909105, 0.49318152],
     5528                             [- 6.27281969, - 0.00056350, 0.00034528, 7.27225619, 0.99827843, 0.99909121, 0.49318156],
     5529                             [- 6.27281993, - 0.00056340, 0.00034522, 7.27225653, 0.99827874, 0.99909138, 0.49318159],
     5530                             [- 6.27282018, - 0.00056330, 0.00034516, 7.27225688, 0.99827905, 0.99909154, 0.49318163],
     5531                             [- 6.27282043, - 0.00056320, 0.00034510, 7.27225723, 0.99827937, 0.99909171, 0.49318166],
     5532                             [- 6.27282067, - 0.00056309, 0.00034503, 7.27225758, 0.99827968, 0.99909187, 0.49318168],
     5533                             [- 6.27282092, - 0.00056299, 0.00034497, 7.27225792, 0.99827999, 0.99909204, 0.49318179],
     5534                             [- 6.27282116, - 0.00056289, 0.00034491, 7.27225827, 0.99828031, 0.99909220, 0.49318171],
     5535                             [- 6.27282141, - 0.00056279, 0.00034485, 7.27225862, 0.99828062, 0.99909237, 0.49318177],
     5536                             [- 6.27282165, - 0.00056268, 0.00034478, 7.27225897, 0.99828093, 0.99909253, 0.49318188],
     5537                             [- 6.27282189, - 0.00056258, 0.00034472, 7.27225931, 0.99828124, 0.99909270, 0.49318185],
     5538                             [- 6.27282214, - 0.00056248, 0.00034466, 7.27225966, 0.99828156, 0.99909286, 0.49318190],
     5539                             [- 6.27282238, - 0.00056238, 0.00034459, 7.27226001, 0.99828187, 0.99909303, 0.49318196],
     5540                             [- 6.27282263, - 0.00056228, 0.00034453, 7.27226035, 0.99828218, 0.99909319, 0.49318197],
     5541                             [- 6.27282287, - 0.00056217, 0.00034447, 7.27226070, 0.99828249, 0.99909336, 0.49318203],
     5542                             [- 6.27282312, - 0.00056207, 0.00034441, 7.27226104, 0.99828281, 0.99909352, 0.49318204],
     5543                             [- 6.27282336, - 0.00056197, 0.00034434, 7.27226139, 0.99828312, 0.99909369, 0.49318210],
     5544                             [- 6.27282360, - 0.00056187, 0.00034428, 7.27226174, 0.99828343, 0.99909385, 0.49318213],
     5545                             [- 6.27282385, - 0.00056177, 0.00034422, 7.27226208, 0.99828374, 0.99909402, 0.49318217],
     5546                             [- 6.27282409, - 0.00056166, 0.00034416, 7.27226243, 0.99828405, 0.99909418, 0.49318219],
     5547                             [- 6.27282434, - 0.00056156, 0.00034409, 7.27226277, 0.99828436, 0.99909434, 0.49318217],
     5548                             [- 6.27282458, - 0.00056146, 0.00034403, 7.27226312, 0.99828467, 0.99909451, 0.49318229],
     5549                             [- 6.27282482, - 0.00056136, 0.00034397, 7.27226347, 0.99828499, 0.99909467, 0.49318235],
     5550                             [- 6.27282507, - 0.00056126, 0.00034391, 7.27226381, 0.99828530, 0.99909484, 0.49318234],
     5551                             [- 6.27282531, - 0.00056115, 0.00034384, 7.27226416, 0.99828561, 0.99909500, 0.49318238],
     5552                             [- 6.27282555, - 0.00056105, 0.00034378, 7.27226450, 0.99828592, 0.99909516, 0.49318244],
     5553                             [- 6.27282580, - 0.00056095, 0.00034372, 7.27226485, 0.99828623, 0.99909533, 0.49318245],
     5554                             [- 6.27282604, - 0.00056085, 0.00034366, 7.27226519, 0.99828654, 0.99909549, 0.49318251],
     5555                             [- 6.27282628, - 0.00056075, 0.00034360, 7.27226554, 0.99828685, 0.99909566, 0.49318249],
     5556                             [- 6.27282653, - 0.00056065, 0.00034353, 7.27226588, 0.99828716, 0.99909582, 0.49318260],
     5557                             [- 6.27282677, - 0.00056055, 0.00034347, 7.27226622, 0.99828747, 0.99909598, 0.49318256],
     5558                             [- 6.27282701, - 0.00056044, 0.00034341, 7.27226657, 0.99828778, 0.99909615, 0.49318268],
     5559                             [- 6.27282725, - 0.00056034, 0.00034335, 7.27226691, 0.99828809, 0.99909631, 0.49318269],
     5560                             [- 6.27282750, - 0.00056024, 0.00034328, 7.27226726, 0.99828840, 0.99909648, 0.49318273],
     5561                             [- 6.27282774, - 0.00056014, 0.00034322, 7.27226760, 0.99828871, 0.99909664, 0.49318276],
     5562                             [- 6.27282798, - 0.00056004, 0.00034316, 7.27226794, 0.99828902, 0.99909680, 0.49318278],
     5563                             [- 6.27282822, - 0.00055994, 0.00034310, 7.27226829, 0.99828933, 0.99909697, 0.49318281],
     5564                             [- 6.27282847, - 0.00055984, 0.00034304, 7.27226863, 0.99828964, 0.99909713, 0.49318285],
     5565                             [- 6.27282871, - 0.00055973, 0.00034297, 7.27226898, 0.99828995, 0.99909729, 0.49318289],
     5566                             [- 6.27282895, - 0.00055963, 0.00034291, 7.27226932, 0.99829026, 0.99909746, 0.49318294],
     5567                             [- 6.27282919, - 0.00055953, 0.00034285, 7.27226966, 0.99829057, 0.99909762, 0.49318296],
     5568                             [- 6.27282944, - 0.00055943, 0.00034279, 7.27227000, 0.99829088, 0.99909778, 0.49318295],
     5569                             [- 6.27282968, - 0.00055933, 0.00034273, 7.27227035, 0.99829119, 0.99909794, 0.49318302],
     5570                             [- 6.27282992, - 0.00055923, 0.00034266, 7.27227069, 0.99829150, 0.99909811, 0.49318310],
     5571                             [- 6.27283016, - 0.00055913, 0.00034260, 7.27227103, 0.99829180, 0.99909827, 0.49318311],
     5572                             [- 6.27283040, - 0.00055903, 0.00034254, 7.27227138, 0.99829211, 0.99909843, 0.49318314],
     5573                             [- 6.27283064, - 0.00055893, 0.00034248, 7.27227172, 0.99829242, 0.99909860, 0.49318318],
     5574                             [- 6.27283089, - 0.00055882, 0.00034242, 7.27227206, 0.99829273, 0.99909876, 0.49318320],
     5575                             [- 6.27283113, - 0.00055872, 0.00034235, 7.27227240, 0.99829304, 0.99909892, 0.49318320],
     5576                             [- 6.27283137, - 0.00055862, 0.00034229, 7.27227274, 0.99829335, 0.99909908, 0.49318327],
     5577                             [- 6.27283161, - 0.00055852, 0.00034223, 7.27227309, 0.99829365, 0.99909925, 0.49318333],
     5578                             [- 6.27283185, - 0.00055842, 0.00034217, 7.27227343, 0.99829396, 0.99909941, 0.49318333],
     5579                             [- 6.27283209, - 0.00055832, 0.00034211, 7.27227377, 0.99829427, 0.99909957, 0.49318336],
     5580                             [- 6.27283233, - 0.00055822, 0.00034204, 7.27227411, 0.99829458, 0.99909973, 0.49318343],
     5581                             [- 6.27283257, - 0.00055812, 0.00034198, 7.27227445, 0.99829489, 0.99909990, 0.49318344],
     5582                             [- 6.27283281, - 0.00055802, 0.00034192, 7.27227479, 0.99829519, 0.99910006, 0.49318351],
     5583                             [- 6.27283305, - 0.00055792, 0.00034186, 7.27227514, 0.99829550, 0.99910022, 0.49318353],
     5584                             [- 6.27283329, - 0.00055782, 0.00034180, 7.27227548, 0.99829581, 0.99910038, 0.49318358],
     5585                             [- 6.27283353, - 0.00055772, 0.00034174, 7.27227582, 0.99829611, 0.99910055, 0.49318362],
     5586                             [- 6.27283378, - 0.00055762, 0.00034168, 7.27227616, 0.99829642, 0.99910071, 0.49318360],
     5587                             [- 6.27283402, - 0.00055752, 0.00034161, 7.27227650, 0.99829673, 0.99910087, 0.49318367],
     5588                             [- 6.27283426, - 0.00055742, 0.00034155, 7.27227684, 0.99829704, 0.99910103, 0.49318371],
     5589                             [- 6.27283450, - 0.00055732, 0.00034149, 7.27227718, 0.99829734, 0.99910119, 0.49318374],
     5590                             [- 6.27283474, - 0.00055722, 0.00034143, 7.27227752, 0.99829765, 0.99910136, 0.49318380],
     5591                             [- 6.27283498, - 0.00055712, 0.00034137, 7.27227786, 0.99829796, 0.99910152, 0.49318376],
     5592                             [- 6.27283522, - 0.00055701, 0.00034131, 7.27227820, 0.99829826, 0.99910168, 0.49318386],
     5593                             [- 6.27283546, - 0.00055691, 0.00034124, 7.27227854, 0.99829857, 0.99910184, 0.49318389],
     5594                             [- 6.27283570, - 0.00055681, 0.00034118, 7.27227888, 0.99829887, 0.99910200, 0.49318390],
     5595                             [- 6.27283593, - 0.00055671, 0.00034112, 7.27227922, 0.99829918, 0.99910216, 0.49318396],
     5596                             [- 6.27283617, - 0.00055661, 0.00034106, 7.27227956, 0.99829949, 0.99910233, 0.49318401],
     5597                             [- 6.27283641, - 0.00055651, 0.00034100, 7.27227990, 0.99829979, 0.99910249, 0.49318410],
     5598                             [- 6.27283665, - 0.00055641, 0.00034094, 7.27228024, 0.99830010, 0.99910265, 0.49318407],
     5599                             [- 6.27283689, - 0.00055631, 0.00034088, 7.27228058, 0.99830040, 0.99910281, 0.49318407],
     5600                             [- 6.27283713, - 0.00055621, 0.00034081, 7.27228092, 0.99830071, 0.99910297, 0.49318414],
     5601                             [- 6.27283737, - 0.00055611, 0.00034075, 7.27228126, 0.99830101, 0.99910313, 0.49318415],
     5602                             [- 6.27283761, - 0.00055601, 0.00034069, 7.27228159, 0.99830132, 0.99910329, 0.49318423],
     5603                             [- 6.27283785, - 0.00055591, 0.00034063, 7.27228193, 0.99830163, 0.99910345, 0.49318423],
     5604                             [- 6.27283809, - 0.00055581, 0.00034057, 7.27228227, 0.99830193, 0.99910362, 0.49318427],
     5605                             [- 6.27283833, - 0.00055571, 0.00034051, 7.27228261, 0.99830224, 0.99910378, 0.49318428],
     5606                             [- 6.27283856, - 0.00055562, 0.00034045, 7.27228295, 0.99830254, 0.99910394, 0.49318433],
     5607                             [- 6.27283880, - 0.00055552, 0.00034039, 7.27228329, 0.99830285, 0.99910410, 0.49318443],
     5608                             [- 6.27283904, - 0.00055542, 0.00034033, 7.27228363, 0.99830315, 0.99910426, 0.49318443],
     5609                             [- 6.27283928, - 0.00055532, 0.00034026, 7.27228396, 0.99830345, 0.99910442, 0.49318449],
     5610                             [- 6.27283952, - 0.00055522, 0.00034020, 7.27228430, 0.99830376, 0.99910458, 0.49318449],
     5611                             [- 6.27283976, - 0.00055512, 0.00034014, 7.27228464, 0.99830406, 0.99910474, 0.49318454],
     5612                             [- 6.27283999, - 0.00055502, 0.00034008, 7.27228498, 0.99830437, 0.99910490, 0.49318457],
     5613                             [- 6.27284023, - 0.00055492, 0.00034002, 7.27228531, 0.99830467, 0.99910506, 0.49318459],
     5614                             [- 6.27284047, - 0.00055482, 0.00033996, 7.27228565, 0.99830498, 0.99910522, 0.49318460],
     5615                             [- 6.27284071, - 0.00055472, 0.00033990, 7.27228599, 0.99830528, 0.99910538, 0.49318465],
     5616                             [- 6.27284095, - 0.00055462, 0.00033984, 7.27228633, 0.99830558, 0.99910554, 0.49318472],
     5617                             [- 6.27284118, - 0.00055452, 0.00033978, 7.27228666, 0.99830589, 0.99910570, 0.49318477],
     5618                             [- 6.27284142, - 0.00055442, 0.00033972, 7.27228700, 0.99830619, 0.99910586, 0.49318479],
     5619                             [- 6.27284166, - 0.00055432, 0.00033965, 7.27228734, 0.99830649, 0.99910602, 0.49318483],
     5620                             [- 6.27284190, - 0.00055422, 0.00033959, 7.27228767, 0.99830680, 0.99910618, 0.49318487],
     5621                             [- 6.27284213, - 0.00055412, 0.00033953, 7.27228801, 0.99830710, 0.99910634, 0.49318489],
     5622                             [- 6.27284237, - 0.00055402, 0.00033947, 7.27228835, 0.99830740, 0.99910650, 0.49318490],
     5623                             [- 6.27284261, - 0.00055393, 0.00033941, 7.27228868, 0.99830771, 0.99910666, 0.49318496],
     5624                             [- 6.27284285, - 0.00055383, 0.00033935, 7.27228902, 0.99830801, 0.99910682, 0.49318499],
     5625                             [- 6.27284308, - 0.00055373, 0.00033929, 7.27228936, 0.99830831, 0.99910698, 0.49318499],
     5626                             [- 6.27284332, - 0.00055363, 0.00033923, 7.27228969, 0.99830861, 0.99910714, 0.49318509],
     5627                             [- 6.27284356, - 0.00055353, 0.00033917, 7.27229003, 0.99830892, 0.99910730, 0.49318511],
     5628                             [- 6.27284379, - 0.00055343, 0.00033911, 7.27229036, 0.99830922, 0.99910746, 0.49318515],
     5629                             [- 6.27284403, - 0.00055333, 0.00033905, 7.27229070, 0.99830952, 0.99910762, 0.49318516],
     5630                             [- 6.27284427, - 0.00055323, 0.00033899, 7.27229103, 0.99830982, 0.99910778, 0.49318524],
     5631                             [- 6.27284450, - 0.00055313, 0.00033893, 7.27229137, 0.99831013, 0.99910794, 0.49318524],
     5632                             [- 6.27284474, - 0.00055303, 0.00033887, 7.27229170, 0.99831043, 0.99910810, 0.49318528],
     5633                             [- 6.27284498, - 0.00055294, 0.00033880, 7.27229204, 0.99831073, 0.99910826, 0.49318529],
     5634                             [- 6.27284521, - 0.00055284, 0.00033874, 7.27229237, 0.99831103, 0.99910842, 0.49318533],
     5635                             [- 6.27284545, - 0.00055274, 0.00033868, 7.27229271, 0.99831133, 0.99910858, 0.49318539],
     5636                             [- 6.27284568, - 0.00055264, 0.00033862, 7.27229304, 0.99831164, 0.99910874, 0.49318542],
     5637                             [- 6.27284592, - 0.00055254, 0.00033856, 7.27229338, 0.99831194, 0.99910890, 0.49318543],
     5638                             [- 6.27284616, - 0.00055244, 0.00033850, 7.27229371, 0.99831224, 0.99910906, 0.49318547],
     5639                             [- 6.27284639, - 0.00055234, 0.00033844, 7.27229405, 0.99831254, 0.99910921, 0.49318555],
     5640                             [- 6.27284663, - 0.00055225, 0.00033838, 7.27229438, 0.99831284, 0.99910937, 0.49318557],
     5641                             [- 6.27284686, - 0.00055215, 0.00033832, 7.27229472, 0.99831314, 0.99910953, 0.49318561],
     5642                             [- 6.27284710, - 0.00055205, 0.00033826, 7.27229505, 0.99831344, 0.99910969, 0.49318565],
     5643                             [- 6.27284733, - 0.00055195, 0.00033820, 7.27229538, 0.99831374, 0.99910985, 0.49318570],
     5644                             [- 6.27284757, - 0.00055185, 0.00033814, 7.27229572, 0.99831404, 0.99911001, 0.49318569],
     5645                             [- 6.27284781, - 0.00055175, 0.00033808, 7.27229605, 0.99831435, 0.99911017, 0.49318574],
     5646                             [- 6.27284804, - 0.00055165, 0.00033802, 7.27229639, 0.99831465, 0.99911033, 0.49318575],
     5647                             [- 6.27284828, - 0.00055156, 0.00033796, 7.27229672, 0.99831495, 0.99911048, 0.49318581],
     5648                             [- 6.27284851, - 0.00055146, 0.00033790, 7.27229705, 0.99831525, 0.99911064, 0.49318582],
     5649                             [- 6.27284875, - 0.00055136, 0.00033784, 7.27229739, 0.99831555, 0.99911080, 0.49318586],
     5650                             [- 6.27284898, - 0.00055126, 0.00033778, 7.27229772, 0.99831585, 0.99911096, 0.49318588],
     5651                             [- 6.27284922, - 0.00055116, 0.00033772, 7.27229805, 0.99831615, 0.99911112, 0.49318595],
     5652                             [- 6.27284945, - 0.00055107, 0.00033766, 7.27229838, 0.99831645, 0.99911128, 0.49318599],
     5653                             [- 6.27284968, - 0.00055097, 0.00033760, 7.27229872, 0.99831675, 0.99911143, 0.49318604],
     5654                             [- 6.27284992, - 0.00055087, 0.00033754, 7.27229905, 0.99831705, 0.99911159, 0.49318604],
     5655                             [- 6.27285015, - 0.00055077, 0.00033748, 7.27229938, 0.99831735, 0.99911175, 0.49318612],
     5656                             [- 6.27285039, - 0.00055067, 0.00033742, 7.27229971, 0.99831765, 0.99911191, 0.49318613],
     5657                             [- 6.27285062, - 0.00055058, 0.00033736, 7.27230005, 0.99831794, 0.99911207, 0.49318622],
     5658                             [- 6.27285086, - 0.00055048, 0.00033730, 7.27230038, 0.99831824, 0.99911223, 0.49318623],
     5659                             [- 6.27285109, - 0.00055038, 0.00033724, 7.27230071, 0.99831854, 0.99911238, 0.49318626],
     5660                             [- 6.27285133, - 0.00055028, 0.00033718, 7.27230104, 0.99831884, 0.99911254, 0.49318626],
     5661                             [- 6.27285156, - 0.00055018, 0.00033712, 7.27230138, 0.99831914, 0.99911270, 0.49318628],
     5662                             [- 6.27285179, - 0.00055009, 0.00033706, 7.27230171, 0.99831944, 0.99911286, 0.49318633],
     5663                             [- 6.27285203, - 0.00054999, 0.00033700, 7.27230204, 0.99831974, 0.99911301, 0.49318637],
     5664                             [- 6.27285226, - 0.00054989, 0.00033694, 7.27230237, 0.99832004, 0.99911317, 0.49318637],
     5665                             [- 6.27285249, - 0.00054979, 0.00033688, 7.27230270, 0.99832034, 0.99911333, 0.49318644],
     5666                             [- 6.27285273, - 0.00054970, 0.00033682, 7.27230303, 0.99832063, 0.99911349, 0.49318645],
     5667                             [- 6.27285296, - 0.00054960, 0.00033676, 7.27230336, 0.99832093, 0.99911364, 0.49318646],
     5668                             [- 6.27285319, - 0.00054950, 0.00033670, 7.27230369, 0.99832123, 0.99911380, 0.49318651],
     5669                             [- 6.27285343, - 0.00054940, 0.00033664, 7.27230403, 0.99832153, 0.99911396, 0.49318650],
     5670                             [- 6.27285366, - 0.00054931, 0.00033658, 7.27230436, 0.99832183, 0.99911412, 0.49318659],
     5671                             [- 6.27285389, - 0.00054921, 0.00033652, 7.27230469, 0.99832212, 0.99911427, 0.49318666],
     5672                             [- 6.27285413, - 0.00054911, 0.00033646, 7.27230502, 0.99832242, 0.99911443, 0.49318665],
     5673                             [- 6.27285436, - 0.00054901, 0.00033640, 7.27230535, 0.99832272, 0.99911459, 0.49318670],
     5674                             [- 6.27285459, - 0.00054892, 0.00033634, 7.27230568, 0.99832302, 0.99911474, 0.49318673],
     5675                             [- 6.27285483, - 0.00054882, 0.00033628, 7.27230601, 0.99832332, 0.99911490, 0.49318677],
     5676                             [- 6.27285506, - 0.00054872, 0.00033622, 7.27230634, 0.99832361, 0.99911506, 0.49318685],
     5677                             [- 6.27285529, - 0.00054862, 0.00033616, 7.27230667, 0.99832391, 0.99911522, 0.49318683],
     5678                             [- 6.27285552, - 0.00054853, 0.00033610, 7.27230700, 0.99832421, 0.99911537, 0.49318692],
     5679                             [- 6.27285576, - 0.00054843, 0.00033604, 7.27230733, 0.99832450, 0.99911553, 0.49318690],
     5680                             [- 6.27285599, - 0.00054833, 0.00033598, 7.27230766, 0.99832480, 0.99911569, 0.49318694],
     5681                             [- 6.27285622, - 0.00054824, 0.00033592, 7.27230799, 0.99832510, 0.99911584, 0.49318700],
     5682                             [- 6.27285645, - 0.00054814, 0.00033586, 7.27230832, 0.99832539, 0.99911600, 0.49318701],
     5683                             [- 6.27285669, - 0.00054804, 0.00033580, 7.27230865, 0.99832569, 0.99911616, 0.49318705],
     5684                             [- 6.27285692, - 0.00054794, 0.00033574, 7.27230897, 0.99832599, 0.99911631, 0.49318711],
     5685                             [- 6.27285715, - 0.00054785, 0.00033568, 7.27230930, 0.99832628, 0.99911647, 0.49318708],
     5686                             [- 6.27285738, - 0.00054775, 0.00033563, 7.27230963, 0.99832658, 0.99911662, 0.49318719],
     5687                             [- 6.27285761, - 0.00054765, 0.00033557, 7.27230996, 0.99832688, 0.99911678, 0.49318717],
     5688                             [- 6.27285785, - 0.00054756, 0.00033551, 7.27231029, 0.99832717, 0.99911694, 0.49318724],
     5689                             [- 6.27285808, - 0.00054746, 0.00033545, 7.27231062, 0.99832747, 0.99911709, 0.49318723],
     5690                             [- 6.27285831, - 0.00054736, 0.00033539, 7.27231095, 0.99832776, 0.99911725, 0.49318729],
     5691                             [- 6.27285854, - 0.00054727, 0.00033533, 7.27231127, 0.99832806, 0.99911741, 0.49318737],
     5692                             [- 6.27285877, - 0.00054717, 0.00033527, 7.27231160, 0.99832836, 0.99911756, 0.49318736],
     5693                             [- 6.27285900, - 0.00054707, 0.00033521, 7.27231193, 0.99832865, 0.99911772, 0.49318737],
     5694                             [- 6.27285923, - 0.00054698, 0.00033515, 7.27231226, 0.99832895, 0.99911787, 0.49318744],
     5695                             [- 6.27285947, - 0.00054688, 0.00033509, 7.27231259, 0.99832924, 0.99911803, 0.49318747],
     5696                             [- 6.27285970, - 0.00054678, 0.00033503, 7.27231291, 0.99832954, 0.99911819, 0.49318750],
     5697                             [- 6.27285993, - 0.00054669, 0.00033497, 7.27231324, 0.99832983, 0.99911834, 0.49318752],
     5698                             [- 6.27286016, - 0.00054659, 0.00033491, 7.27231357, 0.99833013, 0.99911850, 0.49318756],
     5699                             [- 6.27286039, - 0.00054649, 0.00033485, 7.27231390, 0.99833042, 0.99911865, 0.49318760],
     5700                             [- 6.27286062, - 0.00054640, 0.00033480, 7.27231422, 0.99833072, 0.99911881, 0.49318765],
     5701                             [- 6.27286085, - 0.00054630, 0.00033474, 7.27231455, 0.99833101, 0.99911896, 0.49318766],
     5702                             [- 6.27286108, - 0.00054620, 0.00033468, 7.27231488, 0.99833131, 0.99911912, 0.49318767],
     5703                             [- 6.27286131, - 0.00054611, 0.00033462, 7.27231521, 0.99833160, 0.99911927, 0.49318769],
     5704                             [- 6.27286154, - 0.00054601, 0.00033456, 7.27231553, 0.99833190, 0.99911943, 0.49318777],
     5705                             [- 6.27286177, - 0.00054591, 0.00033450, 7.27231586, 0.99833219, 0.99911959, 0.49318778],
     5706                             [- 6.27286200, - 0.00054582, 0.00033444, 7.27231619, 0.99833248, 0.99911974, 0.49318783],
     5707                             [- 6.27286223, - 0.00054572, 0.00033438, 7.27231651, 0.99833278, 0.99911990, 0.49318785],
     5708                             [- 6.27286246, - 0.00054563, 0.00033432, 7.27231684, 0.99833307, 0.99912005, 0.49318790],
     5709                             [- 6.27286269, - 0.00054553, 0.00033426, 7.27231716, 0.99833337, 0.99912021, 0.49318796],
     5710                             [- 6.27286292, - 0.00054543, 0.00033420, 7.27231749, 0.99833366, 0.99912036, 0.49318798],
     5711                             [- 6.27286315, - 0.00054534, 0.00033415, 7.27231782, 0.99833395, 0.99912052, 0.49318802],
     5712                             [- 6.27286338, - 0.00054524, 0.00033409, 7.27231814, 0.99833425, 0.99912067, 0.49318801],
     5713                             [- 6.27286361, - 0.00054515, 0.00033403, 7.27231847, 0.99833454, 0.99912083, 0.49318810],
     5714                             [- 6.27286384, - 0.00054505, 0.00033397, 7.27231879, 0.99833483, 0.99912098, 0.49318815],
     5715                             [- 6.27286407, - 0.00054495, 0.00033391, 7.27231912, 0.99833513, 0.99912114, 0.49318815],
     5716                             [- 6.27286430, - 0.00054486, 0.00033385, 7.27231944, 0.99833542, 0.99912129, 0.49318821],
     5717                             [- 6.27286453, - 0.00054476, 0.00033379, 7.27231977, 0.99833571, 0.99912145, 0.49318820],
     5718                             [- 6.27286476, - 0.00054467, 0.00033373, 7.27232010, 0.99833601, 0.99912160, 0.49318828],
     5719                             [- 6.27286499, - 0.00054457, 0.00033368, 7.27232042, 0.99833630, 0.99912175, 0.49318827],
     5720                             [- 6.27286522, - 0.00054447, 0.00033362, 7.27232075, 0.99833659, 0.99912191, 0.49318830],
     5721                             [- 6.27286545, - 0.00054438, 0.00033356, 7.27232107, 0.99833689, 0.99912206, 0.49318834],
     5722                             [- 6.27286568, - 0.00054428, 0.00033350, 7.27232139, 0.99833718, 0.99912222, 0.49318840],
     5723                             [- 6.27286591, - 0.00054419, 0.00033344, 7.27232172, 0.99833747, 0.99912237, 0.49318849],
     5724                             [- 6.27286614, - 0.00054409, 0.00033338, 7.27232204, 0.99833776, 0.99912253, 0.49318845],
     5725                             [- 6.27286636, - 0.00054400, 0.00033332, 7.27232237, 0.99833805, 0.99912268, 0.49318852],
     5726                             [- 6.27286659, - 0.00054390, 0.00033326, 7.27232269, 0.99833835, 0.99912283, 0.49318851],
     5727                             [- 6.27286682, - 0.00054380, 0.00033321, 7.27232302, 0.99833864, 0.99912299, 0.49318855],
     5728                             [- 6.27286705, - 0.00054371, 0.00033315, 7.27232334, 0.99833893, 0.99912314, 0.49318857],
     5729                             [- 6.27286728, - 0.00054361, 0.00033309, 7.27232366, 0.99833922, 0.99912330, 0.49318863],
     5730                             [- 6.27286751, - 0.00054352, 0.00033303, 7.27232399, 0.99833951, 0.99912345, 0.49318865],
     5731                             [- 6.27286774, - 0.00054342, 0.00033297, 7.27232431, 0.99833981, 0.99912360, 0.49318871],
     5732                             [- 6.27286796, - 0.00054333, 0.00033291, 7.27232464, 0.99834010, 0.99912376, 0.49318871],
     5733                             [- 6.27286819, - 0.00054323, 0.00033286, 7.27232496, 0.99834039, 0.99912391, 0.49318882],
     5734                             [- 6.27286842, - 0.00054314, 0.00033280, 7.27232528, 0.99834068, 0.99912407, 0.49318885],
     5735                             [- 6.27286865, - 0.00054304, 0.00033274, 7.27232561, 0.99834097, 0.99912422, 0.49318882],
     5736                             [- 6.27286888, - 0.00054295, 0.00033268, 7.27232593, 0.99834126, 0.99912437, 0.49318888],
     5737                             [- 6.27286910, - 0.00054285, 0.00033262, 7.27232625, 0.99834155, 0.99912453, 0.49318890],
     5738                             [- 6.27286933, - 0.00054276, 0.00033256, 7.27232657, 0.99834184, 0.99912468, 0.49318892],
     5739                             [- 6.27286956, - 0.00054266, 0.00033250, 7.27232690, 0.99834214, 0.99912483, 0.49318896],
     5740                             [- 6.27286979, - 0.00054257, 0.00033245, 7.27232722, 0.99834243, 0.99912499, 0.49318900],
     5741                             [- 6.27287001, - 0.00054247, 0.00033239, 7.27232754, 0.99834272, 0.99912514, 0.49318899],
     5742                             [- 6.27287024, - 0.00054238, 0.00033233, 7.27232787, 0.99834301, 0.99912529, 0.49318908],
     5743                             [- 6.27287047, - 0.00054228, 0.00033227, 7.27232819, 0.99834330, 0.99912545, 0.49318910],
     5744                             [- 6.27287070, - 0.00054219, 0.00033221, 7.27232851, 0.99834359, 0.99912560, 0.49318913],
     5745                             [- 6.27287092, - 0.00054209, 0.00033216, 7.27232883, 0.99834388, 0.99912575, 0.49318913],
     5746                             [- 6.27287115, - 0.00054200, 0.00033210, 7.27232915, 0.99834417, 0.99912591, 0.49318919],
     5747                             [- 6.27287138, - 0.00054190, 0.00033204, 7.27232948, 0.99834446, 0.99912606, 0.49318918],
     5748                             [- 6.27287160, - 0.00054181, 0.00033198, 7.27232980, 0.99834475, 0.99912621, 0.49318924],
     5749                             [- 6.27287183, - 0.00054171, 0.00033192, 7.27233012, 0.99834504, 0.99912637, 0.49318928],
     5750                             [- 6.27287206, - 0.00054162, 0.00033186, 7.27233044, 0.99834533, 0.99912652, 0.49318937],
     5751                             [- 6.27287228, - 0.00054152, 0.00033181, 7.27233076, 0.99834562, 0.99912667, 0.49318939],
     5752                             [- 6.27287251, - 0.00054143, 0.00033175, 7.27233108, 0.99834591, 0.99912682, 0.49318942],
     5753                             [- 6.27287274, - 0.00054133, 0.00033169, 7.27233140, 0.99834620, 0.99912698, 0.49318944],
     5754                             [- 6.27287296, - 0.00054124, 0.00033163, 7.27233173, 0.99834649, 0.99912713, 0.49318945],
     5755                             [- 6.27287319, - 0.00054114, 0.00033157, 7.27233205, 0.99834677, 0.99912728, 0.49318948],
     5756                             [- 6.27287342, - 0.00054105, 0.00033152, 7.27233237, 0.99834706, 0.99912744, 0.49318948],
     5757                             [- 6.27287364, - 0.00054095, 0.00033146, 7.27233269, 0.99834735, 0.99912759, 0.49318960],
     5758                             [- 6.27287387, - 0.00054086, 0.00033140, 7.27233301, 0.99834764, 0.99912774, 0.49318965],
     5759                             [- 6.27287409, - 0.00054076, 0.00033134, 7.27233333, 0.99834793, 0.99912789, 0.49318963],
     5760                             [- 6.27287432, - 0.00054067, 0.00033128, 7.27233365, 0.99834822, 0.99912805, 0.49318967],
     5761                             [- 6.27287455, - 0.00054058, 0.00033123, 7.27233397, 0.99834851, 0.99912820, 0.49318974],
     5762                             [- 6.27287477, - 0.00054048, 0.00033117, 7.27233429, 0.99834880, 0.99912835, 0.49318975],
     5763                             [- 6.27287500, - 0.00054039, 0.00033111, 7.27233461, 0.99834908, 0.99912850, 0.49318982],
     5764                             [- 6.27287522, - 0.00054029, 0.00033105, 7.27233493, 0.99834937, 0.99912865, 0.49318976],
     5765                             [- 6.27287545, - 0.00054020, 0.00033100, 7.27233525, 0.99834966, 0.99912881, 0.49318982],
     5766                             [- 6.27287568, - 0.00054010, 0.00033094, 7.27233557, 0.99834995, 0.99912896, 0.49318990],
     5767                             [- 6.27287590, - 0.00054001, 0.00033088, 7.27233589, 0.99835024, 0.99912911, 0.49318991],
     5768                             [- 6.27287613, - 0.00053992, 0.00033082, 7.27233621, 0.99835052, 0.99912926, 0.49318988],
     5769                             [- 6.27287635, - 0.00053982, 0.00033076, 7.27233653, 0.99835081, 0.99912941, 0.49319001],
     5770                             [- 6.27287658, - 0.00053973, 0.00033071, 7.27233685, 0.99835110, 0.99912957, 0.49318998],
     5771                             [- 6.27287680, - 0.00053963, 0.00033065, 7.27233717, 0.99835139, 0.99912972, 0.49319007],
     5772                             [- 6.27287703, - 0.00053954, 0.00033059, 7.27233749, 0.99835168, 0.99912987, 0.49319009],
     5773                             [- 6.27287725, - 0.00053945, 0.00033053, 7.27233781, 0.99835196, 0.99913002, 0.49319013],
     5774                             [- 6.27287748, - 0.00053935, 0.00033048, 7.27233812, 0.99835225, 0.99913017, 0.49319012],
     5775                             [- 6.27287770, - 0.00053926, 0.00033042, 7.27233844, 0.99835254, 0.99913032, 0.49319022],
     5776                             [- 6.27287793, - 0.00053916, 0.00033036, 7.27233876, 0.99835282, 0.99913048, 0.49319019],
     5777                             [- 6.27287815, - 0.00053907, 0.00033030, 7.27233908, 0.99835311, 0.99913063, 0.49319021],
     5778                             [- 6.27287838, - 0.00053898, 0.00033025, 7.27233940, 0.99835340, 0.99913078, 0.49319029],
     5779                             [- 6.27287860, - 0.00053888, 0.00033019, 7.27233972, 0.99835368, 0.99913093, 0.49319029],
     5780                             [- 6.27287882, - 0.00053879, 0.00033013, 7.27234004, 0.99835397, 0.99913108, 0.49319033],
     5781                             [- 6.27287905, - 0.00053869, 0.00033007, 7.27234035, 0.99835426, 0.99913123, 0.49319038],
     5782                             [- 6.27287927, - 0.00053860, 0.00033002, 7.27234067, 0.99835454, 0.99913138, 0.49319044],
     5783                             [- 6.27287950, - 0.00053851, 0.00032996, 7.27234099, 0.99835483, 0.99913153, 0.49319044],
     5784                             [- 6.27287972, - 0.00053841, 0.00032990, 7.27234131, 0.99835512, 0.99913169, 0.49319052],
     5785                             [- 6.27287994, - 0.00053832, 0.00032984, 7.27234162, 0.99835540, 0.99913184, 0.49319053],
     5786                             [- 6.27288017, - 0.00053823, 0.00032979, 7.27234194, 0.99835569, 0.99913199, 0.49319055],
     5787                             [- 6.27288039, - 0.00053813, 0.00032973, 7.27234226, 0.99835598, 0.99913214, 0.49319059],
     5788                             [- 6.27288062, - 0.00053804, 0.00032967, 7.27234258, 0.99835626, 0.99913229, 0.49319064],
     5789                             [- 6.27288084, - 0.00053795, 0.00032961, 7.27234289, 0.99835655, 0.99913244, 0.49319065],
     5790                             [- 6.27288106, - 0.00053785, 0.00032956, 7.27234321, 0.99835683, 0.99913259, 0.49319063],
     5791                             [- 6.27288129, - 0.00053776, 0.00032950, 7.27234353, 0.99835712, 0.99913274, 0.49319073],
     5792                             [- 6.27288151, - 0.00053767, 0.00032944, 7.27234385, 0.99835740, 0.99913289, 0.49319071],
     5793                             [- 6.27288173, - 0.00053757, 0.00032938, 7.27234416, 0.99835769, 0.99913304, 0.49319080],
     5794                             [- 6.27288196, - 0.00053748, 0.00032933, 7.27234448, 0.99835797, 0.99913319, 0.49319079],
     5795                             [- 6.27288218, - 0.00053739, 0.00032927, 7.27234480, 0.99835826, 0.99913334, 0.49319084],
     5796                             [- 6.27288240, - 0.00053729, 0.00032921, 7.27234511, 0.99835854, 0.99913349, 0.49319094],
     5797                             [- 6.27288263, - 0.00053720, 0.00032916, 7.27234543, 0.99835883, 0.99913365, 0.49319090],
     5798                             [- 6.27288285, - 0.00053711, 0.00032910, 7.27234574, 0.99835911, 0.99913380, 0.49319093],
     5799                             [- 6.27288307, - 0.00053701, 0.00032904, 7.27234606, 0.99835940, 0.99913395, 0.49319095],
     5800                             [- 6.27288330, - 0.00053692, 0.00032898, 7.27234638, 0.99835968, 0.99913410, 0.49319102],
     5801                             [- 6.27288352, - 0.00053683, 0.00032893, 7.27234669, 0.99835997, 0.99913425, 0.49319110],
     5802                             [- 6.27288374, - 0.00053673, 0.00032887, 7.27234701, 0.99836025, 0.99913440, 0.49319107],
     5803                             [- 6.27288396, - 0.00053664, 0.00032881, 7.27234732, 0.99836054, 0.99913455, 0.49319115],
     5804                             [- 6.27288419, - 0.00053655, 0.00032876, 7.27234764, 0.99836082, 0.99913470, 0.49319113],
     5805                             [- 6.27288441, - 0.00053645, 0.00032870, 7.27234795, 0.99836111, 0.99913485, 0.49319119],
     5806                             [- 6.27288463, - 0.00053636, 0.00032864, 7.27234827, 0.99836139, 0.99913500, 0.49319119],
     5807                             [- 6.27288485, - 0.00053627, 0.00032859, 7.27234859, 0.99836167, 0.99913515, 0.49319124],
     5808                             [- 6.27288508, - 0.00053618, 0.00032853, 7.27234890, 0.99836196, 0.99913530, 0.49319131],
     5809                             [- 6.27288530, - 0.00053608, 0.00032847, 7.27234922, 0.99836224, 0.99913545, 0.49319132],
     5810                             [- 6.27288552, - 0.00053599, 0.00032841, 7.27234953, 0.99836253, 0.99913560, 0.49319134],
     5811                             [- 6.27288574, - 0.00053590, 0.00032836, 7.27234985, 0.99836281, 0.99913575, 0.49319141],
     5812                             [- 6.27288596, - 0.00053580, 0.00032830, 7.27235016, 0.99836309, 0.99913590, 0.49319142],
     5813                             [- 6.27288619, - 0.00053571, 0.00032824, 7.27235047, 0.99836338, 0.99913604, 0.49319138],
     5814                             [- 6.27288641, - 0.00053562, 0.00032819, 7.27235079, 0.99836366, 0.99913619, 0.49319145],
     5815                             [- 6.27288663, - 0.00053553, 0.00032813, 7.27235110, 0.99836394, 0.99913634, 0.49319149],
     5816                             [- 6.27288685, - 0.00053543, 0.00032807, 7.27235142, 0.99836423, 0.99913649, 0.49319155],
     5817                             [- 6.27288707, - 0.00053534, 0.00032802, 7.27235173, 0.99836451, 0.99913664, 0.49319156],
     5818                             [- 6.27288729, - 0.00053525, 0.00032796, 7.27235205, 0.99836479, 0.99913679, 0.49319156],
     5819                             [- 6.27288752, - 0.00053516, 0.00032790, 7.27235236, 0.99836507, 0.99913694, 0.49319162],
     5820                             [- 6.27288774, - 0.00053506, 0.00032785, 7.27235267, 0.99836536, 0.99913709, 0.49319169],
     5821                             [- 6.27288796, - 0.00053497, 0.00032779, 7.27235299, 0.99836564, 0.99913724, 0.49319169],
     5822                             [- 6.27288818, - 0.00053488, 0.00032773, 7.27235330, 0.99836592, 0.99913739, 0.49319176],
     5823                             [- 6.27288840, - 0.00053479, 0.00032768, 7.27235361, 0.99836620, 0.99913754, 0.49319177],
     5824                             [- 6.27288862, - 0.00053469, 0.00032762, 7.27235393, 0.99836649, 0.99913769, 0.49319182],
     5825                             [- 6.27288884, - 0.00053460, 0.00032756, 7.27235424, 0.99836677, 0.99913784, 0.49319183],
     5826                             [- 6.27288906, - 0.00053451, 0.00032751, 7.27235455, 0.99836705, 0.99913798, 0.49319186],
     5827                             [- 6.27288928, - 0.00053442, 0.00032745, 7.27235487, 0.99836733, 0.99913813, 0.49319195],
     5828                             [- 6.27288950, - 0.00053432, 0.00032739, 7.27235518, 0.99836762, 0.99913828, 0.49319191],
     5829                             [- 6.27288973, - 0.00053423, 0.00032734, 7.27235549, 0.99836790, 0.99913843, 0.49319195],
     5830                             [- 6.27288995, - 0.00053414, 0.00032728, 7.27235581, 0.99836818, 0.99913858, 0.49319198],
     5831                             [- 6.27289017, - 0.00053405, 0.00032722, 7.27235612, 0.99836846, 0.99913873, 0.49319204],
     5832                             [- 6.27289039, - 0.00053396, 0.00032717, 7.27235643, 0.99836874, 0.99913888, 0.49319208],
     5833                             [- 6.27289061, - 0.00053386, 0.00032711, 7.27235674, 0.99836902, 0.99913903, 0.49319213],
     5834                             [- 6.27289083, - 0.00053377, 0.00032705, 7.27235706, 0.99836931, 0.99913917, 0.49319212],
     5835                             [- 6.27289105, - 0.00053368, 0.00032700, 7.27235737, 0.99836959, 0.99913932, 0.49319218],
     5836                             [- 6.27289127, - 0.00053359, 0.00032694, 7.27235768, 0.99836987, 0.99913947, 0.49319222],
     5837                             [- 6.27289149, - 0.00053350, 0.00032689, 7.27235799, 0.99837015, 0.99913962, 0.49319223],
     5838                             [- 6.27289171, - 0.00053340, 0.00032683, 7.27235830, 0.99837043, 0.99913977, 0.49319229],
     5839                             [- 6.27289193, - 0.00053331, 0.00032677, 7.27235862, 0.99837071, 0.99913992, 0.49319228],
     5840                             [- 6.27289215, - 0.00053322, 0.00032672, 7.27235893, 0.99837099, 0.99914006, 0.49319230],
     5841                             [- 6.27289237, - 0.00053313, 0.00032666, 7.27235924, 0.99837127, 0.99914021, 0.49319236],
     5842                             [- 6.27289259, - 0.00053304, 0.00032660, 7.27235955, 0.99837155, 0.99914036, 0.49319240],
     5843                             [- 6.27289281, - 0.00053294, 0.00032655, 7.27235986, 0.99837183, 0.99914051, 0.49319244],
     5844                             [- 6.27289303, - 0.00053285, 0.00032649, 7.27236017, 0.99837211, 0.99914066, 0.49319243],
     5845                             [- 6.27289325, - 0.00053276, 0.00032643, 7.27236048, 0.99837239, 0.99914080, 0.49319249],
     5846                             [- 6.27289346, - 0.00053267, 0.00032638, 7.27236080, 0.99837267, 0.99914095, 0.49319257],
     5847                             [- 6.27289368, - 0.00053258, 0.00032632, 7.27236111, 0.99837295, 0.99914110, 0.49319253],
     5848                             [- 6.27289390, - 0.00053249, 0.00032627, 7.27236142, 0.99837323, 0.99914125, 0.49319261],
     5849                             [- 6.27289412, - 0.00053239, 0.00032621, 7.27236173, 0.99837351, 0.99914140, 0.49319263],
     5850                             [- 6.27289434, - 0.00053230, 0.00032615, 7.27236204, 0.99837379, 0.99914154, 0.49319267],
     5851                             [- 6.27289456, - 0.00053221, 0.00032610, 7.27236235, 0.99837407, 0.99914169, 0.49319271],
     5852                             [- 6.27289478, - 0.00053212, 0.00032604, 7.27236266, 0.99837435, 0.99914184, 0.49319271],
     5853                             [- 6.27289500, - 0.00053203, 0.00032599, 7.27236297, 0.99837463, 0.99914199, 0.49319270],
     5854                             [- 6.27289522, - 0.00053194, 0.00032593, 7.27236328, 0.99837491, 0.99914213, 0.49319278],
     5855                             [- 6.27289544, - 0.00053185, 0.00032587, 7.27236359, 0.99837519, 0.99914228, 0.49319281],
     5856                             [- 6.27289565, - 0.00053175, 0.00032582, 7.27236390, 0.99837547, 0.99914243, 0.49319284],
     5857                             [- 6.27289587, - 0.00053166, 0.00032576, 7.27236421, 0.99837575, 0.99914258, 0.49319286],
     5858                             [- 6.27289609, - 0.00053157, 0.00032571, 7.27236452, 0.99837603, 0.99914272, 0.49319287],
     5859                             [- 6.27289631, - 0.00053148, 0.00032565, 7.27236483, 0.99837631, 0.99914287, 0.49319297],
     5860                             [- 6.27289653, - 0.00053139, 0.00032559, 7.27236514, 0.99837659, 0.99914302, 0.49319300],
     5861                             [- 6.27289675, - 0.00053130, 0.00032554, 7.27236545, 0.99837687, 0.99914316, 0.49319302],
     5862                             [- 6.27289696, - 0.00053121, 0.00032548, 7.27236576, 0.99837714, 0.99914331, 0.49319305],
     5863                             [- 6.27289718, - 0.00053112, 0.00032543, 7.27236607, 0.99837742, 0.99914346, 0.49319306],
     5864                             [- 6.27289740, - 0.00053102, 0.00032537, 7.27236638, 0.99837770, 0.99914361, 0.49319318],
     5865                             [- 6.27289762, - 0.00053093, 0.00032531, 7.27236668, 0.99837798, 0.99914375, 0.49319313],
     5866                             [- 6.27289784, - 0.00053084, 0.00032526, 7.27236699, 0.99837826, 0.99914390, 0.49319318],
     5867                             [- 6.27289805, - 0.00053075, 0.00032520, 7.27236730, 0.99837854, 0.99914405, 0.49319320],
     5868                             [- 6.27289827, - 0.00053066, 0.00032515, 7.27236761, 0.99837881, 0.99914419, 0.49319315],
     5869                             [- 6.27289849, - 0.00053057, 0.00032509, 7.27236792, 0.99837909, 0.99914434, 0.49319329],
     5870                             [- 6.27289871, - 0.00053048, 0.00032504, 7.27236823, 0.99837937, 0.99914449, 0.49319329],
     5871                             [- 6.27289892, - 0.00053039, 0.00032498, 7.27236854, 0.99837965, 0.99914463, 0.49319336],
     5872                             [- 6.27289914, - 0.00053030, 0.00032492, 7.27236884, 0.99837993, 0.99914478, 0.49319338],
     5873                             [- 6.27289936, - 0.00053021, 0.00032487, 7.27236915, 0.99838020, 0.99914493, 0.49319340],
     5874                             [- 6.27289958, - 0.00053012, 0.00032481, 7.27236946, 0.99838048, 0.99914507, 0.49319339],
     5875                             [- 6.27289979, - 0.00053002, 0.00032476, 7.27236977, 0.99838076, 0.99914522, 0.49319350],
     5876                             [- 6.27290001, - 0.00052993, 0.00032470, 7.27237008, 0.99838104, 0.99914536, 0.49319352],
     5877                             [- 6.27290023, - 0.00052984, 0.00032465, 7.27237038, 0.99838131, 0.99914551, 0.49319359],
     5878                             [- 6.27290044, - 0.00052975, 0.00032459, 7.27237069, 0.99838159, 0.99914566, 0.49319354],
     5879                             [- 6.27290066, - 0.00052966, 0.00032453, 7.27237100, 0.99838187, 0.99914580, 0.49319355],
     5880                             [- 6.27290088, - 0.00052957, 0.00032448, 7.27237131, 0.99838214, 0.99914595, 0.49319365],
     5881                             [- 6.27290109, - 0.00052948, 0.00032442, 7.27237161, 0.99838242, 0.99914610, 0.49319372],
     5882                             [- 6.27290131, - 0.00052939, 0.00032437, 7.27237192, 0.99838270, 0.99914624, 0.49319371],
     5883                             [- 6.27290153, - 0.00052930, 0.00032431, 7.27237223, 0.99838297, 0.99914639, 0.49319369],
     5884                             [- 6.27290174, - 0.00052921, 0.00032426, 7.27237254, 0.99838325, 0.99914653, 0.49319379],
     5885                             [- 6.27290196, - 0.00052912, 0.00032420, 7.27237284, 0.99838353, 0.99914668, 0.49319379],
     5886                             [- 6.27290218, - 0.00052903, 0.00032415, 7.27237315, 0.99838380, 0.99914683, 0.49319387],
     5887                             [- 6.27290239, - 0.00052894, 0.00032409, 7.27237346, 0.99838408, 0.99914697, 0.49319384],
     5888                             [- 6.27290261, - 0.00052885, 0.00032404, 7.27237376, 0.99838436, 0.99914712, 0.49319390],
     5889                             [- 6.27290283, - 0.00052876, 0.00032398, 7.27237407, 0.99838463, 0.99914726, 0.49319391],
     5890                             [- 6.27290304, - 0.00052867, 0.00032392, 7.27237438, 0.99838491, 0.99914741, 0.49319397],
     5891                             [- 6.27290326, - 0.00052858, 0.00032387, 7.27237468, 0.99838518, 0.99914755, 0.49319399],
     5892                             [- 6.27290347, - 0.00052849, 0.00032381, 7.27237499, 0.99838546, 0.99914770, 0.49319399],
     5893                             [- 6.27290369, - 0.00052840, 0.00032376, 7.27237529, 0.99838574, 0.99914785, 0.49319402],
     5894                             [- 6.27290391, - 0.00052831, 0.00032370, 7.27237560, 0.99838601, 0.99914799, 0.49319410],
     5895                             [- 6.27290412, - 0.00052822, 0.00032365, 7.27237591, 0.99838629, 0.99914814, 0.49319411],
     5896                             [- 6.27290434, - 0.00052813, 0.00032359, 7.27237621, 0.99838656, 0.99914828, 0.49319417],
     5897                             [- 6.27290455, - 0.00052804, 0.00032354, 7.27237652, 0.99838684, 0.99914843, 0.49319421],
     5898                             [- 6.27290477, - 0.00052795, 0.00032348, 7.27237682, 0.99838711, 0.99914857, 0.49319423],
     5899                             [- 6.27290498, - 0.00052786, 0.00032343, 7.27237713, 0.99838739, 0.99914872, 0.49319424],
     5900                             [- 6.27290520, - 0.00052777, 0.00032337, 7.27237743, 0.99838766, 0.99914886, 0.49319429],
     5901                             [- 6.27290541, - 0.00052768, 0.00032332, 7.27237774, 0.99838794, 0.99914901, 0.49319426],
     5902                             [- 6.27290563, - 0.00052759, 0.00032326, 7.27237804, 0.99838821, 0.99914915, 0.49319434],
     5903                             [- 6.27290584, - 0.00052750, 0.00032321, 7.27237835, 0.99838849, 0.99914930, 0.49319436],
     5904                             [- 6.27290606, - 0.00052741, 0.00032315, 7.27237865, 0.99838876, 0.99914944, 0.49319441],
     5905                             [- 6.27290627, - 0.00052732, 0.00032310, 7.27237896, 0.99838904, 0.99914959, 0.49319443],
     5906                             [- 6.27290649, - 0.00052723, 0.00032304, 7.27237926, 0.99838931, 0.99914973, 0.49319450],
     5907                             [- 6.27290670, - 0.00052714, 0.00032299, 7.27237957, 0.99838959, 0.99914988, 0.49319447],
     5908                             [- 6.27290692, - 0.00052705, 0.00032293, 7.27237987, 0.99838986, 0.99915002, 0.49319454],
     5909                             [- 6.27290713, - 0.00052696, 0.00032288, 7.27238018, 0.99839013, 0.99915017, 0.49319453],
     5910                             [- 6.27290735, - 0.00052687, 0.00032282, 7.27238048, 0.99839041, 0.99915031, 0.49319457],
     5911                             [- 6.27290756, - 0.00052678, 0.00032277, 7.27238078, 0.99839068, 0.99915046, 0.49319463],
     5912                             [- 6.27290778, - 0.00052669, 0.00032271, 7.27238109, 0.99839096, 0.99915060, 0.49319468],
     5913                             [- 6.27290799, - 0.00052660, 0.00032266, 7.27238139, 0.99839123, 0.99915075, 0.49319471],
     5914                             [- 6.27290821, - 0.00052651, 0.00032260, 7.27238170, 0.99839150, 0.99915089, 0.49319472],
     5915                             [- 6.27290842, - 0.00052642, 0.00032255, 7.27238200, 0.99839178, 0.99915103, 0.49319477],
     5916                             [- 6.27290863, - 0.00052633, 0.00032249, 7.27238230, 0.99839205, 0.99915118, 0.49319479],
     5917                             [- 6.27290885, - 0.00052624, 0.00032244, 7.27238261, 0.99839232, 0.99915132, 0.49319479],
     5918                             [- 6.27290906, - 0.00052615, 0.00032238, 7.27238291, 0.99839260, 0.99915147, 0.49319486],
     5919                             [- 6.27290928, - 0.00052606, 0.00032233, 7.27238321, 0.99839287, 0.99915161, 0.49319496],
     5920                             [- 6.27290949, - 0.00052597, 0.00032227, 7.27238352, 0.99839314, 0.99915176, 0.49319494],
     5921                             [- 6.27290970, - 0.00052588, 0.00032222, 7.27238382, 0.99839342, 0.99915190, 0.49319490],
     5922                             [- 6.27290992, - 0.00052579, 0.00032216, 7.27238412, 0.99839369, 0.99915204, 0.49319495],
     5923                             [- 6.27291013, - 0.00052570, 0.00032211, 7.27238443, 0.99839396, 0.99915219, 0.49319503],
     5924                             [- 6.27291034, - 0.00052561, 0.00032205, 7.27238473, 0.99839424, 0.99915233, 0.49319499],
     5925                             [- 6.27291056, - 0.00052553, 0.00032200, 7.27238503, 0.99839451, 0.99915248, 0.49319506],
     5926                             [- 6.27291077, - 0.00052544, 0.00032194, 7.27238534, 0.99839478, 0.99915262, 0.49319516],
     5927                             [- 6.27291098, - 0.00052535, 0.00032189, 7.27238564, 0.99839505, 0.99915276, 0.49319515],
     5928                             [- 6.27291120, - 0.00052526, 0.00032183, 7.27238594, 0.99839533, 0.99915291, 0.49319519],
     5929                             [- 6.27291141, - 0.00052517, 0.00032178, 7.27238624, 0.99839560, 0.99915305, 0.49319519],
     5930                             [- 6.27291162, - 0.00052508, 0.00032173, 7.27238654, 0.99839587, 0.99915320, 0.49319522],
     5931                             [- 6.27291184, - 0.00052499, 0.00032167, 7.27238685, 0.99839614, 0.99915334, 0.49319528],
     5932                             [- 6.27291205, - 0.00052490, 0.00032162, 7.27238715, 0.99839642, 0.99915348, 0.49319533],
     5933                             [- 6.27291226, - 0.00052481, 0.00032156, 7.27238745, 0.99839669, 0.99915363, 0.49319536],
     5934                             [- 6.27291248, - 0.00052472, 0.00032151, 7.27238775, 0.99839696, 0.99915377, 0.49319537],
     5935                             [- 6.27291269, - 0.00052463, 0.00032145, 7.27238805, 0.99839723, 0.99915391, 0.49319544],
     5936                             [- 6.27291290, - 0.00052455, 0.00032140, 7.27238836, 0.99839750, 0.99915406, 0.49319545],
     5937                             [- 6.27291311, - 0.00052446, 0.00032134, 7.27238866, 0.99839777, 0.99915420, 0.49319547],
     5938                             [- 6.27291333, - 0.00052437, 0.00032129, 7.27238896, 0.99839805, 0.99915434, 0.49319547],
     5939                             [- 6.27291354, - 0.00052428, 0.00032123, 7.27238926, 0.99839832, 0.99915449, 0.49319552],
     5940                             [- 6.27291375, - 0.00052419, 0.00032118, 7.27238956, 0.99839859, 0.99915463, 0.49319555],
     5941                             [- 6.27291396, - 0.00052410, 0.00032113, 7.27238986, 0.99839886, 0.99915477, 0.49319555],
     5942                             [- 6.27291418, - 0.00052401, 0.00032107, 7.27239016, 0.99839913, 0.99915492, 0.49319565],
     5943                             [- 6.27291439, - 0.00052392, 0.00032102, 7.27239046, 0.99839940, 0.99915506, 0.49319563],
     5944                             [- 6.27291460, - 0.00052384, 0.00032096, 7.27239077, 0.99839967, 0.99915520, 0.49319565],
     5945                             [- 6.27291481, - 0.00052375, 0.00032091, 7.27239107, 0.99839994, 0.99915534, 0.49319571],
     5946                             [- 6.27291503, - 0.00052366, 0.00032085, 7.27239137, 0.99840021, 0.99915549, 0.49319576],
     5947                             [- 6.27291524, - 0.00052357, 0.00032080, 7.27239167, 0.99840049, 0.99915563, 0.49319577],
     5948                             [- 6.27291545, - 0.00052348, 0.00032075, 7.27239197, 0.99840076, 0.99915577, 0.49319579],
     5949                             [- 6.27291566, - 0.00052339, 0.00032069, 7.27239227, 0.99840103, 0.99915592, 0.49319582],
     5950                             [- 6.27291587, - 0.00052330, 0.00032064, 7.27239257, 0.99840130, 0.99915606, 0.49319587],
     5951                             [- 6.27291608, - 0.00052322, 0.00032058, 7.27239287, 0.99840157, 0.99915620, 0.49319592],
     5952                             [- 6.27291630, - 0.00052313, 0.00032053, 7.27239317, 0.99840184, 0.99915634, 0.49319593],
     5953                             [- 6.27291651, - 0.00052304, 0.00032047, 7.27239347, 0.99840211, 0.99915649, 0.49319594],
     5954                             [- 6.27291672, - 0.00052295, 0.00032042, 7.27239377, 0.99840238, 0.99915663, 0.49319596],
     5955                             [- 6.27291693, - 0.00052286, 0.00032037, 7.27239407, 0.99840265, 0.99915677, 0.49319602],
     5956                             [- 6.27291714, - 0.00052277, 0.00032031, 7.27239437, 0.99840292, 0.99915691, 0.49319607],
     5957                             [- 6.27291735, - 0.00052269, 0.00032026, 7.27239467, 0.99840319, 0.99915706, 0.49319609],
     5958                             [- 6.27291756, - 0.00052260, 0.00032020, 7.27239497, 0.99840346, 0.99915720, 0.49319609],
     5959                             [- 6.27291777, - 0.00052251, 0.00032015, 7.27239526, 0.99840373, 0.99915734, 0.49319619],
     5960                             [- 6.27291799, - 0.00052242, 0.00032010, 7.27239556, 0.99840400, 0.99915748, 0.49319624],
     5961                             [- 6.27291820, - 0.00052233, 0.00032004, 7.27239586, 0.99840427, 0.99915763, 0.49319616],
     5962                             [- 6.27291841, - 0.00052225, 0.00031999, 7.27239616, 0.99840453, 0.99915777, 0.49319625],
     5963                             [- 6.27291862, - 0.00052216, 0.00031993, 7.27239646, 0.99840480, 0.99915791, 0.49319632],
     5964                             [- 6.27291883, - 0.00052207, 0.00031988, 7.27239676, 0.99840507, 0.99915805, 0.49319625],
     5965                             [- 6.27291904, - 0.00052198, 0.00031983, 7.27239706, 0.99840534, 0.99915819, 0.49319634],
     5966                             [- 6.27291925, - 0.00052189, 0.00031977, 7.27239736, 0.99840561, 0.99915834, 0.49319638],
     5967                             [- 6.27291946, - 0.00052180, 0.00031972, 7.27239766, 0.99840588, 0.99915848, 0.49319640],
     5968                             [- 6.27291967, - 0.00052172, 0.00031966, 7.27239795, 0.99840615, 0.99915862, 0.49319643],
     5969                             [- 6.27291988, - 0.00052163, 0.00031961, 7.27239825, 0.99840642, 0.99915876, 0.49319646],
     5970                             [- 6.27292009, - 0.00052154, 0.00031956, 7.27239855, 0.99840669, 0.99915890, 0.49319643],
     5971                             [- 6.27292030, - 0.00052145, 0.00031950, 7.27239885, 0.99840695, 0.99915904, 0.49319651],
     5972                             [- 6.27292051, - 0.00052137, 0.00031945, 7.27239915, 0.99840722, 0.99915919, 0.49319652],
     5973                             [- 6.27292072, - 0.00052128, 0.00031939, 7.27239944, 0.99840749, 0.99915933, 0.49319657],
     5974                             [- 6.27292093, - 0.00052119, 0.00031934, 7.27239974, 0.99840776, 0.99915947, 0.49319663],
     5975                             [- 6.27292114, - 0.00052110, 0.00031929, 7.27240004, 0.99840803, 0.99915961, 0.49319665],
     5976                             [- 6.27292135, - 0.00052101, 0.00031923, 7.27240034, 0.99840830, 0.99915975, 0.49319671],
     5977                             [- 6.27292156, - 0.00052093, 0.00031918, 7.27240063, 0.99840856, 0.99915989, 0.49319676],
     5978                             [- 6.27292177, - 0.00052084, 0.00031913, 7.27240093, 0.99840883, 0.99916004, 0.49319677],
     5979                             [- 6.27292198, - 0.00052075, 0.00031907, 7.27240123, 0.99840910, 0.99916018, 0.49319672],
     5980                             [- 6.27292219, - 0.00052066, 0.00031902, 7.27240153, 0.99840937, 0.99916032, 0.49319676],
     5981                             [- 6.27292240, - 0.00052058, 0.00031896, 7.27240182, 0.99840964, 0.99916046, 0.49319684],
     5982                             [- 6.27292261, - 0.00052049, 0.00031891, 7.27240212, 0.99840990, 0.99916060, 0.49319683],
     5983                             [- 6.27292282, - 0.00052040, 0.00031886, 7.27240242, 0.99841017, 0.99916074, 0.49319688],
     5984                             [- 6.27292303, - 0.00052031, 0.00031880, 7.27240271, 0.99841044, 0.99916088, 0.49319696],
     5985                             [- 6.27292324, - 0.00052023, 0.00031875, 7.27240301, 0.99841070, 0.99916102, 0.49319696],
     5986                             [- 6.27292345, - 0.00052014, 0.00031870, 7.27240331, 0.99841097, 0.99916117, 0.49319698],
     5987                             [- 6.27292366, - 0.00052005, 0.00031864, 7.27240360, 0.99841124, 0.99916131, 0.49319702],
     5988                             [- 6.27292386, - 0.00051996, 0.00031859, 7.27240390, 0.99841151, 0.99916145, 0.49319705],
     5989                             [- 6.27292407, - 0.00051988, 0.00031854, 7.27240420, 0.99841177, 0.99916159, 0.49319708],
     5990                             [- 6.27292428, - 0.00051979, 0.00031848, 7.27240449, 0.99841204, 0.99916173, 0.49319705],
     5991                             [- 6.27292449, - 0.00051970, 0.00031843, 7.27240479, 0.99841231, 0.99916187, 0.49319715],
     5992                             [- 6.27292470, - 0.00051962, 0.00031837, 7.27240508, 0.99841257, 0.99916201, 0.49319716],
     5993                             [- 6.27292491, - 0.00051953, 0.00031832, 7.27240538, 0.99841284, 0.99916215, 0.49319722],
     5994                             [- 6.27292512, - 0.00051944, 0.00031827, 7.27240568, 0.99841311, 0.99916229, 0.49319725],
     5995                             [- 6.27292533, - 0.00051935, 0.00031821, 7.27240597, 0.99841337, 0.99916243, 0.49319725],
     5996                             [- 6.27292553, - 0.00051927, 0.00031816, 7.27240627, 0.99841364, 0.99916257, 0.49319734],
     5997                             [- 6.27292574, - 0.00051918, 0.00031811, 7.27240656, 0.99841390, 0.99916271, 0.49319744],
     5998                             [- 6.27292595, - 0.00051909, 0.00031805, 7.27240686, 0.99841417, 0.99916285, 0.49319739],
     5999                             [- 6.27292616, - 0.00051901, 0.00031800, 7.27240715, 0.99841444, 0.99916299, 0.49319736],
     6000                             [- 6.27292637, - 0.00051892, 0.00031795, 7.27240745, 0.99841470, 0.99916313, 0.49319748],
     6001                             [- 6.27292658, - 0.00051883, 0.00031789, 7.27240774, 0.99841497, 0.99916327, 0.49319747],
     6002                             [- 6.27292678, - 0.00051874, 0.00031784, 7.27240804, 0.99841523, 0.99916341, 0.49319748],
     6003                             [- 6.27292699, - 0.00051866, 0.00031779, 7.27240833, 0.99841550, 0.99916355, 0.49319753],
     6004                             [- 6.27292720, - 0.00051857, 0.00031773, 7.27240863, 0.99841577, 0.99916369, 0.49319759],
     6005                             [- 6.27292741, - 0.00051848, 0.00031768, 7.27240892, 0.99841603, 0.99916384, 0.49319759],
     6006                             [- 6.27292762, - 0.00051840, 0.00031763, 7.27240922, 0.99841630, 0.99916398, 0.49319759],
     6007                             [- 6.27292782, - 0.00051831, 0.00031757, 7.27240951, 0.99841656, 0.99916412, 0.49319764],
     6008                             [- 6.27292803, - 0.00051822, 0.00031752, 7.27240981, 0.99841683, 0.99916426, 0.49319769],
     6009                             [- 6.27292824, - 0.00051814, 0.00031747, 7.27241010, 0.99841709, 0.99916440, 0.49319768],
     6010                             [- 6.27292845, - 0.00051805, 0.00031742, 7.27241040, 0.99841736, 0.99916453, 0.49319773],
     6011                             [- 6.27292865, - 0.00051796, 0.00031736, 7.27241069, 0.99841762, 0.99916467, 0.49319777],
     6012                             [- 6.27292886, - 0.00051788, 0.00031731, 7.27241098, 0.99841789, 0.99916481, 0.49319789],
     6013                             [- 6.27292907, - 0.00051779, 0.00031726, 7.27241128, 0.99841815, 0.99916495, 0.49319781],
     6014                             [- 6.27292927, - 0.00051770, 0.00031720, 7.27241157, 0.99841842, 0.99916509, 0.49319785],
     6015                             [- 6.27292948, - 0.00051762, 0.00031715, 7.27241186, 0.99841868, 0.99916523, 0.49319784],
     6016                             [- 6.27292969, - 0.00051753, 0.00031710, 7.27241216, 0.99841895, 0.99916537, 0.49319795],
     6017                             [- 6.27292990, - 0.00051744, 0.00031704, 7.27241245, 0.99841921, 0.99916551, 0.49319794],
     6018                             [- 6.27293010, - 0.00051736, 0.00031699, 7.27241275, 0.99841947, 0.99916565, 0.49319797],
     6019                             [- 6.27293031, - 0.00051727, 0.00031694, 7.27241304, 0.99841974, 0.99916579, 0.49319807],
     6020                             [- 6.27293052, - 0.00051718, 0.00031688, 7.27241333, 0.99842000, 0.99916593, 0.49319800],
     6021                             [- 6.27293072, - 0.00051710, 0.00031683, 7.27241363, 0.99842027, 0.99916607, 0.49319809],
     6022                             [- 6.27293093, - 0.00051701, 0.00031678, 7.27241392, 0.99842053, 0.99916621, 0.49319811],
     6023                             [- 6.27293114, - 0.00051693, 0.00031673, 7.27241421, 0.99842079, 0.99916635, 0.49319811],
     6024                             [- 6.27293134, - 0.00051684, 0.00031667, 7.27241450, 0.99842106, 0.99916649, 0.49319817],
     6025                             [- 6.27293155, - 0.00051675, 0.00031662, 7.27241480, 0.99842132, 0.99916663, 0.49319820],
     6026                             [- 6.27293176, - 0.00051667, 0.00031657, 7.27241509, 0.99842159, 0.99916677, 0.49319821],
     6027                             [- 6.27293196, - 0.00051658, 0.00031651, 7.27241538, 0.99842185, 0.99916691, 0.49319833],
     6028                             [- 6.27293217, - 0.00051649, 0.00031646, 7.27241567, 0.99842211, 0.99916704, 0.49319829],
     6029                             [- 6.27293237, - 0.00051641, 0.00031641, 7.27241597, 0.99842238, 0.99916718, 0.49319831],
     6030                             [- 6.27293258, - 0.00051632, 0.00031636, 7.27241626, 0.99842264, 0.99916732, 0.49319838],
     6031                             [- 6.27293279, - 0.00051624, 0.00031630, 7.27241655, 0.99842290, 0.99916746, 0.49319843],
     6032                             [- 6.27293299, - 0.00051615, 0.00031625, 7.27241684, 0.99842316, 0.99916760, 0.49319840],
     6033                             [- 6.27293320, - 0.00051606, 0.00031620, 7.27241713, 0.99842343, 0.99916774, 0.49319841],
     6034                             [- 6.27293340, - 0.00051598, 0.00031614, 7.27241743, 0.99842369, 0.99916788, 0.49319849],
     6035                             [- 6.27293361, - 0.00051589, 0.00031609, 7.27241772, 0.99842395, 0.99916802, 0.49319850],
     6036                             [- 6.27293382, - 0.00051581, 0.00031604, 7.27241801, 0.99842422, 0.99916816, 0.49319856],
     6037                             [- 6.27293402, - 0.00051572, 0.00031599, 7.27241830, 0.99842448, 0.99916829, 0.49319860],
     6038                             [- 6.27293423, - 0.00051563, 0.00031593, 7.27241859, 0.99842474, 0.99916843, 0.49319855],
     6039                             [- 6.27293443, - 0.00051555, 0.00031588, 7.27241888, 0.99842500, 0.99916857, 0.49319861],
     6040                             [- 6.27293464, - 0.00051546, 0.00031583, 7.27241918, 0.99842527, 0.99916871, 0.49319870],
     6041                             [- 6.27293484, - 0.00051538, 0.00031578, 7.27241947, 0.99842553, 0.99916885, 0.49319866],
     6042                             [- 6.27293505, - 0.00051529, 0.00031572, 7.27241976, 0.99842579, 0.99916899, 0.49319873],
     6043                             [- 6.27293525, - 0.00051520, 0.00031567, 7.27242005, 0.99842605, 0.99916912, 0.49319872],
     6044                             [- 6.27293546, - 0.00051512, 0.00031562, 7.27242034, 0.99842632, 0.99916926, 0.49319875],
     6045                             [- 6.27293566, - 0.00051503, 0.00031557, 7.27242063, 0.99842658, 0.99916940, 0.49319885],
     6046                             [- 6.27293587, - 0.00051495, 0.00031551, 7.27242092, 0.99842684, 0.99916954, 0.49319881],
     6047                             [- 6.27293607, - 0.00051486, 0.00031546, 7.27242121, 0.99842710, 0.99916968, 0.49319885],
     6048                             [- 6.27293628, - 0.00051478, 0.00031541, 7.27242150, 0.99842736, 0.99916982, 0.49319897],
     6049                             [- 6.27293648, - 0.00051469, 0.00031536, 7.27242179, 0.99842762, 0.99916995, 0.49319898],
     6050                             [- 6.27293669, - 0.00051461, 0.00031530, 7.27242208, 0.99842789, 0.99917009, 0.49319895],
     6051                             [- 6.27293689, - 0.00051452, 0.00031525, 7.27242237, 0.99842815, 0.99917023, 0.49319902],
     6052                             [- 6.27293710, - 0.00051443, 0.00031520, 7.27242266, 0.99842841, 0.99917037, 0.49319899],
     6053                             [- 6.27293730, - 0.00051435, 0.00031515, 7.27242295, 0.99842867, 0.99917051, 0.49319907],
     6054                             [- 6.27293751, - 0.00051426, 0.00031509, 7.27242324, 0.99842893, 0.99917064, 0.49319910],
     6055                             [- 6.27293771, - 0.00051418, 0.00031504, 7.27242353, 0.99842919, 0.99917078, 0.49319911],
     6056                             [- 6.27293792, - 0.00051409, 0.00031499, 7.27242382, 0.99842945, 0.99917092, 0.49319911],
     6057                             [- 6.27293812, - 0.00051401, 0.00031494, 7.27242411, 0.99842971, 0.99917106, 0.49319918],
     6058                             [- 6.27293832, - 0.00051392, 0.00031488, 7.27242440, 0.99842997, 0.99917119, 0.49319923],
     6059                             [- 6.27293853, - 0.00051384, 0.00031483, 7.27242469, 0.99843024, 0.99917133, 0.49319919],
     6060                             [- 6.27293873, - 0.00051375, 0.00031478, 7.27242498, 0.99843050, 0.99917147, 0.49319924],
     6061                             [- 6.27293894, - 0.00051367, 0.00031473, 7.27242527, 0.99843076, 0.99917161, 0.49319925],
     6062                             [- 6.27293914, - 0.00051358, 0.00031467, 7.27242556, 0.99843102, 0.99917174, 0.49319934],
     6063                             [- 6.27293934, - 0.00051350, 0.00031462, 7.27242585, 0.99843128, 0.99917188, 0.49319932],
     6064                             [- 6.27293955, - 0.00051341, 0.00031457, 7.27242614, 0.99843154, 0.99917202, 0.49319938],
     6065                             [- 6.27293975, - 0.00051333, 0.00031452, 7.27242643, 0.99843180, 0.99917216, 0.49319942],
     6066                             [- 6.27293995, - 0.00051324, 0.00031447, 7.27242671, 0.99843206, 0.99917229, 0.49319947],
     6067                             [- 6.27294016, - 0.00051315, 0.00031441, 7.27242700, 0.99843232, 0.99917243, 0.49319948],
     6068                             [- 6.27294036, - 0.00051307, 0.00031436, 7.27242729, 0.99843258, 0.99917257, 0.49319954],
     6069                             [- 6.27294057, - 0.00051298, 0.00031431, 7.27242758, 0.99843284, 0.99917271, 0.49319956],
     6070                             [- 6.27294077, - 0.00051290, 0.00031426, 7.27242787, 0.99843310, 0.99917284, 0.49319957],
     6071                             [- 6.27294097, - 0.00051281, 0.00031421, 7.27242816, 0.99843336, 0.99917298, 0.49319962],
     6072                             [- 6.27294118, - 0.00051273, 0.00031415, 7.27242845, 0.99843362, 0.99917312, 0.49319969],
     6073                             [- 6.27294138, - 0.00051265, 0.00031410, 7.27242873, 0.99843388, 0.99917325, 0.49319972],
     6074                             [- 6.27294158, - 0.00051256, 0.00031405, 7.27242902, 0.99843414, 0.99917339, 0.49319967],
     6075                             [- 6.27294178, - 0.00051248, 0.00031400, 7.27242931, 0.99843439, 0.99917353, 0.49319971],
     6076                             [- 6.27294199, - 0.00051239, 0.00031395, 7.27242960, 0.99843465, 0.99917366, 0.49319975],
     6077                             [- 6.27294219, - 0.00051231, 0.00031389, 7.27242988, 0.99843491, 0.99917380, 0.49319976],
     6078                             [- 6.27294239, - 0.00051222, 0.00031384, 7.27243017, 0.99843517, 0.99917394, 0.49319985],
     6079                             [- 6.27294260, - 0.00051214, 0.00031379, 7.27243046, 0.99843543, 0.99917407, 0.49319980],
     6080                             [- 6.27294280, - 0.00051205, 0.00031374, 7.27243075, 0.99843569, 0.99917421, 0.49319987],
     6081                             [- 6.27294300, - 0.00051197, 0.00031369, 7.27243103, 0.99843595, 0.99917435, 0.49319991],
     6082                             [- 6.27294320, - 0.00051188, 0.00031363, 7.27243132, 0.99843621, 0.99917448, 0.49319996],
     6083                             [- 6.27294341, - 0.00051180, 0.00031358, 7.27243161, 0.99843647, 0.99917462, 0.49320001],
     6084                             [- 6.27294361, - 0.00051171, 0.00031353, 7.27243190, 0.99843673, 0.99917476, 0.49319998],
     6085                             [- 6.27294381, - 0.00051163, 0.00031348, 7.27243218, 0.99843698, 0.99917489, 0.49320000],
     6086                             [- 6.27294401, - 0.00051154, 0.00031343, 7.27243247, 0.99843724, 0.99917503, 0.49320003],
     6087                             [- 6.27294422, - 0.00051146, 0.00031337, 7.27243276, 0.99843750, 0.99917517, 0.49320007],
     6088                             [- 6.27294442, - 0.00051137, 0.00031332, 7.27243304, 0.99843776, 0.99917530, 0.49320006],
     6089                             [- 6.27294462, - 0.00051129, 0.00031327, 7.27243333, 0.99843802, 0.99917544, 0.49320012],
     6090                             [- 6.27294482, - 0.00051121, 0.00031322, 7.27243362, 0.99843827, 0.99917558, 0.49320018],
     6091                             [- 6.27294502, - 0.00051112, 0.00031317, 7.27243390, 0.99843853, 0.99917571, 0.49320018],
     6092                             [- 6.27294523, - 0.00051104, 0.00031312, 7.27243419, 0.99843879, 0.99917585, 0.49320017],
     6093                             [- 6.27294543, - 0.00051095, 0.00031306, 7.27243448, 0.99843905, 0.99917598, 0.49320022],
     6094                             [- 6.27294563, - 0.00051087, 0.00031301, 7.27243476, 0.99843931, 0.99917612, 0.49320033],
     6095                             [- 6.27294583, - 0.00051078, 0.00031296, 7.27243505, 0.99843956, 0.99917626, 0.49320035],
     6096                             [- 6.27294603, - 0.00051070, 0.00031291, 7.27243533, 0.99843982, 0.99917639, 0.49320035],
     6097                             [- 6.27294623, - 0.00051062, 0.00031286, 7.27243562, 0.99844008, 0.99917653, 0.49320037],
     6098                             [- 6.27294644, - 0.00051053, 0.00031281, 7.27243590, 0.99844034, 0.99917666, 0.49320040],
     6099                             [- 6.27294664, - 0.00051045, 0.00031275, 7.27243619, 0.99844059, 0.99917680, 0.49320046],
     6100                             [- 6.27294684, - 0.00051036, 0.00031270, 7.27243648, 0.99844085, 0.99917693, 0.49320050],
     6101                             [- 6.27294704, - 0.00051028, 0.00031265, 7.27243676, 0.99844111, 0.99917707, 0.49320049],
     6102                             [- 6.27294724, - 0.00051019, 0.00031260, 7.27243705, 0.99844136, 0.99917721, 0.49320054],
     6103                             [- 6.27294744, - 0.00051011, 0.00031255, 7.27243733, 0.99844162, 0.99917734, 0.49320055],
     6104                             [- 6.27294764, - 0.00051003, 0.00031250, 7.27243762, 0.99844188, 0.99917748, 0.49320064],
     6105                             [- 6.27294784, - 0.00050994, 0.00031244, 7.27243790, 0.99844214, 0.99917761, 0.49320065],
     6106                             [- 6.27294805, - 0.00050986, 0.00031239, 7.27243819, 0.99844239, 0.99917775, 0.49320067],
     6107                             [- 6.27294825, - 0.00050977, 0.00031234, 7.27243847, 0.99844265, 0.99917788, 0.49320073],
     6108                             [- 6.27294845, - 0.00050969, 0.00031229, 7.27243876, 0.99844291, 0.99917802, 0.49320072],
     6109                             [- 6.27294865, - 0.00050961, 0.00031224, 7.27243904, 0.99844316, 0.99917815, 0.49320076],
     6110                             [- 6.27294885, - 0.00050952, 0.00031219, 7.27243933, 0.99844342, 0.99917829, 0.49320077],
     6111                             [- 6.27294905, - 0.00050944, 0.00031214, 7.27243961, 0.99844367, 0.99917843, 0.49320076],
     6112                             [- 6.27294925, - 0.00050936, 0.00031208, 7.27243989, 0.99844393, 0.99917856, 0.49320084],
     6113                             [- 6.27294945, - 0.00050927, 0.00031203, 7.27244018, 0.99844419, 0.99917870, 0.49320087],
     6114                             [- 6.27294965, - 0.00050919, 0.00031198, 7.27244046, 0.99844444, 0.99917883, 0.49320088],
     6115                             [- 6.27294985, - 0.00050910, 0.00031193, 7.27244075, 0.99844470, 0.99917897, 0.49320097],
     6116                             [- 6.27295005, - 0.00050902, 0.00031188, 7.27244103, 0.99844495, 0.99917910, 0.49320091],
     6117                             [- 6.27295025, - 0.00050894, 0.00031183, 7.27244132, 0.99844521, 0.99917924, 0.49320097],
     6118                             [- 6.27295045, - 0.00050885, 0.00031178, 7.27244160, 0.99844547, 0.99917937, 0.49320101],
     6119                             [- 6.27295065, - 0.00050877, 0.00031173, 7.27244188, 0.99844572, 0.99917951, 0.49320102],
     6120                             [- 6.27295085, - 0.00050869, 0.00031167, 7.27244217, 0.99844598, 0.99917964, 0.49320101],
     6121                             [- 6.27295105, - 0.00050860, 0.00031162, 7.27244245, 0.99844623, 0.99917978, 0.49320112],
     6122                             [- 6.27295125, - 0.00050852, 0.00031157, 7.27244273, 0.99844649, 0.99917991, 0.49320117],
     6123                             [- 6.27295145, - 0.00050844, 0.00031152, 7.27244302, 0.99844674, 0.99918004, 0.49320117],
     6124                             [- 6.27295165, - 0.00050835, 0.00031147, 7.27244330, 0.99844700, 0.99918018, 0.49320119],
     6125                             [- 6.27295185, - 0.00050827, 0.00031142, 7.27244358, 0.99844725, 0.99918031, 0.49320122],
     6126                             [- 6.27295205, - 0.00050818, 0.00031137, 7.27244387, 0.99844751, 0.99918045, 0.49320128],
     6127                             [- 6.27295225, - 0.00050810, 0.00031132, 7.27244415, 0.99844776, 0.99918058, 0.49320130],
     6128                             [- 6.27295245, - 0.00050802, 0.00031126, 7.27244443, 0.99844802, 0.99918072, 0.49320132],
     6129                             [- 6.27295265, - 0.00050793, 0.00031121, 7.27244472, 0.99844827, 0.99918085, 0.49320130],
     6130                             [- 6.27295285, - 0.00050785, 0.00031116, 7.27244500, 0.99844853, 0.99918099, 0.49320137],
     6131                             [- 6.27295305, - 0.00050777, 0.00031111, 7.27244528, 0.99844878, 0.99918112, 0.49320141],
     6132                             [- 6.27295325, - 0.00050768, 0.00031106, 7.27244556, 0.99844904, 0.99918126, 0.49320145],
     6133                             [- 6.27295345, - 0.00050760, 0.00031101, 7.27244585, 0.99844929, 0.99918139, 0.49320144],
     6134                             [- 6.27295365, - 0.00050752, 0.00031096, 7.27244613, 0.99844955, 0.99918152, 0.49320149],
     6135                             [- 6.27295385, - 0.00050743, 0.00031091, 7.27244641, 0.99844980, 0.99918166, 0.49320154],
     6136                             [- 6.27295404, - 0.00050735, 0.00031086, 7.27244669, 0.99845005, 0.99918179, 0.49320156],
     6137                             [- 6.27295424, - 0.00050727, 0.00031081, 7.27244697, 0.99845031, 0.99918193, 0.49320161],
     6138                             [- 6.27295444, - 0.00050719, 0.00031075, 7.27244726, 0.99845056, 0.99918206, 0.49320163],
     6139                             [- 6.27295464, - 0.00050710, 0.00031070, 7.27244754, 0.99845082, 0.99918219, 0.49320168],
     6140                             [- 6.27295484, - 0.00050702, 0.00031065, 7.27244782, 0.99845107, 0.99918233, 0.49320163],
     6141                             [- 6.27295504, - 0.00050694, 0.00031060, 7.27244810, 0.99845132, 0.99918246, 0.49320171],
     6142                             [- 6.27295524, - 0.00050685, 0.00031055, 7.27244838, 0.99845158, 0.99918260, 0.49320174],
     6143                             [- 6.27295544, - 0.00050677, 0.00031050, 7.27244867, 0.99845183, 0.99918273, 0.49320177],
     6144                             [- 6.27295563, - 0.00050669, 0.00031045, 7.27244895, 0.99845208, 0.99918286, 0.49320176],
     6145                             [- 6.27295583, - 0.00050660, 0.00031040, 7.27244923, 0.99845234, 0.99918300, 0.49320182],
     6146                             [- 6.27295603, - 0.00050652, 0.00031035, 7.27244951, 0.99845259, 0.99918313, 0.49320186],
     6147                             [- 6.27295623, - 0.00050644, 0.00031030, 7.27244979, 0.99845284, 0.99918327, 0.49320185],
     6148                             [- 6.27295643, - 0.00050636, 0.00031025, 7.27245007, 0.99845310, 0.99918340, 0.49320186],
     6149                             [- 6.27295663, - 0.00050627, 0.00031019, 7.27245035, 0.99845335, 0.99918353, 0.49320197],
     6150                             [- 6.27295682, - 0.00050619, 0.00031014, 7.27245063, 0.99845360, 0.99918367, 0.49320197],
     6151                             [- 6.27295702, - 0.00050611, 0.00031009, 7.27245091, 0.99845386, 0.99918380, 0.49320194],
     6152                             [- 6.27295722, - 0.00050602, 0.00031004, 7.27245120, 0.99845411, 0.99918393, 0.49320202],
     6153                             [- 6.27295742, - 0.00050594, 0.00030999, 7.27245148, 0.99845436, 0.99918407, 0.49320205],
     6154                             [- 6.27295762, - 0.00050586, 0.00030994, 7.27245176, 0.99845462, 0.99918420, 0.49320207],
     6155                             [- 6.27295781, - 0.00050578, 0.00030989, 7.27245204, 0.99845487, 0.99918433, 0.49320207],
     6156                             [- 6.27295801, - 0.00050569, 0.00030984, 7.27245232, 0.99845512, 0.99918447, 0.49320217],
     6157                             [- 6.27295821, - 0.00050561, 0.00030979, 7.27245260, 0.99845537, 0.99918460, 0.49320221],
     6158                             [- 6.27295841, - 0.00050553, 0.00030974, 7.27245288, 0.99845563, 0.99918473, 0.49320219],
     6159                             [- 6.27295860, - 0.00050545, 0.00030969, 7.27245316, 0.99845588, 0.99918487, 0.49320222],
     6160                             [- 6.27295880, - 0.00050536, 0.00030964, 7.27245344, 0.99845613, 0.99918500, 0.49320228],
     6161                             [- 6.27295900, - 0.00050528, 0.00030959, 7.27245372, 0.99845638, 0.99918513, 0.49320230],
     6162                             [- 6.27295920, - 0.00050520, 0.00030954, 7.27245400, 0.99845663, 0.99918526, 0.49320235],
     6163                             [- 6.27295939, - 0.00050512, 0.00030949, 7.27245428, 0.99845689, 0.99918540, 0.49320231],
     6164                             [- 6.27295959, - 0.00050503, 0.00030944, 7.27245456, 0.99845714, 0.99918553, 0.49320239],
     6165                             [- 6.27295979, - 0.00050495, 0.00030938, 7.27245484, 0.99845739, 0.99918566, 0.49320239],
     6166                             [- 6.27295998, - 0.00050487, 0.00030933, 7.27245512, 0.99845764, 0.99918580, 0.49320243],
     6167                             [- 6.27296018, - 0.00050479, 0.00030928, 7.27245539, 0.99845789, 0.99918593, 0.49320240],
     6168                             [- 6.27296038, - 0.00050470, 0.00030923, 7.27245567, 0.99845814, 0.99918606, 0.49320248],
     6169                             [- 6.27296058, - 0.00050462, 0.00030918, 7.27245595, 0.99845840, 0.99918619, 0.49320254],
     6170                             [- 6.27296077, - 0.00050454, 0.00030913, 7.27245623, 0.99845865, 0.99918633, 0.49320254],
     6171                             [- 6.27296097, - 0.00050446, 0.00030908, 7.27245651, 0.99845890, 0.99918646, 0.49320257],
     6172                             [- 6.27296117, - 0.00050438, 0.00030903, 7.27245679, 0.99845915, 0.99918659, 0.49320260],
     6173                             [- 6.27296136, - 0.00050429, 0.00030898, 7.27245707, 0.99845940, 0.99918673, 0.49320260],
     6174                             [- 6.27296156, - 0.00050421, 0.00030893, 7.27245735, 0.99845965, 0.99918686, 0.49320264],
     6175                             [- 6.27296176, - 0.00050413, 0.00030888, 7.27245763, 0.99845990, 0.99918699, 0.49320270],
     6176                             [- 6.27296195, - 0.00050405, 0.00030883, 7.27245790, 0.99846015, 0.99918712, 0.49320271],
     6177                             [- 6.27296215, - 0.00050397, 0.00030878, 7.27245818, 0.99846040, 0.99918726, 0.49320271],
     6178                             [- 6.27296234, - 0.00050388, 0.00030873, 7.27245846, 0.99846066, 0.99918739, 0.49320279],
     6179                             [- 6.27296254, - 0.00050380, 0.00030868, 7.27245874, 0.99846091, 0.99918752, 0.49320285],
     6180                             [- 6.27296274, - 0.00050372, 0.00030863, 7.27245902, 0.99846116, 0.99918765, 0.49320278],
     6181                             [- 6.27296293, - 0.00050364, 0.00030858, 7.27245930, 0.99846141, 0.99918778, 0.49320286],
     6182                             [- 6.27296313, - 0.00050356, 0.00030853, 7.27245957, 0.99846166, 0.99918792, 0.49320284],
     6183                             [- 6.27296332, - 0.00050347, 0.00030848, 7.27245985, 0.99846191, 0.99918805, 0.49320294],
     6184                             [- 6.27296352, - 0.00050339, 0.00030843, 7.27246013, 0.99846216, 0.99918818, 0.49320297],
     6185                             [- 6.27296372, - 0.00050331, 0.00030838, 7.27246041, 0.99846241, 0.99918831, 0.49320295],
     6186                             [- 6.27296391, - 0.00050323, 0.00030833, 7.27246068, 0.99846266, 0.99918844, 0.49320301],
     6187                             [- 6.27296411, - 0.00050315, 0.00030828, 7.27246096, 0.99846291, 0.99918858, 0.49320303],
     6188                             [- 6.27296430, - 0.00050306, 0.00030823, 7.27246124, 0.99846316, 0.99918871, 0.49320305],
     6189                             [- 6.27296450, - 0.00050298, 0.00030818, 7.27246152, 0.99846341, 0.99918884, 0.49320310],
     6190                             [- 6.27296469, - 0.00050290, 0.00030813, 7.27246179, 0.99846366, 0.99918897, 0.49320314],
     6191                             [- 6.27296489, - 0.00050282, 0.00030808, 7.27246207, 0.99846391, 0.99918910, 0.49320318],
     6192                             [- 6.27296509, - 0.00050274, 0.00030803, 7.27246235, 0.99846416, 0.99918924, 0.49320319],
     6193                             [- 6.27296528, - 0.00050266, 0.00030798, 7.27246263, 0.99846441, 0.99918937, 0.49320326],
     6194                             [- 6.27296548, - 0.00050257, 0.00030793, 7.27246290, 0.99846466, 0.99918950, 0.49320325],
     6195                             [- 6.27296567, - 0.00050249, 0.00030788, 7.27246318, 0.99846490, 0.99918963, 0.49320329],
     6196                             [- 6.27296587, - 0.00050241, 0.00030783, 7.27246346, 0.99846515, 0.99918976, 0.49320330],
     6197                             [- 6.27296606, - 0.00050233, 0.00030778, 7.27246373, 0.99846540, 0.99918989, 0.49320333],
     6198                             [- 6.27296626, - 0.00050225, 0.00030773, 7.27246401, 0.99846565, 0.99919002, 0.49320339],
     6199                             [- 6.27296645, - 0.00050217, 0.00030768, 7.27246429, 0.99846590, 0.99919016, 0.49320339],
     6200                             [- 6.27296665, - 0.00050209, 0.00030763, 7.27246456, 0.99846615, 0.99919029, 0.49320338],
     6201                             [- 6.27296684, - 0.00050200, 0.00030758, 7.27246484, 0.99846640, 0.99919042, 0.49320344],
     6202                             [- 6.27296704, - 0.00050192, 0.00030753, 7.27246511, 0.99846665, 0.99919055, 0.49320353],
     6203                             [- 6.27296723, - 0.00050184, 0.00030748, 7.27246539, 0.99846690, 0.99919068, 0.49320349],
     6204                             [- 6.27296743, - 0.00050176, 0.00030743, 7.27246567, 0.99846715, 0.99919081, 0.49320357],
     6205                             [- 6.27296762, - 0.00050168, 0.00030738, 7.27246594, 0.99846739, 0.99919094, 0.49320354],
     6206                             [- 6.27296781, - 0.00050160, 0.00030733, 7.27246622, 0.99846764, 0.99919108, 0.49320360],
     6207                             [- 6.27296801, - 0.00050152, 0.00030728, 7.27246649, 0.99846789, 0.99919121, 0.49320366],
     6208                             [- 6.27296820, - 0.00050143, 0.00030723, 7.27246677, 0.99846814, 0.99919134, 0.49320363],
     6209                             [- 6.27296840, - 0.00050135, 0.00030718, 7.27246704, 0.99846839, 0.99919147, 0.49320369],
     6210                             [- 6.27296859, - 0.00050127, 0.00030713, 7.27246732, 0.99846864, 0.99919160, 0.49320376],
     6211                             [- 6.27296879, - 0.00050119, 0.00030708, 7.27246760, 0.99846888, 0.99919173, 0.49320377],
     6212                             [- 6.27296898, - 0.00050111, 0.00030703, 7.27246787, 0.99846913, 0.99919186, 0.49320381],
     6213                             [- 6.27296917, - 0.00050103, 0.00030698, 7.27246815, 0.99846938, 0.99919199, 0.49320377],
     6214                             [- 6.27296937, - 0.00050095, 0.00030693, 7.27246842, 0.99846963, 0.99919212, 0.49320384],
     6215                             [- 6.27296956, - 0.00050087, 0.00030688, 7.27246870, 0.99846987, 0.99919225, 0.49320380],
     6216                             [- 6.27296976, - 0.00050079, 0.00030683, 7.27246897, 0.99847012, 0.99919238, 0.49320387],
     6217                             [- 6.27296995, - 0.00050070, 0.00030678, 7.27246925, 0.99847037, 0.99919251, 0.49320387],
     6218                             [- 6.27297014, - 0.00050062, 0.00030673, 7.27246952, 0.99847062, 0.99919265, 0.49320397],
     6219                             [- 6.27297034, - 0.00050054, 0.00030668, 7.27246980, 0.99847086, 0.99919278, 0.49320397],
     6220                             [- 6.27297053, - 0.00050046, 0.00030663, 7.27247007, 0.99847111, 0.99919291, 0.49320399],
     6221                             [- 6.27297073, - 0.00050038, 0.00030658, 7.27247034, 0.99847136, 0.99919304, 0.49320405],
     6222                             [- 6.27297092, - 0.00050030, 0.00030653, 7.27247062, 0.99847161, 0.99919317, 0.49320409],
     6223                             [- 6.27297111, - 0.00050022, 0.00030648, 7.27247089, 0.99847185, 0.99919330, 0.49320412],
     6224                             [- 6.27297131, - 0.00050014, 0.00030643, 7.27247117, 0.99847210, 0.99919343, 0.49320414],
     6225                             [- 6.27297150, - 0.00050006, 0.00030638, 7.27247144, 0.99847235, 0.99919356, 0.49320414],
     6226                             [- 6.27297169, - 0.00049998, 0.00030633, 7.27247172, 0.99847259, 0.99919369, 0.49320417],
     6227                             [- 6.27297189, - 0.00049990, 0.00030629, 7.27247199, 0.99847284, 0.99919382, 0.49320418],
     6228                             [- 6.27297208, - 0.00049982, 0.00030624, 7.27247226, 0.99847309, 0.99919395, 0.49320420],
     6229                             [- 6.27297227, - 0.00049973, 0.00030619, 7.27247254, 0.99847333, 0.99919408, 0.49320426],
     6230                             [- 6.27297246, - 0.00049965, 0.00030614, 7.27247281, 0.99847358, 0.99919421, 0.49320420],
     6231                             [- 6.27297266, - 0.00049957, 0.00030609, 7.27247308, 0.99847383, 0.99919434, 0.49320435],
     6232                             [- 6.27297285, - 0.00049949, 0.00030604, 7.27247336, 0.99847407, 0.99919447, 0.49320431],
     6233                             [- 6.27297304, - 0.00049941, 0.00030599, 7.27247363, 0.99847432, 0.99919460, 0.49320437],
     6234                             [- 6.27297324, - 0.00049933, 0.00030594, 7.27247390, 0.99847457, 0.99919473, 0.49320437],
     6235                             [- 6.27297343, - 0.00049925, 0.00030589, 7.27247418, 0.99847481, 0.99919486, 0.49320443],
     6236                             [- 6.27297362, - 0.00049917, 0.00030584, 7.27247445, 0.99847506, 0.99919499, 0.49320448],
     6237                             [- 6.27297381, - 0.00049909, 0.00030579, 7.27247472, 0.99847530, 0.99919512, 0.49320448],
     6238                             [- 6.27297401, - 0.00049901, 0.00030574, 7.27247500, 0.99847555, 0.99919525, 0.49320449],
     6239                             [- 6.27297420, - 0.00049893, 0.00030569, 7.27247527, 0.99847580, 0.99919538, 0.49320451],
     6240                             [- 6.27297439, - 0.00049885, 0.00030564, 7.27247554, 0.99847604, 0.99919551, 0.49320453],
     6241                             [- 6.27297458, - 0.00049877, 0.00030559, 7.27247582, 0.99847629, 0.99919564, 0.49320461],
     6242                             [- 6.27297478, - 0.00049869, 0.00030554, 7.27247609, 0.99847653, 0.99919577, 0.49320461],
     6243                             [- 6.27297497, - 0.00049861, 0.00030550, 7.27247636, 0.99847678, 0.99919590, 0.49320465],
     6244                             [- 6.27297516, - 0.00049853, 0.00030545, 7.27247663, 0.99847702, 0.99919603, 0.49320475],
     6245                             [- 6.27297535, - 0.00049845, 0.00030540, 7.27247691, 0.99847727, 0.99919616, 0.49320473],
     6246                             [- 6.27297554, - 0.00049837, 0.00030535, 7.27247718, 0.99847751, 0.99919629, 0.49320474],
     6247                             [- 6.27297574, - 0.00049829, 0.00030530, 7.27247745, 0.99847776, 0.99919641, 0.49320475],
     6248                             [- 6.27297593, - 0.00049821, 0.00030525, 7.27247772, 0.99847800, 0.99919654, 0.49320486],
     6249                             [- 6.27297612, - 0.00049813, 0.00030520, 7.27247799, 0.99847825, 0.99919667, 0.49320483],
     6250                             [- 6.27297631, - 0.00049805, 0.00030515, 7.27247827, 0.99847849, 0.99919680, 0.49320494],
     6251                             [- 6.27297650, - 0.00049797, 0.00030510, 7.27247854, 0.99847874, 0.99919693, 0.49320494],
     6252                             [- 6.27297670, - 0.00049789, 0.00030505, 7.27247881, 0.99847898, 0.99919706, 0.49320488],
     6253                             [- 6.27297689, - 0.00049781, 0.00030500, 7.27247908, 0.99847923, 0.99919719, 0.49320497],
     6254                             [- 6.27297708, - 0.00049773, 0.00030495, 7.27247935, 0.99847947, 0.99919732, 0.49320498],
     6255                             [- 6.27297727, - 0.00049765, 0.00030491, 7.27247962, 0.99847972, 0.99919745, 0.49320504],
     6256                             [- 6.27297746, - 0.00049757, 0.00030486, 7.27247990, 0.99847996, 0.99919758, 0.49320498],
     6257                             [- 6.27297765, - 0.00049749, 0.00030481, 7.27248017, 0.99848021, 0.99919771, 0.49320508],
     6258                             [- 6.27297784, - 0.00049741, 0.00030476, 7.27248044, 0.99848045, 0.99919784, 0.49320506],
     6259                             [- 6.27297804, - 0.00049733, 0.00030471, 7.27248071, 0.99848070, 0.99919796, 0.49320512],
     6260                             [- 6.27297823, - 0.00049725, 0.00030466, 7.27248098, 0.99848094, 0.99919809, 0.49320520],
     6261                             [- 6.27297842, - 0.00049717, 0.00030461, 7.27248125, 0.99848118, 0.99919822, 0.49320518],
     6262                             [- 6.27297861, - 0.00049709, 0.00030456, 7.27248152, 0.99848143, 0.99919835, 0.49320519],
     6263                             [- 6.27297880, - 0.00049701, 0.00030451, 7.27248179, 0.99848167, 0.99919848, 0.49320524],
     6264                             [- 6.27297899, - 0.00049693, 0.00030446, 7.27248206, 0.99848192, 0.99919861, 0.49320527],
     6265                             [- 6.27297918, - 0.00049685, 0.00030442, 7.27248233, 0.99848216, 0.99919874, 0.49320529],
     6266                             [- 6.27297937, - 0.00049677, 0.00030437, 7.27248260, 0.99848240, 0.99919887, 0.49320530],
     6267                             [- 6.27297956, - 0.00049669, 0.00030432, 7.27248288, 0.99848265, 0.99919899, 0.49320533],
     6268                             [- 6.27297975, - 0.00049661, 0.00030427, 7.27248315, 0.99848289, 0.99919912, 0.49320533],
     6269                             [- 6.27297994, - 0.00049653, 0.00030422, 7.27248342, 0.99848313, 0.99919925, 0.49320545],
     6270                             [- 6.27298013, - 0.00049645, 0.00030417, 7.27248369, 0.99848338, 0.99919938, 0.49320550],
     6271                             [- 6.27298033, - 0.00049637, 0.00030412, 7.27248396, 0.99848362, 0.99919951, 0.49320544],
     6272                             [- 6.27298052, - 0.00049629, 0.00030407, 7.27248423, 0.99848386, 0.99919964, 0.49320542],
     6273                             [- 6.27298071, - 0.00049621, 0.00030403, 7.27248450, 0.99848411, 0.99919976, 0.49320549],
     6274                             [- 6.27298090, - 0.00049613, 0.00030398, 7.27248477, 0.99848435, 0.99919989, 0.49320553],
     6275                             [- 6.27298109, - 0.00049605, 0.00030393, 7.27248504, 0.99848459, 0.99920002, 0.49320549],
     6276                             [- 6.27298128, - 0.00049597, 0.00030388, 7.27248531, 0.99848484, 0.99920015, 0.49320559],
     6277                             [- 6.27298147, - 0.00049589, 0.00030383, 7.27248557, 0.99848508, 0.99920028, 0.49320560],
     6278                             [- 6.27298166, - 0.00049581, 0.00030378, 7.27248584, 0.99848532, 0.99920041, 0.49320562],
     6279                             [- 6.27298185, - 0.00049573, 0.00030373, 7.27248611, 0.99848556, 0.99920053, 0.49320572],
     6280                             [- 6.27298204, - 0.00049565, 0.00030368, 7.27248638, 0.99848581, 0.99920066, 0.49320570],
     6281                             [- 6.27298223, - 0.00049557, 0.00030364, 7.27248665, 0.99848605, 0.99920079, 0.49320571],
     6282                             [- 6.27298242, - 0.00049550, 0.00030359, 7.27248692, 0.99848629, 0.99920092, 0.49320573],
     6283                             [- 6.27298261, - 0.00049542, 0.00030354, 7.27248719, 0.99848653, 0.99920105, 0.49320576],
     6284                             [- 6.27298280, - 0.00049534, 0.00030349, 7.27248746, 0.99848678, 0.99920117, 0.49320585],
     6285                             [- 6.27298299, - 0.00049526, 0.00030344, 7.27248773, 0.99848702, 0.99920130, 0.49320584],
     6286                             [- 6.27298318, - 0.00049518, 0.00030339, 7.27248800, 0.99848726, 0.99920143, 0.49320590],
     6287                             [- 6.27298336, - 0.00049510, 0.00030334, 7.27248827, 0.99848750, 0.99920156, 0.49320592],
     6288                             [- 6.27298355, - 0.00049502, 0.00030330, 7.27248853, 0.99848774, 0.99920168, 0.49320594],
     6289                             [- 6.27298374, - 0.00049494, 0.00030325, 7.27248880, 0.99848799, 0.99920181, 0.49320595],
     6290                             [- 6.27298393, - 0.00049486, 0.00030320, 7.27248907, 0.99848823, 0.99920194, 0.49320597],
     6291                             [- 6.27298412, - 0.00049478, 0.00030315, 7.27248934, 0.99848847, 0.99920207, 0.49320596],
     6292                             [- 6.27298431, - 0.00049470, 0.00030310, 7.27248961, 0.99848871, 0.99920220, 0.49320603],
     6293                             [- 6.27298450, - 0.00049462, 0.00030305, 7.27248988, 0.99848895, 0.99920232, 0.49320613],
     6294                             [- 6.27298469, - 0.00049455, 0.00030300, 7.27249014, 0.99848919, 0.99920245, 0.49320607],
     6295                             [- 6.27298488, - 0.00049447, 0.00030296, 7.27249041, 0.99848944, 0.99920258, 0.49320616],
     6296                             [- 6.27298507, - 0.00049439, 0.00030291, 7.27249068, 0.99848968, 0.99920270, 0.49320618],
     6297                             [- 6.27298526, - 0.00049431, 0.00030286, 7.27249095, 0.99848992, 0.99920283, 0.49320613],
     6298                             [- 6.27298545, - 0.00049423, 0.00030281, 7.27249122, 0.99849016, 0.99920296, 0.49320620],
     6299                             [- 6.27298563, - 0.00049415, 0.00030276, 7.27249148, 0.99849040, 0.99920309, 0.49320622],
     6300                             [- 6.27298582, - 0.00049407, 0.00030271, 7.27249175, 0.99849064, 0.99920321, 0.49320626],
     6301                             [- 6.27298601, - 0.00049399, 0.00030267, 7.27249202, 0.99849088, 0.99920334, 0.49320625],
     6302                             [- 6.27298620, - 0.00049391, 0.00030262, 7.27249229, 0.99849112, 0.99920347, 0.49320640],
     6303                             [- 6.27298639, - 0.00049384, 0.00030257, 7.27249255, 0.99849136, 0.99920360, 0.49320640],
     6304                             [- 6.27298658, - 0.00049376, 0.00030252, 7.27249282, 0.99849161, 0.99920372, 0.49320636],
     6305                             [- 6.27298677, - 0.00049368, 0.00030247, 7.27249309, 0.99849185, 0.99920385, 0.49320641],
     6306                             [- 6.27298695, - 0.00049360, 0.00030242, 7.27249336, 0.99849209, 0.99920398, 0.49320644],
     6307                             [- 6.27298714, - 0.00049352, 0.00030238, 7.27249362, 0.99849233, 0.99920410, 0.49320643],
     6308                             [- 6.27298733, - 0.00049344, 0.00030233, 7.27249389, 0.99849257, 0.99920423, 0.49320647],
     6309                             [- 6.27298752, - 0.00049336, 0.00030228, 7.27249416, 0.99849281, 0.99920436, 0.49320649],
     6310                             [- 6.27298771, - 0.00049328, 0.00030223, 7.27249442, 0.99849305, 0.99920448, 0.49320659],
     6311                             [- 6.27298790, - 0.00049321, 0.00030218, 7.27249469, 0.99849329, 0.99920461, 0.49320657],
     6312                             [- 6.27298808, - 0.00049313, 0.00030214, 7.27249496, 0.99849353, 0.99920474, 0.49320661],
     6313                             [- 6.27298827, - 0.00049305, 0.00030209, 7.27249522, 0.99849377, 0.99920486, 0.49320660],
     6314                             [- 6.27298846, - 0.00049297, 0.00030204, 7.27249549, 0.99849401, 0.99920499, 0.49320663],
     6315                             [- 6.27298865, - 0.00049289, 0.00030199, 7.27249576, 0.99849425, 0.99920512, 0.49320673],
     6316                             [- 6.27298883, - 0.00049281, 0.00030194, 7.27249602, 0.99849449, 0.99920524, 0.49320673],
     6317                             [- 6.27298902, - 0.00049273, 0.00030189, 7.27249629, 0.99849473, 0.99920537, 0.49320669],
     6318                             [- 6.27298921, - 0.00049266, 0.00030185, 7.27249655, 0.99849497, 0.99920550, 0.49320677],
     6319                             [- 6.27298940, - 0.00049258, 0.00030180, 7.27249682, 0.99849521, 0.99920562, 0.49320680],
     6320                             [- 6.27298959, - 0.00049250, 0.00030175, 7.27249709, 0.99849545, 0.99920575, 0.49320687],
     6321                             [- 6.27298977, - 0.00049242, 0.00030170, 7.27249735, 0.99849569, 0.99920588, 0.49320693],
     6322                             [- 6.27298996, - 0.00049234, 0.00030165, 7.27249762, 0.99849593, 0.99920600, 0.49320681],
     6323                             [- 6.27299015, - 0.00049226, 0.00030161, 7.27249788, 0.99849616, 0.99920613, 0.49320699],
     6324                             [- 6.27299033, - 0.00049219, 0.00030156, 7.27249815, 0.99849640, 0.99920626, 0.49320687],
     6325                             [- 6.27299052, - 0.00049211, 0.00030151, 7.27249841, 0.99849664, 0.99920638, 0.49320699],
     6326                             [- 6.27299071, - 0.00049203, 0.00030146, 7.27249868, 0.99849688, 0.99920651, 0.49320705],
     6327                             [- 6.27299090, - 0.00049195, 0.00030141, 7.27249894, 0.99849712, 0.99920663, 0.49320709],
     6328                             [- 6.27299108, - 0.00049187, 0.00030137, 7.27249921, 0.99849736, 0.99920676, 0.49320704],
     6329                             [- 6.27299127, - 0.00049180, 0.00030132, 7.27249948, 0.99849760, 0.99920689, 0.49320700],
     6330                             [- 6.27299146, - 0.00049172, 0.00030127, 7.27249974, 0.99849784, 0.99920701, 0.49320709],
     6331                             [- 6.27299164, - 0.00049164, 0.00030122, 7.27250001, 0.99849808, 0.99920714, 0.49320722],
     6332                             [- 6.27299183, - 0.00049156, 0.00030118, 7.27250027, 0.99849831, 0.99920726, 0.49320713],
     6333                             [- 6.27299202, - 0.00049148, 0.00030113, 7.27250053, 0.99849855, 0.99920739, 0.49320717],
     6334                             [- 6.27299220, - 0.00049140, 0.00030108, 7.27250080, 0.99849879, 0.99920752, 0.49320720],
     6335                             [- 6.27299239, - 0.00049133, 0.00030103, 7.27250106, 0.99849903, 0.99920764, 0.49320724],
     6336                             [- 6.27299258, - 0.00049125, 0.00030098, 7.27250133, 0.99849927, 0.99920777, 0.49320731],
     6337                             [- 6.27299276, - 0.00049117, 0.00030094, 7.27250159, 0.99849951, 0.99920789, 0.49320733],
     6338                             [- 6.27299295, - 0.00049109, 0.00030089, 7.27250186, 0.99849974, 0.99920802, 0.49320736],
     6339                             [- 6.27299314, - 0.00049102, 0.00030084, 7.27250212, 0.99849998, 0.99920814, 0.49320742],
     6340                             [- 6.27299332, - 0.00049094, 0.00030079, 7.27250239, 0.99850022, 0.99920827, 0.49320737],
     6341                             [- 6.27299351, - 0.00049086, 0.00030075, 7.27250265, 0.99850046, 0.99920840, 0.49320741],
     6342                             [- 6.27299370, - 0.00049078, 0.00030070, 7.27250291, 0.99850070, 0.99920852, 0.49320747],
     6343                             [- 6.27299388, - 0.00049070, 0.00030065, 7.27250318, 0.99850093, 0.99920865, 0.49320746],
     6344                             [- 6.27299407, - 0.00049063, 0.00030060, 7.27250344, 0.99850117, 0.99920877, 0.49320747],
     6345                             [- 6.27299425, - 0.00049055, 0.00030055, 7.27250371, 0.99850141, 0.99920890, 0.49320753],
     6346                             [- 6.27299444, - 0.00049047, 0.00030051, 7.27250397, 0.99850165, 0.99920902, 0.49320754],
     6347                             [- 6.27299463, - 0.00049039, 0.00030046, 7.27250423, 0.99850188, 0.99920915, 0.49320761],
     6348                             [- 6.27299481, - 0.00049032, 0.00030041, 7.27250450, 0.99850212, 0.99920927, 0.49320761],
     6349                             [- 6.27299500, - 0.00049024, 0.00030036, 7.27250476, 0.99850236, 0.99920940, 0.49320763],
     6350                             [- 6.27299518, - 0.00049016, 0.00030032, 7.27250502, 0.99850260, 0.99920952, 0.49320763],
     6351                             [- 6.27299537, - 0.00049008, 0.00030027, 7.27250529, 0.99850283, 0.99920965, 0.49320764],
     6352                             [- 6.27299556, - 0.00049000, 0.00030022, 7.27250555, 0.99850307, 0.99920977, 0.49320768],
     6353                             [- 6.27299574, - 0.00048993, 0.00030017, 7.27250581, 0.99850331, 0.99920990, 0.49320774],
     6354                             [- 6.27299593, - 0.00048985, 0.00030013, 7.27250608, 0.99850354, 0.99921002, 0.49320770],
     6355                             [- 6.27299611, - 0.00048977, 0.00030008, 7.27250634, 0.99850378, 0.99921015, 0.49320782],
     6356                             [- 6.27299630, - 0.00048969, 0.00030003, 7.27250660, 0.99850402, 0.99921027, 0.49320781],
     6357                             [- 6.27299648, - 0.00048962, 0.00029998, 7.27250687, 0.99850426, 0.99921040, 0.49320784],
     6358                             [- 6.27299667, - 0.00048954, 0.00029994, 7.27250713, 0.99850449, 0.99921052, 0.49320787],
     6359                             [- 6.27299685, - 0.00048946, 0.00029989, 7.27250739, 0.99850473, 0.99921065, 0.49320791],
     6360                             [- 6.27299704, - 0.00048938, 0.00029984, 7.27250765, 0.99850496, 0.99921077, 0.49320794],
     6361                             [- 6.27299722, - 0.00048931, 0.00029979, 7.27250792, 0.99850520, 0.99921090, 0.49320795],
     6362                             [- 6.27299741, - 0.00048923, 0.00029975, 7.27250818, 0.99850544, 0.99921102, 0.49320801],
     6363                             [- 6.27299759, - 0.00048915, 0.00029970, 7.27250844, 0.99850567, 0.99921115, 0.49320802],
     6364                             [- 6.27299778, - 0.00048908, 0.00029965, 7.27250870, 0.99850591, 0.99921127, 0.49320805],
     6365                             [- 6.27299796, - 0.00048900, 0.00029960, 7.27250896, 0.99850615, 0.99921140, 0.49320810],
     6366                             [- 6.27299815, - 0.00048892, 0.00029956, 7.27250923, 0.99850638, 0.99921152, 0.49320806],
     6367                             [- 6.27299833, - 0.00048884, 0.00029951, 7.27250949, 0.99850662, 0.99921165, 0.49320815],
     6368                             [- 6.27299852, - 0.00048877, 0.00029946, 7.27250975, 0.99850685, 0.99921177, 0.49320816],
     6369                             [- 6.27299870, - 0.00048869, 0.00029941, 7.27251001, 0.99850709, 0.99921190, 0.49320817],
     6370                             [- 6.27299889, - 0.00048861, 0.00029937, 7.27251027, 0.99850733, 0.99921202, 0.49320820],
     6371                             [- 6.27299907, - 0.00048854, 0.00029932, 7.27251054, 0.99850756, 0.99921214, 0.49320826],
     6372                             [- 6.27299926, - 0.00048846, 0.00029927, 7.27251080, 0.99850780, 0.99921227, 0.49320827],
     6373                             [- 6.27299944, - 0.00048838, 0.00029923, 7.27251106, 0.99850803, 0.99921239, 0.49320823],
     6374                             [- 6.27299962, - 0.00048830, 0.00029918, 7.27251132, 0.99850827, 0.99921252, 0.49320833],
     6375                             [- 6.27299981, - 0.00048823, 0.00029913, 7.27251158, 0.99850850, 0.99921264, 0.49320833],
     6376                             [- 6.27299999, - 0.00048815, 0.00029908, 7.27251184, 0.99850874, 0.99921277, 0.49320839],
     6377                             [- 6.27300018, - 0.00048807, 0.00029904, 7.27251210, 0.99850897, 0.99921289, 0.49320841],
     6378                             [- 6.27300036, - 0.00048800, 0.00029899, 7.27251236, 0.99850921, 0.99921301, 0.49320850],
     6379                             [- 6.27300055, - 0.00048792, 0.00029894, 7.27251263, 0.99850944, 0.99921314, 0.49320846],
     6380                             [- 6.27300073, - 0.00048784, 0.00029890, 7.27251289, 0.99850968, 0.99921326, 0.49320848],
     6381                             [- 6.27300091, - 0.00048777, 0.00029885, 7.27251315, 0.99850991, 0.99921339, 0.49320847],
     6382                             [- 6.27300110, - 0.00048769, 0.00029880, 7.27251341, 0.99851015, 0.99921351, 0.49320858],
     6383                             [- 6.27300128, - 0.00048761, 0.00029875, 7.27251367, 0.99851038, 0.99921363, 0.49320864],
     6384                             [- 6.27300146, - 0.00048754, 0.00029871, 7.27251393, 0.99851062, 0.99921376, 0.49320855],
     6385                             [- 6.27300165, - 0.00048746, 0.00029866, 7.27251419, 0.99851085, 0.99921388, 0.49320856],
     6386                             [- 6.27300183, - 0.00048738, 0.00029861, 7.27251445, 0.99851109, 0.99921401, 0.49320863],
     6387                             [- 6.27300202, - 0.00048730, 0.00029857, 7.27251471, 0.99851132, 0.99921413, 0.49320867],
     6388                             [- 6.27300220, - 0.00048723, 0.00029852, 7.27251497, 0.99851156, 0.99921425, 0.49320861],
     6389                             [- 6.27300238, - 0.00048715, 0.00029847, 7.27251523, 0.99851179, 0.99921438, 0.49320874],
     6390                             [- 6.27300257, - 0.00048707, 0.00029842, 7.27251549, 0.99851202, 0.99921450, 0.49320874],
     6391                             [- 6.27300275, - 0.00048700, 0.00029838, 7.27251575, 0.99851226, 0.99921462, 0.49320881],
     6392                             [- 6.27300293, - 0.00048692, 0.00029833, 7.27251601, 0.99851249, 0.99921475, 0.49320880],
     6393                             [- 6.27300312, - 0.00048685, 0.00029828, 7.27251627, 0.99851273, 0.99921487, 0.49320887],
     6394                             [- 6.27300330, - 0.00048677, 0.00029824, 7.27251653, 0.99851296, 0.99921499, 0.49320886],
     6395                             [- 6.27300348, - 0.00048669, 0.00029819, 7.27251679, 0.99851320, 0.99921512, 0.49320893],
     6396                             [- 6.27300367, - 0.00048662, 0.00029814, 7.27251705, 0.99851343, 0.99921524, 0.49320893],
     6397                             [- 6.27300385, - 0.00048654, 0.00029810, 7.27251731, 0.99851366, 0.99921536, 0.49320895],
     6398                             [- 6.27300403, - 0.00048646, 0.00029805, 7.27251757, 0.99851390, 0.99921549, 0.49320892],
     6399                             [- 6.27300421, - 0.00048639, 0.00029800, 7.27251783, 0.99851413, 0.99921561, 0.49320898],
     6400                             [- 6.27300440, - 0.00048631, 0.00029796, 7.27251809, 0.99851436, 0.99921573, 0.49320901],
     6401                             [- 6.27300458, - 0.00048623, 0.00029791, 7.27251835, 0.99851460, 0.99921586, 0.49320901],
     6402                             [- 6.27300476, - 0.00048616, 0.00029786, 7.27251861, 0.99851483, 0.99921598, 0.49320912],
     6403                             [- 6.27300495, - 0.00048608, 0.00029782, 7.27251886, 0.99851506, 0.99921610, 0.49320910],
     6404                             [- 6.27300513, - 0.00048600, 0.00029777, 7.27251912, 0.99851530, 0.99921623, 0.49320913],
     6405                             [- 6.27300531, - 0.00048593, 0.00029772, 7.27251938, 0.99851553, 0.99921635, 0.49320917],
     6406                             [- 6.27300549, - 0.00048585, 0.00029768, 7.27251964, 0.99851576, 0.99921647, 0.49320916],
     6407                             [- 6.27300568, - 0.00048578, 0.00029763, 7.27251990, 0.99851600, 0.99921660, 0.49320920],
     6408                             [- 6.27300586, - 0.00048570, 0.00029758, 7.27252016, 0.99851623, 0.99921672, 0.49320924],
     6409                             [- 6.27300604, - 0.00048562, 0.00029753, 7.27252042, 0.99851646, 0.99921684, 0.49320926],
     6410                             [- 6.27300622, - 0.00048555, 0.00029749, 7.27252068, 0.99851669, 0.99921696, 0.49320930],
     6411                             [- 6.27300640, - 0.00048547, 0.00029744, 7.27252093, 0.99851693, 0.99921709, 0.49320931],
     6412                             [- 6.27300659, - 0.00048539, 0.00029739, 7.27252119, 0.99851716, 0.99921721, 0.49320938],
     6413                             [- 6.27300677, - 0.00048532, 0.00029735, 7.27252145, 0.99851739, 0.99921733, 0.49320939],
     6414                             [- 6.27300695, - 0.00048524, 0.00029730, 7.27252171, 0.99851763, 0.99921746, 0.49320948],
     6415                             [- 6.27300713, - 0.00048517, 0.00029725, 7.27252197, 0.99851786, 0.99921758, 0.49320954],
     6416                             [- 6.27300732, - 0.00048509, 0.00029721, 7.27252222, 0.99851809, 0.99921770, 0.49320950],
     6417                             [- 6.27300750, - 0.00048501, 0.00029716, 7.27252248, 0.99851832, 0.99921782, 0.49320952],
     6418                             [- 6.27300768, - 0.00048494, 0.00029712, 7.27252274, 0.99851855, 0.99921795, 0.49320954],
     6419                             [- 6.27300786, - 0.00048486, 0.00029707, 7.27252300, 0.99851879, 0.99921807, 0.49320960],
     6420                             [- 6.27300804, - 0.00048479, 0.00029702, 7.27252326, 0.99851902, 0.99921819, 0.49320959],
     6421                             [- 6.27300822, - 0.00048471, 0.00029698, 7.27252351, 0.99851925, 0.99921831, 0.49320958],
     6422                             [- 6.27300841, - 0.00048463, 0.00029693, 7.27252377, 0.99851948, 0.99921844, 0.49320965],
     6423                             [- 6.27300859, - 0.00048456, 0.00029688, 7.27252403, 0.99851971, 0.99921856, 0.49320967],
     6424                             [- 6.27300877, - 0.00048448, 0.00029684, 7.27252429, 0.99851995, 0.99921868, 0.49320972],
     6425                             [- 6.27300895, - 0.00048441, 0.00029679, 7.27252454, 0.99852018, 0.99921880, 0.49320973],
     6426                             [- 6.27300913, - 0.00048433, 0.00029674, 7.27252480, 0.99852041, 0.99921893, 0.49320972],
     6427                             [- 6.27300931, - 0.00048426, 0.00029670, 7.27252506, 0.99852064, 0.99921905, 0.49320980],
     6428                             [- 6.27300949, - 0.00048418, 0.00029665, 7.27252531, 0.99852087, 0.99921917, 0.49320981],
     6429                             [- 6.27300968, - 0.00048410, 0.00029660, 7.27252557, 0.99852110, 0.99921929, 0.49320974],
     6430                             [- 6.27300986, - 0.00048403, 0.00029656, 7.27252583, 0.99852134, 0.99921941, 0.49320985],
     6431                             [- 6.27301004, - 0.00048395, 0.00029651, 7.27252608, 0.99852157, 0.99921954, 0.49320992],
     6432                             [- 6.27301022, - 0.00048388, 0.00029646, 7.27252634, 0.99852180, 0.99921966, 0.49320992],
     6433                             [- 6.27301040, - 0.00048380, 0.00029642, 7.27252660, 0.99852203, 0.99921978, 0.49320993],
     6434                             [- 6.27301058, - 0.00048373, 0.00029637, 7.27252685, 0.99852226, 0.99921990, 0.49320993],
     6435                             [- 6.27301076, - 0.00048365, 0.00029633, 7.27252711, 0.99852249, 0.99922002, 0.49321001],
     6436                             [- 6.27301094, - 0.00048357, 0.00029628, 7.27252737, 0.99852272, 0.99922015, 0.49321003],
     6437                             [- 6.27301112, - 0.00048350, 0.00029623, 7.27252762, 0.99852295, 0.99922027, 0.49321005],
     6438                             [- 6.27301130, - 0.00048342, 0.00029619, 7.27252788, 0.99852318, 0.99922039, 0.49321008],
     6439                             [- 6.27301148, - 0.00048335, 0.00029614, 7.27252814, 0.99852341, 0.99922051, 0.49321008],
     6440                             [- 6.27301166, - 0.00048327, 0.00029609, 7.27252839, 0.99852364, 0.99922063, 0.49321010],
     6441                             [- 6.27301185, - 0.00048320, 0.00029605, 7.27252865, 0.99852388, 0.99922075, 0.49321017],
     6442                             [- 6.27301203, - 0.00048312, 0.00029600, 7.27252890, 0.99852411, 0.99922088, 0.49321023],
     6443                             [- 6.27301221, - 0.00048305, 0.00029596, 7.27252916, 0.99852434, 0.99922100, 0.49321020],
     6444                             [- 6.27301239, - 0.00048297, 0.00029591, 7.27252942, 0.99852457, 0.99922112, 0.49321023],
     6445                             [- 6.27301257, - 0.00048290, 0.00029586, 7.27252967, 0.99852480, 0.99922124, 0.49321024],
     6446                             [- 6.27301275, - 0.00048282, 0.00029582, 7.27252993, 0.99852503, 0.99922136, 0.49321030],
     6447                             [- 6.27301293, - 0.00048275, 0.00029577, 7.27253018, 0.99852526, 0.99922148, 0.49321031],
     6448                             [- 6.27301311, - 0.00048267, 0.00029572, 7.27253044, 0.99852549, 0.99922161, 0.49321030],
     6449                             [- 6.27301329, - 0.00048259, 0.00029568, 7.27253069, 0.99852572, 0.99922173, 0.49321030],
     6450                             [- 6.27301347, - 0.00048252, 0.00029563, 7.27253095, 0.99852595, 0.99922185, 0.49321039],
     6451                             [- 6.27301365, - 0.00048244, 0.00029559, 7.27253120, 0.99852618, 0.99922197, 0.49321037],
     6452                             [- 6.27301383, - 0.00048237, 0.00029554, 7.27253146, 0.99852641, 0.99922209, 0.49321046],
     6453                             [- 6.27301401, - 0.00048229, 0.00029549, 7.27253171, 0.99852664, 0.99922221, 0.49321048],
     6454                             [- 6.27301419, - 0.00048222, 0.00029545, 7.27253197, 0.99852687, 0.99922233, 0.49321049],
     6455                             [- 6.27301437, - 0.00048214, 0.00029540, 7.27253222, 0.99852710, 0.99922245, 0.49321046],
     6456                             [- 6.27301455, - 0.00048207, 0.00029536, 7.27253248, 0.99852732, 0.99922258, 0.49321053],
     6457                             [- 6.27301473, - 0.00048199, 0.00029531, 7.27253273, 0.99852755, 0.99922270, 0.49321060],
     6458                             [- 6.27301491, - 0.00048192, 0.00029526, 7.27253299, 0.99852778, 0.99922282, 0.49321066],
     6459                             [- 6.27301509, - 0.00048184, 0.00029522, 7.27253324, 0.99852801, 0.99922294, 0.49321062],
     6460                             [- 6.27301526, - 0.00048177, 0.00029517, 7.27253350, 0.99852824, 0.99922306, 0.49321065],
     6461                             [- 6.27301544, - 0.00048169, 0.00029513, 7.27253375, 0.99852847, 0.99922318, 0.49321069],
     6462                             [- 6.27301562, - 0.00048162, 0.00029508, 7.27253400, 0.99852870, 0.99922330, 0.49321066],
     6463                             [- 6.27301580, - 0.00048154, 0.00029503, 7.27253426, 0.99852893, 0.99922342, 0.49321075],
     6464                             [- 6.27301598, - 0.00048147, 0.00029499, 7.27253451, 0.99852916, 0.99922354, 0.49321074],
     6465                             [- 6.27301616, - 0.00048139, 0.00029494, 7.27253477, 0.99852939, 0.99922366, 0.49321082],
     6466                             [- 6.27301634, - 0.00048132, 0.00029490, 7.27253502, 0.99852962, 0.99922378, 0.49321081],
     6467                             [- 6.27301652, - 0.00048124, 0.00029485, 7.27253528, 0.99852984, 0.99922391, 0.49321083],
     6468                             [- 6.27301670, - 0.00048117, 0.00029480, 7.27253553, 0.99853007, 0.99922403, 0.49321094],
     6469                             [- 6.27301688, - 0.00048109, 0.00029476, 7.27253578, 0.99853030, 0.99922415, 0.49321096],
     6470                             [- 6.27301706, - 0.00048102, 0.00029471, 7.27253604, 0.99853053, 0.99922427, 0.49321093],
     6471                             [- 6.27301724, - 0.00048095, 0.00029467, 7.27253629, 0.99853076, 0.99922439, 0.49321094],
     6472                             [- 6.27301741, - 0.00048087, 0.00029462, 7.27253654, 0.99853099, 0.99922451, 0.49321098],
     6473                             [- 6.27301759, - 0.00048080, 0.00029458, 7.27253680, 0.99853121, 0.99922463, 0.49321102],
     6474                             [- 6.27301777, - 0.00048072, 0.00029453, 7.27253705, 0.99853144, 0.99922475, 0.49321101],
     6475                             [- 6.27301795, - 0.00048065, 0.00029448, 7.27253730, 0.99853167, 0.99922487, 0.49321109],
     6476                             [- 6.27301813, - 0.00048057, 0.00029444, 7.27253756, 0.99853190, 0.99922499, 0.49321107],
     6477                             [- 6.27301831, - 0.00048050, 0.00029439, 7.27253781, 0.99853213, 0.99922511, 0.49321107],
     6478                             [- 6.27301849, - 0.00048042, 0.00029435, 7.27253806, 0.99853235, 0.99922523, 0.49321110],
     6479                             [- 6.27301866, - 0.00048035, 0.00029430, 7.27253832, 0.99853258, 0.99922535, 0.49321118],
     6480                             [- 6.27301884, - 0.00048027, 0.00029426, 7.27253857, 0.99853281, 0.99922547, 0.49321119],
     6481                             [- 6.27301902, - 0.00048020, 0.00029421, 7.27253882, 0.99853304, 0.99922559, 0.49321116],
     6482                             [- 6.27301920, - 0.00048012, 0.00029416, 7.27253907, 0.99853327, 0.99922571, 0.49321127],
     6483                             [- 6.27301938, - 0.00048005, 0.00029412, 7.27253933, 0.99853349, 0.99922583, 0.49321123],
     6484                             [- 6.27301956, - 0.00047998, 0.00029407, 7.27253958, 0.99853372, 0.99922595, 0.49321129],
     6485                             [- 6.27301973, - 0.00047990, 0.00029403, 7.27253983, 0.99853395, 0.99922607, 0.49321135],
     6486                             [- 6.27301991, - 0.00047983, 0.00029398, 7.27254008, 0.99853418, 0.99922619, 0.49321135],
     6487                             [- 6.27302009, - 0.00047975, 0.00029394, 7.27254034, 0.99853440, 0.99922631, 0.49321139],
     6488                             [- 6.27302027, - 0.00047968, 0.00029389, 7.27254059, 0.99853463, 0.99922643, 0.49321146],
     6489                             [- 6.27302044, - 0.00047960, 0.00029384, 7.27254084, 0.99853486, 0.99922655, 0.49321142],
     6490                             [- 6.27302062, - 0.00047953, 0.00029380, 7.27254109, 0.99853508, 0.99922667, 0.49321144],
     6491                             [- 6.27302080, - 0.00047946, 0.00029375, 7.27254135, 0.99853531, 0.99922679, 0.49321144],
     6492                             [- 6.27302098, - 0.00047938, 0.00029371, 7.27254160, 0.99853554, 0.99922691, 0.49321157],
     6493                             [- 6.27302116, - 0.00047931, 0.00029366, 7.27254185, 0.99853577, 0.99922703, 0.49321152],
     6494                             [- 6.27302133, - 0.00047923, 0.00029362, 7.27254210, 0.99853599, 0.99922715, 0.49321153],
     6495                             [- 6.27302151, - 0.00047916, 0.00029357, 7.27254235, 0.99853622, 0.99922727, 0.49321157],
     6496                             [- 6.27302169, - 0.00047908, 0.00029353, 7.27254260, 0.99853645, 0.99922739, 0.49321160],
     6497                             [- 6.27302187, - 0.00047901, 0.00029348, 7.27254286, 0.99853667, 0.99922751, 0.49321170],
     6498                             [- 6.27302204, - 0.00047894, 0.00029344, 7.27254311, 0.99853690, 0.99922763, 0.49321172],
     6499                             [- 6.27302222, - 0.00047886, 0.00029339, 7.27254336, 0.99853712, 0.99922775, 0.49321163],
     6500                             [- 6.27302240, - 0.00047879, 0.00029334, 7.27254361, 0.99853735, 0.99922787, 0.49321166],
     6501                             [- 6.27302257, - 0.00047871, 0.00029330, 7.27254386, 0.99853758, 0.99922799, 0.49321175],
     6502                             [- 6.27302275, - 0.00047864, 0.00029325, 7.27254411, 0.99853780, 0.99922811, 0.49321177],
     6503                             [- 6.27302293, - 0.00047857, 0.00029321, 7.27254436, 0.99853803, 0.99922823, 0.49321185],
     6504                             [- 6.27302311, - 0.00047849, 0.00029316, 7.27254461, 0.99853826, 0.99922834, 0.49321182],
     6505                             [- 6.27302328, - 0.00047842, 0.00029312, 7.27254486, 0.99853848, 0.99922846, 0.49321190],
     6506                             [- 6.27302346, - 0.00047834, 0.00029307, 7.27254512, 0.99853871, 0.99922858, 0.49321191],
     6507                             [- 6.27302364, - 0.00047827, 0.00029303, 7.27254537, 0.99853893, 0.99922870, 0.49321187],
     6508                             [- 6.27302381, - 0.00047820, 0.00029298, 7.27254562, 0.99853916, 0.99922882, 0.49321186],
     6509                             [- 6.27302399, - 0.00047812, 0.00029294, 7.27254587, 0.99853939, 0.99922894, 0.49321193],
     6510                             [- 6.27302417, - 0.00047805, 0.00029289, 7.27254612, 0.99853961, 0.99922906, 0.49321201],
     6511                             [- 6.27302434, - 0.00047797, 0.00029285, 7.27254637, 0.99853984, 0.99922918, 0.49321205],
     6512                             [- 6.27302452, - 0.00047790, 0.00029280, 7.27254662, 0.99854006, 0.99922930, 0.49321210],
     6513                             [- 6.27302470, - 0.00047783, 0.00029276, 7.27254687, 0.99854029, 0.99922942, 0.49321211],
     6514                             [- 6.27302487, - 0.00047775, 0.00029271, 7.27254712, 0.99854051, 0.99922954, 0.49321206],
     6515                             [- 6.27302505, - 0.00047768, 0.00029267, 7.27254737, 0.99854074, 0.99922965, 0.49321212],
     6516                             [- 6.27302523, - 0.00047761, 0.00029262, 7.27254762, 0.99854096, 0.99922977, 0.49321212],
     6517                             [- 6.27302540, - 0.00047753, 0.00029257, 7.27254787, 0.99854119, 0.99922989, 0.49321221],
     6518                             [- 6.27302558, - 0.00047746, 0.00029253, 7.27254812, 0.99854141, 0.99923001, 0.49321218],
     6519                             [- 6.27302575, - 0.00047739, 0.00029248, 7.27254837, 0.99854164, 0.99923013, 0.49321223],
     6520                             [- 6.27302593, - 0.00047731, 0.00029244, 7.27254862, 0.99854186, 0.99923025, 0.49321227],
     6521                             [- 6.27302611, - 0.00047724, 0.00029239, 7.27254887, 0.99854209, 0.99923037, 0.49321227],
     6522                             [- 6.27302628, - 0.00047716, 0.00029235, 7.27254912, 0.99854231, 0.99923049, 0.49321226],
     6523                             [- 6.27302646, - 0.00047709, 0.00029230, 7.27254937, 0.99854254, 0.99923060, 0.49321229],
     6524                             [- 6.27302664, - 0.00047702, 0.00029226, 7.27254962, 0.99854276, 0.99923072, 0.49321232],
     6525                             [- 6.27302681, - 0.00047694, 0.00029221, 7.27254987, 0.99854299, 0.99923084, 0.49321239],
     6526                             [- 6.27302699, - 0.00047687, 0.00029217, 7.27255012, 0.99854321, 0.99923096, 0.49321240],
     6527                             [- 6.27302716, - 0.00047680, 0.00029212, 7.27255037, 0.99854344, 0.99923108, 0.49321246],
     6528                             [- 6.27302734, - 0.00047672, 0.00029208, 7.27255061, 0.99854366, 0.99923120, 0.49321244],
     6529                             [- 6.27302751, - 0.00047665, 0.00029203, 7.27255086, 0.99854388, 0.99923132, 0.49321242],
     6530                             [- 6.27302769, - 0.00047658, 0.00029199, 7.27255111, 0.99854411, 0.99923143, 0.49321242],
     6531                             [- 6.27302787, - 0.00047650, 0.00029194, 7.27255136, 0.99854433, 0.99923155, 0.49321258],
     6532                             [- 6.27302804, - 0.00047643, 0.00029190, 7.27255161, 0.99854456, 0.99923167, 0.49321251],
     6533                             [- 6.27302822, - 0.00047636, 0.00029185, 7.27255186, 0.99854478, 0.99923179, 0.49321261],
     6534                             [- 6.27302839, - 0.00047628, 0.00029181, 7.27255211, 0.99854501, 0.99923191, 0.49321264],
     6535                             [- 6.27302857, - 0.00047621, 0.00029176, 7.27255236, 0.99854523, 0.99923203, 0.49321265],
     6536                             [- 6.27302874, - 0.00047614, 0.00029172, 7.27255261, 0.99854545, 0.99923214, 0.49321268],
     6537                             [- 6.27302892, - 0.00047606, 0.00029167, 7.27255285, 0.99854568, 0.99923226, 0.49321269],
     6538                             [- 6.27302909, - 0.00047599, 0.00029163, 7.27255310, 0.99854590, 0.99923238, 0.49321277],
     6539                             [- 6.27302927, - 0.00047592, 0.00029158, 7.27255335, 0.99854612, 0.99923250, 0.49321272],
     6540                             [- 6.27302944, - 0.00047584, 0.00029154, 7.27255360, 0.99854635, 0.99923262, 0.49321278],
     6541                             [- 6.27302962, - 0.00047577, 0.00029150, 7.27255385, 0.99854657, 0.99923273, 0.49321287],
     6542                             [- 6.27302979, - 0.00047570, 0.00029145, 7.27255410, 0.99854679, 0.99923285, 0.49321280],
     6543                             [- 6.27302997, - 0.00047562, 0.00029141, 7.27255434, 0.99854702, 0.99923297, 0.49321291],
     6544                             [- 6.27303014, - 0.00047555, 0.00029136, 7.27255459, 0.99854724, 0.99923309, 0.49321279],
     6545                             [- 6.27303032, - 0.00047548, 0.00029132, 7.27255484, 0.99854746, 0.99923321, 0.49321284],
     6546                             [- 6.27303049, - 0.00047541, 0.00029127, 7.27255509, 0.99854769, 0.99923332, 0.49321288],
     6547                             [- 6.27303067, - 0.00047533, 0.00029123, 7.27255533, 0.99854791, 0.99923344, 0.49321294],
     6548                             [- 6.27303084, - 0.00047526, 0.00029118, 7.27255558, 0.99854813, 0.99923356, 0.49321292],
     6549                             [- 6.27303102, - 0.00047519, 0.00029114, 7.27255583, 0.99854836, 0.99923368, 0.49321300],
     6550                             [- 6.27303119, - 0.00047511, 0.00029109, 7.27255608, 0.99854858, 0.99923379, 0.49321302],
     6551                             [- 6.27303137, - 0.00047504, 0.00029105, 7.27255632, 0.99854880, 0.99923391, 0.49321303],
     6552                             [- 6.27303154, - 0.00047497, 0.00029100, 7.27255657, 0.99854903, 0.99923403, 0.49321311],
     6553                             [- 6.27303171, - 0.00047490, 0.00029096, 7.27255682, 0.99854925, 0.99923415, 0.49321311],
     6554                             [- 6.27303189, - 0.00047482, 0.00029091, 7.27255707, 0.99854947, 0.99923426, 0.49321315],
     6555                             [- 6.27303206, - 0.00047475, 0.00029087, 7.27255731, 0.99854969, 0.99923438, 0.49321319],
     6556                             [- 6.27303224, - 0.00047468, 0.00029082, 7.27255756, 0.99854992, 0.99923450, 0.49321317],
     6557                             [- 6.27303241, - 0.00047460, 0.00029078, 7.27255781, 0.99855014, 0.99923462, 0.49321321],
     6558                             [- 6.27303259, - 0.00047453, 0.00029073, 7.27255805, 0.99855036, 0.99923473, 0.49321326],
     6559                             [- 6.27303276, - 0.00047446, 0.00029069, 7.27255830, 0.99855058, 0.99923485, 0.49321318],
     6560                             [- 6.27303293, - 0.00047439, 0.00029065, 7.27255855, 0.99855081, 0.99923497, 0.49321326],
     6561                             [- 6.27303311, - 0.00047431, 0.00029060, 7.27255879, 0.99855103, 0.99923509, 0.49321333],
     6562                             [- 6.27303328, - 0.00047424, 0.00029056, 7.27255904, 0.99855125, 0.99923520, 0.49321333],
     6563                             [- 6.27303345, - 0.00047417, 0.00029051, 7.27255929, 0.99855147, 0.99923532, 0.49321344],
     6564                             [- 6.27303363, - 0.00047410, 0.00029047, 7.27255953, 0.99855169, 0.99923544, 0.49321337],
     6565                             [- 6.27303380, - 0.00047402, 0.00029042, 7.27255978, 0.99855192, 0.99923555, 0.49321345],
     6566                             [- 6.27303398, - 0.00047395, 0.00029038, 7.27256003, 0.99855214, 0.99923567, 0.49321337],
     6567                             [- 6.27303415, - 0.00047388, 0.00029033, 7.27256027, 0.99855236, 0.99923579, 0.49321344],
     6568                             [- 6.27303432, - 0.00047380, 0.00029029, 7.27256052, 0.99855258, 0.99923591, 0.49321346],
     6569                             [- 6.27303450, - 0.00047373, 0.00029025, 7.27256076, 0.99855280, 0.99923602, 0.49321354],
     6570                             [- 6.27303467, - 0.00047366, 0.00029020, 7.27256101, 0.99855302, 0.99923614, 0.49321353],
     6571                             [- 6.27303484, - 0.00047359, 0.00029016, 7.27256126, 0.99855325, 0.99923626, 0.49321361],
     6572                             [- 6.27303502, - 0.00047351, 0.00029011, 7.27256150, 0.99855347, 0.99923637, 0.49321358],
     6573                             [- 6.27303519, - 0.00047344, 0.00029007, 7.27256175, 0.99855369, 0.99923649, 0.49321363],
     6574                             [- 6.27303536, - 0.00047337, 0.00029002, 7.27256199, 0.99855391, 0.99923661, 0.49321367],
     6575                             [- 6.27303554, - 0.00047330, 0.00028998, 7.27256224, 0.99855413, 0.99923672, 0.49321364],
     6576                             [- 6.27303571, - 0.00047323, 0.00028993, 7.27256248, 0.99855435, 0.99923684, 0.49321377],
     6577                             [- 6.27303588, - 0.00047315, 0.00028989, 7.27256273, 0.99855457, 0.99923696, 0.49321375],
     6578                             [- 6.27303606, - 0.00047308, 0.00028985, 7.27256298, 0.99855479, 0.99923707, 0.49321379],
     6579                             [- 6.27303623, - 0.00047301, 0.00028980, 7.27256322, 0.99855501, 0.99923719, 0.49321377],
     6580                             [- 6.27303640, - 0.00047294, 0.00028976, 7.27256347, 0.99855524, 0.99923731, 0.49321372],
     6581                             [- 6.27303658, - 0.00047286, 0.00028971, 7.27256371, 0.99855546, 0.99923742, 0.49321383],
     6582                             [- 6.27303675, - 0.00047279, 0.00028967, 7.27256396, 0.99855568, 0.99923754, 0.49321384],
     6583                             [- 6.27303692, - 0.00047272, 0.00028962, 7.27256420, 0.99855590, 0.99923766, 0.49321394],
     6584                             [- 6.27303709, - 0.00047265, 0.00028958, 7.27256445, 0.99855612, 0.99923777, 0.49321386],
     6585                             [- 6.27303727, - 0.00047258, 0.00028954, 7.27256469, 0.99855634, 0.99923789, 0.49321390],
     6586                             [- 6.27303744, - 0.00047250, 0.00028949, 7.27256494, 0.99855656, 0.99923801, 0.49321401],
     6587                             [- 6.27303761, - 0.00047243, 0.00028945, 7.27256518, 0.99855678, 0.99923812, 0.49321394],
     6588                             [- 6.27303778, - 0.00047236, 0.00028940, 7.27256543, 0.99855700, 0.99923824, 0.49321395],
     6589                             [- 6.27303796, - 0.00047229, 0.00028936, 7.27256567, 0.99855722, 0.99923835, 0.49321400],
     6590                             [- 6.27303813, - 0.00047221, 0.00028931, 7.27256591, 0.99855744, 0.99923847, 0.49321392],
     6591                             [- 6.27303830, - 0.00047214, 0.00028927, 7.27256616, 0.99855766, 0.99923859, 0.49321409],
     6592                             [- 6.27303847, - 0.00047207, 0.00028923, 7.27256640, 0.99855788, 0.99923870, 0.49321404],
     6593                             [- 6.27303865, - 0.00047200, 0.00028918, 7.27256665, 0.99855810, 0.99923882, 0.49321416],
     6594                             [- 6.27303882, - 0.00047193, 0.00028914, 7.27256689, 0.99855832, 0.99923893, 0.49321409],
     6595                             [- 6.27303899, - 0.00047185, 0.00028909, 7.27256714, 0.99855854, 0.99923905, 0.49321418],
     6596                             [- 6.27303916, - 0.00047178, 0.00028905, 7.27256738, 0.99855876, 0.99923917, 0.49321418],
     6597                             [- 6.27303933, - 0.00047171, 0.00028901, 7.27256762, 0.99855898, 0.99923928, 0.49321424],
     6598                             [- 6.27303951, - 0.00047164, 0.00028896, 7.27256787, 0.99855920, 0.99923940, 0.49321434],
     6599                             [- 6.27303968, - 0.00047157, 0.00028892, 7.27256811, 0.99855942, 0.99923951, 0.49321431],
     6600                             [- 6.27303985, - 0.00047150, 0.00028887, 7.27256835, 0.99855964, 0.99923963, 0.49321429],
     6601                             [- 6.27304002, - 0.00047142, 0.00028883, 7.27256860, 0.99855986, 0.99923975, 0.49321428],
     6602                             [- 6.27304019, - 0.00047135, 0.00028879, 7.27256884, 0.99856008, 0.99923986, 0.49321434],
     6603                             [- 6.27304037, - 0.00047128, 0.00028874, 7.27256909, 0.99856030, 0.99923998, 0.49321435],
     6604                             [- 6.27304054, - 0.00047121, 0.00028870, 7.27256933, 0.99856052, 0.99924009, 0.49321437],
     6605                             [- 6.27304071, - 0.00047114, 0.00028865, 7.27256957, 0.99856073, 0.99924021, 0.49321446],
     6606                             [- 6.27304088, - 0.00047106, 0.00028861, 7.27256982, 0.99856095, 0.99924032, 0.49321442],
     6607                             [- 6.27304105, - 0.00047099, 0.00028857, 7.27257006, 0.99856117, 0.99924044, 0.49321442],
     6608                             [- 6.27304122, - 0.00047092, 0.00028852, 7.27257030, 0.99856139, 0.99924056, 0.49321451],
     6609                             [- 6.27304139, - 0.00047085, 0.00028848, 7.27257054, 0.99856161, 0.99924067, 0.49321455],
     6610                             [- 6.27304157, - 0.00047078, 0.00028843, 7.27257079, 0.99856183, 0.99924079, 0.49321455],
     6611                             [- 6.27304174, - 0.00047071, 0.00028839, 7.27257103, 0.99856205, 0.99924090, 0.49321459],
     6612                             [- 6.27304191, - 0.00047064, 0.00028835, 7.27257127, 0.99856227, 0.99924102, 0.49321464],
     6613                             [- 6.27304208, - 0.00047056, 0.00028830, 7.27257152, 0.99856249, 0.99924113, 0.49321460],
     6614                             [- 6.27304225, - 0.00047049, 0.00028826, 7.27257176, 0.99856270, 0.99924125, 0.49321463],
     6615                             [- 6.27304242, - 0.00047042, 0.00028822, 7.27257200, 0.99856292, 0.99924136, 0.49321476],
     6616                             [- 6.27304259, - 0.00047035, 0.00028817, 7.27257224, 0.99856314, 0.99924148, 0.49321475],
     6617                             [- 6.27304276, - 0.00047028, 0.00028813, 7.27257249, 0.99856336, 0.99924159, 0.49321471],
     6618                             [- 6.27304294, - 0.00047021, 0.00028808, 7.27257273, 0.99856358, 0.99924171, 0.49321475],
     6619                             [- 6.27304311, - 0.00047013, 0.00028804, 7.27257297, 0.99856380, 0.99924183, 0.49321476],
     6620                             [- 6.27304328, - 0.00047006, 0.00028800, 7.27257321, 0.99856401, 0.99924194, 0.49321484],
     6621                             [- 6.27304345, - 0.00046999, 0.00028795, 7.27257346, 0.99856423, 0.99924206, 0.49321477],
     6622                             [- 6.27304362, - 0.00046992, 0.00028791, 7.27257370, 0.99856445, 0.99924217, 0.49321483],
     6623                             [- 6.27304379, - 0.00046985, 0.00028787, 7.27257394, 0.99856467, 0.99924229, 0.49321495],
     6624                             [- 6.27304396, - 0.00046978, 0.00028782, 7.27257418, 0.99856489, 0.99924240, 0.49321491],
     6625                             [- 6.27304413, - 0.00046971, 0.00028778, 7.27257442, 0.99856510, 0.99924252, 0.49321493],
     6626                             [- 6.27304430, - 0.00046964, 0.00028773, 7.27257467, 0.99856532, 0.99924263, 0.49321498],
     6627                             [- 6.27304447, - 0.00046956, 0.00028769, 7.27257491, 0.99856554, 0.99924275, 0.49321496],
     6628                             [- 6.27304464, - 0.00046949, 0.00028765, 7.27257515, 0.99856576, 0.99924286, 0.49321502],
     6629                             [- 6.27304481, - 0.00046942, 0.00028760, 7.27257539, 0.99856597, 0.99924298, 0.49321503],
     6630                             [- 6.27304498, - 0.00046935, 0.00028756, 7.27257563, 0.99856619, 0.99924309, 0.49321507],
     6631                             [- 6.27304515, - 0.00046928, 0.00028752, 7.27257587, 0.99856641, 0.99924320, 0.49321515],
     6632                             [- 6.27304532, - 0.00046921, 0.00028747, 7.27257611, 0.99856663, 0.99924332, 0.49321508],
     6633                             [- 6.27304549, - 0.00046914, 0.00028743, 7.27257636, 0.99856684, 0.99924343, 0.49321514],
     6634                             [- 6.27304566, - 0.00046907, 0.00028738, 7.27257660, 0.99856706, 0.99924355, 0.49321526],
     6635                             [- 6.27304583, - 0.00046900, 0.00028734, 7.27257684, 0.99856728, 0.99924366, 0.49321521],
     6636                             [- 6.27304600, - 0.00046892, 0.00028730, 7.27257708, 0.99856750, 0.99924378, 0.49321521],
     6637                             [- 6.27304617, - 0.00046885, 0.00028725, 7.27257732, 0.99856771, 0.99924389, 0.49321523],
     6638                             [- 6.27304634, - 0.00046878, 0.00028721, 7.27257756, 0.99856793, 0.99924401, 0.49321526],
     6639                             [- 6.27304651, - 0.00046871, 0.00028717, 7.27257780, 0.99856815, 0.99924412, 0.49321530],
     6640                             [- 6.27304668, - 0.00046864, 0.00028712, 7.27257804, 0.99856836, 0.99924424, 0.49321535],
     6641                             [- 6.27304685, - 0.00046857, 0.00028708, 7.27257828, 0.99856858, 0.99924435, 0.49321541],
     6642                             [- 6.27304702, - 0.00046850, 0.00028704, 7.27257852, 0.99856880, 0.99924446, 0.49321529],
     6643                             [- 6.27304719, - 0.00046843, 0.00028699, 7.27257876, 0.99856901, 0.99924458, 0.49321541],
     6644                             [- 6.27304736, - 0.00046836, 0.00028695, 7.27257901, 0.99856923, 0.99924469, 0.49321535],
     6645                             [- 6.27304753, - 0.00046829, 0.00028691, 7.27257925, 0.99856945, 0.99924481, 0.49321543],
     6646                             [- 6.27304770, - 0.00046821, 0.00028686, 7.27257949, 0.99856966, 0.99924492, 0.49321548],
     6647                             [- 6.27304787, - 0.00046814, 0.00028682, 7.27257973, 0.99856988, 0.99924504, 0.49321551],
     6648                             [- 6.27304804, - 0.00046807, 0.00028678, 7.27257997, 0.99857010, 0.99924515, 0.49321545],
     6649                             [- 6.27304821, - 0.00046800, 0.00028673, 7.27258021, 0.99857031, 0.99924526, 0.49321554],
     6650                             [- 6.27304838, - 0.00046793, 0.00028669, 7.27258045, 0.99857053, 0.99924538, 0.49321557],
     6651                             [- 6.27304855, - 0.00046786, 0.00028665, 7.27258069, 0.99857074, 0.99924549, 0.49321561],
     6652                             [- 6.27304872, - 0.00046779, 0.00028660, 7.27258093, 0.99857096, 0.99924561, 0.49321567],
     6653                             [- 6.27304889, - 0.00046772, 0.00028656, 7.27258117, 0.99857118, 0.99924572, 0.49321567],
     6654                             [- 6.27304906, - 0.00046765, 0.00028652, 7.27258141, 0.99857139, 0.99924583, 0.49321571],
     6655                             [- 6.27304922, - 0.00046758, 0.00028647, 7.27258165, 0.99857161, 0.99924595, 0.49321566],
     6656                             [- 6.27304939, - 0.00046751, 0.00028643, 7.27258189, 0.99857182, 0.99924606, 0.49321576],
     6657                             [- 6.27304956, - 0.00046744, 0.00028639, 7.27258213, 0.99857204, 0.99924618, 0.49321567],
     6658                             [- 6.27304973, - 0.00046737, 0.00028634, 7.27258236, 0.99857226, 0.99924629, 0.49321585],
     6659                             [- 6.27304990, - 0.00046730, 0.00028630, 7.27258260, 0.99857247, 0.99924640, 0.49321576],
     6660                             [- 6.27305007, - 0.00046723, 0.00028626, 7.27258284, 0.99857269, 0.99924652, 0.49321581],
     6661                             [- 6.27305024, - 0.00046715, 0.00028621, 7.27258308, 0.99857290, 0.99924663, 0.49321580],
     6662                             [- 6.27305041, - 0.00046708, 0.00028617, 7.27258332, 0.99857312, 0.99924675, 0.49321590],
     6663                             [- 6.27305057, - 0.00046701, 0.00028613, 7.27258356, 0.99857333, 0.99924686, 0.49321582],
     6664                             [- 6.27305074, - 0.00046694, 0.00028608, 7.27258380, 0.99857355, 0.99924697, 0.49321587],
     6665                             [- 6.27305091, - 0.00046687, 0.00028604, 7.27258404, 0.99857376, 0.99924709, 0.49321595],
     6666                             [- 6.27305108, - 0.00046680, 0.00028600, 7.27258428, 0.99857398, 0.99924720, 0.49321595],
     6667                             [- 6.27305125, - 0.00046673, 0.00028595, 7.27258452, 0.99857419, 0.99924731, 0.49321600],
     6668                             [- 6.27305142, - 0.00046666, 0.00028591, 7.27258476, 0.99857441, 0.99924743, 0.49321598],
     6669                             [- 6.27305159, - 0.00046659, 0.00028587, 7.27258499, 0.99857462, 0.99924754, 0.49321613],
     6670                             [- 6.27305175, - 0.00046652, 0.00028582, 7.27258523, 0.99857484, 0.99924765, 0.49321611],
     6671                             [- 6.27305192, - 0.00046645, 0.00028578, 7.27258547, 0.99857505, 0.99924777, 0.49321600],
     6672                             [- 6.27305209, - 0.00046638, 0.00028574, 7.27258571, 0.99857527, 0.99924788, 0.49321621],
     6673                             [- 6.27305226, - 0.00046631, 0.00028570, 7.27258595, 0.99857548, 0.99924799, 0.49321615],
     6674                             [- 6.27305243, - 0.00046624, 0.00028565, 7.27258619, 0.99857570, 0.99924811, 0.49321620],
     6675                             [- 6.27305259, - 0.00046617, 0.00028561, 7.27258642, 0.99857591, 0.99924822, 0.49321625],
     6676                             [- 6.27305276, - 0.00046610, 0.00028557, 7.27258666, 0.99857613, 0.99924833, 0.49321621],
     6677                             [- 6.27305293, - 0.00046603, 0.00028552, 7.27258690, 0.99857634, 0.99924845, 0.49321630],
     6678                             [- 6.27305310, - 0.00046596, 0.00028548, 7.27258714, 0.99857656, 0.99924856, 0.49321623],
     6679                             [- 6.27305327, - 0.00046589, 0.00028544, 7.27258738, 0.99857677, 0.99924867, 0.49321633],
     6680                             [- 6.27305343, - 0.00046582, 0.00028539, 7.27258761, 0.99857698, 0.99924879, 0.49321637],
     6681                             [- 6.27305360, - 0.00046575, 0.00028535, 7.27258785, 0.99857720, 0.99924890, 0.49321640],
     6682                             [- 6.27305377, - 0.00046568, 0.00028531, 7.27258809, 0.99857741, 0.99924901, 0.49321641],
     6683                             [- 6.27305394, - 0.00046561, 0.00028527, 7.27258833, 0.99857763, 0.99924913, 0.49321644],
     6684                             [- 6.27305410, - 0.00046554, 0.00028522, 7.27258857, 0.99857784, 0.99924924, 0.49321640],
     6685                             [- 6.27305427, - 0.00046547, 0.00028518, 7.27258880, 0.99857805, 0.99924935, 0.49321644],
     6686                             [- 6.27305444, - 0.00046540, 0.00028514, 7.27258904, 0.99857827, 0.99924946, 0.49321647],
     6687                             [- 6.27305461, - 0.00046533, 0.00028509, 7.27258928, 0.99857848, 0.99924958, 0.49321655],
     6688                             [- 6.27305477, - 0.00046526, 0.00028505, 7.27258952, 0.99857870, 0.99924969, 0.49321652],
     6689                             [- 6.27305494, - 0.00046519, 0.00028501, 7.27258975, 0.99857891, 0.99924980, 0.49321651],
     6690                             [- 6.27305511, - 0.00046512, 0.00028497, 7.27258999, 0.99857912, 0.99924992, 0.49321656],
     6691                             [- 6.27305528, - 0.00046505, 0.00028492, 7.27259023, 0.99857934, 0.99925003, 0.49321656],
     6692                             [- 6.27305544, - 0.00046498, 0.00028488, 7.27259046, 0.99857955, 0.99925014, 0.49321665],
     6693                             [- 6.27305561, - 0.00046491, 0.00028484, 7.27259070, 0.99857976, 0.99925025, 0.49321668],
     6694                             [- 6.27305578, - 0.00046484, 0.00028479, 7.27259094, 0.99857998, 0.99925037, 0.49321665],
     6695                             [- 6.27305594, - 0.00046477, 0.00028475, 7.27259117, 0.99858019, 0.99925048, 0.49321672],
     6696                             [- 6.27305611, - 0.00046470, 0.00028471, 7.27259141, 0.99858040, 0.99925059, 0.49321675],
     6697                             [- 6.27305628, - 0.00046463, 0.00028467, 7.27259165, 0.99858062, 0.99925070, 0.49321677],
     6698                             [- 6.27305645, - 0.00046456, 0.00028462, 7.27259188, 0.99858083, 0.99925082, 0.49321675],
     6699                             [- 6.27305661, - 0.00046449, 0.00028458, 7.27259212, 0.99858104, 0.99925093, 0.49321677],
     6700                             [- 6.27305678, - 0.00046442, 0.00028454, 7.27259236, 0.99858126, 0.99925104, 0.49321687],
     6701                             [- 6.27305695, - 0.00046435, 0.00028449, 7.27259259, 0.99858147, 0.99925115, 0.49321692],
     6702                             [- 6.27305711, - 0.00046428, 0.00028445, 7.27259283, 0.99858168, 0.99925127, 0.49321690],
     6703                             [- 6.27305728, - 0.00046421, 0.00028441, 7.27259307, 0.99858189, 0.99925138, 0.49321690],
     6704                             [- 6.27305745, - 0.00046414, 0.00028437, 7.27259330, 0.99858211, 0.99925149, 0.49321703],
     6705                             [- 6.27305761, - 0.00046407, 0.00028432, 7.27259354, 0.99858232, 0.99925160, 0.49321695],
     6706                             [- 6.27305778, - 0.00046400, 0.00028428, 7.27259377, 0.99858253, 0.99925171, 0.49321702],
     6707                             [- 6.27305795, - 0.00046393, 0.00028424, 7.27259401, 0.99858275, 0.99925183, 0.49321702],
     6708                             [- 6.27305811, - 0.00046386, 0.00028420, 7.27259425, 0.99858296, 0.99925194, 0.49321707],
     6709                             [- 6.27305828, - 0.00046380, 0.00028415, 7.27259448, 0.99858317, 0.99925205, 0.49321711],
     6710                             [- 6.27305844, - 0.00046373, 0.00028411, 7.27259472, 0.99858338, 0.99925216, 0.49321702],
     6711                             [- 6.27305861, - 0.00046366, 0.00028407, 7.27259495, 0.99858359, 0.99925227, 0.49321714],
     6712                             [- 6.27305878, - 0.00046359, 0.00028403, 7.27259519, 0.99858381, 0.99925239, 0.49321714],
     6713                             [- 6.27305894, - 0.00046352, 0.00028398, 7.27259543, 0.99858402, 0.99925250, 0.49321712],
     6714                             [- 6.27305911, - 0.00046345, 0.00028394, 7.27259566, 0.99858423, 0.99925261, 0.49321724],
     6715                             [- 6.27305927, - 0.00046338, 0.00028390, 7.27259590, 0.99858444, 0.99925272, 0.49321723],
     6716                             [- 6.27305944, - 0.00046331, 0.00028386, 7.27259613, 0.99858465, 0.99925283, 0.49321718],
     6717                             [- 6.27305961, - 0.00046324, 0.00028381, 7.27259637, 0.99858487, 0.99925295, 0.49321725],
     6718                             [- 6.27305977, - 0.00046317, 0.00028377, 7.27259660, 0.99858508, 0.99925306, 0.49321729],
     6719                             [- 6.27305994, - 0.00046310, 0.00028373, 7.27259684, 0.99858529, 0.99925317, 0.49321728],
     6720                             [- 6.27306010, - 0.00046303, 0.00028369, 7.27259707, 0.99858550, 0.99925328, 0.49321728],
     6721                             [- 6.27306027, - 0.00046296, 0.00028364, 7.27259731, 0.99858571, 0.99925339, 0.49321738],
     6722                             [- 6.27306044, - 0.00046289, 0.00028360, 7.27259754, 0.99858593, 0.99925351, 0.49321730],
     6723                             [- 6.27306060, - 0.00046282, 0.00028356, 7.27259778, 0.99858614, 0.99925362, 0.49321736],
     6724                             [- 6.27306077, - 0.00046276, 0.00028352, 7.27259801, 0.99858635, 0.99925373, 0.49321743],
     6725                             [- 6.27306093, - 0.00046269, 0.00028347, 7.27259825, 0.99858656, 0.99925384, 0.49321740],
     6726                             [- 6.27306110, - 0.00046262, 0.00028343, 7.27259848, 0.99858677, 0.99925395, 0.49321757],
     6727                             [- 6.27306126, - 0.00046255, 0.00028339, 7.27259872, 0.99858698, 0.99925406, 0.49321754],
     6728                             [- 6.27306143, - 0.00046248, 0.00028335, 7.27259895, 0.99858719, 0.99925417, 0.49321760],
     6729                             [- 6.27306159, - 0.00046241, 0.00028330, 7.27259918, 0.99858740, 0.99925429, 0.49321757],
     6730                             [- 6.27306176, - 0.00046234, 0.00028326, 7.27259942, 0.99858762, 0.99925440, 0.49321761],
     6731                             [- 6.27306192, - 0.00046227, 0.00028322, 7.27259965, 0.99858783, 0.99925451, 0.49321757],
     6732                             [- 6.27306209, - 0.00046220, 0.00028318, 7.27259989, 0.99858804, 0.99925462, 0.49321764],
     6733                             [- 6.27306225, - 0.00046213, 0.00028314, 7.27260012, 0.99858825, 0.99925473, 0.49321769],
     6734                             [- 6.27306242, - 0.00046206, 0.00028309, 7.27260036, 0.99858846, 0.99925484, 0.49321767],
     6735                             [- 6.27306259, - 0.00046200, 0.00028305, 7.27260059, 0.99858867, 0.99925495, 0.49321773],
     6736                             [- 6.27306275, - 0.00046193, 0.00028301, 7.27260082, 0.99858888, 0.99925506, 0.49321772],
     6737                             [- 6.27306292, - 0.00046186, 0.00028297, 7.27260106, 0.99858909, 0.99925518, 0.49321771],
     6738                             [- 6.27306308, - 0.00046179, 0.00028292, 7.27260129, 0.99858930, 0.99925529, 0.49321779],
     6739                             [- 6.27306324, - 0.00046172, 0.00028288, 7.27260152, 0.99858951, 0.99925540, 0.49321779],
     6740                             [- 6.27306341, - 0.00046165, 0.00028284, 7.27260176, 0.99858972, 0.99925551, 0.49321780],
     6741                             [- 6.27306357, - 0.00046158, 0.00028280, 7.27260199, 0.99858993, 0.99925562, 0.49321791],
     6742                             [- 6.27306374, - 0.00046151, 0.00028275, 7.27260223, 0.99859014, 0.99925573, 0.49321791],
     6743                             [- 6.27306390, - 0.00046144, 0.00028271, 7.27260246, 0.99859035, 0.99925584, 0.49321788],
     6744                             [- 6.27306407, - 0.00046138, 0.00028267, 7.27260269, 0.99859056, 0.99925595, 0.49321791],
     6745                             [- 6.27306423, - 0.00046131, 0.00028263, 7.27260293, 0.99859077, 0.99925606, 0.49321799],
     6746                             [- 6.27306440, - 0.00046124, 0.00028259, 7.27260316, 0.99859098, 0.99925618, 0.49321795],
     6747                             [- 6.27306456, - 0.00046117, 0.00028254, 7.27260339, 0.99859119, 0.99925629, 0.49321797],
     6748                             [- 6.27306473, - 0.00046110, 0.00028250, 7.27260363, 0.99859140, 0.99925640, 0.49321800],
     6749                             [- 6.27306489, - 0.00046103, 0.00028246, 7.27260386, 0.99859161, 0.99925651, 0.49321804],
     6750                             [- 6.27306505, - 0.00046096, 0.00028242, 7.27260409, 0.99859182, 0.99925662, 0.49321800],
     6751                             [- 6.27306522, - 0.00046090, 0.00028238, 7.27260432, 0.99859203, 0.99925673, 0.49321804],
     6752                             [- 6.27306538, - 0.00046083, 0.00028233, 7.27260456, 0.99859224, 0.99925684, 0.49321806],
     6753                             [- 6.27306555, - 0.00046076, 0.00028229, 7.27260479, 0.99859245, 0.99925695, 0.49321814],
     6754                             [- 6.27306571, - 0.00046069, 0.00028225, 7.27260502, 0.99859266, 0.99925706, 0.49321818],
     6755                             [- 6.27306588, - 0.00046062, 0.00028221, 7.27260525, 0.99859287, 0.99925717, 0.49321811],
     6756                             [- 6.27306604, - 0.00046055, 0.00028217, 7.27260549, 0.99859308, 0.99925728, 0.49321821],
     6757                             [- 6.27306620, - 0.00046048, 0.00028212, 7.27260572, 0.99859329, 0.99925739, 0.49321828],
     6758                             [- 6.27306637, - 0.00046042, 0.00028208, 7.27260595, 0.99859350, 0.99925750, 0.49321829],
     6759                             [- 6.27306653, - 0.00046035, 0.00028204, 7.27260618, 0.99859371, 0.99925761, 0.49321826],
     6760                             [- 6.27306670, - 0.00046028, 0.00028200, 7.27260642, 0.99859392, 0.99925772, 0.49321833],
     6761                             [- 6.27306686, - 0.00046021, 0.00028196, 7.27260665, 0.99859413, 0.99925783, 0.49321833],
     6762                             [- 6.27306702, - 0.00046014, 0.00028191, 7.27260688, 0.99859434, 0.99925794, 0.49321830],
     6763                             [- 6.27306719, - 0.00046007, 0.00028187, 7.27260711, 0.99859455, 0.99925805, 0.49321842],
     6764                             [- 6.27306735, - 0.00046000, 0.00028183, 7.27260735, 0.99859475, 0.99925817, 0.49321838],
     6765                             [- 6.27306751, - 0.00045994, 0.00028179, 7.27260758, 0.99859496, 0.99925828, 0.49321849],
     6766                             [- 6.27306768, - 0.00045987, 0.00028175, 7.27260781, 0.99859517, 0.99925839, 0.49321848],
     6767                             [- 6.27306784, - 0.00045980, 0.00028170, 7.27260804, 0.99859538, 0.99925850, 0.49321848],
     6768                             [- 6.27306800, - 0.00045973, 0.00028166, 7.27260827, 0.99859559, 0.99925861, 0.49321852],
     6769                             [- 6.27306817, - 0.00045966, 0.00028162, 7.27260850, 0.99859580, 0.99925872, 0.49321855],
     6770                             [- 6.27306833, - 0.00045959, 0.00028158, 7.27260874, 0.99859601, 0.99925883, 0.49321849],
     6771                             [- 6.27306849, - 0.00045953, 0.00028154, 7.27260897, 0.99859622, 0.99925894, 0.49321861],
     6772                             [- 6.27306866, - 0.00045946, 0.00028150, 7.27260920, 0.99859642, 0.99925905, 0.49321858],
     6773                             [- 6.27306882, - 0.00045939, 0.00028145, 7.27260943, 0.99859663, 0.99925916, 0.49321869],
     6774                             [- 6.27306898, - 0.00045932, 0.00028141, 7.27260966, 0.99859684, 0.99925927, 0.49321873],
     6775                             [- 6.27306915, - 0.00045925, 0.00028137, 7.27260989, 0.99859705, 0.99925938, 0.49321868],
     6776                             [- 6.27306931, - 0.00045919, 0.00028133, 7.27261012, 0.99859726, 0.99925949, 0.49321872],
     6777                             [- 6.27306947, - 0.00045912, 0.00028129, 7.27261035, 0.99859746, 0.99925960, 0.49321879],
     6778                             [- 6.27306964, - 0.00045905, 0.00028124, 7.27261059, 0.99859767, 0.99925971, 0.49321873],
     6779                             [- 6.27306980, - 0.00045898, 0.00028120, 7.27261082, 0.99859788, 0.99925982, 0.49321881],
     6780                             [- 6.27306996, - 0.00045891, 0.00028116, 7.27261105, 0.99859809, 0.99925993, 0.49321869],
     6781                             [- 6.27307012, - 0.00045885, 0.00028112, 7.27261128, 0.99859830, 0.99926003, 0.49321889],
     6782                             [- 6.27307029, - 0.00045878, 0.00028108, 7.27261151, 0.99859850, 0.99926014, 0.49321883],
     6783                             [- 6.27307045, - 0.00045871, 0.00028104, 7.27261174, 0.99859871, 0.99926025, 0.49321889],
     6784                             [- 6.27307061, - 0.00045864, 0.00028099, 7.27261197, 0.99859892, 0.99926036, 0.49321886],
     6785                             [- 6.27307078, - 0.00045857, 0.00028095, 7.27261220, 0.99859913, 0.99926047, 0.49321894],
     6786                             [- 6.27307094, - 0.00045851, 0.00028091, 7.27261243, 0.99859934, 0.99926058, 0.49321894],
     6787                             [- 6.27307110, - 0.00045844, 0.00028087, 7.27261266, 0.99859954, 0.99926069, 0.49321891],
     6788                             [- 6.27307126, - 0.00045837, 0.00028083, 7.27261289, 0.99859975, 0.99926080, 0.49321907],
     6789                             [- 6.27307142, - 0.00045830, 0.00028079, 7.27261312, 0.99859996, 0.99926091, 0.49321892],
     6790                             [- 6.27307159, - 0.00045823, 0.00028074, 7.27261335, 0.99860016, 0.99926102, 0.49321904],
     6791                             [- 6.27307175, - 0.00045817, 0.00028070, 7.27261358, 0.99860037, 0.99926113, 0.49321907],
     6792                             [- 6.27307191, - 0.00045810, 0.00028066, 7.27261381, 0.99860058, 0.99926124, 0.49321903],
     6793                             [- 6.27307207, - 0.00045803, 0.00028062, 7.27261404, 0.99860079, 0.99926135, 0.49321912],
     6794                             [- 6.27307224, - 0.00045796, 0.00028058, 7.27261427, 0.99860099, 0.99926146, 0.49321912],
     6795                             [- 6.27307240, - 0.00045790, 0.00028054, 7.27261450, 0.99860120, 0.99926157, 0.49321912],
     6796                             [- 6.27307256, - 0.00045783, 0.00028050, 7.27261473, 0.99860141, 0.99926168, 0.49321924],
     6797                             [- 6.27307272, - 0.00045776, 0.00028045, 7.27261496, 0.99860161, 0.99926179, 0.49321924],
     6798                             [- 6.27307288, - 0.00045769, 0.00028041, 7.27261519, 0.99860182, 0.99926190, 0.49321921],
     6799                             [- 6.27307305, - 0.00045762, 0.00028037, 7.27261542, 0.99860203, 0.99926200, 0.49321927],
     6800                             [- 6.27307321, - 0.00045756, 0.00028033, 7.27261565, 0.99860223, 0.99926211, 0.49321925],
     6801                             [- 6.27307337, - 0.00045749, 0.00028029, 7.27261588, 0.99860244, 0.99926222, 0.49321926],
     6802                             [- 6.27307353, - 0.00045742, 0.00028025, 7.27261611, 0.99860265, 0.99926233, 0.49321932],
     6803                             [- 6.27307369, - 0.00045735, 0.00028021, 7.27261634, 0.99860285, 0.99926244, 0.49321935],
     6804                             [- 6.27307386, - 0.00045729, 0.00028016, 7.27261657, 0.99860306, 0.99926255, 0.49321931],
     6805                             [- 6.27307402, - 0.00045722, 0.00028012, 7.27261680, 0.99860327, 0.99926266, 0.49321940],
     6806                             [- 6.27307418, - 0.00045715, 0.00028008, 7.27261703, 0.99860347, 0.99926277, 0.49321940],
     6807                             [- 6.27307434, - 0.00045708, 0.00028004, 7.27261726, 0.99860368, 0.99926288, 0.49321938],
     6808                             [- 6.27307450, - 0.00045702, 0.00028000, 7.27261749, 0.99860389, 0.99926299, 0.49321955],
     6809                             [- 6.27307466, - 0.00045695, 0.00027996, 7.27261771, 0.99860409, 0.99926309, 0.49321946],
     6810                             [- 6.27307482, - 0.00045688, 0.00027992, 7.27261794, 0.99860430, 0.99926320, 0.49321952],
     6811                             [- 6.27307499, - 0.00045681, 0.00027987, 7.27261817, 0.99860450, 0.99926331, 0.49321956],
     6812                             [- 6.27307515, - 0.00045675, 0.00027983, 7.27261840, 0.99860471, 0.99926342, 0.49321950],
     6813                             [- 6.27307531, - 0.00045668, 0.00027979, 7.27261863, 0.99860492, 0.99926353, 0.49321959],
     6814                             [- 6.27307547, - 0.00045661, 0.00027975, 7.27261886, 0.99860512, 0.99926364, 0.49321954],
     6815                             [- 6.27307563, - 0.00045654, 0.00027971, 7.27261909, 0.99860533, 0.99926375, 0.49321964],
     6816                             [- 6.27307579, - 0.00045648, 0.00027967, 7.27261931, 0.99860553, 0.99926385, 0.49321960],
     6817                             [- 6.27307595, - 0.00045641, 0.00027963, 7.27261954, 0.99860574, 0.99926396, 0.49321972],
     6818                             [- 6.27307611, - 0.00045634, 0.00027959, 7.27261977, 0.99860595, 0.99926407, 0.49321973],
     6819                             [- 6.27307628, - 0.00045628, 0.00027954, 7.27262000, 0.99860615, 0.99926418, 0.49321968],
     6820                             [- 6.27307644, - 0.00045621, 0.00027950, 7.27262023, 0.99860636, 0.99926429, 0.49321967],
     6821                             [- 6.27307660, - 0.00045614, 0.00027946, 7.27262046, 0.99860656, 0.99926440, 0.49321972],
     6822                             [- 6.27307676, - 0.00045607, 0.00027942, 7.27262068, 0.99860677, 0.99926451, 0.49321981],
     6823                             [- 6.27307692, - 0.00045601, 0.00027938, 7.27262091, 0.99860697, 0.99926461, 0.49321979],
     6824                             [- 6.27307708, - 0.00045594, 0.00027934, 7.27262114, 0.99860718, 0.99926472, 0.49321986],
     6825                             [- 6.27307724, - 0.00045587, 0.00027930, 7.27262137, 0.99860738, 0.99926483, 0.49321988],
     6826                             [- 6.27307740, - 0.00045581, 0.00027926, 7.27262160, 0.99860759, 0.99926494, 0.49321990],
     6827                             [- 6.27307756, - 0.00045574, 0.00027921, 7.27262182, 0.99860779, 0.99926505, 0.49321998],
     6828                             [- 6.27307772, - 0.00045567, 0.00027917, 7.27262205, 0.99860800, 0.99926516, 0.49322003],
     6829                             [- 6.27307788, - 0.00045560, 0.00027913, 7.27262228, 0.99860820, 0.99926526, 0.49321994],
     6830                             [- 6.27307804, - 0.00045554, 0.00027909, 7.27262251, 0.99860841, 0.99926537, 0.49322002],
     6831                             [- 6.27307820, - 0.00045547, 0.00027905, 7.27262273, 0.99860861, 0.99926548, 0.49321999],
     6832                             [- 6.27307836, - 0.00045540, 0.00027901, 7.27262296, 0.99860882, 0.99926559, 0.49322005],
     6833                             [- 6.27307852, - 0.00045534, 0.00027897, 7.27262319, 0.99860902, 0.99926570, 0.49322007],
     6834                             [- 6.27307868, - 0.00045527, 0.00027893, 7.27262342, 0.99860923, 0.99926580, 0.49322002],
     6835                             [- 6.27307884, - 0.00045520, 0.00027889, 7.27262364, 0.99860943, 0.99926591, 0.49322013],
     6836                             [- 6.27307900, - 0.00045514, 0.00027884, 7.27262387, 0.99860964, 0.99926602, 0.49322009],
     6837                             [- 6.27307916, - 0.00045507, 0.00027880, 7.27262410, 0.99860984, 0.99926613, 0.49322010],
     6838                             [- 6.27307932, - 0.00045500, 0.00027876, 7.27262432, 0.99861004, 0.99926624, 0.49322020],
     6839                             [- 6.27307949, - 0.00045493, 0.00027872, 7.27262455, 0.99861025, 0.99926634, 0.49322020],
     6840                             [- 6.27307964, - 0.00045487, 0.00027868, 7.27262478, 0.99861045, 0.99926645, 0.49322021],
     6841                             [- 6.27307980, - 0.00045480, 0.00027864, 7.27262500, 0.99861066, 0.99926656, 0.49322031],
     6842                             [- 6.27307996, - 0.00045473, 0.00027860, 7.27262523, 0.99861086, 0.99926667, 0.49322031],
     6843                             [- 6.27308012, - 0.00045467, 0.00027856, 7.27262546, 0.99861107, 0.99926677, 0.49322033],
     6844                             [- 6.27308028, - 0.00045460, 0.00027852, 7.27262568, 0.99861127, 0.99926688, 0.49322029],
     6845                             [- 6.27308044, - 0.00045453, 0.00027848, 7.27262591, 0.99861147, 0.99926699, 0.49322034],
     6846                             [- 6.27308060, - 0.00045447, 0.00027844, 7.27262614, 0.99861168, 0.99926710, 0.49322033],
     6847                             [- 6.27308076, - 0.00045440, 0.00027839, 7.27262636, 0.99861188, 0.99926721, 0.49322036],
     6848                             [- 6.27308092, - 0.00045433, 0.00027835, 7.27262659, 0.99861209, 0.99926731, 0.49322047],
     6849                             [- 6.27308108, - 0.00045427, 0.00027831, 7.27262682, 0.99861229, 0.99926742, 0.49322045],
     6850                             [- 6.27308124, - 0.00045420, 0.00027827, 7.27262704, 0.99861249, 0.99926753, 0.49322049],
     6851                             [- 6.27308140, - 0.00045413, 0.00027823, 7.27262727, 0.99861270, 0.99926764, 0.49322055],
     6852                             [- 6.27308156, - 0.00045407, 0.00027819, 7.27262749, 0.99861290, 0.99926774, 0.49322054],
     6853                             [- 6.27308172, - 0.00045400, 0.00027815, 7.27262772, 0.99861310, 0.99926785, 0.49322056],
     6854                             [- 6.27308188, - 0.00045393, 0.00027811, 7.27262795, 0.99861331, 0.99926796, 0.49322059],
     6855                             [- 6.27308204, - 0.00045387, 0.00027807, 7.27262817, 0.99861351, 0.99926807, 0.49322050],
     6856                             [- 6.27308220, - 0.00045380, 0.00027803, 7.27262840, 0.99861371, 0.99926817, 0.49322063],
     6857                             [- 6.27308236, - 0.00045373, 0.00027799, 7.27262862, 0.99861392, 0.99926828, 0.49322066],
     6858                             [- 6.27308252, - 0.00045367, 0.00027795, 7.27262885, 0.99861412, 0.99926839, 0.49322063],
     6859                             [- 6.27308268, - 0.00045360, 0.00027790, 7.27262907, 0.99861432, 0.99926849, 0.49322070],
     6860                             [- 6.27308284, - 0.00045353, 0.00027786, 7.27262930, 0.99861453, 0.99926860, 0.49322066],
     6861                             [- 6.27308299, - 0.00045347, 0.00027782, 7.27262953, 0.99861473, 0.99926871, 0.49322073],
     6862                             [- 6.27308315, - 0.00045340, 0.00027778, 7.27262975, 0.99861493, 0.99926882, 0.49322074],
     6863                             [- 6.27308331, - 0.00045334, 0.00027774, 7.27262998, 0.99861514, 0.99926892, 0.49322073],
     6864                             [- 6.27308347, - 0.00045327, 0.00027770, 7.27263020, 0.99861534, 0.99926903, 0.49322080],
     6865                             [- 6.27308363, - 0.00045320, 0.00027766, 7.27263043, 0.99861554, 0.99926914, 0.49322087],
     6866                             [- 6.27308379, - 0.00045314, 0.00027762, 7.27263065, 0.99861574, 0.99926924, 0.49322079],
     6867                             [- 6.27308395, - 0.00045307, 0.00027758, 7.27263088, 0.99861595, 0.99926935, 0.49322088],
     6868                             [- 6.27308411, - 0.00045300, 0.00027754, 7.27263110, 0.99861615, 0.99926946, 0.49322089],
     6869                             [- 6.27308426, - 0.00045294, 0.00027750, 7.27263133, 0.99861635, 0.99926956, 0.49322091],
     6870                             [- 6.27308442, - 0.00045287, 0.00027746, 7.27263155, 0.99861655, 0.99926967, 0.49322099],
     6871                             [- 6.27308458, - 0.00045281, 0.00027742, 7.27263178, 0.99861676, 0.99926978, 0.49322093],
     6872                             [- 6.27308474, - 0.00045274, 0.00027738, 7.27263200, 0.99861696, 0.99926989, 0.49322094],
     6873                             [- 6.27308490, - 0.00045267, 0.00027734, 7.27263223, 0.99861716, 0.99926999, 0.49322104],
     6874                             [- 6.27308506, - 0.00045261, 0.00027729, 7.27263245, 0.99861736, 0.99927010, 0.49322101],
     6875                             [- 6.27308522, - 0.00045254, 0.00027725, 7.27263268, 0.99861757, 0.99927021, 0.49322100],
     6876                             [- 6.27308537, - 0.00045247, 0.00027721, 7.27263290, 0.99861777, 0.99927031, 0.49322109],
     6877                             [- 6.27308553, - 0.00045241, 0.00027717, 7.27263312, 0.99861797, 0.99927042, 0.49322112],
     6878                             [- 6.27308569, - 0.00045234, 0.00027713, 7.27263335, 0.99861817, 0.99927053, 0.49322118],
     6879                             [- 6.27308585, - 0.00045228, 0.00027709, 7.27263357, 0.99861837, 0.99927063, 0.49322108],
     6880                             [- 6.27308601, - 0.00045221, 0.00027705, 7.27263380, 0.99861858, 0.99927074, 0.49322119],
     6881                             [- 6.27308616, - 0.00045214, 0.00027701, 7.27263402, 0.99861878, 0.99927085, 0.49322124],
     6882                             [- 6.27308632, - 0.00045208, 0.00027697, 7.27263424, 0.99861898, 0.99927095, 0.49322120],
     6883                             [- 6.27308648, - 0.00045201, 0.00027693, 7.27263447, 0.99861918, 0.99927106, 0.49322125],
     6884                             [- 6.27308664, - 0.00045195, 0.00027689, 7.27263469, 0.99861938, 0.99927116, 0.49322131],
     6885                             [- 6.27308680, - 0.00045188, 0.00027685, 7.27263492, 0.99861959, 0.99927127, 0.49322139],
     6886                             [- 6.27308695, - 0.00045181, 0.00027681, 7.27263514, 0.99861979, 0.99927138, 0.49322128],
     6887                             [- 6.27308711, - 0.00045175, 0.00027677, 7.27263536, 0.99861999, 0.99927148, 0.49322133],
     6888                             [- 6.27308727, - 0.00045168, 0.00027673, 7.27263559, 0.99862019, 0.99927159, 0.49322134],
     6889                             [- 6.27308743, - 0.00045162, 0.00027669, 7.27263581, 0.99862039, 0.99927170, 0.49322141],
     6890                             [- 6.27308759, - 0.00045155, 0.00027665, 7.27263604, 0.99862059, 0.99927180, 0.49322137],
     6891                             [- 6.27308774, - 0.00045148, 0.00027661, 7.27263626, 0.99862079, 0.99927191, 0.49322148],
     6892                             [- 6.27308790, - 0.00045142, 0.00027657, 7.27263648, 0.99862099, 0.99927202, 0.49322145],
     6893                             [- 6.27308806, - 0.00045135, 0.00027653, 7.27263671, 0.99862120, 0.99927212, 0.49322138],
     6894                             [- 6.27308822, - 0.00045129, 0.00027649, 7.27263693, 0.99862140, 0.99927223, 0.49322155],
     6895                             [- 6.27308837, - 0.00045122, 0.00027645, 7.27263715, 0.99862160, 0.99927233, 0.49322147],
     6896                             [- 6.27308853, - 0.00045116, 0.00027641, 7.27263737, 0.99862180, 0.99927244, 0.49322164],
     6897                             [- 6.27308869, - 0.00045109, 0.00027636, 7.27263760, 0.99862200, 0.99927255, 0.49322155],
     6898                             [- 6.27308884, - 0.00045102, 0.00027632, 7.27263782, 0.99862220, 0.99927265, 0.49322156],
     6899                             [- 6.27308900, - 0.00045096, 0.00027628, 7.27263804, 0.99862240, 0.99927276, 0.49322154],
     6900                             [- 6.27308916, - 0.00045089, 0.00027624, 7.27263827, 0.99862260, 0.99927286, 0.49322167],
     6901                             [- 6.27308932, - 0.00045083, 0.00027620, 7.27263849, 0.99862280, 0.99927297, 0.49322165],
     6902                             [- 6.27308947, - 0.00045076, 0.00027616, 7.27263871, 0.99862300, 0.99927308, 0.49322177],
     6903                             [- 6.27308963, - 0.00045070, 0.00027612, 7.27263894, 0.99862320, 0.99927318, 0.49322172],
     6904                             [- 6.27308979, - 0.00045063, 0.00027608, 7.27263916, 0.99862340, 0.99927329, 0.49322177],
     6905                             [- 6.27308994, - 0.00045056, 0.00027604, 7.27263938, 0.99862360, 0.99927339, 0.49322171],
     6906                             [- 6.27309010, - 0.00045050, 0.00027600, 7.27263960, 0.99862381, 0.99927350, 0.49322172],
     6907                             [- 6.27309026, - 0.00045043, 0.00027596, 7.27263983, 0.99862401, 0.99927360, 0.49322182],
     6908                             [- 6.27309042, - 0.00045037, 0.00027592, 7.27264005, 0.99862421, 0.99927371, 0.49322183],
     6909                             [- 6.27309057, - 0.00045030, 0.00027588, 7.27264027, 0.99862441, 0.99927382, 0.49322187],
     6910                             [- 6.27309073, - 0.00045024, 0.00027584, 7.27264049, 0.99862461, 0.99927392, 0.49322184],
     6911                             [- 6.27309089, - 0.00045017, 0.00027580, 7.27264071, 0.99862481, 0.99927403, 0.49322189],
     6912                             [- 6.27309104, - 0.00045011, 0.00027576, 7.27264094, 0.99862501, 0.99927413, 0.49322190],
     6913                             [- 6.27309120, - 0.00045004, 0.00027572, 7.27264116, 0.99862521, 0.99927424, 0.49322188],
     6914                             [- 6.27309136, - 0.00044997, 0.00027568, 7.27264138, 0.99862541, 0.99927434, 0.49322197],
     6915                             [- 6.27309151, - 0.00044991, 0.00027564, 7.27264160, 0.99862561, 0.99927445, 0.49322195],
     6916                             [- 6.27309167, - 0.00044984, 0.00027560, 7.27264182, 0.99862581, 0.99927455, 0.49322198],
     6917                             [- 6.27309183, - 0.00044978, 0.00027556, 7.27264205, 0.99862601, 0.99927466, 0.49322195],
     6918                             [- 6.27309198, - 0.00044971, 0.00027552, 7.27264227, 0.99862621, 0.99927477, 0.49322211],
     6919                             [- 6.27309214, - 0.00044965, 0.00027548, 7.27264249, 0.99862641, 0.99927487, 0.49322215],
     6920                             [- 6.27309229, - 0.00044958, 0.00027544, 7.27264271, 0.99862660, 0.99927498, 0.49322209],
     6921                             [- 6.27309245, - 0.00044952, 0.00027540, 7.27264293, 0.99862680, 0.99927508, 0.49322211],
     6922                             [- 6.27309261, - 0.00044945, 0.00027536, 7.27264315, 0.99862700, 0.99927519, 0.49322213],
     6923                             [- 6.27309276, - 0.00044939, 0.00027532, 7.27264338, 0.99862720, 0.99927529, 0.49322220],
     6924                             [- 6.27309292, - 0.00044932, 0.00027528, 7.27264360, 0.99862740, 0.99927540, 0.49322206],
     6925                             [- 6.27309307, - 0.00044926, 0.00027524, 7.27264382, 0.99862760, 0.99927550, 0.49322222],
     6926                             [- 6.27309323, - 0.00044919, 0.00027520, 7.27264404, 0.99862780, 0.99927561, 0.49322230],
     6927                             [- 6.27309339, - 0.00044913, 0.00027516, 7.27264426, 0.99862800, 0.99927571, 0.49322233],
     6928                             [- 6.27309354, - 0.00044906, 0.00027512, 7.27264448, 0.99862820, 0.99927582, 0.49322226],
     6929                             [- 6.27309370, - 0.00044900, 0.00027508, 7.27264470, 0.99862840, 0.99927592, 0.49322237],
     6930                             [- 6.27309385, - 0.00044893, 0.00027504, 7.27264492, 0.99862860, 0.99927603, 0.49322238],
     6931                             [- 6.27309401, - 0.00044887, 0.00027500, 7.27264514, 0.99862880, 0.99927613, 0.49322229],
     6932                             [- 6.27309417, - 0.00044880, 0.00027496, 7.27264537, 0.99862899, 0.99927624, 0.49322245],
     6933                             [- 6.27309432, - 0.00044874, 0.00027492, 7.27264559, 0.99862919, 0.99927634, 0.49322245],
     6934                             [- 6.27309448, - 0.00044867, 0.00027488, 7.27264581, 0.99862939, 0.99927645, 0.49322246],
     6935                             [- 6.27309463, - 0.00044861, 0.00027484, 7.27264603, 0.99862959, 0.99927655, 0.49322247],
     6936                             [- 6.27309479, - 0.00044854, 0.00027480, 7.27264625, 0.99862979, 0.99927666, 0.49322254],
     6937                             [- 6.27309494, - 0.00044848, 0.00027476, 7.27264647, 0.99862999, 0.99927676, 0.49322253],
     6938                             [- 6.27309510, - 0.00044841, 0.00027472, 7.27264669, 0.99863019, 0.99927687, 0.49322258],
     6939                             [- 6.27309526, - 0.00044835, 0.00027468, 7.27264691, 0.99863039, 0.99927697, 0.49322250],
     6940                             [- 6.27309541, - 0.00044828, 0.00027464, 7.27264713, 0.99863058, 0.99927708, 0.49322253],
     6941                             [- 6.27309557, - 0.00044822, 0.00027460, 7.27264735, 0.99863078, 0.99927718, 0.49322260],
     6942                             [- 6.27309572, - 0.00044815, 0.00027456, 7.27264757, 0.99863098, 0.99927729, 0.49322265],
     6943                             [- 6.27309588, - 0.00044809, 0.00027452, 7.27264779, 0.99863118, 0.99927739, 0.49322261],
     6944                             [- 6.27309603, - 0.00044802, 0.00027448, 7.27264801, 0.99863138, 0.99927750, 0.49322265],
     6945                             [- 6.27309619, - 0.00044796, 0.00027444, 7.27264823, 0.99863158, 0.99927760, 0.49322274],
     6946                             [- 6.27309634, - 0.00044789, 0.00027440, 7.27264845, 0.99863177, 0.99927770, 0.49322271],
     6947                             [- 6.27309650, - 0.00044783, 0.00027436, 7.27264867, 0.99863197, 0.99927781, 0.49322271],
     6948                             [- 6.27309665, - 0.00044776, 0.00027432, 7.27264889, 0.99863217, 0.99927791, 0.49322277],
     6949                             [- 6.27309681, - 0.00044770, 0.00027429, 7.27264911, 0.99863237, 0.99927802, 0.49322282],
     6950                             [- 6.27309696, - 0.00044763, 0.00027425, 7.27264933, 0.99863256, 0.99927812, 0.49322277],
     6951                             [- 6.27309712, - 0.00044757, 0.00027421, 7.27264955, 0.99863276, 0.99927823, 0.49322279],
     6952                             [- 6.27309727, - 0.00044750, 0.00027417, 7.27264977, 0.99863296, 0.99927833, 0.49322290],
     6953                             [- 6.27309743, - 0.00044744, 0.00027413, 7.27264999, 0.99863316, 0.99927844, 0.49322286],
     6954                             [- 6.27309758, - 0.00044737, 0.00027409, 7.27265021, 0.99863336, 0.99927854, 0.49322289],
     6955                             [- 6.27309774, - 0.00044731, 0.00027405, 7.27265043, 0.99863355, 0.99927864, 0.49322292],
     6956                             [- 6.27309789, - 0.00044724, 0.00027401, 7.27265065, 0.99863375, 0.99927875, 0.49322303],
     6957                             [- 6.27309805, - 0.00044718, 0.00027397, 7.27265087, 0.99863395, 0.99927885, 0.49322297],
     6958                             [- 6.27309820, - 0.00044712, 0.00027393, 7.27265108, 0.99863415, 0.99927896, 0.49322299],
     6959                             [- 6.27309835, - 0.00044705, 0.00027389, 7.27265130, 0.99863434, 0.99927906, 0.49322300],
     6960                             [- 6.27309851, - 0.00044699, 0.00027385, 7.27265152, 0.99863454, 0.99927916, 0.49322302],
     6961                             [- 6.27309866, - 0.00044692, 0.00027381, 7.27265174, 0.99863474, 0.99927927, 0.49322302],
     6962                             [- 6.27309882, - 0.00044686, 0.00027377, 7.27265196, 0.99863493, 0.99927937, 0.49322309],
     6963                             [- 6.27309897, - 0.00044679, 0.00027373, 7.27265218, 0.99863513, 0.99927948, 0.49322304],
     6964                             [- 6.27309913, - 0.00044673, 0.00027369, 7.27265240, 0.99863533, 0.99927958, 0.49322317],
     6965                             [- 6.27309928, - 0.00044666, 0.00027365, 7.27265262, 0.99863553, 0.99927968, 0.49322317],
     6966                             [- 6.27309944, - 0.00044660, 0.00027361, 7.27265284, 0.99863572, 0.99927979, 0.49322320],
     6967                             [- 6.27309959, - 0.00044653, 0.00027357, 7.27265305, 0.99863592, 0.99927989, 0.49322325],
     6968                             [- 6.27309974, - 0.00044647, 0.00027353, 7.27265327, 0.99863612, 0.99928000, 0.49322322],
     6969                             [- 6.27309990, - 0.00044641, 0.00027349, 7.27265349, 0.99863631, 0.99928010, 0.49322331],
     6970                             [- 6.27310005, - 0.00044634, 0.00027345, 7.27265371, 0.99863651, 0.99928020, 0.49322327],
     6971                             [- 6.27310021, - 0.00044628, 0.00027341, 7.27265393, 0.99863671, 0.99928031, 0.49322319],
     6972                             [- 6.27310036, - 0.00044621, 0.00027338, 7.27265415, 0.99863690, 0.99928041, 0.49322336],
     6973                             [- 6.27310051, - 0.00044615, 0.00027334, 7.27265436, 0.99863710, 0.99928052, 0.49322341],
     6974                             [- 6.27310067, - 0.00044608, 0.00027330, 7.27265458, 0.99863730, 0.99928062, 0.49322335],
     6975                             [- 6.27310082, - 0.00044602, 0.00027326, 7.27265480, 0.99863749, 0.99928072, 0.49322336],
     6976                             [- 6.27310097, - 0.00044596, 0.00027322, 7.27265502, 0.99863769, 0.99928083, 0.49322343],
     6977                             [- 6.27310113, - 0.00044589, 0.00027318, 7.27265524, 0.99863789, 0.99928093, 0.49322345],
     6978                             [- 6.27310128, - 0.00044583, 0.00027314, 7.27265546, 0.99863808, 0.99928103, 0.49322341],
     6979                             [- 6.27310144, - 0.00044576, 0.00027310, 7.27265567, 0.99863828, 0.99928114, 0.49322343],
     6980                             [- 6.27310159, - 0.00044570, 0.00027306, 7.27265589, 0.99863847, 0.99928124, 0.49322353],
     6981                             [- 6.27310174, - 0.00044563, 0.00027302, 7.27265611, 0.99863867, 0.99928134, 0.49322355],
     6982                             [- 6.27310190, - 0.00044557, 0.00027298, 7.27265633, 0.99863887, 0.99928145, 0.49322359],
     6983                             [- 6.27310205, - 0.00044551, 0.00027294, 7.27265654, 0.99863906, 0.99928155, 0.49322357],
     6984                             [- 6.27310220, - 0.00044544, 0.00027290, 7.27265676, 0.99863926, 0.99928165, 0.49322365],
     6985                             [- 6.27310236, - 0.00044538, 0.00027286, 7.27265698, 0.99863945, 0.99928176, 0.49322365],
     6986                             [- 6.27310251, - 0.00044531, 0.00027282, 7.27265720, 0.99863965, 0.99928186, 0.49322366],
     6987                             [- 6.27310266, - 0.00044525, 0.00027279, 7.27265741, 0.99863984, 0.99928196, 0.49322350],
     6988                             [- 6.27310282, - 0.00044519, 0.00027275, 7.27265763, 0.99864004, 0.99928207, 0.49322363],
     6989                             [- 6.27310297, - 0.00044512, 0.00027271, 7.27265785, 0.99864024, 0.99928217, 0.49322376],
     6990                             [- 6.27310312, - 0.00044506, 0.00027267, 7.27265807, 0.99864043, 0.99928227, 0.49322376],
     6991                             [- 6.27310328, - 0.00044499, 0.00027263, 7.27265828, 0.99864063, 0.99928238, 0.49322386],
     6992                             [- 6.27310343, - 0.00044493, 0.00027259, 7.27265850, 0.99864082, 0.99928248, 0.49322387],
     6993                             [- 6.27310358, - 0.00044487, 0.00027255, 7.27265872, 0.99864102, 0.99928258, 0.49322377],
     6994                             [- 6.27310374, - 0.00044480, 0.00027251, 7.27265893, 0.99864121, 0.99928269, 0.49322371],
     6995                             [- 6.27310389, - 0.00044474, 0.00027247, 7.27265915, 0.99864141, 0.99928279, 0.49322385],
     6996                             [- 6.27310404, - 0.00044467, 0.00027243, 7.27265937, 0.99864160, 0.99928289, 0.49322391],
     6997                             [- 6.27310419, - 0.00044461, 0.00027239, 7.27265958, 0.99864180, 0.99928300, 0.49322388],
     6998                             [- 6.27310435, - 0.00044455, 0.00027235, 7.27265980, 0.99864199, 0.99928310, 0.49322387],
     6999                             [- 6.27310450, - 0.00044448, 0.00027231, 7.27266002, 0.99864219, 0.99928320, 0.49322394],
     7000                             [- 6.27310465, - 0.00044442, 0.00027228, 7.27266023, 0.99864238, 0.99928330, 0.49322403],
     7001                             [- 6.27310481, - 0.00044436, 0.00027224, 7.27266045, 0.99864258, 0.99928341, 0.49322393],
     7002                             [- 6.27310496, - 0.00044429, 0.00027220, 7.27266067, 0.99864277, 0.99928351, 0.49322396],
     7003                             [- 6.27310511, - 0.00044423, 0.00027216, 7.27266088, 0.99864297, 0.99928361, 0.49322397],
     7004                             [- 6.27310526, - 0.00044416, 0.00027212, 7.27266110, 0.99864316, 0.99928372, 0.49322408],
     7005                             [- 6.27310542, - 0.00044410, 0.00027208, 7.27266132, 0.99864336, 0.99928382, 0.49322399],
     7006                             [- 6.27310557, - 0.00044404, 0.00027204, 7.27266153, 0.99864355, 0.99928392, 0.49322405],
     7007                             [- 6.27310572, - 0.00044397, 0.00027200, 7.27266175, 0.99864375, 0.99928402, 0.49322411],
     7008                             [- 6.27310587, - 0.00044391, 0.00027196, 7.27266196, 0.99864394, 0.99928413, 0.49322415],
     7009                             [- 6.27310603, - 0.00044385, 0.00027192, 7.27266218, 0.99864414, 0.99928423, 0.49322414],
     7010                             [- 6.27310618, - 0.00044378, 0.00027189, 7.27266240, 0.99864433, 0.99928433, 0.49322429],
     7011                             [- 6.27310633, - 0.00044372, 0.00027185, 7.27266261, 0.99864453, 0.99928444, 0.49322422],
     7012                             [- 6.27310648, - 0.00044365, 0.00027181, 7.27266283, 0.99864472, 0.99928454, 0.49322422],
     7013                             [- 6.27310663, - 0.00044359, 0.00027177, 7.27266304, 0.99864491, 0.99928464, 0.49322418],
     7014                             [- 6.27310679, - 0.00044353, 0.00027173, 7.27266326, 0.99864511, 0.99928474, 0.49322426],
     7015                             [- 6.27310694, - 0.00044346, 0.00027169, 7.27266347, 0.99864530, 0.99928485, 0.49322432],
     7016                             [- 6.27310709, - 0.00044340, 0.00027165, 7.27266369, 0.99864550, 0.99928495, 0.49322429],
     7017                             [- 6.27310724, - 0.00044334, 0.00027161, 7.27266391, 0.99864569, 0.99928505, 0.49322440],
     7018                             [- 6.27310739, - 0.00044327, 0.00027157, 7.27266412, 0.99864589, 0.99928515, 0.49322431],
     7019                             [- 6.27310755, - 0.00044321, 0.00027153, 7.27266434, 0.99864608, 0.99928526, 0.49322435],
     7020                             [- 6.27310770, - 0.00044315, 0.00027150, 7.27266455, 0.99864627, 0.99928536, 0.49322446],
     7021                             [- 6.27310785, - 0.00044308, 0.00027146, 7.27266477, 0.99864647, 0.99928546, 0.49322440],
     7022                             [- 6.27310800, - 0.00044302, 0.00027142, 7.27266498, 0.99864666, 0.99928556, 0.49322441],
     7023                             [- 6.27310815, - 0.00044296, 0.00027138, 7.27266520, 0.99864685, 0.99928566, 0.49322447],
     7024                             [- 6.27310831, - 0.00044289, 0.00027134, 7.27266541, 0.99864705, 0.99928577, 0.49322449],
     7025                             [- 6.27310846, - 0.00044283, 0.00027130, 7.27266563, 0.99864724, 0.99928587, 0.49322455],
     7026                             [- 6.27310861, - 0.00044277, 0.00027126, 7.27266584, 0.99864744, 0.99928597, 0.49322455],
     7027                             [- 6.27310876, - 0.00044270, 0.00027122, 7.27266606, 0.99864763, 0.99928607, 0.49322448],
     7028                             [- 6.27310891, - 0.00044264, 0.00027119, 7.27266627, 0.99864782, 0.99928618, 0.49322460],
     7029                             [- 6.27310906, - 0.00044258, 0.00027115, 7.27266649, 0.99864802, 0.99928628, 0.49322463],
     7030                             [- 6.27310921, - 0.00044251, 0.00027111, 7.27266670, 0.99864821, 0.99928638, 0.49322466],
     7031                             [- 6.27310937, - 0.00044245, 0.00027107, 7.27266692, 0.99864840, 0.99928648, 0.49322476],
     7032                             [- 6.27310952, - 0.00044239, 0.00027103, 7.27266713, 0.99864860, 0.99928658, 0.49322465],
     7033                             [- 6.27310967, - 0.00044232, 0.00027099, 7.27266735, 0.99864879, 0.99928669, 0.49322471],
     7034                             [- 6.27310982, - 0.00044226, 0.00027095, 7.27266756, 0.99864898, 0.99928679, 0.49322475],
     7035                             [- 6.27310997, - 0.00044220, 0.00027091, 7.27266777, 0.99864917, 0.99928689, 0.49322474],
     7036                             [- 6.27311012, - 0.00044213, 0.00027088, 7.27266799, 0.99864937, 0.99928699, 0.49322474],
     7037                             [- 6.27311027, - 0.00044207, 0.00027084, 7.27266820, 0.99864956, 0.99928709, 0.49322480],
     7038                             [- 6.27311042, - 0.00044201, 0.00027080, 7.27266842, 0.99864975, 0.99928719, 0.49322485],
     7039                             [- 6.27311058, - 0.00044194, 0.00027076, 7.27266863, 0.99864995, 0.99928730, 0.49322481],
     7040                             [- 6.27311073, - 0.00044188, 0.00027072, 7.27266884, 0.99865014, 0.99928740, 0.49322488],
     7041                             [- 6.27311088, - 0.00044182, 0.00027068, 7.27266906, 0.99865033, 0.99928750, 0.49322485],
     7042                             [- 6.27311103, - 0.00044176, 0.00027064, 7.27266927, 0.99865052, 0.99928760, 0.49322488],
     7043                             [- 6.27311118, - 0.00044169, 0.00027060, 7.27266949, 0.99865072, 0.99928770, 0.49322494],
     7044                             [- 6.27311133, - 0.00044163, 0.00027057, 7.27266970, 0.99865091, 0.99928780, 0.49322492],
     7045                             [- 6.27311148, - 0.00044157, 0.00027053, 7.27266991, 0.99865110, 0.99928791, 0.49322499],
     7046                             [- 6.27311163, - 0.00044150, 0.00027049, 7.27267013, 0.99865129, 0.99928801, 0.49322490],
     7047                             [- 6.27311178, - 0.00044144, 0.00027045, 7.27267034, 0.99865149, 0.99928811, 0.49322494],
     7048                             [- 6.27311193, - 0.00044138, 0.00027041, 7.27267056, 0.99865168, 0.99928821, 0.49322503],
     7049                             [- 6.27311208, - 0.00044131, 0.00027037, 7.27267077, 0.99865187, 0.99928831, 0.49322507],
     7050                             [- 6.27311223, - 0.00044125, 0.00027033, 7.27267098, 0.99865206, 0.99928841, 0.49322506],
     7051                             [- 6.27311238, - 0.00044119, 0.00027030, 7.27267120, 0.99865226, 0.99928852, 0.49322507],
     7052                             [- 6.27311253, - 0.00044113, 0.00027026, 7.27267141, 0.99865245, 0.99928862, 0.49322511],
     7053                             [- 6.27311269, - 0.00044106, 0.00027022, 7.27267162, 0.99865264, 0.99928872, 0.49322515],
     7054                             [- 6.27311284, - 0.00044100, 0.00027018, 7.27267184, 0.99865283, 0.99928882, 0.49322525],
     7055                             [- 6.27311299, - 0.00044094, 0.00027014, 7.27267205, 0.99865302, 0.99928892, 0.49322511],
     7056                             [- 6.27311314, - 0.00044087, 0.00027010, 7.27267226, 0.99865322, 0.99928902, 0.49322518],
     7057                             [- 6.27311329, - 0.00044081, 0.00027006, 7.27267247, 0.99865341, 0.99928912, 0.49322526],
     7058                             [- 6.27311344, - 0.00044075, 0.00027003, 7.27267269, 0.99865360, 0.99928922, 0.49322521],
     7059                             [- 6.27311359, - 0.00044069, 0.00026999, 7.27267290, 0.99865379, 0.99928933, 0.49322528],
     7060                             [- 6.27311374, - 0.00044062, 0.00026995, 7.27267311, 0.99865398, 0.99928943, 0.49322529],
     7061                             [- 6.27311389, - 0.00044056, 0.00026991, 7.27267333, 0.99865418, 0.99928953, 0.49322527],
     7062                             [- 6.27311404, - 0.00044050, 0.00026987, 7.27267354, 0.99865437, 0.99928963, 0.49322539],
     7063                             [- 6.27311419, - 0.00044044, 0.00026983, 7.27267375, 0.99865456, 0.99928973, 0.49322538],
     7064                             [- 6.27311434, - 0.00044037, 0.00026980, 7.27267396, 0.99865475, 0.99928983, 0.49322547],
     7065                             [- 6.27311449, - 0.00044031, 0.00026976, 7.27267418, 0.99865494, 0.99928993, 0.49322544],
     7066                             [- 6.27311464, - 0.00044025, 0.00026972, 7.27267439, 0.99865513, 0.99929003, 0.49322545],
     7067                             [- 6.27311479, - 0.00044018, 0.00026968, 7.27267460, 0.99865532, 0.99929013, 0.49322545],
     7068                             [- 6.27311494, - 0.00044012, 0.00026964, 7.27267481, 0.99865551, 0.99929024, 0.49322537],
     7069                             [- 6.27311509, - 0.00044006, 0.00026960, 7.27267503, 0.99865571, 0.99929034, 0.49322549],
     7070                             [- 6.27311524, - 0.00044000, 0.00026957, 7.27267524, 0.99865590, 0.99929044, 0.49322552],
     7071                             [- 6.27311539, - 0.00043993, 0.00026953, 7.27267545, 0.99865609, 0.99929054, 0.49322561],
     7072                             [- 6.27311554, - 0.00043987, 0.00026949, 7.27267566, 0.99865628, 0.99929064, 0.49322551],
     7073                             [- 6.27311569, - 0.00043981, 0.00026945, 7.27267588, 0.99865647, 0.99929074, 0.49322559],
     7074                             [- 6.27311583, - 0.00043975, 0.00026941, 7.27267609, 0.99865666, 0.99929084, 0.49322564],
     7075                             [- 6.27311598, - 0.00043968, 0.00026937, 7.27267630, 0.99865685, 0.99929094, 0.49322558],
     7076                             [- 6.27311613, - 0.00043962, 0.00026934, 7.27267651, 0.99865704, 0.99929104, 0.49322567],
     7077                             [- 6.27311628, - 0.00043956, 0.00026930, 7.27267672, 0.99865723, 0.99929114, 0.49322564],
     7078                             [- 6.27311643, - 0.00043950, 0.00026926, 7.27267693, 0.99865742, 0.99929124, 0.49322573],
     7079                             [- 6.27311658, - 0.00043944, 0.00026922, 7.27267715, 0.99865762, 0.99929134, 0.49322571],
     7080                             [- 6.27311673, - 0.00043937, 0.00026918, 7.27267736, 0.99865781, 0.99929144, 0.49322569],
     7081                             [- 6.27311688, - 0.00043931, 0.00026914, 7.27267757, 0.99865800, 0.99929155, 0.49322578],
     7082                             [- 6.27311703, - 0.00043925, 0.00026911, 7.27267778, 0.99865819, 0.99929165, 0.49322578],
     7083                             [- 6.27311718, - 0.00043919, 0.00026907, 7.27267799, 0.99865838, 0.99929175, 0.49322584],
     7084                             [- 6.27311733, - 0.00043912, 0.00026903, 7.27267820, 0.99865857, 0.99929185, 0.49322586],
     7085                             [- 6.27311748, - 0.00043906, 0.00026899, 7.27267842, 0.99865876, 0.99929195, 0.49322590],
     7086                             [- 6.27311763, - 0.00043900, 0.00026895, 7.27267863, 0.99865895, 0.99929205, 0.49322588],
     7087                             [- 6.27311777, - 0.00043894, 0.00026892, 7.27267884, 0.99865914, 0.99929215, 0.49322594],
     7088                             [- 6.27311792, - 0.00043887, 0.00026888, 7.27267905, 0.99865933, 0.99929225, 0.49322584],
     7089                             [- 6.27311807, - 0.00043881, 0.00026884, 7.27267926, 0.99865952, 0.99929235, 0.49322593],
     7090                             [- 6.27311822, - 0.00043875, 0.00026880, 7.27267947, 0.99865971, 0.99929245, 0.49322593],
     7091                             [- 6.27311837, - 0.00043869, 0.00026876, 7.27267968, 0.99865990, 0.99929255, 0.49322599],
     7092                             [- 6.27311852, - 0.00043863, 0.00026872, 7.27267989, 0.99866009, 0.99929265, 0.49322601],
     7093                             [- 6.27311867, - 0.00043856, 0.00026869, 7.27268010, 0.99866028, 0.99929275, 0.49322609],
     7094                             [- 6.27311882, - 0.00043850, 0.00026865, 7.27268032, 0.99866047, 0.99929285, 0.49322605],
     7095                             [- 6.27311897, - 0.00043844, 0.00026861, 7.27268053, 0.99866066, 0.99929295, 0.49322609],
     7096                             [- 6.27311911, - 0.00043838, 0.00026857, 7.27268074, 0.99866085, 0.99929305, 0.49322609],
     7097                             [- 6.27311926, - 0.00043832, 0.00026853, 7.27268095, 0.99866104, 0.99929315, 0.49322617],
     7098                             [- 6.27311941, - 0.00043825, 0.00026850, 7.27268116, 0.99866123, 0.99929325, 0.49322622],
     7099                             [- 6.27311956, - 0.00043819, 0.00026846, 7.27268137, 0.99866142, 0.99929335, 0.49322614],
     7100                             [- 6.27311971, - 0.00043813, 0.00026842, 7.27268158, 0.99866161, 0.99929345, 0.49322631],
     7101                             [- 6.27311986, - 0.00043807, 0.00026838, 7.27268179, 0.99866180, 0.99929355, 0.49322620],
     7102                             [- 6.27312000, - 0.00043800, 0.00026834, 7.27268200, 0.99866199, 0.99929365, 0.49322616],
     7103                             [- 6.27312015, - 0.00043794, 0.00026831, 7.27268221, 0.99866217, 0.99929375, 0.49322624],
     7104                             [- 6.27312030, - 0.00043788, 0.00026827, 7.27268242, 0.99866236, 0.99929385, 0.49322623],
     7105                             [- 6.27312045, - 0.00043782, 0.00026823, 7.27268263, 0.99866255, 0.99929395, 0.49322635],
     7106                             [- 6.27312060, - 0.00043776, 0.00026819, 7.27268284, 0.99866274, 0.99929405, 0.49322632],
     7107                             [- 6.27312075, - 0.00043770, 0.00026815, 7.27268305, 0.99866293, 0.99929415, 0.49322635],
     7108                             [- 6.27312089, - 0.00043763, 0.00026812, 7.27268326, 0.99866312, 0.99929425, 0.49322639],
     7109                             [- 6.27312104, - 0.00043757, 0.00026808, 7.27268347, 0.99866331, 0.99929435, 0.49322639],
     7110                             [- 6.27312119, - 0.00043751, 0.00026804, 7.27268368, 0.99866350, 0.99929445, 0.49322638],
     7111                             [- 6.27312134, - 0.00043745, 0.00026800, 7.27268389, 0.99866369, 0.99929455, 0.49322647],
     7112                             [- 6.27312149, - 0.00043739, 0.00026796, 7.27268410, 0.99866388, 0.99929465, 0.49322642],
     7113                             [- 6.27312163, - 0.00043732, 0.00026793, 7.27268431, 0.99866407, 0.99929475, 0.49322644],
     7114                             [- 6.27312178, - 0.00043726, 0.00026789, 7.27268452, 0.99866425, 0.99929485, 0.49322646],
     7115                             [- 6.27312193, - 0.00043720, 0.00026785, 7.27268473, 0.99866444, 0.99929495, 0.49322653],
     7116                             [- 6.27312208, - 0.00043714, 0.00026781, 7.27268494, 0.99866463, 0.99929505, 0.49322663],
     7117                             [- 6.27312223, - 0.00043708, 0.00026778, 7.27268515, 0.99866482, 0.99929515, 0.49322655],
     7118                             [- 6.27312237, - 0.00043702, 0.00026774, 7.27268536, 0.99866501, 0.99929525, 0.49322658],
     7119                             [- 6.27312252, - 0.00043695, 0.00026770, 7.27268557, 0.99866520, 0.99929535, 0.49322660],
     7120                             [- 6.27312267, - 0.00043689, 0.00026766, 7.27268578, 0.99866539, 0.99929545, 0.49322666],
     7121                             [- 6.27312282, - 0.00043683, 0.00026762, 7.27268599, 0.99866557, 0.99929555, 0.49322663],
     7122                             [- 6.27312296, - 0.00043677, 0.00026759, 7.27268619, 0.99866576, 0.99929564, 0.49322672],
     7123                             [- 6.27312311, - 0.00043671, 0.00026755, 7.27268640, 0.99866595, 0.99929574, 0.49322669],
     7124                             [- 6.27312326, - 0.00043665, 0.00026751, 7.27268661, 0.99866614, 0.99929584, 0.49322667],
     7125                             [- 6.27312341, - 0.00043658, 0.00026747, 7.27268682, 0.99866633, 0.99929594, 0.49322665],
     7126                             [- 6.27312355, - 0.00043652, 0.00026744, 7.27268703, 0.99866652, 0.99929604, 0.49322678],
     7127                             [- 6.27312370, - 0.00043646, 0.00026740, 7.27268724, 0.99866670, 0.99929614, 0.49322680],
     7128                             [- 6.27312385, - 0.00043640, 0.00026736, 7.27268745, 0.99866689, 0.99929624, 0.49322677],
     7129                             [- 6.27312399, - 0.00043634, 0.00026732, 7.27268766, 0.99866708, 0.99929634, 0.49322687],
     7130                             [- 6.27312414, - 0.00043628, 0.00026728, 7.27268787, 0.99866727, 0.99929644, 0.49322695],
     7131                             [- 6.27312429, - 0.00043622, 0.00026725, 7.27268807, 0.99866746, 0.99929654, 0.49322684],
     7132                             [- 6.27312444, - 0.00043615, 0.00026721, 7.27268828, 0.99866764, 0.99929664, 0.49322695],
     7133                             [- 6.27312458, - 0.00043609, 0.00026717, 7.27268849, 0.99866783, 0.99929674, 0.49322694],
     7134                             [- 6.27312473, - 0.00043603, 0.00026713, 7.27268870, 0.99866802, 0.99929684, 0.49322694],
     7135                             [- 6.27312488, - 0.00043597, 0.00026710, 7.27268891, 0.99866821, 0.99929693, 0.49322692],
     7136                             [- 6.27312502, - 0.00043591, 0.00026706, 7.27268912, 0.99866839, 0.99929703, 0.49322694],
     7137                             [- 6.27312517, - 0.00043585, 0.00026702, 7.27268932, 0.99866858, 0.99929713, 0.49322699],
     7138                             [- 6.27312532, - 0.00043579, 0.00026698, 7.27268953, 0.99866877, 0.99929723, 0.49322697],
     7139                             [- 6.27312546, - 0.00043572, 0.00026695, 7.27268974, 0.99866896, 0.99929733, 0.49322709],
     7140                             [- 6.27312561, - 0.00043566, 0.00026691, 7.27268995, 0.99866914, 0.99929743, 0.49322698],
     7141                             [- 6.27312576, - 0.00043560, 0.00026687, 7.27269016, 0.99866933, 0.99929753, 0.49322713],
     7142                             [- 6.27312590, - 0.00043554, 0.00026683, 7.27269037, 0.99866952, 0.99929763, 0.49322708],
     7143                             [- 6.27312605, - 0.00043548, 0.00026680, 7.27269057, 0.99866971, 0.99929773, 0.49322723],
     7144                             [- 6.27312620, - 0.00043542, 0.00026676, 7.27269078, 0.99866989, 0.99929782, 0.49322717],
     7145                             [- 6.27312634, - 0.00043536, 0.00026672, 7.27269099, 0.99867008, 0.99929792, 0.49322722],
     7146                             [- 6.27312649, - 0.00043529, 0.00026668, 7.27269120, 0.99867027, 0.99929802, 0.49322714],
     7147                             [- 6.27312664, - 0.00043523, 0.00026665, 7.27269140, 0.99867045, 0.99929812, 0.49322725],
     7148                             [- 6.27312678, - 0.00043517, 0.00026661, 7.27269161, 0.99867064, 0.99929822, 0.49322739],
     7149                             [- 6.27312693, - 0.00043511, 0.00026657, 7.27269182, 0.99867083, 0.99929832, 0.49322721],
     7150                             [- 6.27312708, - 0.00043505, 0.00026653, 7.27269203, 0.99867101, 0.99929842, 0.49322728],
     7151                             [- 6.27312722, - 0.00043499, 0.00026650, 7.27269223, 0.99867120, 0.99929852, 0.49322731],
     7152                             [- 6.27312737, - 0.00043493, 0.00026646, 7.27269244, 0.99867139, 0.99929861, 0.49322735],
     7153                             [- 6.27312752, - 0.00043487, 0.00026642, 7.27269265, 0.99867158, 0.99929871, 0.49322737],
     7154                             [- 6.27312766, - 0.00043481, 0.00026638, 7.27269286, 0.99867176, 0.99929881, 0.49322735],
     7155                             [- 6.27312781, - 0.00043474, 0.00026635, 7.27269306, 0.99867195, 0.99929891, 0.49322744],
     7156                             [- 6.27312795, - 0.00043468, 0.00026631, 7.27269327, 0.99867214, 0.99929901, 0.49322745],
     7157                             [- 6.27312810, - 0.00043462, 0.00026627, 7.27269348, 0.99867232, 0.99929911, 0.49322747],
     7158                             [- 6.27312825, - 0.00043456, 0.00026623, 7.27269368, 0.99867251, 0.99929920, 0.49322750],
     7159                             [- 6.27312839, - 0.00043450, 0.00026620, 7.27269389, 0.99867269, 0.99929930, 0.49322745],
     7160                             [- 6.27312854, - 0.00043444, 0.00026616, 7.27269410, 0.99867288, 0.99929940, 0.49322761],
     7161                             [- 6.27312868, - 0.00043438, 0.00026612, 7.27269431, 0.99867307, 0.99929950, 0.49322746],
     7162                             [- 6.27312883, - 0.00043432, 0.00026608, 7.27269451, 0.99867325, 0.99929960, 0.49322757],
     7163                             [- 6.27312898, - 0.00043426, 0.00026605, 7.27269472, 0.99867344, 0.99929970, 0.49322765],
     7164                             [- 6.27312912, - 0.00043420, 0.00026601, 7.27269493, 0.99867363, 0.99929979, 0.49322763],
     7165                             [- 6.27312927, - 0.00043413, 0.00026597, 7.27269513, 0.99867381, 0.99929989, 0.49322751],
     7166                             [- 6.27312941, - 0.00043407, 0.00026593, 7.27269534, 0.99867400, 0.99929999, 0.49322758],
     7167                             [- 6.27312956, - 0.00043401, 0.00026590, 7.27269555, 0.99867418, 0.99930009, 0.49322771],
     7168                             [- 6.27312970, - 0.00043395, 0.00026586, 7.27269575, 0.99867437, 0.99930019, 0.49322770],
     7169                             [- 6.27312985, - 0.00043389, 0.00026582, 7.27269596, 0.99867456, 0.99930029, 0.49322772],
     7170                             [- 6.27313000, - 0.00043383, 0.00026579, 7.27269616, 0.99867474, 0.99930038, 0.49322775],
     7171                             [- 6.27313014, - 0.00043377, 0.00026575, 7.27269637, 0.99867493, 0.99930048, 0.49322776],
     7172                             [- 6.27313029, - 0.00043371, 0.00026571, 7.27269658, 0.99867511, 0.99930058, 0.49322779],
     7173                             [- 6.27313043, - 0.00043365, 0.00026567, 7.27269678, 0.99867530, 0.99930068, 0.49322775],
     7174                             [- 6.27313058, - 0.00043359, 0.00026564, 7.27269699, 0.99867548, 0.99930078, 0.49322782],
     7175                             [- 6.27313072, - 0.00043353, 0.00026560, 7.27269720, 0.99867567, 0.99930087, 0.49322777],
     7176                             [- 6.27313087, - 0.00043347, 0.00026556, 7.27269740, 0.99867586, 0.99930097, 0.49322785],
     7177                             [- 6.27313101, - 0.00043341, 0.00026552, 7.27269761, 0.99867604, 0.99930107, 0.49322785],
     7178                             [- 6.27313116, - 0.00043335, 0.00026549, 7.27269781, 0.99867623, 0.99930117, 0.49322792],
     7179                             [- 6.27313130, - 0.00043328, 0.00026545, 7.27269802, 0.99867641, 0.99930127, 0.49322802],
     7180                             [- 6.27313145, - 0.00043322, 0.00026541, 7.27269823, 0.99867660, 0.99930136, 0.49322800],
     7181                             [- 6.27313159, - 0.00043316, 0.00026538, 7.27269843, 0.99867678, 0.99930146, 0.49322801],
     7182                             [- 6.27313174, - 0.00043310, 0.00026534, 7.27269864, 0.99867697, 0.99930156, 0.49322793],
     7183                             [- 6.27313188, - 0.00043304, 0.00026530, 7.27269884, 0.99867715, 0.99930166, 0.49322797],
     7184                             [- 6.27313203, - 0.00043298, 0.00026526, 7.27269905, 0.99867734, 0.99930175, 0.49322808],
     7185                             [- 6.27313217, - 0.00043292, 0.00026523, 7.27269925, 0.99867752, 0.99930185, 0.49322805],
     7186                             [- 6.27313232, - 0.00043286, 0.00026519, 7.27269946, 0.99867771, 0.99930195, 0.49322811],
     7187                             [- 6.27313246, - 0.00043280, 0.00026515, 7.27269966, 0.99867789, 0.99930205, 0.49322809],
     7188                             [- 6.27313261, - 0.00043274, 0.00026512, 7.27269987, 0.99867808, 0.99930214, 0.49322806],
     7189                             [- 6.27313275, - 0.00043268, 0.00026508, 7.27270007, 0.99867826, 0.99930224, 0.49322819],
     7190                             [- 6.27313290, - 0.00043262, 0.00026504, 7.27270028, 0.99867845, 0.99930234, 0.49322820],
     7191                             [- 6.27313304, - 0.00043256, 0.00026501, 7.27270049, 0.99867863, 0.99930244, 0.49322821],
     7192                             [- 6.27313319, - 0.00043250, 0.00026497, 7.27270069, 0.99867882, 0.99930253, 0.49322826],
     7193                             [- 6.27313333, - 0.00043244, 0.00026493, 7.27270090, 0.99867900, 0.99930263, 0.49322825],
     7194                             [- 6.27313348, - 0.00043238, 0.00026489, 7.27270110, 0.99867919, 0.99930273, 0.49322828],
     7195                             [- 6.27313362, - 0.00043232, 0.00026486, 7.27270131, 0.99867937, 0.99930283, 0.49322824],
     7196                             [- 6.27313377, - 0.00043226, 0.00026482, 7.27270151, 0.99867955, 0.99930292, 0.49322829],
     7197                             [- 6.27313391, - 0.00043220, 0.00026478, 7.27270171, 0.99867974, 0.99930302, 0.49322833],
     7198                             [- 6.27313405, - 0.00043214, 0.00026475, 7.27270192, 0.99867992, 0.99930312, 0.49322832],
     7199                             [- 6.27313420, - 0.00043207, 0.00026471, 7.27270212, 0.99868011, 0.99930322, 0.49322832],
     7200                             [- 6.27313434, - 0.00043201, 0.00026467, 7.27270233, 0.99868029, 0.99930331, 0.49322841],
     7201                             [- 6.27313449, - 0.00043195, 0.00026464, 7.27270253, 0.99868048, 0.99930341, 0.49322842],
     7202                             [- 6.27313463, - 0.00043189, 0.00026460, 7.27270274, 0.99868066, 0.99930351, 0.49322850],
     7203                             [- 6.27313478, - 0.00043183, 0.00026456, 7.27270294, 0.99868084, 0.99930360, 0.49322849],
     7204                             [- 6.27313492, - 0.00043177, 0.00026452, 7.27270315, 0.99868103, 0.99930370, 0.49322832],
     7205                             [- 6.27313506, - 0.00043171, 0.00026449, 7.27270335, 0.99868121, 0.99930380, 0.49322850],
     7206                             [- 6.27313521, - 0.00043165, 0.00026445, 7.27270356, 0.99868140, 0.99930390, 0.49322849],
     7207                             [- 6.27313535, - 0.00043159, 0.00026441, 7.27270376, 0.99868158, 0.99930399, 0.49322851],
     7208                             [- 6.27313550, - 0.00043153, 0.00026438, 7.27270396, 0.99868176, 0.99930409, 0.49322842],
     7209                             [- 6.27313564, - 0.00043147, 0.00026434, 7.27270417, 0.99868195, 0.99930419, 0.49322856],
     7210                             [- 6.27313578, - 0.00043141, 0.00026430, 7.27270437, 0.99868213, 0.99930428, 0.49322852],
     7211                             [- 6.27313593, - 0.00043135, 0.00026427, 7.27270458, 0.99868232, 0.99930438, 0.49322857],
     7212                             [- 6.27313607, - 0.00043129, 0.00026423, 7.27270478, 0.99868250, 0.99930448, 0.49322857],
     7213                             [- 6.27313622, - 0.00043123, 0.00026419, 7.27270498, 0.99868268, 0.99930458, 0.49322862],
     7214                             [- 6.27313636, - 0.00043117, 0.00026416, 7.27270519, 0.99868287, 0.99930467, 0.49322867],
     7215                             [- 6.27313650, - 0.00043111, 0.00026412, 7.27270539, 0.99868305, 0.99930477, 0.49322876],
     7216                             [- 6.27313665, - 0.00043105, 0.00026408, 7.27270560, 0.99868323, 0.99930487, 0.49322877],
     7217                             [- 6.27313679, - 0.00043099, 0.00026405, 7.27270580, 0.99868342, 0.99930496, 0.49322873],
     7218                             [- 6.27313693, - 0.00043093, 0.00026401, 7.27270600, 0.99868360, 0.99930506, 0.49322870],
     7219                             [- 6.27313708, - 0.00043087, 0.00026397, 7.27270621, 0.99868378, 0.99930516, 0.49322877],
     7220                             [- 6.27313722, - 0.00043081, 0.00026394, 7.27270641, 0.99868397, 0.99930525, 0.49322879],
     7221                             [- 6.27313737, - 0.00043075, 0.00026390, 7.27270661, 0.99868415, 0.99930535, 0.49322891],
     7222                             [- 6.27313751, - 0.00043069, 0.00026386, 7.27270682, 0.99868433, 0.99930545, 0.49322887],
     7223                             [- 6.27313765, - 0.00043063, 0.00026382, 7.27270702, 0.99868452, 0.99930554, 0.49322881],
     7224                             [- 6.27313780, - 0.00043057, 0.00026379, 7.27270722, 0.99868470, 0.99930564, 0.49322892],
     7225                             [- 6.27313794, - 0.00043051, 0.00026375, 7.27270743, 0.99868488, 0.99930574, 0.49322891],
     7226                             [- 6.27313808, - 0.00043045, 0.00026371, 7.27270763, 0.99868507, 0.99930583, 0.49322891],
     7227                             [- 6.27313823, - 0.00043039, 0.00026368, 7.27270783, 0.99868525, 0.99930593, 0.49322893],
     7228                             [- 6.27313837, - 0.00043033, 0.00026364, 7.27270804, 0.99868543, 0.99930603, 0.49322886],
     7229                             [- 6.27313851, - 0.00043027, 0.00026360, 7.27270824, 0.99868561, 0.99930612, 0.49322902],
     7230                             [- 6.27313865, - 0.00043021, 0.00026357, 7.27270844, 0.99868580, 0.99930622, 0.49322900],
     7231                             [- 6.27313880, - 0.00043015, 0.00026353, 7.27270864, 0.99868598, 0.99930632, 0.49322904],
     7232                             [- 6.27313894, - 0.00043009, 0.00026349, 7.27270885, 0.99868616, 0.99930641, 0.49322903],
     7233                             [- 6.27313908, - 0.00043003, 0.00026346, 7.27270905, 0.99868634, 0.99930651, 0.49322900],
     7234                             [- 6.27313923, - 0.00042997, 0.00026342, 7.27270925, 0.99868653, 0.99930660, 0.49322904],
     7235                             [- 6.27313937, - 0.00042991, 0.00026338, 7.27270946, 0.99868671, 0.99930670, 0.49322912],
     7236                             [- 6.27313951, - 0.00042985, 0.00026335, 7.27270966, 0.99868689, 0.99930680, 0.49322917],
     7237                             [- 6.27313966, - 0.00042980, 0.00026331, 7.27270986, 0.99868707, 0.99930689, 0.49322903],
     7238                             [- 6.27313980, - 0.00042974, 0.00026328, 7.27271006, 0.99868726, 0.99930699, 0.49322919],
     7239                             [- 6.27313994, - 0.00042968, 0.00026324, 7.27271027, 0.99868744, 0.99930709, 0.49322915],
     7240                             [- 6.27314008, - 0.00042962, 0.00026320, 7.27271047, 0.99868762, 0.99930718, 0.49322921],
     7241                             [- 6.27314023, - 0.00042956, 0.00026317, 7.27271067, 0.99868780, 0.99930728, 0.49322918],
     7242                             [- 6.27314037, - 0.00042950, 0.00026313, 7.27271087, 0.99868799, 0.99930737, 0.49322930],
     7243                             [- 6.27314051, - 0.00042944, 0.00026309, 7.27271107, 0.99868817, 0.99930747, 0.49322927],
     7244                             [- 6.27314065, - 0.00042938, 0.00026306, 7.27271128, 0.99868835, 0.99930757, 0.49322931],
     7245                             [- 6.27314080, - 0.00042932, 0.00026302, 7.27271148, 0.99868853, 0.99930766, 0.49322934],
     7246                             [- 6.27314094, - 0.00042926, 0.00026298, 7.27271168, 0.99868871, 0.99930776, 0.49322928],
     7247                             [- 6.27314108, - 0.00042920, 0.00026295, 7.27271188, 0.99868890, 0.99930785, 0.49322942],
     7248                             [- 6.27314122, - 0.00042914, 0.00026291, 7.27271208, 0.99868908, 0.99930795, 0.49322942],
     7249                             [- 6.27314137, - 0.00042908, 0.00026287, 7.27271229, 0.99868926, 0.99930805, 0.49322944],
     7250                             [- 6.27314151, - 0.00042902, 0.00026284, 7.27271249, 0.99868944, 0.99930814, 0.49322951],
     7251                             [- 6.27314165, - 0.00042896, 0.00026280, 7.27271269, 0.99868962, 0.99930824, 0.49322944],
     7252                             [- 6.27314179, - 0.00042890, 0.00026276, 7.27271289, 0.99868980, 0.99930833, 0.49322951],
     7253                             [- 6.27314194, - 0.00042884, 0.00026273, 7.27271309, 0.99868999, 0.99930843, 0.49322954],
     7254                             [- 6.27314208, - 0.00042878, 0.00026269, 7.27271329, 0.99869017, 0.99930853, 0.49322961],
     7255                             [- 6.27314222, - 0.00042872, 0.00026265, 7.27271350, 0.99869035, 0.99930862, 0.49322958],
     7256                             [- 6.27314236, - 0.00042866, 0.00026262, 7.27271370, 0.99869053, 0.99930872, 0.49322958],
     7257                             [- 6.27314250, - 0.00042861, 0.00026258, 7.27271390, 0.99869071, 0.99930881, 0.49322960],
     7258                             [- 6.27314265, - 0.00042855, 0.00026255, 7.27271410, 0.99869089, 0.99930891, 0.49322954],
     7259                             [- 6.27314279, - 0.00042849, 0.00026251, 7.27271430, 0.99869107, 0.99930900, 0.49322960],
     7260                             [- 6.27314293, - 0.00042843, 0.00026247, 7.27271450, 0.99869125, 0.99930910, 0.49322964],
     7261                             [- 6.27314307, - 0.00042837, 0.00026244, 7.27271470, 0.99869144, 0.99930920, 0.49322967],
     7262                             [- 6.27314321, - 0.00042831, 0.00026240, 7.27271491, 0.99869162, 0.99930929, 0.49322963],
     7263                             [- 6.27314336, - 0.00042825, 0.00026236, 7.27271511, 0.99869180, 0.99930939, 0.49322972],
     7264                             [- 6.27314350, - 0.00042819, 0.00026233, 7.27271531, 0.99869198, 0.99930948, 0.49322962],
     7265                             [- 6.27314364, - 0.00042813, 0.00026229, 7.27271551, 0.99869216, 0.99930958, 0.49322977],
     7266                             [- 6.27314378, - 0.00042807, 0.00026226, 7.27271571, 0.99869234, 0.99930967, 0.49322982],
     7267                             [- 6.27314392, - 0.00042801, 0.00026222, 7.27271591, 0.99869252, 0.99930977, 0.49322974],
     7268                             [- 6.27314406, - 0.00042795, 0.00026218, 7.27271611, 0.99869270, 0.99930986, 0.49322983],
     7269                             [- 6.27314421, - 0.00042789, 0.00026215, 7.27271631, 0.99869288, 0.99930996, 0.49322981],
     7270                             [- 6.27314435, - 0.00042783, 0.00026211, 7.27271651, 0.99869306, 0.99931005, 0.49322987],
     7271                             [- 6.27314449, - 0.00042778, 0.00026207, 7.27271671, 0.99869325, 0.99931015, 0.49322991],
     7272                             [- 6.27314463, - 0.00042772, 0.00026204, 7.27271691, 0.99869343, 0.99931025, 0.49322985],
     7273                             [- 6.27314477, - 0.00042766, 0.00026200, 7.27271711, 0.99869361, 0.99931034, 0.49322989],
     7274                             [- 6.27314491, - 0.00042760, 0.00026197, 7.27271731, 0.99869379, 0.99931044, 0.49322995],
     7275                             [- 6.27314505, - 0.00042754, 0.00026193, 7.27271752, 0.99869397, 0.99931053, 0.49322998],
     7276                             [- 6.27314520, - 0.00042748, 0.00026189, 7.27271772, 0.99869415, 0.99931063, 0.49322992],
     7277                             [- 6.27314534, - 0.00042742, 0.00026186, 7.27271792, 0.99869433, 0.99931072, 0.49322999],
     7278                             [- 6.27314548, - 0.00042736, 0.00026182, 7.27271812, 0.99869451, 0.99931082, 0.49323014],
     7279                             [- 6.27314562, - 0.00042730, 0.00026178, 7.27271832, 0.99869469, 0.99931091, 0.49323001],
     7280                             [- 6.27314576, - 0.00042724, 0.00026175, 7.27271852, 0.99869487, 0.99931101, 0.49323007],
     7281                             [- 6.27314590, - 0.00042719, 0.00026171, 7.27271872, 0.99869505, 0.99931110, 0.49323010],
     7282                             [- 6.27314604, - 0.00042713, 0.00026168, 7.27271892, 0.99869523, 0.99931120, 0.49323018],
     7283                             [- 6.27314618, - 0.00042707, 0.00026164, 7.27271912, 0.99869541, 0.99931129, 0.49323018],
     7284                             [- 6.27314633, - 0.00042701, 0.00026160, 7.27271932, 0.99869559, 0.99931139, 0.49323016],
     7285                             [- 6.27314647, - 0.00042695, 0.00026157, 7.27271952, 0.99869577, 0.99931148, 0.49323007],
     7286                             [- 6.27314661, - 0.00042689, 0.00026153, 7.27271972, 0.99869595, 0.99931158, 0.49323022],
     7287                             [- 6.27314675, - 0.00042683, 0.00026150, 7.27271992, 0.99869613, 0.99931167, 0.49323025],
     7288                             [- 6.27314689, - 0.00042677, 0.00026146, 7.27272012, 0.99869631, 0.99931177, 0.49323030],
     7289                             [- 6.27314703, - 0.00042671, 0.00026142, 7.27272032, 0.99869649, 0.99931186, 0.49323027],
     7290                             [- 6.27314717, - 0.00042666, 0.00026139, 7.27272051, 0.99869667, 0.99931196, 0.49323031],
     7291                             [- 6.27314731, - 0.00042660, 0.00026135, 7.27272071, 0.99869685, 0.99931205, 0.49323029],
     7292                             [- 6.27314745, - 0.00042654, 0.00026132, 7.27272091, 0.99869703, 0.99931215, 0.49323033],
     7293                             [- 6.27314759, - 0.00042648, 0.00026128, 7.27272111, 0.99869721, 0.99931224, 0.49323043],
     7294                             [- 6.27314773, - 0.00042642, 0.00026124, 7.27272131, 0.99869739, 0.99931234, 0.49323035],
     7295                             [- 6.27314787, - 0.00042636, 0.00026121, 7.27272151, 0.99869757, 0.99931243, 0.49323032],
     7296                             [- 6.27314801, - 0.00042630, 0.00026117, 7.27272171, 0.99869775, 0.99931253, 0.49323043],
     7297                             [- 6.27314815, - 0.00042624, 0.00026114, 7.27272191, 0.99869792, 0.99931262, 0.49323038],
     7298                             [- 6.27314830, - 0.00042619, 0.00026110, 7.27272211, 0.99869810, 0.99931272, 0.49323055],
     7299                             [- 6.27314844, - 0.00042613, 0.00026106, 7.27272231, 0.99869828, 0.99931281, 0.49323047],
     7300                             [- 6.27314858, - 0.00042607, 0.00026103, 7.27272251, 0.99869846, 0.99931290, 0.49323039],
     7301                             [- 6.27314872, - 0.00042601, 0.00026099, 7.27272271, 0.99869864, 0.99931300, 0.49323039],
     7302                             [- 6.27314886, - 0.00042595, 0.00026096, 7.27272291, 0.99869882, 0.99931309, 0.49323057],
     7303                             [- 6.27314900, - 0.00042589, 0.00026092, 7.27272310, 0.99869900, 0.99931319, 0.49323051],
     7304                             [- 6.27314914, - 0.00042583, 0.00026088, 7.27272330, 0.99869918, 0.99931328, 0.49323056],
     7305                             [- 6.27314928, - 0.00042578, 0.00026085, 7.27272350, 0.99869936, 0.99931338, 0.49323064],
     7306                             [- 6.27314942, - 0.00042572, 0.00026081, 7.27272370, 0.99869954, 0.99931347, 0.49323065],
     7307                             [- 6.27314956, - 0.00042566, 0.00026078, 7.27272390, 0.99869972, 0.99931357, 0.49323065],
     7308                             [- 6.27314970, - 0.00042560, 0.00026074, 7.27272410, 0.99869989, 0.99931366, 0.49323070],
     7309                             [- 6.27314984, - 0.00042554, 0.00026070, 7.27272430, 0.99870007, 0.99931375, 0.49323062],
     7310                             [- 6.27314998, - 0.00042548, 0.00026067, 7.27272450, 0.99870025, 0.99931385, 0.49323063],
     7311                             [- 6.27315012, - 0.00042542, 0.00026063, 7.27272469, 0.99870043, 0.99931394, 0.49323075],
     7312                             [- 6.27315026, - 0.00042537, 0.00026060, 7.27272489, 0.99870061, 0.99931404, 0.49323074],
     7313                             [- 6.27315040, - 0.00042531, 0.00026056, 7.27272509, 0.99870079, 0.99931413, 0.49323081],
     7314                             [- 6.27315054, - 0.00042525, 0.00026052, 7.27272529, 0.99870097, 0.99931423, 0.49323082],
     7315                             [- 6.27315068, - 0.00042519, 0.00026049, 7.27272549, 0.99870115, 0.99931432, 0.49323079],
     7316                             [- 6.27315082, - 0.00042513, 0.00026045, 7.27272569, 0.99870132, 0.99931441, 0.49323072],
     7317                             [- 6.27315096, - 0.00042507, 0.00026042, 7.27272588, 0.99870150, 0.99931451, 0.49323088],
     7318                             [- 6.27315110, - 0.00042502, 0.00026038, 7.27272608, 0.99870168, 0.99931460, 0.49323096],
     7319                             [- 6.27315124, - 0.00042496, 0.00026035, 7.27272628, 0.99870186, 0.99931470, 0.49323088],
     7320                             [- 6.27315138, - 0.00042490, 0.00026031, 7.27272648, 0.99870204, 0.99931479, 0.49323085],
     7321                             [- 6.27315152, - 0.00042484, 0.00026027, 7.27272668, 0.99870222, 0.99931489, 0.49323089],
     7322                             [- 6.27315165, - 0.00042478, 0.00026024, 7.27272687, 0.99870239, 0.99931498, 0.49323085],
     7323                             [- 6.27315179, - 0.00042472, 0.00026020, 7.27272707, 0.99870257, 0.99931507, 0.49323101],
     7324                             [- 6.27315193, - 0.00042467, 0.00026017, 7.27272727, 0.99870275, 0.99931517, 0.49323094],
     7325                             [- 6.27315207, - 0.00042461, 0.00026013, 7.27272747, 0.99870293, 0.99931526, 0.49323104],
     7326                             [- 6.27315221, - 0.00042455, 0.00026010, 7.27272766, 0.99870311, 0.99931535, 0.49323100],
     7327                             [- 6.27315235, - 0.00042449, 0.00026006, 7.27272786, 0.99870328, 0.99931545, 0.49323105],
     7328                             [- 6.27315249, - 0.00042443, 0.00026002, 7.27272806, 0.99870346, 0.99931554, 0.49323112],
     7329                             [- 6.27315263, - 0.00042437, 0.00025999, 7.27272826, 0.99870364, 0.99931564, 0.49323100],
     7330                             [- 6.27315277, - 0.00042432, 0.00025995, 7.27272845, 0.99870382, 0.99931573, 0.49323104],
     7331                             [- 6.27315291, - 0.00042426, 0.00025992, 7.27272865, 0.99870399, 0.99931582, 0.49323113],
     7332                             [- 6.27315305, - 0.00042420, 0.00025988, 7.27272885, 0.99870417, 0.99931592, 0.49323100],
     7333                             [- 6.27315319, - 0.00042414, 0.00025985, 7.27272905, 0.99870435, 0.99931601, 0.49323118],
     7334                             [- 6.27315333, - 0.00042408, 0.00025981, 7.27272924, 0.99870453, 0.99931611, 0.49323122],
     7335                             [- 6.27315347, - 0.00042403, 0.00025978, 7.27272944, 0.99870470, 0.99931620, 0.49323123],
     7336                             [- 6.27315360, - 0.00042397, 0.00025974, 7.27272964, 0.99870488, 0.99931629, 0.49323124],
     7337                             [- 6.27315374, - 0.00042391, 0.00025970, 7.27272983, 0.99870506, 0.99931639, 0.49323127],
     7338                             [- 6.27315388, - 0.00042385, 0.00025967, 7.27273003, 0.99870524, 0.99931648, 0.49323133],
     7339                             [- 6.27315402, - 0.00042379, 0.00025963, 7.27273023, 0.99870541, 0.99931657, 0.49323140],
     7340                             [- 6.27315416, - 0.00042374, 0.00025960, 7.27273042, 0.99870559, 0.99931667, 0.49323133],
     7341                             [- 6.27315430, - 0.00042368, 0.00025956, 7.27273062, 0.99870577, 0.99931676, 0.49323138],
     7342                             [- 6.27315444, - 0.00042362, 0.00025953, 7.27273082, 0.99870595, 0.99931685, 0.49323140],
     7343                             [- 6.27315458, - 0.00042356, 0.00025949, 7.27273101, 0.99870612, 0.99931695, 0.49323145],
     7344                             [- 6.27315472, - 0.00042350, 0.00025946, 7.27273121, 0.99870630, 0.99931704, 0.49323139],
     7345                             [- 6.27315485, - 0.00042345, 0.00025942, 7.27273141, 0.99870648, 0.99931713, 0.49323136],
     7346                             [- 6.27315499, - 0.00042339, 0.00025938, 7.27273160, 0.99870665, 0.99931723, 0.49323144],
     7347                             [- 6.27315513, - 0.00042333, 0.00025935, 7.27273180, 0.99870683, 0.99931732, 0.49323141],
     7348                             [- 6.27315527, - 0.00042327, 0.00025931, 7.27273200, 0.99870701, 0.99931741, 0.49323140],
     7349                             [- 6.27315541, - 0.00042321, 0.00025928, 7.27273219, 0.99870719, 0.99931751, 0.49323155],
     7350                             [- 6.27315555, - 0.00042316, 0.00025924, 7.27273239, 0.99870736, 0.99931760, 0.49323157],
     7351                             [- 6.27315569, - 0.00042310, 0.00025921, 7.27273259, 0.99870754, 0.99931769, 0.49323161],
     7352                             [- 6.27315582, - 0.00042304, 0.00025917, 7.27273278, 0.99870772, 0.99931779, 0.49323157],
     7353                             [- 6.27315596, - 0.00042298, 0.00025914, 7.27273298, 0.99870789, 0.99931788, 0.49323162],
     7354                             [- 6.27315610, - 0.00042292, 0.00025910, 7.27273318, 0.99870807, 0.99931797, 0.49323164],
     7355                             [- 6.27315624, - 0.00042287, 0.00025907, 7.27273337, 0.99870825, 0.99931807, 0.49323172],
     7356                             [- 6.27315638, - 0.00042281, 0.00025903, 7.27273357, 0.99870842, 0.99931816, 0.49323163],
     7357                             [- 6.27315652, - 0.00042275, 0.00025899, 7.27273376, 0.99870860, 0.99931825, 0.49323158],
     7358                             [- 6.27315665, - 0.00042269, 0.00025896, 7.27273396, 0.99870877, 0.99931835, 0.49323168],
     7359                             [- 6.27315679, - 0.00042264, 0.00025892, 7.27273416, 0.99870895, 0.99931844, 0.49323175],
     7360                             [- 6.27315693, - 0.00042258, 0.00025889, 7.27273435, 0.99870913, 0.99931853, 0.49323172],
     7361                             [- 6.27315707, - 0.00042252, 0.00025885, 7.27273455, 0.99870930, 0.99931863, 0.49323175],
     7362                             [- 6.27315721, - 0.00042246, 0.00025882, 7.27273474, 0.99870948, 0.99931872, 0.49323179],
     7363                             [- 6.27315734, - 0.00042241, 0.00025878, 7.27273494, 0.99870966, 0.99931881, 0.49323178],
     7364                             [- 6.27315748, - 0.00042235, 0.00025875, 7.27273513, 0.99870983, 0.99931891, 0.49323183],
     7365                             [- 6.27315762, - 0.00042229, 0.00025871, 7.27273533, 0.99871001, 0.99931900, 0.49323180],
     7366                             [- 6.27315776, - 0.00042223, 0.00025868, 7.27273552, 0.99871018, 0.99931909, 0.49323181],
     7367                             [- 6.27315790, - 0.00042218, 0.00025864, 7.27273572, 0.99871036, 0.99931918, 0.49323188],
     7368                             [- 6.27315803, - 0.00042212, 0.00025861, 7.27273592, 0.99871054, 0.99931928, 0.49323197],
     7369                             [- 6.27315817, - 0.00042206, 0.00025857, 7.27273611, 0.99871071, 0.99931937, 0.49323190],
     7370                             [- 6.27315831, - 0.00042200, 0.00025854, 7.27273631, 0.99871089, 0.99931946, 0.49323185],
     7371                             [- 6.27315845, - 0.00042194, 0.00025850, 7.27273650, 0.99871106, 0.99931956, 0.49323199],
     7372                             [- 6.27315858, - 0.00042189, 0.00025846, 7.27273670, 0.99871124, 0.99931965, 0.49323204],
     7373                             [- 6.27315872, - 0.00042183, 0.00025843, 7.27273689, 0.99871141, 0.99931974, 0.49323191],
     7374                             [- 6.27315886, - 0.00042177, 0.00025839, 7.27273709, 0.99871159, 0.99931983, 0.49323202],
     7375                             [- 6.27315900, - 0.00042171, 0.00025836, 7.27273728, 0.99871177, 0.99931993, 0.49323199],
     7376                             [- 6.27315913, - 0.00042166, 0.00025832, 7.27273748, 0.99871194, 0.99932002, 0.49323200],
     7377                             [- 6.27315927, - 0.00042160, 0.00025829, 7.27273767, 0.99871212, 0.99932011, 0.49323212],
     7378                             [- 6.27315941, - 0.00042154, 0.00025825, 7.27273787, 0.99871229, 0.99932020, 0.49323215],
     7379                             [- 6.27315955, - 0.00042149, 0.00025822, 7.27273806, 0.99871247, 0.99932030, 0.49323211],
     7380                             [- 6.27315968, - 0.00042143, 0.00025818, 7.27273826, 0.99871264, 0.99932039, 0.49323217],
     7381                             [- 6.27315982, - 0.00042137, 0.00025815, 7.27273845, 0.99871282, 0.99932048, 0.49323219],
     7382                             [- 6.27315996, - 0.00042131, 0.00025811, 7.27273864, 0.99871299, 0.99932057, 0.49323223],
     7383                             [- 6.27316010, - 0.00042126, 0.00025808, 7.27273884, 0.99871317, 0.99932067, 0.49323224],
     7384                             [- 6.27316023, - 0.00042120, 0.00025804, 7.27273903, 0.99871334, 0.99932076, 0.49323221],
     7385                             [- 6.27316037, - 0.00042114, 0.00025801, 7.27273923, 0.99871352, 0.99932085, 0.49323224],
     7386                             [- 6.27316051, - 0.00042108, 0.00025797, 7.27273942, 0.99871369, 0.99932094, 0.49323220],
     7387                             [- 6.27316064, - 0.00042103, 0.00025794, 7.27273962, 0.99871387, 0.99932104, 0.49323229],
     7388                             [- 6.27316078, - 0.00042097, 0.00025790, 7.27273981, 0.99871404, 0.99932113, 0.49323228],
     7389                             [- 6.27316092, - 0.00042091, 0.00025787, 7.27274001, 0.99871422, 0.99932122, 0.49323228],
     7390                             [- 6.27316105, - 0.00042085, 0.00025783, 7.27274020, 0.99871439, 0.99932131, 0.49323234],
     7391                             [- 6.27316119, - 0.00042080, 0.00025780, 7.27274039, 0.99871457, 0.99932141, 0.49323243],
     7392                             [- 6.27316133, - 0.00042074, 0.00025776, 7.27274059, 0.99871474, 0.99932150, 0.49323241],
     7393                             [- 6.27316147, - 0.00042068, 0.00025773, 7.27274078, 0.99871492, 0.99932159, 0.49323242],
     7394                             [- 6.27316160, - 0.00042063, 0.00025769, 7.27274098, 0.99871509, 0.99932168, 0.49323234],
     7395                             [- 6.27316174, - 0.00042057, 0.00025766, 7.27274117, 0.99871527, 0.99932177, 0.49323243],
     7396                             [- 6.27316188, - 0.00042051, 0.00025762, 7.27274136, 0.99871544, 0.99932187, 0.49323249],
     7397                             [- 6.27316201, - 0.00042045, 0.00025759, 7.27274156, 0.99871562, 0.99932196, 0.49323249],
     7398                             [- 6.27316215, - 0.00042040, 0.00025755, 7.27274175, 0.99871579, 0.99932205, 0.49323255],
     7399                             [- 6.27316229, - 0.00042034, 0.00025752, 7.27274195, 0.99871597, 0.99932214, 0.49323261],
     7400                             [- 6.27316242, - 0.00042028, 0.00025748, 7.27274214, 0.99871614, 0.99932223, 0.49323266],
     7401                             [- 6.27316256, - 0.00042023, 0.00025745, 7.27274233, 0.99871631, 0.99932233, 0.49323261],
     7402                             [- 6.27316270, - 0.00042017, 0.00025741, 7.27274253, 0.99871649, 0.99932242, 0.49323265],
     7403                             [- 6.27316283, - 0.00042011, 0.00025738, 7.27274272, 0.99871666, 0.99932251, 0.49323261],
     7404                             [- 6.27316297, - 0.00042006, 0.00025734, 7.27274291, 0.99871684, 0.99932260, 0.49323268],
     7405                             [- 6.27316311, - 0.00042000, 0.00025731, 7.27274311, 0.99871701, 0.99932269, 0.49323261],
     7406                             [- 6.27316324, - 0.00041994, 0.00025727, 7.27274330, 0.99871719, 0.99932279, 0.49323277],
     7407                             [- 6.27316338, - 0.00041988, 0.00025724, 7.27274349, 0.99871736, 0.99932288, 0.49323278],
     7408                             [- 6.27316351, - 0.00041983, 0.00025720, 7.27274369, 0.99871753, 0.99932297, 0.49323270],
     7409                             [- 6.27316365, - 0.00041977, 0.00025717, 7.27274388, 0.99871771, 0.99932306, 0.49323262],
     7410                             [- 6.27316379, - 0.00041971, 0.00025713, 7.27274407, 0.99871788, 0.99932315, 0.49323267],
     7411                             [- 6.27316392, - 0.00041966, 0.00025710, 7.27274427, 0.99871806, 0.99932325, 0.49323282],
     7412                             [- 6.27316406, - 0.00041960, 0.00025706, 7.27274446, 0.99871823, 0.99932334, 0.49323274],
     7413                             [- 6.27316420, - 0.00041954, 0.00025703, 7.27274465, 0.99871840, 0.99932343, 0.49323276],
     7414                             [- 6.27316433, - 0.00041949, 0.00025699, 7.27274485, 0.99871858, 0.99932352, 0.49323279],
     7415                             [- 6.27316447, - 0.00041943, 0.00025696, 7.27274504, 0.99871875, 0.99932361, 0.49323285],
     7416                             [- 6.27316460, - 0.00041937, 0.00025692, 7.27274523, 0.99871892, 0.99932370, 0.49323286],
     7417                             [- 6.27316474, - 0.00041932, 0.00025689, 7.27274542, 0.99871910, 0.99932380, 0.49323296],
     7418                             [- 6.27316488, - 0.00041926, 0.00025685, 7.27274562, 0.99871927, 0.99932389, 0.49323294],
     7419                             [- 6.27316501, - 0.00041920, 0.00025682, 7.27274581, 0.99871944, 0.99932398, 0.49323292],
     7420                             [- 6.27316515, - 0.00041915, 0.00025678, 7.27274600, 0.99871962, 0.99932407, 0.49323285],
     7421                             [- 6.27316528, - 0.00041909, 0.00025675, 7.27274619, 0.99871979, 0.99932416, 0.49323292],
     7422                             [- 6.27316542, - 0.00041903, 0.00025671, 7.27274639, 0.99871996, 0.99932425, 0.49323303],
     7423                             [- 6.27316555, - 0.00041898, 0.00025668, 7.27274658, 0.99872014, 0.99932435, 0.49323312],
     7424                             [- 6.27316569, - 0.00041892, 0.00025664, 7.27274677, 0.99872031, 0.99932444, 0.49323326],
     7425                             [- 6.27316583, - 0.00041886, 0.00025661, 7.27274696, 0.99872048, 0.99932453, 0.49323308],
     7426                             [- 6.27316596, - 0.00041881, 0.00025658, 7.27274716, 0.99872066, 0.99932462, 0.49323307],
     7427                             [- 6.27316610, - 0.00041875, 0.00025654, 7.27274735, 0.99872083, 0.99932471, 0.49323314],
     7428                             [- 6.27316623, - 0.00041869, 0.00025651, 7.27274754, 0.99872100, 0.99932480, 0.49323312],
     7429                             [- 6.27316637, - 0.00041864, 0.00025647, 7.27274773, 0.99872118, 0.99932489, 0.49323320],
     7430                             [- 6.27316650, - 0.00041858, 0.00025644, 7.27274793, 0.99872135, 0.99932498, 0.49323311],
     7431                             [- 6.27316664, - 0.00041852, 0.00025640, 7.27274812, 0.99872152, 0.99932508, 0.49323311],
     7432                             [- 6.27316677, - 0.00041847, 0.00025637, 7.27274831, 0.99872170, 0.99932517, 0.49323317],
     7433                             [- 6.27316691, - 0.00041841, 0.00025633, 7.27274850, 0.99872187, 0.99932526, 0.49323323],
     7434                             [- 6.27316705, - 0.00041835, 0.00025630, 7.27274869, 0.99872204, 0.99932535, 0.49323325],
     7435                             [- 6.27316718, - 0.00041830, 0.00025626, 7.27274888, 0.99872221, 0.99932544, 0.49323334],
     7436                             [- 6.27316732, - 0.00041824, 0.00025623, 7.27274908, 0.99872239, 0.99932553, 0.49323332],
     7437                             [- 6.27316745, - 0.00041818, 0.00025619, 7.27274927, 0.99872256, 0.99932562, 0.49323331],
     7438                             [- 6.27316759, - 0.00041813, 0.00025616, 7.27274946, 0.99872273, 0.99932571, 0.49323331],
     7439                             [- 6.27316772, - 0.00041807, 0.00025612, 7.27274965, 0.99872290, 0.99932581, 0.49323346],
     7440                             [- 6.27316786, - 0.00041801, 0.00025609, 7.27274984, 0.99872308, 0.99932590, 0.49323331],
     7441                             [- 6.27316799, - 0.00041796, 0.00025606, 7.27275003, 0.99872325, 0.99932599, 0.49323339],
     7442                             [- 6.27316813, - 0.00041790, 0.00025602, 7.27275023, 0.99872342, 0.99932608, 0.49323343],
     7443                             [- 6.27316826, - 0.00041784, 0.00025599, 7.27275042, 0.99872359, 0.99932617, 0.49323337],
     7444                             [- 6.27316840, - 0.00041779, 0.00025595, 7.27275061, 0.99872377, 0.99932626, 0.49323342],
     7445                             [- 6.27316853, - 0.00041773, 0.00025592, 7.27275080, 0.99872394, 0.99932635, 0.49323347],
     7446                             [- 6.27316867, - 0.00041768, 0.00025588, 7.27275099, 0.99872411, 0.99932644, 0.49323353],
     7447                             [- 6.27316880, - 0.00041762, 0.00025585, 7.27275118, 0.99872428, 0.99932653, 0.49323349],
     7448                             [- 6.27316894, - 0.00041756, 0.00025581, 7.27275137, 0.99872446, 0.99932662, 0.49323358],
     7449                             [- 6.27316907, - 0.00041751, 0.00025578, 7.27275157, 0.99872463, 0.99932671, 0.49323354],
     7450                             [- 6.27316921, - 0.00041745, 0.00025574, 7.27275176, 0.99872480, 0.99932681, 0.49323350],
     7451                             [- 6.27316934, - 0.00041739, 0.00025571, 7.27275195, 0.99872497, 0.99932690, 0.49323356],
     7452                             [- 6.27316948, - 0.00041734, 0.00025568, 7.27275214, 0.99872514, 0.99932699, 0.49323355],
     7453                             [- 6.27316961, - 0.00041728, 0.00025564, 7.27275233, 0.99872532, 0.99932708, 0.49323359],
     7454                             [- 6.27316974, - 0.00041722, 0.00025561, 7.27275252, 0.99872549, 0.99932717, 0.49323360],
     7455                             [- 6.27316988, - 0.00041717, 0.00025557, 7.27275271, 0.99872566, 0.99932726, 0.49323362],
     7456                             [- 6.27317001, - 0.00041711, 0.00025554, 7.27275290, 0.99872583, 0.99932735, 0.49323369],
     7457                             [- 6.27317015, - 0.00041706, 0.00025550, 7.27275309, 0.99872600, 0.99932744, 0.49323369],
     7458                             [- 6.27317028, - 0.00041700, 0.00025547, 7.27275328, 0.99872617, 0.99932753, 0.49323368],
     7459                             [- 6.27317042, - 0.00041694, 0.00025543, 7.27275347, 0.99872635, 0.99932762, 0.49323375],
     7460                             [- 6.27317055, - 0.00041689, 0.00025540, 7.27275366, 0.99872652, 0.99932771, 0.49323378],
     7461                             [- 6.27317069, - 0.00041683, 0.00025537, 7.27275385, 0.99872669, 0.99932780, 0.49323373],
     7462                             [- 6.27317082, - 0.00041678, 0.00025533, 7.27275405, 0.99872686, 0.99932789, 0.49323370],
     7463                             [- 6.27317095, - 0.00041672, 0.00025530, 7.27275424, 0.99872703, 0.99932798, 0.49323379],
     7464                             [- 6.27317109, - 0.00041666, 0.00025526, 7.27275443, 0.99872720, 0.99932807, 0.49323375],
     7465                             [- 6.27317122, - 0.00041661, 0.00025523, 7.27275462, 0.99872738, 0.99932816, 0.49323392],
     7466                             [- 6.27317136, - 0.00041655, 0.00025519, 7.27275481, 0.99872755, 0.99932826, 0.49323391],
     7467                             [- 6.27317149, - 0.00041649, 0.00025516, 7.27275500, 0.99872772, 0.99932835, 0.49323391],
     7468                             [- 6.27317163, - 0.00041644, 0.00025512, 7.27275519, 0.99872789, 0.99932844, 0.49323388],
     7469                             [- 6.27317176, - 0.00041638, 0.00025509, 7.27275538, 0.99872806, 0.99932853, 0.49323395],
     7470                             [- 6.27317189, - 0.00041633, 0.00025506, 7.27275557, 0.99872823, 0.99932862, 0.49323385],
     7471                             [- 6.27317203, - 0.00041627, 0.00025502, 7.27275576, 0.99872840, 0.99932871, 0.49323392],
     7472                             [- 6.27317216, - 0.00041621, 0.00025499, 7.27275595, 0.99872857, 0.99932880, 0.49323402],
     7473                             [- 6.27317230, - 0.00041616, 0.00025495, 7.27275614, 0.99872874, 0.99932889, 0.49323405],
     7474                             [- 6.27317243, - 0.00041610, 0.00025492, 7.27275633, 0.99872892, 0.99932898, 0.49323405],
     7475                             [- 6.27317256, - 0.00041605, 0.00025488, 7.27275652, 0.99872909, 0.99932907, 0.49323408],
     7476                             [- 6.27317270, - 0.00041599, 0.00025485, 7.27275671, 0.99872926, 0.99932916, 0.49323410],
     7477                             [- 6.27317283, - 0.00041594, 0.00025482, 7.27275690, 0.99872943, 0.99932925, 0.49323410],
     7478                             [- 6.27317297, - 0.00041588, 0.00025478, 7.27275709, 0.99872960, 0.99932934, 0.49323416],
     7479                             [- 6.27317310, - 0.00041582, 0.00025475, 7.27275728, 0.99872977, 0.99932943, 0.49323413],
     7480                             [- 6.27317323, - 0.00041577, 0.00025471, 7.27275746, 0.99872994, 0.99932952, 0.49323409],
     7481                             [- 6.27317337, - 0.00041571, 0.00025468, 7.27275765, 0.99873011, 0.99932961, 0.49323425],
     7482                             [- 6.27317350, - 0.00041566, 0.00025465, 7.27275784, 0.99873028, 0.99932970, 0.49323426],
     7483                             [- 6.27317363, - 0.00041560, 0.00025461, 7.27275803, 0.99873045, 0.99932979, 0.49323421],
     7484                             [- 6.27317377, - 0.00041554, 0.00025458, 7.27275822, 0.99873062, 0.99932988, 0.49323430],
     7485                             [- 6.27317390, - 0.00041549, 0.00025454, 7.27275841, 0.99873079, 0.99932997, 0.49323422],
     7486                             [- 6.27317403, - 0.00041543, 0.00025451, 7.27275860, 0.99873096, 0.99933006, 0.49323429],
     7487                             [- 6.27317417, - 0.00041538, 0.00025447, 7.27275879, 0.99873113, 0.99933015, 0.49323420],
     7488                             [- 6.27317430, - 0.00041532, 0.00025444, 7.27275898, 0.99873130, 0.99933024, 0.49323427],
     7489                             [- 6.27317443, - 0.00041527, 0.00025441, 7.27275917, 0.99873147, 0.99933033, 0.49323431],
     7490                             [- 6.27317457, - 0.00041521, 0.00025437, 7.27275936, 0.99873164, 0.99933042, 0.49323443],
     7491                             [- 6.27317470, - 0.00041515, 0.00025434, 7.27275955, 0.99873181, 0.99933051, 0.49323428],
     7492                             [- 6.27317483, - 0.00041510, 0.00025430, 7.27275974, 0.99873198, 0.99933060, 0.49323443],
     7493                             [- 6.27317497, - 0.00041504, 0.00025427, 7.27275992, 0.99873215, 0.99933069, 0.49323437],
     7494                             [- 6.27317510, - 0.00041499, 0.00025424, 7.27276011, 0.99873232, 0.99933078, 0.49323454],
     7495                             [- 6.27317523, - 0.00041493, 0.00025420, 7.27276030, 0.99873249, 0.99933087, 0.49323446],
     7496                             [- 6.27317537, - 0.00041488, 0.00025417, 7.27276049, 0.99873266, 0.99933096, 0.49323436],
     7497                             [- 6.27317550, - 0.00041482, 0.00025413, 7.27276068, 0.99873283, 0.99933105, 0.49323455],
     7498                             [- 6.27317563, - 0.00041476, 0.00025410, 7.27276087, 0.99873300, 0.99933114, 0.49323443],
     7499                             [- 6.27317577, - 0.00041471, 0.00025406, 7.27276106, 0.99873317, 0.99933123, 0.49323444],
     7500                             [- 6.27317590, - 0.00041465, 0.00025403, 7.27276124, 0.99873334, 0.99933132, 0.49323452],
     7501                             [- 6.27317603, - 0.00041460, 0.00025400, 7.27276143, 0.99873351, 0.99933140, 0.49323465],
     7502                             [- 6.27317616, - 0.00041454, 0.00025396, 7.27276162, 0.99873368, 0.99933149, 0.49323452],
     7503                             [- 6.27317630, - 0.00041449, 0.00025393, 7.27276181, 0.99873385, 0.99933158, 0.49323459],
     7504                             [- 6.27317643, - 0.00041443, 0.00025389, 7.27276200, 0.99873402, 0.99933167, 0.49323462],
     7505                             [- 6.27317656, - 0.00041438, 0.00025386, 7.27276219, 0.99873419, 0.99933176, 0.49323457],
     7506                             [- 6.27317670, - 0.00041432, 0.00025383, 7.27276237, 0.99873436, 0.99933185, 0.49323468],
     7507                             [- 6.27317683, - 0.00041427, 0.00025379, 7.27276256, 0.99873453, 0.99933194, 0.49323479],
     7508                             [- 6.27317696, - 0.00041421, 0.00025376, 7.27276275, 0.99873470, 0.99933203, 0.49323481],
     7509                             [- 6.27317709, - 0.00041415, 0.00025372, 7.27276294, 0.99873487, 0.99933212, 0.49323465],
     7510                             [- 6.27317723, - 0.00041410, 0.00025369, 7.27276313, 0.99873504, 0.99933221, 0.49323467],
     7511                             [- 6.27317736, - 0.00041404, 0.00025366, 7.27276332, 0.99873521, 0.99933230, 0.49323474],
     7512                             [- 6.27317749, - 0.00041399, 0.00025362, 7.27276350, 0.99873538, 0.99933239, 0.49323475],
     7513                             [- 6.27317762, - 0.00041393, 0.00025359, 7.27276369, 0.99873555, 0.99933248, 0.49323489],
     7514                             [- 6.27317776, - 0.00041388, 0.00025355, 7.27276388, 0.99873572, 0.99933257, 0.49323478],
     7515                             [- 6.27317789, - 0.00041382, 0.00025352, 7.27276407, 0.99873588, 0.99933266, 0.49323490],
     7516                             [- 6.27317802, - 0.00041377, 0.00025349, 7.27276425, 0.99873605, 0.99933275, 0.49323500],
     7517                             [- 6.27317815, - 0.00041371, 0.00025345, 7.27276444, 0.99873622, 0.99933283, 0.49323486],
     7518                             [- 6.27317829, - 0.00041366, 0.00025342, 7.27276463, 0.99873639, 0.99933292, 0.49323491],
     7519                             [- 6.27317842, - 0.00041360, 0.00025339, 7.27276482, 0.99873656, 0.99933301, 0.49323473],
     7520                             [- 6.27317855, - 0.00041355, 0.00025335, 7.27276500, 0.99873673, 0.99933310, 0.49323495],
     7521                             [- 6.27317868, - 0.00041349, 0.00025332, 7.27276519, 0.99873690, 0.99933319, 0.49323495],
     7522                             [- 6.27317882, - 0.00041344, 0.00025328, 7.27276538, 0.99873707, 0.99933328, 0.49323487],
     7523                             [- 6.27317895, - 0.00041338, 0.00025325, 7.27276557, 0.99873724, 0.99933337, 0.49323500],
     7524                             [- 6.27317908, - 0.00041333, 0.00025322, 7.27276575, 0.99873740, 0.99933346, 0.49323493],
     7525                             [- 6.27317921, - 0.00041327, 0.00025318, 7.27276594, 0.99873757, 0.99933355, 0.49323497],
     7526                             [- 6.27317934, - 0.00041321, 0.00025315, 7.27276613, 0.99873774, 0.99933364, 0.49323507],
     7527                             [- 6.27317948, - 0.00041316, 0.00025311, 7.27276632, 0.99873791, 0.99933373, 0.49323512],
     7528                             [- 6.27317961, - 0.00041310, 0.00025308, 7.27276650, 0.99873808, 0.99933381, 0.49323500],
     7529                             [- 6.27317974, - 0.00041305, 0.00025305, 7.27276669, 0.99873825, 0.99933390, 0.49323510],
     7530                             [- 6.27317987, - 0.00041299, 0.00025301, 7.27276688, 0.99873842, 0.99933399, 0.49323520],
     7531                             [- 6.27318000, - 0.00041294, 0.00025298, 7.27276706, 0.99873858, 0.99933408, 0.49323515],
     7532                             [- 6.27318014, - 0.00041288, 0.00025295, 7.27276725, 0.99873875, 0.99933417, 0.49323523],
     7533                             [- 6.27318027, - 0.00041283, 0.00025291, 7.27276744, 0.99873892, 0.99933426, 0.49323516],
     7534                             [- 6.27318040, - 0.00041277, 0.00025288, 7.27276762, 0.99873909, 0.99933435, 0.49323517],
     7535                             [- 6.27318053, - 0.00041272, 0.00025284, 7.27276781, 0.99873926, 0.99933444, 0.49323519],
     7536                             [- 6.27318066, - 0.00041266, 0.00025281, 7.27276800, 0.99873942, 0.99933453, 0.49323515],
     7537                             [- 6.27318079, - 0.00041261, 0.00025278, 7.27276818, 0.99873959, 0.99933461, 0.49323538],
     7538                             [- 6.27318093, - 0.00041255, 0.00025274, 7.27276837, 0.99873976, 0.99933470, 0.49323529],
     7539                             [- 6.27318106, - 0.00041250, 0.00025271, 7.27276856, 0.99873993, 0.99933479, 0.49323537],
     7540                             [- 6.27318119, - 0.00041244, 0.00025268, 7.27276874, 0.99874010, 0.99933488, 0.49323534],
     7541                             [- 6.27318132, - 0.00041239, 0.00025264, 7.27276893, 0.99874026, 0.99933497, 0.49323537],
     7542                             [- 6.27318145, - 0.00041233, 0.00025261, 7.27276912, 0.99874043, 0.99933506, 0.49323540],
     7543                             [- 6.27318158, - 0.00041228, 0.00025258, 7.27276930, 0.99874060, 0.99933515, 0.49323539],
     7544                             [- 6.27318171, - 0.00041222, 0.00025254, 7.27276949, 0.99874077, 0.99933523, 0.49323536],
     7545                             [- 6.27318185, - 0.00041217, 0.00025251, 7.27276968, 0.99874094, 0.99933532, 0.49323541],
     7546                             [- 6.27318198, - 0.00041211, 0.00025247, 7.27276986, 0.99874110, 0.99933541, 0.49323529],
     7547                             [- 6.27318211, - 0.00041206, 0.00025244, 7.27277005, 0.99874127, 0.99933550, 0.49323554],
     7548                             [- 6.27318224, - 0.00041200, 0.00025241, 7.27277023, 0.99874144, 0.99933559, 0.49323556],
     7549                             [- 6.27318237, - 0.00041195, 0.00025237, 7.27277042, 0.99874161, 0.99933568, 0.49323548],
     7550                             [- 6.27318250, - 0.00041190, 0.00025234, 7.27277061, 0.99874177, 0.99933577, 0.49323555],
     7551                             [- 6.27318263, - 0.00041184, 0.00025231, 7.27277079, 0.99874194, 0.99933585, 0.49323555],
     7552                             [- 6.27318276, - 0.00041179, 0.00025227, 7.27277098, 0.99874211, 0.99933594, 0.49323566],
     7553                             [- 6.27318290, - 0.00041173, 0.00025224, 7.27277117, 0.99874228, 0.99933603, 0.49323552],
     7554                             [- 6.27318303, - 0.00041168, 0.00025221, 7.27277135, 0.99874244, 0.99933612, 0.49323561],
     7555                             [- 6.27318316, - 0.00041162, 0.00025217, 7.27277154, 0.99874261, 0.99933621, 0.49323566],
     7556                             [- 6.27318329, - 0.00041157, 0.00025214, 7.27277172, 0.99874278, 0.99933630, 0.49323555],
     7557                             [- 6.27318342, - 0.00041151, 0.00025210, 7.27277191, 0.99874294, 0.99933638, 0.49323560],
     7558                             [- 6.27318355, - 0.00041146, 0.00025207, 7.27277209, 0.99874311, 0.99933647, 0.49323570],
     7559                             [- 6.27318368, - 0.00041140, 0.00025204, 7.27277228, 0.99874328, 0.99933656, 0.49323566],
     7560                             [- 6.27318381, - 0.00041135, 0.00025200, 7.27277246, 0.99874345, 0.99933665, 0.49323580],
     7561                             [- 6.27318394, - 0.00041129, 0.00025197, 7.27277265, 0.99874361, 0.99933674, 0.49323573],
     7562                             [- 6.27318407, - 0.00041124, 0.00025194, 7.27277284, 0.99874378, 0.99933682, 0.49323588],
     7563                             [- 6.27318420, - 0.00041118, 0.00025190, 7.27277302, 0.99874395, 0.99933691, 0.49323574],
     7564                             [- 6.27318434, - 0.00041113, 0.00025187, 7.27277321, 0.99874411, 0.99933700, 0.49323584],
     7565                             [- 6.27318447, - 0.00041107, 0.00025184, 7.27277339, 0.99874428, 0.99933709, 0.49323574],
     7566                             [- 6.27318460, - 0.00041102, 0.00025180, 7.27277358, 0.99874445, 0.99933718, 0.49323586],
     7567                             [- 6.27318473, - 0.00041097, 0.00025177, 7.27277376, 0.99874461, 0.99933726, 0.49323593],
     7568                             [- 6.27318486, - 0.00041091, 0.00025174, 7.27277395, 0.99874478, 0.99933735, 0.49323592],
     7569                             [- 6.27318499, - 0.00041086, 0.00025170, 7.27277413, 0.99874495, 0.99933744, 0.49323598],
     7570                             [- 6.27318512, - 0.00041080, 0.00025167, 7.27277432, 0.99874511, 0.99933753, 0.49323589],
     7571                             [- 6.27318525, - 0.00041075, 0.00025164, 7.27277450, 0.99874528, 0.99933762, 0.49323587],
     7572                             [- 6.27318538, - 0.00041069, 0.00025160, 7.27277469, 0.99874545, 0.99933770, 0.49323605],
     7573                             [- 6.27318551, - 0.00041064, 0.00025157, 7.27277487, 0.99874561, 0.99933779, 0.49323594],
     7574                             [- 6.27318564, - 0.00041058, 0.00025154, 7.27277506, 0.99874578, 0.99933788, 0.49323599],
     7575                             [- 6.27318577, - 0.00041053, 0.00025150, 7.27277524, 0.99874595, 0.99933797, 0.49323604],
     7576                             [- 6.27318590, - 0.00041048, 0.00025147, 7.27277543, 0.99874611, 0.99933806, 0.49323602],
     7577                             [- 6.27318603, - 0.00041042, 0.00025144, 7.27277561, 0.99874628, 0.99933814, 0.49323601],
     7578                             [- 6.27318616, - 0.00041037, 0.00025140, 7.27277580, 0.99874645, 0.99933823, 0.49323601],
     7579                             [- 6.27318629, - 0.00041031, 0.00025137, 7.27277598, 0.99874661, 0.99933832, 0.49323608],
     7580                             [- 6.27318642, - 0.00041026, 0.00025134, 7.27277616, 0.99874678, 0.99933841, 0.49323616],
     7581                             [- 6.27318655, - 0.00041020, 0.00025130, 7.27277635, 0.99874694, 0.99933849, 0.49323617],
     7582                             [- 6.27318668, - 0.00041015, 0.00025127, 7.27277653, 0.99874711, 0.99933858, 0.49323615],
     7583                             [- 6.27318681, - 0.00041009, 0.00025124, 7.27277672, 0.99874728, 0.99933867, 0.49323614],
     7584                             [- 6.27318694, - 0.00041004, 0.00025120, 7.27277690, 0.99874744, 0.99933876, 0.49323615],
     7585                             [- 6.27318707, - 0.00040999, 0.00025117, 7.27277709, 0.99874761, 0.99933884, 0.49323610],
     7586                             [- 6.27318720, - 0.00040993, 0.00025114, 7.27277727, 0.99874777, 0.99933893, 0.49323628],
     7587                             [- 6.27318733, - 0.00040988, 0.00025110, 7.27277746, 0.99874794, 0.99933902, 0.49323634],
     7588                             [- 6.27318746, - 0.00040982, 0.00025107, 7.27277764, 0.99874811, 0.99933911, 0.49323627],
     7589                             [- 6.27318759, - 0.00040977, 0.00025104, 7.27277782, 0.99874827, 0.99933919, 0.49323622],
     7590                             [- 6.27318772, - 0.00040971, 0.00025100, 7.27277801, 0.99874844, 0.99933928, 0.49323631],
     7591                             [- 6.27318785, - 0.00040966, 0.00025097, 7.27277819, 0.99874860, 0.99933937, 0.49323628],
     7592                             [- 6.27318798, - 0.00040961, 0.00025094, 7.27277838, 0.99874877, 0.99933946, 0.49323627],
     7593                             [- 6.27318811, - 0.00040955, 0.00025090, 7.27277856, 0.99874893, 0.99933954, 0.49323637],
     7594                             [- 6.27318824, - 0.00040950, 0.00025087, 7.27277874, 0.99874910, 0.99933963, 0.49323632],
     7595                             [- 6.27318837, - 0.00040944, 0.00025084, 7.27277893, 0.99874927, 0.99933972, 0.49323640],
     7596                             [- 6.27318850, - 0.00040939, 0.00025080, 7.27277911, 0.99874943, 0.99933981, 0.49323651],
     7597                             [- 6.27318863, - 0.00040934, 0.00025077, 7.27277929, 0.99874960, 0.99933989, 0.49323644],
     7598                             [- 6.27318876, - 0.00040928, 0.00025074, 7.27277948, 0.99874976, 0.99933998, 0.49323637],
     7599                             [- 6.27318889, - 0.00040923, 0.00025070, 7.27277966, 0.99874993, 0.99934007, 0.49323647],
     7600                             [- 6.27318902, - 0.00040917, 0.00025067, 7.27277985, 0.99875009, 0.99934016, 0.49323644],
     7601                             [- 6.27318915, - 0.00040912, 0.00025064, 7.27278003, 0.99875026, 0.99934024, 0.49323643],
     7602                             [- 6.27318928, - 0.00040906, 0.00025060, 7.27278021, 0.99875042, 0.99934033, 0.49323648],
     7603                             [- 6.27318941, - 0.00040901, 0.00025057, 7.27278040, 0.99875059, 0.99934042, 0.49323655],
     7604                             [- 6.27318954, - 0.00040896, 0.00025054, 7.27278058, 0.99875075, 0.99934050, 0.49323657],
     7605                             [- 6.27318967, - 0.00040890, 0.00025051, 7.27278076, 0.99875092, 0.99934059, 0.49323664],
     7606                             [- 6.27318979, - 0.00040885, 0.00025047, 7.27278095, 0.99875108, 0.99934068, 0.49323657],
     7607                             [- 6.27318992, - 0.00040879, 0.00025044, 7.27278113, 0.99875125, 0.99934077, 0.49323666],
     7608                             [- 6.27319005, - 0.00040874, 0.00025041, 7.27278131, 0.99875141, 0.99934085, 0.49323663],
     7609                             [- 6.27319018, - 0.00040869, 0.00025037, 7.27278150, 0.99875158, 0.99934094, 0.49323672],
     7610                             [- 6.27319031, - 0.00040863, 0.00025034, 7.27278168, 0.99875174, 0.99934103, 0.49323665],
     7611                             [- 6.27319044, - 0.00040858, 0.00025031, 7.27278186, 0.99875191, 0.99934111, 0.49323670],
     7612                             [- 6.27319057, - 0.00040852, 0.00025027, 7.27278204, 0.99875207, 0.99934120, 0.49323671],
     7613                             [- 6.27319070, - 0.00040847, 0.00025024, 7.27278223, 0.99875224, 0.99934129, 0.49323673],
     7614                             [- 6.27319083, - 0.00040842, 0.00025021, 7.27278241, 0.99875240, 0.99934137, 0.49323684],
     7615                             [- 6.27319096, - 0.00040836, 0.00025017, 7.27278259, 0.99875257, 0.99934146, 0.49323687],
     7616                             [- 6.27319109, - 0.00040831, 0.00025014, 7.27278278, 0.99875273, 0.99934155, 0.49323685],
     7617                             [- 6.27319121, - 0.00040826, 0.00025011, 7.27278296, 0.99875290, 0.99934164, 0.49323688],
     7618                             [- 6.27319134, - 0.00040820, 0.00025008, 7.27278314, 0.99875306, 0.99934172, 0.49323675],
     7619                             [- 6.27319147, - 0.00040815, 0.00025004, 7.27278332, 0.99875322, 0.99934181, 0.49323678],
     7620                             [- 6.27319160, - 0.00040809, 0.00025001, 7.27278351, 0.99875339, 0.99934190, 0.49323687],
     7621                             [- 6.27319173, - 0.00040804, 0.00024998, 7.27278369, 0.99875355, 0.99934198, 0.49323686],
     7622                             [- 6.27319186, - 0.00040799, 0.00024994, 7.27278387, 0.99875372, 0.99934207, 0.49323698],
     7623                             [- 6.27319199, - 0.00040793, 0.00024991, 7.27278405, 0.99875388, 0.99934216, 0.49323692],
     7624                             [- 6.27319212, - 0.00040788, 0.00024988, 7.27278424, 0.99875405, 0.99934224, 0.49323708],
     7625                             [- 6.27319224, - 0.00040783, 0.00024985, 7.27278442, 0.99875421, 0.99934233, 0.49323704],
     7626                             [- 6.27319237, - 0.00040777, 0.00024981, 7.27278460, 0.99875437, 0.99934242, 0.49323700],
     7627                             [- 6.27319250, - 0.00040772, 0.00024978, 7.27278478, 0.99875454, 0.99934250, 0.49323693],
     7628                             [- 6.27319263, - 0.00040766, 0.00024975, 7.27278497, 0.99875470, 0.99934259, 0.49323702],
     7629                             [- 6.27319276, - 0.00040761, 0.00024971, 7.27278515, 0.99875487, 0.99934268, 0.49323716],
     7630                             [- 6.27319289, - 0.00040756, 0.00024968, 7.27278533, 0.99875503, 0.99934276, 0.49323703],
     7631                             [- 6.27319302, - 0.00040750, 0.00024965, 7.27278551, 0.99875519, 0.99934285, 0.49323706],
     7632                             [- 6.27319314, - 0.00040745, 0.00024961, 7.27278569, 0.99875536, 0.99934294, 0.49323706],
     7633                             [- 6.27319327, - 0.00040740, 0.00024958, 7.27278588, 0.99875552, 0.99934302, 0.49323714],
     7634                             [- 6.27319340, - 0.00040734, 0.00024955, 7.27278606, 0.99875569, 0.99934311, 0.49323706],
     7635                             [- 6.27319353, - 0.00040729, 0.00024952, 7.27278624, 0.99875585, 0.99934320, 0.49323708],
     7636                             [- 6.27319366, - 0.00040724, 0.00024948, 7.27278642, 0.99875601, 0.99934328, 0.49323729],
     7637                             [- 6.27319379, - 0.00040718, 0.00024945, 7.27278660, 0.99875618, 0.99934337, 0.49323724],
     7638                             [- 6.27319391, - 0.00040713, 0.00024942, 7.27278679, 0.99875634, 0.99934345, 0.49323721],
     7639                             [- 6.27319404, - 0.00040707, 0.00024938, 7.27278697, 0.99875650, 0.99934354, 0.49323728],
     7640                             [- 6.27319417, - 0.00040702, 0.00024935, 7.27278715, 0.99875667, 0.99934363, 0.49323732],
     7641                             [- 6.27319430, - 0.00040697, 0.00024932, 7.27278733, 0.99875683, 0.99934371, 0.49323735],
     7642                             [- 6.27319443, - 0.00040691, 0.00024929, 7.27278751, 0.99875700, 0.99934380, 0.49323736],
     7643                             [- 6.27319455, - 0.00040686, 0.00024925, 7.27278769, 0.99875716, 0.99934389, 0.49323725],
     7644                             [- 6.27319468, - 0.00040681, 0.00024922, 7.27278788, 0.99875732, 0.99934397, 0.49323738],
     7645                             [- 6.27319481, - 0.00040675, 0.00024919, 7.27278806, 0.99875749, 0.99934406, 0.49323735],
     7646                             [- 6.27319494, - 0.00040670, 0.00024916, 7.27278824, 0.99875765, 0.99934414, 0.49323731],
     7647                             [- 6.27319507, - 0.00040665, 0.00024912, 7.27278842, 0.99875781, 0.99934423, 0.49323743],
     7648                             [- 6.27319519, - 0.00040659, 0.00024909, 7.27278860, 0.99875798, 0.99934432, 0.49323750],
     7649                             [- 6.27319532, - 0.00040654, 0.00024906, 7.27278878, 0.99875814, 0.99934440, 0.49323738],
     7650                             [- 6.27319545, - 0.00040649, 0.00024902, 7.27278896, 0.99875830, 0.99934449, 0.49323751],
     7651                             [- 6.27319558, - 0.00040643, 0.00024899, 7.27278914, 0.99875846, 0.99934457, 0.49323752],
     7652                             [- 6.27319571, - 0.00040638, 0.00024896, 7.27278933, 0.99875863, 0.99934466, 0.49323741],
     7653                             [- 6.27319583, - 0.00040633, 0.00024893, 7.27278951, 0.99875879, 0.99934475, 0.49323749],
     7654                             [- 6.27319596, - 0.00040627, 0.00024889, 7.27278969, 0.99875895, 0.99934483, 0.49323755],
     7655                             [- 6.27319609, - 0.00040622, 0.00024886, 7.27278987, 0.99875912, 0.99934492, 0.49323762],
     7656                             [- 6.27319622, - 0.00040617, 0.00024883, 7.27279005, 0.99875928, 0.99934501, 0.49323759],
     7657                             [- 6.27319634, - 0.00040611, 0.00024880, 7.27279023, 0.99875944, 0.99934509, 0.49323760],
     7658                             [- 6.27319647, - 0.00040606, 0.00024876, 7.27279041, 0.99875960, 0.99934518, 0.49323757],
     7659                             [- 6.27319660, - 0.00040601, 0.00024873, 7.27279059, 0.99875977, 0.99934526, 0.49323761],
     7660                             [- 6.27319673, - 0.00040595, 0.00024870, 7.27279077, 0.99875993, 0.99934535, 0.49323762],
     7661                             [- 6.27319685, - 0.00040590, 0.00024867, 7.27279095, 0.99876009, 0.99934543, 0.49323771],
     7662                             [- 6.27319698, - 0.00040585, 0.00024863, 7.27279113, 0.99876026, 0.99934552, 0.49323775],
     7663                             [- 6.27319711, - 0.00040579, 0.00024860, 7.27279131, 0.99876042, 0.99934561, 0.49323777],
     7664                             [- 6.27319724, - 0.00040574, 0.00024857, 7.27279149, 0.99876058, 0.99934569, 0.49323761],
     7665                             [- 6.27319736, - 0.00040569, 0.00024853, 7.27279168, 0.99876074, 0.99934578, 0.49323772],
     7666                             [- 6.27319749, - 0.00040563, 0.00024850, 7.27279186, 0.99876091, 0.99934586, 0.49323767],
     7667                             [- 6.27319762, - 0.00040558, 0.00024847, 7.27279204, 0.99876107, 0.99934595, 0.49323779],
     7668                             [- 6.27319774, - 0.00040553, 0.00024844, 7.27279222, 0.99876123, 0.99934603, 0.49323782],
     7669                             [- 6.27319787, - 0.00040547, 0.00024840, 7.27279240, 0.99876139, 0.99934612, 0.49323776],
     7670                             [- 6.27319800, - 0.00040542, 0.00024837, 7.27279258, 0.99876156, 0.99934621, 0.49323782],
     7671                             [- 6.27319813, - 0.00040537, 0.00024834, 7.27279276, 0.99876172, 0.99934629, 0.49323787],
     7672                             [- 6.27319825, - 0.00040532, 0.00024831, 7.27279294, 0.99876188, 0.99934638, 0.49323783],
     7673                             [- 6.27319838, - 0.00040526, 0.00024827, 7.27279312, 0.99876204, 0.99934646, 0.49323795],
     7674                             [- 6.27319851, - 0.00040521, 0.00024824, 7.27279330, 0.99876220, 0.99934655, 0.49323788],
     7675                             [- 6.27319863, - 0.00040516, 0.00024821, 7.27279348, 0.99876237, 0.99934663, 0.49323798],
     7676                             [- 6.27319876, - 0.00040510, 0.00024818, 7.27279366, 0.99876253, 0.99934672, 0.49323799],
     7677                             [- 6.27319889, - 0.00040505, 0.00024814, 7.27279384, 0.99876269, 0.99934681, 0.49323794],
     7678                             [- 6.27319901, - 0.00040500, 0.00024811, 7.27279402, 0.99876285, 0.99934689, 0.49323812],
     7679                             [- 6.27319914, - 0.00040494, 0.00024808, 7.27279420, 0.99876301, 0.99934698, 0.49323800],
     7680                             [- 6.27319927, - 0.00040489, 0.00024805, 7.27279438, 0.99876318, 0.99934706, 0.49323799],
     7681                             [- 6.27319939, - 0.00040484, 0.00024801, 7.27279456, 0.99876334, 0.99934715, 0.49323807],
     7682                             [- 6.27319952, - 0.00040479, 0.00024798, 7.27279474, 0.99876350, 0.99934723, 0.49323804],
     7683                             [- 6.27319965, - 0.00040473, 0.00024795, 7.27279492, 0.99876366, 0.99934732, 0.49323807],
     7684                             [- 6.27319977, - 0.00040468, 0.00024792, 7.27279510, 0.99876382, 0.99934740, 0.49323796],
     7685                             [- 6.27319990, - 0.00040463, 0.00024788, 7.27279527, 0.99876398, 0.99934749, 0.49323820],
     7686                             [- 6.27320003, - 0.00040457, 0.00024785, 7.27279545, 0.99876415, 0.99934757, 0.49323815],
     7687                             [- 6.27320015, - 0.00040452, 0.00024782, 7.27279563, 0.99876431, 0.99934766, 0.49323813],
     7688                             [- 6.27320028, - 0.00040447, 0.00024779, 7.27279581, 0.99876447, 0.99934774, 0.49323819],
     7689                             [- 6.27320041, - 0.00040442, 0.00024776, 7.27279599, 0.99876463, 0.99934783, 0.49323817],
     7690                             [- 6.27320053, - 0.00040436, 0.00024772, 7.27279617, 0.99876479, 0.99934791, 0.49323809],
     7691                             [- 6.27320066, - 0.00040431, 0.00024769, 7.27279635, 0.99876495, 0.99934800, 0.49323823],
     7692                             [- 6.27320079, - 0.00040426, 0.00024766, 7.27279653, 0.99876511, 0.99934809, 0.49323818],
     7693                             [- 6.27320091, - 0.00040420, 0.00024763, 7.27279671, 0.99876528, 0.99934817, 0.49323822],
     7694                             [- 6.27320104, - 0.00040415, 0.00024759, 7.27279689, 0.99876544, 0.99934826, 0.49323828],
     7695                             [- 6.27320117, - 0.00040410, 0.00024756, 7.27279707, 0.99876560, 0.99934834, 0.49323852],
     7696                             [- 6.27320129, - 0.00040405, 0.00024753, 7.27279725, 0.99876576, 0.99934843, 0.49323826],
     7697                             [- 6.27320142, - 0.00040399, 0.00024750, 7.27279743, 0.99876592, 0.99934851, 0.49323833],
     7698                             [- 6.27320154, - 0.00040394, 0.00024746, 7.27279760, 0.99876608, 0.99934860, 0.49323832],
     7699                             [- 6.27320167, - 0.00040389, 0.00024743, 7.27279778, 0.99876624, 0.99934868, 0.49323839],
     7700                             [- 6.27320180, - 0.00040383, 0.00024740, 7.27279796, 0.99876640, 0.99934877, 0.49323831],
     7701                             [- 6.27320192, - 0.00040378, 0.00024737, 7.27279814, 0.99876656, 0.99934885, 0.49323847],
     7702                             [- 6.27320205, - 0.00040373, 0.00024733, 7.27279832, 0.99876673, 0.99934894, 0.49323846],
     7703                             [- 6.27320217, - 0.00040368, 0.00024730, 7.27279850, 0.99876689, 0.99934902, 0.49323853],
     7704                             [- 6.27320230, - 0.00040362, 0.00024727, 7.27279868, 0.99876705, 0.99934911, 0.49323849],
     7705                             [- 6.27320243, - 0.00040357, 0.00024724, 7.27279886, 0.99876721, 0.99934919, 0.49323847],
     7706                             [- 6.27320255, - 0.00040352, 0.00024721, 7.27279903, 0.99876737, 0.99934928, 0.49323843],
     7707                             [- 6.27320268, - 0.00040347, 0.00024717, 7.27279921, 0.99876753, 0.99934936, 0.49323854],
     7708                             [- 6.27320280, - 0.00040341, 0.00024714, 7.27279939, 0.99876769, 0.99934944, 0.49323862],
     7709                             [- 6.27320293, - 0.00040336, 0.00024711, 7.27279957, 0.99876785, 0.99934953, 0.49323861],
     7710                             [- 6.27320306, - 0.00040331, 0.00024708, 7.27279975, 0.99876801, 0.99934961, 0.49323862],
     7711                             [- 6.27320318, - 0.00040326, 0.00024704, 7.27279993, 0.99876817, 0.99934970, 0.49323859],
     7712                             [- 6.27320331, - 0.00040320, 0.00024701, 7.27280010, 0.99876833, 0.99934978, 0.49323864],
     7713                             [- 6.27320343, - 0.00040315, 0.00024698, 7.27280028, 0.99876849, 0.99934987, 0.49323872],
     7714                             [- 6.27320356, - 0.00040310, 0.00024695, 7.27280046, 0.99876865, 0.99934995, 0.49323853],
     7715                             [- 6.27320368, - 0.00040305, 0.00024692, 7.27280064, 0.99876881, 0.99935004, 0.49323874],
     7716                             [- 6.27320381, - 0.00040299, 0.00024688, 7.27280082, 0.99876897, 0.99935012, 0.49323866],
     7717                             [- 6.27320394, - 0.00040294, 0.00024685, 7.27280099, 0.99876913, 0.99935021, 0.49323878],
     7718                             [- 6.27320406, - 0.00040289, 0.00024682, 7.27280117, 0.99876929, 0.99935029, 0.49323872],
     7719                             [- 6.27320419, - 0.00040284, 0.00024679, 7.27280135, 0.99876945, 0.99935038, 0.49323872],
     7720                             [- 6.27320431, - 0.00040278, 0.00024676, 7.27280153, 0.99876961, 0.99935046, 0.49323876],
     7721                             [- 6.27320444, - 0.00040273, 0.00024672, 7.27280171, 0.99876978, 0.99935055, 0.49323884],
     7722                             [- 6.27320456, - 0.00040268, 0.00024669, 7.27280188, 0.99876994, 0.99935063, 0.49323875],
     7723                             [- 6.27320469, - 0.00040263, 0.00024666, 7.27280206, 0.99877010, 0.99935071, 0.49323881],
     7724                             [- 6.27320481, - 0.00040257, 0.00024663, 7.27280224, 0.99877026, 0.99935080, 0.49323883],
     7725                             [- 6.27320494, - 0.00040252, 0.00024659, 7.27280242, 0.99877042, 0.99935088, 0.49323893],
     7726                             [- 6.27320506, - 0.00040247, 0.00024656, 7.27280259, 0.99877058, 0.99935097, 0.49323897],
     7727                             [- 6.27320519, - 0.00040242, 0.00024653, 7.27280277, 0.99877073, 0.99935105, 0.49323888],
     7728                             [- 6.27320532, - 0.00040237, 0.00024650, 7.27280295, 0.99877089, 0.99935114, 0.49323894],
     7729                             [- 6.27320544, - 0.00040231, 0.00024647, 7.27280313, 0.99877105, 0.99935122, 0.49323891],
     7730                             [- 6.27320557, - 0.00040226, 0.00024643, 7.27280330, 0.99877121, 0.99935130, 0.49323883],
     7731                             [- 6.27320569, - 0.00040221, 0.00024640, 7.27280348, 0.99877137, 0.99935139, 0.49323900],
     7732                             [- 6.27320582, - 0.00040216, 0.00024637, 7.27280366, 0.99877153, 0.99935147, 0.49323894],
     7733                             [- 6.27320594, - 0.00040210, 0.00024634, 7.27280384, 0.99877169, 0.99935156, 0.49323913],
     7734                             [- 6.27320607, - 0.00040205, 0.00024631, 7.27280401, 0.99877185, 0.99935164, 0.49323892],
     7735                             [- 6.27320619, - 0.00040200, 0.00024627, 7.27280419, 0.99877201, 0.99935173, 0.49323905],
     7736                             [- 6.27320632, - 0.00040195, 0.00024624, 7.27280437, 0.99877217, 0.99935181, 0.49323908],
     7737                             [- 6.27320644, - 0.00040190, 0.00024621, 7.27280455, 0.99877233, 0.99935189, 0.49323912],
     7738                             [- 6.27320657, - 0.00040184, 0.00024618, 7.27280472, 0.99877249, 0.99935198, 0.49323907],
     7739                             [- 6.27320669, - 0.00040179, 0.00024615, 7.27280490, 0.99877265, 0.99935206, 0.49323901],
     7740                             [- 6.27320682, - 0.00040174, 0.00024611, 7.27280508, 0.99877281, 0.99935215, 0.49323923],
     7741                             [- 6.27320694, - 0.00040169, 0.00024608, 7.27280525, 0.99877297, 0.99935223, 0.49323914],
     7742                             [- 6.27320706, - 0.00040163, 0.00024605, 7.27280543, 0.99877313, 0.99935231, 0.49323921],
     7743                             [- 6.27320719, - 0.00040158, 0.00024602, 7.27280561, 0.99877329, 0.99935240, 0.49323926],
     7744                             [- 6.27320731, - 0.00040153, 0.00024599, 7.27280578, 0.99877345, 0.99935248, 0.49323926],
     7745                             [- 6.27320744, - 0.00040148, 0.00024595, 7.27280596, 0.99877361, 0.99935257, 0.49323918],
     7746                             [- 6.27320756, - 0.00040143, 0.00024592, 7.27280614, 0.99877376, 0.99935265, 0.49323936],
     7747                             [- 6.27320769, - 0.00040137, 0.00024589, 7.27280631, 0.99877392, 0.99935273, 0.49323929],
     7748                             [- 6.27320781, - 0.00040132, 0.00024586, 7.27280649, 0.99877408, 0.99935282, 0.49323934],
     7749                             [- 6.27320794, - 0.00040127, 0.00024583, 7.27280667, 0.99877424, 0.99935290, 0.49323932],
     7750                             [- 6.27320806, - 0.00040122, 0.00024580, 7.27280684, 0.99877440, 0.99935299, 0.49323931],
     7751                             [- 6.27320819, - 0.00040117, 0.00024576, 7.27280702, 0.99877456, 0.99935307, 0.49323926],
     7752                             [- 6.27320831, - 0.00040111, 0.00024573, 7.27280720, 0.99877472, 0.99935315, 0.49323938],
     7753                             [- 6.27320843, - 0.00040106, 0.00024570, 7.27280737, 0.99877488, 0.99935324, 0.49323939],
     7754                             [- 6.27320856, - 0.00040101, 0.00024567, 7.27280755, 0.99877504, 0.99935332, 0.49323934],
     7755                             [- 6.27320868, - 0.00040096, 0.00024564, 7.27280773, 0.99877519, 0.99935341, 0.49323939],
     7756                             [- 6.27320881, - 0.00040091, 0.00024560, 7.27280790, 0.99877535, 0.99935349, 0.49323943],
     7757                             [- 6.27320893, - 0.00040085, 0.00024557, 7.27280808, 0.99877551, 0.99935357, 0.49323942],
     7758                             [- 6.27320906, - 0.00040080, 0.00024554, 7.27280825, 0.99877567, 0.99935366, 0.49323947],
     7759                             [- 6.27320918, - 0.00040075, 0.00024551, 7.27280843, 0.99877583, 0.99935374, 0.49323951],
     7760                             [- 6.27320930, - 0.00040070, 0.00024548, 7.27280861, 0.99877599, 0.99935382, 0.49323953],
     7761                             [- 6.27320943, - 0.00040065, 0.00024545, 7.27280878, 0.99877615, 0.99935391, 0.49323955],
     7762                             [- 6.27320955, - 0.00040059, 0.00024541, 7.27280896, 0.99877630, 0.99935399, 0.49323962],
     7763                             [- 6.27320968, - 0.00040054, 0.00024538, 7.27280913, 0.99877646, 0.99935408, 0.49323956],
     7764                             [- 6.27320980, - 0.00040049, 0.00024535, 7.27280931, 0.99877662, 0.99935416, 0.49323962],
     7765                             [- 6.27320993, - 0.00040044, 0.00024532, 7.27280949, 0.99877678, 0.99935424, 0.49323958],
     7766                             [- 6.27321005, - 0.00040039, 0.00024529, 7.27280966, 0.99877694, 0.99935433, 0.49323965],
     7767                             [- 6.27321017, - 0.00040034, 0.00024525, 7.27280984, 0.99877710, 0.99935441, 0.49323969],
     7768                             [- 6.27321030, - 0.00040028, 0.00024522, 7.27281001, 0.99877725, 0.99935449, 0.49323976],
     7769                             [- 6.27321042, - 0.00040023, 0.00024519, 7.27281019, 0.99877741, 0.99935458, 0.49323970],
     7770                             [- 6.27321054, - 0.00040018, 0.00024516, 7.27281036, 0.99877757, 0.99935466, 0.49323974],
     7771                             [- 6.27321067, - 0.00040013, 0.00024513, 7.27281054, 0.99877773, 0.99935474, 0.49323974],
     7772                             [- 6.27321079, - 0.00040008, 0.00024510, 7.27281072, 0.99877789, 0.99935483, 0.49323966],
     7773                             [- 6.27321092, - 0.00040003, 0.00024506, 7.27281089, 0.99877804, 0.99935491, 0.49323980],
     7774                             [- 6.27321104, - 0.00039997, 0.00024503, 7.27281107, 0.99877820, 0.99935499, 0.49323982],
     7775                             [- 6.27321116, - 0.00039992, 0.00024500, 7.27281124, 0.99877836, 0.99935508, 0.49323984],
     7776                             [- 6.27321129, - 0.00039987, 0.00024497, 7.27281142, 0.99877852, 0.99935516, 0.49323979],
     7777                             [- 6.27321141, - 0.00039982, 0.00024494, 7.27281159, 0.99877868, 0.99935524, 0.49323984],
     7778                             [- 6.27321153, - 0.00039977, 0.00024491, 7.27281177, 0.99877883, 0.99935533, 0.49323987],
     7779                             [- 6.27321166, - 0.00039972, 0.00024487, 7.27281194, 0.99877899, 0.99935541, 0.49323994],
     7780                             [- 6.27321178, - 0.00039966, 0.00024484, 7.27281212, 0.99877915, 0.99935549, 0.49323989],
     7781                             [- 6.27321191, - 0.00039961, 0.00024481, 7.27281229, 0.99877931, 0.99935558, 0.49323986],
     7782                             [- 6.27321203, - 0.00039956, 0.00024478, 7.27281247, 0.99877946, 0.99935566, 0.49323995],
     7783                             [- 6.27321215, - 0.00039951, 0.00024475, 7.27281264, 0.99877962, 0.99935574, 0.49323997],
     7784                             [- 6.27321228, - 0.00039946, 0.00024472, 7.27281282, 0.99877978, 0.99935583, 0.49323996],
     7785                             [- 6.27321240, - 0.00039941, 0.00024468, 7.27281299, 0.99877994, 0.99935591, 0.49323998],
     7786                             [- 6.27321252, - 0.00039935, 0.00024465, 7.27281317, 0.99878009, 0.99935599, 0.49323996],
     7787                             [- 6.27321265, - 0.00039930, 0.00024462, 7.27281334, 0.99878025, 0.99935608, 0.49324002],
     7788                             [- 6.27321277, - 0.00039925, 0.00024459, 7.27281352, 0.99878041, 0.99935616, 0.49323998],
     7789                             [- 6.27321289, - 0.00039920, 0.00024456, 7.27281369, 0.99878057, 0.99935624, 0.49324001],
     7790                             [- 6.27321302, - 0.00039915, 0.00024453, 7.27281387, 0.99878072, 0.99935632, 0.49324014],
     7791                             [- 6.27321314, - 0.00039910, 0.00024450, 7.27281404, 0.99878088, 0.99935641, 0.49324019],
     7792                             [- 6.27321326, - 0.00039905, 0.00024446, 7.27281422, 0.99878104, 0.99935649, 0.49324012],
     7793                             [- 6.27321338, - 0.00039899, 0.00024443, 7.27281439, 0.99878120, 0.99935657, 0.49324003],
     7794                             [- 6.27321351, - 0.00039894, 0.00024440, 7.27281457, 0.99878135, 0.99935666, 0.49324013],
     7795                             [- 6.27321363, - 0.00039889, 0.00024437, 7.27281474, 0.99878151, 0.99935674, 0.49324013],
     7796                             [- 6.27321375, - 0.00039884, 0.00024434, 7.27281491, 0.99878167, 0.99935682, 0.49324017],
     7797                             [- 6.27321388, - 0.00039879, 0.00024431, 7.27281509, 0.99878182, 0.99935690, 0.49324022],
     7798                             [- 6.27321400, - 0.00039874, 0.00024427, 7.27281526, 0.99878198, 0.99935699, 0.49324015],
     7799                             [- 6.27321412, - 0.00039869, 0.00024424, 7.27281544, 0.99878214, 0.99935707, 0.49324036],
     7800                             [- 6.27321425, - 0.00039863, 0.00024421, 7.27281561, 0.99878229, 0.99935715, 0.49324026],
     7801                             [- 6.27321437, - 0.00039858, 0.00024418, 7.27281579, 0.99878245, 0.99935724, 0.49324022],
     7802                             [- 6.27321449, - 0.00039853, 0.00024415, 7.27281596, 0.99878261, 0.99935732, 0.49324031],
     7803                             [- 6.27321461, - 0.00039848, 0.00024412, 7.27281613, 0.99878277, 0.99935740, 0.49324028],
     7804                             [- 6.27321474, - 0.00039843, 0.00024409, 7.27281631, 0.99878292, 0.99935748, 0.49324030],
     7805                             [- 6.27321486, - 0.00039838, 0.00024405, 7.27281648, 0.99878308, 0.99935757, 0.49324023],
     7806                             [- 6.27321498, - 0.00039833, 0.00024402, 7.27281666, 0.99878324, 0.99935765, 0.49324037],
     7807                             [- 6.27321511, - 0.00039828, 0.00024399, 7.27281683, 0.99878339, 0.99935773, 0.49324036],
     7808                             [- 6.27321523, - 0.00039822, 0.00024396, 7.27281700, 0.99878355, 0.99935782, 0.49324044],
     7809                             [- 6.27321535, - 0.00039817, 0.00024393, 7.27281718, 0.99878370, 0.99935790, 0.49324039],
     7810                             [- 6.27321547, - 0.00039812, 0.00024390, 7.27281735, 0.99878386, 0.99935798, 0.49324042],
     7811                             [- 6.27321560, - 0.00039807, 0.00024387, 7.27281752, 0.99878402, 0.99935806, 0.49324055],
     7812                             [- 6.27321572, - 0.00039802, 0.00024383, 7.27281770, 0.99878417, 0.99935815, 0.49324042],
     7813                             [- 6.27321584, - 0.00039797, 0.00024380, 7.27281787, 0.99878433, 0.99935823, 0.49324044],
     7814                             [- 6.27321596, - 0.00039792, 0.00024377, 7.27281805, 0.99878449, 0.99935831, 0.49324041],
     7815                             [- 6.27321609, - 0.00039787, 0.00024374, 7.27281822, 0.99878464, 0.99935839, 0.49324060],
     7816                             [- 6.27321621, - 0.00039781, 0.00024371, 7.27281839, 0.99878480, 0.99935848, 0.49324044],
     7817                             [- 6.27321633, - 0.00039776, 0.00024368, 7.27281857, 0.99878496, 0.99935856, 0.49324054],
     7818                             [- 6.27321645, - 0.00039771, 0.00024365, 7.27281874, 0.99878511, 0.99935864, 0.49324046],
     7819                             [- 6.27321658, - 0.00039766, 0.00024362, 7.27281891, 0.99878527, 0.99935872, 0.49324052],
     7820                             [- 6.27321670, - 0.00039761, 0.00024358, 7.27281909, 0.99878542, 0.99935881, 0.49324063],
     7821                             [- 6.27321682, - 0.00039756, 0.00024355, 7.27281926, 0.99878558, 0.99935889, 0.49324081],
     7822                             [- 6.27321694, - 0.00039751, 0.00024352, 7.27281943, 0.99878574, 0.99935897, 0.49324067],
     7823                             [- 6.27321706, - 0.00039746, 0.00024349, 7.27281961, 0.99878589, 0.99935905, 0.49324080],
     7824                             [- 6.27321719, - 0.00039741, 0.00024346, 7.27281978, 0.99878605, 0.99935913, 0.49324070],
     7825                             [- 6.27321731, - 0.00039736, 0.00024343, 7.27281995, 0.99878620, 0.99935922, 0.49324061],
     7826                             [- 6.27321743, - 0.00039730, 0.00024340, 7.27282013, 0.99878636, 0.99935930, 0.49324072],
     7827                             [- 6.27321755, - 0.00039725, 0.00024337, 7.27282030, 0.99878652, 0.99935938, 0.49324071],
     7828                             [- 6.27321767, - 0.00039720, 0.00024333, 7.27282047, 0.99878667, 0.99935946, 0.49324076],
     7829                             [- 6.27321780, - 0.00039715, 0.00024330, 7.27282064, 0.99878683, 0.99935955, 0.49324084],
     7830                             [- 6.27321792, - 0.00039710, 0.00024327, 7.27282082, 0.99878698, 0.99935963, 0.49324086],
     7831                             [- 6.27321804, - 0.00039705, 0.00024324, 7.27282099, 0.99878714, 0.99935971, 0.49324068],
     7832                             [- 6.27321816, - 0.00039700, 0.00024321, 7.27282116, 0.99878729, 0.99935979, 0.49324078],
     7833                             [- 6.27321828, - 0.00039695, 0.00024318, 7.27282134, 0.99878745, 0.99935987, 0.49324088],
     7834                             [- 6.27321841, - 0.00039690, 0.00024315, 7.27282151, 0.99878760, 0.99935996, 0.49324077],
     7835                             [- 6.27321853, - 0.00039685, 0.00024312, 7.27282168, 0.99878776, 0.99936004, 0.49324091],
     7836                             [- 6.27321865, - 0.00039680, 0.00024308, 7.27282185, 0.99878792, 0.99936012, 0.49324089],
     7837                             [- 6.27321877, - 0.00039674, 0.00024305, 7.27282203, 0.99878807, 0.99936020, 0.49324098],
     7838                             [- 6.27321889, - 0.00039669, 0.00024302, 7.27282220, 0.99878823, 0.99936028, 0.49324089],
     7839                             [- 6.27321901, - 0.00039664, 0.00024299, 7.27282237, 0.99878838, 0.99936037, 0.49324096],
     7840                             [- 6.27321914, - 0.00039659, 0.00024296, 7.27282254, 0.99878854, 0.99936045, 0.49324110],
     7841                             [- 6.27321926, - 0.00039654, 0.00024293, 7.27282272, 0.99878869, 0.99936053, 0.49324104],
     7842                             [- 6.27321938, - 0.00039649, 0.00024290, 7.27282289, 0.99878885, 0.99936061, 0.49324115],
     7843                             [- 6.27321950, - 0.00039644, 0.00024287, 7.27282306, 0.99878900, 0.99936069, 0.49324105],
     7844                             [- 6.27321962, - 0.00039639, 0.00024284, 7.27282323, 0.99878916, 0.99936078, 0.49324108],
     7845                             [- 6.27321974, - 0.00039634, 0.00024280, 7.27282341, 0.99878931, 0.99936086, 0.49324101],
     7846                             [- 6.27321987, - 0.00039629, 0.00024277, 7.27282358, 0.99878947, 0.99936094, 0.49324102],
     7847                             [- 6.27321999, - 0.00039624, 0.00024274, 7.27282375, 0.99878962, 0.99936102, 0.49324113],
     7848                             [- 6.27322011, - 0.00039619, 0.00024271, 7.27282392, 0.99878978, 0.99936110, 0.49324108],
     7849                             [- 6.27322023, - 0.00039613, 0.00024268, 7.27282409, 0.99878993, 0.99936119, 0.49324117],
     7850                             [- 6.27322035, - 0.00039608, 0.00024265, 7.27282427, 0.99879009, 0.99936127, 0.49324125],
     7851                             [- 6.27322047, - 0.00039603, 0.00024262, 7.27282444, 0.99879024, 0.99936135, 0.49324106],
     7852                             [- 6.27322059, - 0.00039598, 0.00024259, 7.27282461, 0.99879040, 0.99936143, 0.49324119],
     7853                             [- 6.27322071, - 0.00039593, 0.00024256, 7.27282478, 0.99879055, 0.99936151, 0.49324110],
     7854                             [- 6.27322084, - 0.00039588, 0.00024252, 7.27282495, 0.99879071, 0.99936159, 0.49324126],
     7855                             [- 6.27322096, - 0.00039583, 0.00024249, 7.27282513, 0.99879086, 0.99936168, 0.49324122],
     7856                             [- 6.27322108, - 0.00039578, 0.00024246, 7.27282530, 0.99879102, 0.99936176, 0.49324129],
     7857                             [- 6.27322120, - 0.00039573, 0.00024243, 7.27282547, 0.99879117, 0.99936184, 0.49324129],
     7858                             [- 6.27322132, - 0.00039568, 0.00024240, 7.27282564, 0.99879133, 0.99936192, 0.49324124],
     7859                             [- 6.27322144, - 0.00039563, 0.00024237, 7.27282581, 0.99879148, 0.99936200, 0.49324135],
     7860                             [- 6.27322156, - 0.00039558, 0.00024234, 7.27282598, 0.99879163, 0.99936208, 0.49324138],
     7861                             [- 6.27322168, - 0.00039553, 0.00024231, 7.27282616, 0.99879179, 0.99936216, 0.49324133],
     7862                             [- 6.27322180, - 0.00039548, 0.00024228, 7.27282633, 0.99879194, 0.99936225, 0.49324140],
     7863                             [- 6.27322193, - 0.00039543, 0.00024225, 7.27282650, 0.99879210, 0.99936233, 0.49324130],
     7864                             [- 6.27322205, - 0.00039538, 0.00024221, 7.27282667, 0.99879225, 0.99936241, 0.49324149],
     7865                             [- 6.27322217, - 0.00039533, 0.00024218, 7.27282684, 0.99879241, 0.99936249, 0.49324143],
     7866                             [- 6.27322229, - 0.00039528, 0.00024215, 7.27282701, 0.99879256, 0.99936257, 0.49324140],
     7867                             [- 6.27322241, - 0.00039522, 0.00024212, 7.27282718, 0.99879271, 0.99936265, 0.49324158],
     7868                             [- 6.27322253, - 0.00039517, 0.00024209, 7.27282736, 0.99879287, 0.99936273, 0.49324147],
     7869                             [- 6.27322265, - 0.00039512, 0.00024206, 7.27282753, 0.99879302, 0.99936282, 0.49324156],
     7870                             [- 6.27322277, - 0.00039507, 0.00024203, 7.27282770, 0.99879318, 0.99936290, 0.49324153],
     7871                             [- 6.27322289, - 0.00039502, 0.00024200, 7.27282787, 0.99879333, 0.99936298, 0.49324143],
     7872                             [- 6.27322301, - 0.00039497, 0.00024197, 7.27282804, 0.99879349, 0.99936306, 0.49324134],
     7873                             [- 6.27322313, - 0.00039492, 0.00024194, 7.27282821, 0.99879364, 0.99936314, 0.49324161],
     7874                             [- 6.27322325, - 0.00039487, 0.00024191, 7.27282838, 0.99879379, 0.99936322, 0.49324161],
     7875                             [- 6.27322337, - 0.00039482, 0.00024187, 7.27282855, 0.99879395, 0.99936330, 0.49324164],
     7876                             [- 6.27322349, - 0.00039477, 0.00024184, 7.27282872, 0.99879410, 0.99936339, 0.49324176],
     7877                             [- 6.27322362, - 0.00039472, 0.00024181, 7.27282889, 0.99879425, 0.99936347, 0.49324160],
     7878                             [- 6.27322374, - 0.00039467, 0.00024178, 7.27282907, 0.99879441, 0.99936355, 0.49324157],
     7879                             [- 6.27322386, - 0.00039462, 0.00024175, 7.27282924, 0.99879456, 0.99936363, 0.49324158],
     7880                             [- 6.27322398, - 0.00039457, 0.00024172, 7.27282941, 0.99879472, 0.99936371, 0.49324166],
     7881                             [- 6.27322410, - 0.00039452, 0.00024169, 7.27282958, 0.99879487, 0.99936379, 0.49324172],
     7882                             [- 6.27322422, - 0.00039447, 0.00024166, 7.27282975, 0.99879502, 0.99936387, 0.49324177],
     7883                             [- 6.27322434, - 0.00039442, 0.00024163, 7.27282992, 0.99879518, 0.99936395, 0.49324175],
     7884                             [- 6.27322446, - 0.00039437, 0.00024160, 7.27283009, 0.99879533, 0.99936403, 0.49324173],
     7885                             [- 6.27322458, - 0.00039432, 0.00024157, 7.27283026, 0.99879548, 0.99936412, 0.49324183],
     7886                             [- 6.27322470, - 0.00039427, 0.00024154, 7.27283043, 0.99879564, 0.99936420, 0.49324189],
     7887                             [- 6.27322482, - 0.00039422, 0.00024150, 7.27283060, 0.99879579, 0.99936428, 0.49324183],
     7888                             [- 6.27322494, - 0.00039417, 0.00024147, 7.27283077, 0.99879594, 0.99936436, 0.49324176],
     7889                             [- 6.27322506, - 0.00039412, 0.00024144, 7.27283094, 0.99879610, 0.99936444, 0.49324183],
     7890                             [- 6.27322518, - 0.00039407, 0.00024141, 7.27283111, 0.99879625, 0.99936452, 0.49324186],
     7891                             [- 6.27322530, - 0.00039402, 0.00024138, 7.27283128, 0.99879640, 0.99936460, 0.49324198],
     7892                             [- 6.27322542, - 0.00039397, 0.00024135, 7.27283145, 0.99879656, 0.99936468, 0.49324210],
     7893                             [- 6.27322554, - 0.00039392, 0.00024132, 7.27283162, 0.99879671, 0.99936476, 0.49324198],
     7894                             [- 6.27322566, - 0.00039387, 0.00024129, 7.27283179, 0.99879686, 0.99936484, 0.49324205],
     7895                             [- 6.27322578, - 0.00039382, 0.00024126, 7.27283196, 0.99879702, 0.99936492, 0.49324207],
     7896                             [- 6.27322590, - 0.00039377, 0.00024123, 7.27283213, 0.99879717, 0.99936501, 0.49324191],
     7897                             [- 6.27322602, - 0.00039372, 0.00024120, 7.27283230, 0.99879732, 0.99936509, 0.49324201],
     7898                             [- 6.27322614, - 0.00039367, 0.00024117, 7.27283247, 0.99879748, 0.99936517, 0.49324194],
     7899                             [- 6.27322626, - 0.00039362, 0.00024114, 7.27283264, 0.99879763, 0.99936525, 0.49324211],
     7900                             [- 6.27322638, - 0.00039357, 0.00024111, 7.27283281, 0.99879778, 0.99936533, 0.49324210],
     7901                             [- 6.27322650, - 0.00039352, 0.00024107, 7.27283298, 0.99879793, 0.99936541, 0.49324195],
     7902                             [- 6.27322662, - 0.00039347, 0.00024104, 7.27283315, 0.99879809, 0.99936549, 0.49324205],
     7903                             [- 6.27322674, - 0.00039342, 0.00024101, 7.27283332, 0.99879824, 0.99936557, 0.49324210],
     7904                             [- 6.27322686, - 0.00039337, 0.00024098, 7.27283349, 0.99879839, 0.99936565, 0.49324214],
     7905                             [- 6.27322698, - 0.00039332, 0.00024095, 7.27283366, 0.99879855, 0.99936573, 0.49324202],
     7906                             [- 6.27322710, - 0.00039327, 0.00024092, 7.27283383, 0.99879870, 0.99936581, 0.49324209],
     7907                             [- 6.27322722, - 0.00039322, 0.00024089, 7.27283400, 0.99879885, 0.99936589, 0.49324208],
     7908                             [- 6.27322734, - 0.00039317, 0.00024086, 7.27283417, 0.99879900, 0.99936597, 0.49324207],
     7909                             [- 6.27322746, - 0.00039312, 0.00024083, 7.27283434, 0.99879916, 0.99936605, 0.49324215],
     7910                             [- 6.27322757, - 0.00039307, 0.00024080, 7.27283451, 0.99879931, 0.99936613, 0.49324220],
     7911                             [- 6.27322769, - 0.00039302, 0.00024077, 7.27283468, 0.99879946, 0.99936621, 0.49324229],
     7912                             [- 6.27322781, - 0.00039297, 0.00024074, 7.27283485, 0.99879961, 0.99936630, 0.49324226],
     7913                             [- 6.27322793, - 0.00039292, 0.00024071, 7.27283502, 0.99879977, 0.99936638, 0.49324230],
     7914                             [- 6.27322805, - 0.00039287, 0.00024068, 7.27283519, 0.99879992, 0.99936646, 0.49324236],
     7915                             [- 6.27322817, - 0.00039282, 0.00024065, 7.27283535, 0.99880007, 0.99936654, 0.49324229],
     7916                             [- 6.27322829, - 0.00039277, 0.00024062, 7.27283552, 0.99880022, 0.99936662, 0.49324245],
     7917                             [- 6.27322841, - 0.00039272, 0.00024059, 7.27283569, 0.99880038, 0.99936670, 0.49324230],
     7918                             [- 6.27322853, - 0.00039267, 0.00024055, 7.27283586, 0.99880053, 0.99936678, 0.49324241],
     7919                             [- 6.27322865, - 0.00039262, 0.00024052, 7.27283603, 0.99880068, 0.99936686, 0.49324234],
     7920                             [- 6.27322877, - 0.00039257, 0.00024049, 7.27283620, 0.99880083, 0.99936694, 0.49324231],
     7921                             [- 6.27322889, - 0.00039252, 0.00024046, 7.27283637, 0.99880098, 0.99936702, 0.49324244],
     7922                             [- 6.27322901, - 0.00039247, 0.00024043, 7.27283654, 0.99880114, 0.99936710, 0.49324243],
     7923                             [- 6.27322913, - 0.00039242, 0.00024040, 7.27283671, 0.99880129, 0.99936718, 0.49324251],
     7924                             [- 6.27322924, - 0.00039237, 0.00024037, 7.27283688, 0.99880144, 0.99936726, 0.49324242],
     7925                             [- 6.27322936, - 0.00039232, 0.00024034, 7.27283704, 0.99880159, 0.99936734, 0.49324245],
     7926                             [- 6.27322948, - 0.00039227, 0.00024031, 7.27283721, 0.99880174, 0.99936742, 0.49324248],
     7927                             [- 6.27322960, - 0.00039222, 0.00024028, 7.27283738, 0.99880190, 0.99936750, 0.49324240],
     7928                             [- 6.27322972, - 0.00039217, 0.00024025, 7.27283755, 0.99880205, 0.99936758, 0.49324256],
     7929                             [- 6.27322984, - 0.00039212, 0.00024022, 7.27283772, 0.99880220, 0.99936766, 0.49324270],
     7930                             [- 6.27322996, - 0.00039207, 0.00024019, 7.27283789, 0.99880235, 0.99936774, 0.49324265],
     7931                             [- 6.27323008, - 0.00039202, 0.00024016, 7.27283806, 0.99880250, 0.99936782, 0.49324254],
     7932                             [- 6.27323020, - 0.00039197, 0.00024013, 7.27283822, 0.99880265, 0.99936790, 0.49324268],
     7933                             [- 6.27323032, - 0.00039192, 0.00024010, 7.27283839, 0.99880281, 0.99936798, 0.49324263],
     7934                             [- 6.27323043, - 0.00039187, 0.00024007, 7.27283856, 0.99880296, 0.99936806, 0.49324257],
     7935                             [- 6.27323055, - 0.00039182, 0.00024004, 7.27283873, 0.99880311, 0.99936814, 0.49324271],
     7936                             [- 6.27323067, - 0.00039177, 0.00024001, 7.27283890, 0.99880326, 0.99936822, 0.49324263],
     7937                             [- 6.27323079, - 0.00039172, 0.00023998, 7.27283907, 0.99880341, 0.99936830, 0.49324259],
     7938                             [- 6.27323091, - 0.00039167, 0.00023995, 7.27283923, 0.99880356, 0.99936838, 0.49324272],
     7939                             [- 6.27323103, - 0.00039162, 0.00023992, 7.27283940, 0.99880372, 0.99936846, 0.49324266],
     7940                             [- 6.27323115, - 0.00039158, 0.00023989, 7.27283957, 0.99880387, 0.99936854, 0.49324277],
     7941                             [- 6.27323126, - 0.00039153, 0.00023985, 7.27283974, 0.99880402, 0.99936862, 0.49324283],
     7942                             [- 6.27323138, - 0.00039148, 0.00023982, 7.27283991, 0.99880417, 0.99936870, 0.49324288],
     7943                             [- 6.27323150, - 0.00039143, 0.00023979, 7.27284008, 0.99880432, 0.99936878, 0.49324274],
     7944                             [- 6.27323162, - 0.00039138, 0.00023976, 7.27284024, 0.99880447, 0.99936886, 0.49324289],
     7945                             [- 6.27323174, - 0.00039133, 0.00023973, 7.27284041, 0.99880462, 0.99936894, 0.49324287],
     7946                             [- 6.27323186, - 0.00039128, 0.00023970, 7.27284058, 0.99880477, 0.99936902, 0.49324285],
     7947                             [- 6.27323198, - 0.00039123, 0.00023967, 7.27284075, 0.99880493, 0.99936910, 0.49324283],
     7948                             [- 6.27323209, - 0.00039118, 0.00023964, 7.27284091, 0.99880508, 0.99936918, 0.49324290],
     7949                             [- 6.27323221, - 0.00039113, 0.00023961, 7.27284108, 0.99880523, 0.99936926, 0.49324280],
     7950                             [- 6.27323233, - 0.00039108, 0.00023958, 7.27284125, 0.99880538, 0.99936934, 0.49324296],
     7951                             [- 6.27323245, - 0.00039103, 0.00023955, 7.27284142, 0.99880553, 0.99936942, 0.49324284],
     7952                             [- 6.27323257, - 0.00039098, 0.00023952, 7.27284159, 0.99880568, 0.99936950, 0.49324285],
     7953                             [- 6.27323268, - 0.00039093, 0.00023949, 7.27284175, 0.99880583, 0.99936958, 0.49324302],
     7954                             [- 6.27323280, - 0.00039088, 0.00023946, 7.27284192, 0.99880598, 0.99936966, 0.49324295],
     7955                             [- 6.27323292, - 0.00039083, 0.00023943, 7.27284209, 0.99880613, 0.99936974, 0.49324320],
     7956                             [- 6.27323304, - 0.00039078, 0.00023940, 7.27284226, 0.99880628, 0.99936982, 0.49324315],
     7957                             [- 6.27323316, - 0.00039073, 0.00023937, 7.27284242, 0.99880643, 0.99936990, 0.49324296],
     7958                             [- 6.27323328, - 0.00039069, 0.00023934, 7.27284259, 0.99880658, 0.99936997, 0.49324298],
     7959                             [- 6.27323339, - 0.00039064, 0.00023931, 7.27284276, 0.99880674, 0.99937005, 0.49324310],
     7960                             [- 6.27323351, - 0.00039059, 0.00023928, 7.27284292, 0.99880689, 0.99937013, 0.49324316],
     7961                             [- 6.27323363, - 0.00039054, 0.00023925, 7.27284309, 0.99880704, 0.99937021, 0.49324305],
     7962                             [- 6.27323375, - 0.00039049, 0.00023922, 7.27284326, 0.99880719, 0.99937029, 0.49324317],
     7963                             [- 6.27323387, - 0.00039044, 0.00023919, 7.27284343, 0.99880734, 0.99937037, 0.49324316],
     7964                             [- 6.27323398, - 0.00039039, 0.00023916, 7.27284359, 0.99880749, 0.99937045, 0.49324322],
     7965                             [- 6.27323410, - 0.00039034, 0.00023913, 7.27284376, 0.99880764, 0.99937053, 0.49324310],
     7966                             [- 6.27323422, - 0.00039029, 0.00023910, 7.27284393, 0.99880779, 0.99937061, 0.49324325],
     7967                             [- 6.27323434, - 0.00039024, 0.00023907, 7.27284409, 0.99880794, 0.99937069, 0.49324319],
     7968                             [- 6.27323445, - 0.00039019, 0.00023904, 7.27284426, 0.99880809, 0.99937077, 0.49324326],
     7969                             [- 6.27323457, - 0.00039014, 0.00023901, 7.27284443, 0.99880824, 0.99937085, 0.49324329],
     7970                             [- 6.27323469, - 0.00039009, 0.00023898, 7.27284460, 0.99880839, 0.99937093, 0.49324333],
     7971                             [- 6.27323481, - 0.00039005, 0.00023895, 7.27284476, 0.99880854, 0.99937101, 0.49324318],
     7972                             [- 6.27323493, - 0.00039000, 0.00023892, 7.27284493, 0.99880869, 0.99937109, 0.49324318],
     7973                             [- 6.27323504, - 0.00038995, 0.00023889, 7.27284510, 0.99880884, 0.99937117, 0.49324337],
     7974                             [- 6.27323516, - 0.00038990, 0.00023886, 7.27284526, 0.99880899, 0.99937124, 0.49324337],
     7975                             [- 6.27323528, - 0.00038985, 0.00023883, 7.27284543, 0.99880914, 0.99937132, 0.49324350],
     7976                             [- 6.27323540, - 0.00038980, 0.00023880, 7.27284560, 0.99880929, 0.99937140, 0.49324334],
     7977                             [- 6.27323551, - 0.00038975, 0.00023877, 7.27284576, 0.99880944, 0.99937148, 0.49324341],
     7978                             [- 6.27323563, - 0.00038970, 0.00023874, 7.27284593, 0.99880959, 0.99937156, 0.49324338],
     7979                             [- 6.27323575, - 0.00038965, 0.00023871, 7.27284609, 0.99880974, 0.99937164, 0.49324344],
     7980                             [- 6.27323587, - 0.00038960, 0.00023868, 7.27284626, 0.99880989, 0.99937172, 0.49324362],
     7981                             [- 6.27323598, - 0.00038955, 0.00023865, 7.27284643, 0.99881004, 0.99937180, 0.49324347],
     7982                             [- 6.27323610, - 0.00038951, 0.00023862, 7.27284659, 0.99881019, 0.99937188, 0.49324345],
     7983                             [- 6.27323622, - 0.00038946, 0.00023859, 7.27284676, 0.99881034, 0.99937196, 0.49324353],
     7984                             [- 6.27323633, - 0.00038941, 0.00023856, 7.27284693, 0.99881049, 0.99937204, 0.49324361],
     7985                             [- 6.27323645, - 0.00038936, 0.00023853, 7.27284709, 0.99881064, 0.99937211, 0.49324364],
     7986                             [- 6.27323657, - 0.00038931, 0.00023850, 7.27284726, 0.99881079, 0.99937219, 0.49324360],
     7987                             [- 6.27323669, - 0.00038926, 0.00023847, 7.27284743, 0.99881094, 0.99937227, 0.49324354],
     7988                             [- 6.27323680, - 0.00038921, 0.00023844, 7.27284759, 0.99881109, 0.99937235, 0.49324359],
     7989                             [- 6.27323692, - 0.00038916, 0.00023841, 7.27284776, 0.99881124, 0.99937243, 0.49324355],
     7990                             [- 6.27323704, - 0.00038911, 0.00023838, 7.27284792, 0.99881139, 0.99937251, 0.49324369],
     7991                             [- 6.27323715, - 0.00038907, 0.00023835, 7.27284809, 0.99881154, 0.99937259, 0.49324366],
     7992                             [- 6.27323727, - 0.00038902, 0.00023832, 7.27284826, 0.99881169, 0.99937267, 0.49324363],
     7993                             [- 6.27323739, - 0.00038897, 0.00023829, 7.27284842, 0.99881184, 0.99937275, 0.49324368],
     7994                             [- 6.27323751, - 0.00038892, 0.00023826, 7.27284859, 0.99881198, 0.99937282, 0.49324385],
     7995                             [- 6.27323762, - 0.00038887, 0.00023823, 7.27284875, 0.99881213, 0.99937290, 0.49324375],
     7996                             [- 6.27323774, - 0.00038882, 0.00023820, 7.27284892, 0.99881228, 0.99937298, 0.49324381],
     7997                             [- 6.27323786, - 0.00038877, 0.00023817, 7.27284908, 0.99881243, 0.99937306, 0.49324383],
     7998                             [- 6.27323797, - 0.00038872, 0.00023814, 7.27284925, 0.99881258, 0.99937314, 0.49324389],
     7999                             [- 6.27323809, - 0.00038867, 0.00023811, 7.27284942, 0.99881273, 0.99937322, 0.49324387],
     8000                             [- 6.27323821, - 0.00038863, 0.00023808, 7.27284958, 0.99881288, 0.99937330, 0.49324385],
     8001                             [- 6.27323832, - 0.00038858, 0.00023805, 7.27284975, 0.99881303, 0.99937338, 0.49324378],
     8002                             [- 6.27323844, - 0.00038853, 0.00023802, 7.27284991, 0.99881318, 0.99937345, 0.49324377],
     8003                             [- 6.27323856, - 0.00038848, 0.00023799, 7.27285008, 0.99881333, 0.99937353, 0.49324388],
     8004                             [- 6.27323867, - 0.00038843, 0.00023796, 7.27285024, 0.99881348, 0.99937361, 0.49324392],
     8005                             [- 6.27323879, - 0.00038838, 0.00023793, 7.27285041, 0.99881362, 0.99937369, 0.49324396],
     8006                             [- 6.27323891, - 0.00038833, 0.00023790, 7.27285057, 0.99881377, 0.99937377, 0.49324387],
     8007                             [- 6.27323902, - 0.00038828, 0.00023787, 7.27285074, 0.99881392, 0.99937385, 0.49324395],
     8008                             [- 6.27323914, - 0.00038824, 0.00023784, 7.27285090, 0.99881407, 0.99937393, 0.49324401],
     8009                             [- 6.27323926, - 0.00038819, 0.00023781, 7.27285107, 0.99881422, 0.99937400, 0.49324397],
     8010                             [- 6.27323937, - 0.00038814, 0.00023778, 7.27285124, 0.99881437, 0.99937408, 0.49324409],
     8011                             [- 6.27323949, - 0.00038809, 0.00023775, 7.27285140, 0.99881452, 0.99937416, 0.49324390],
     8012                             [- 6.27323961, - 0.00038804, 0.00023772, 7.27285157, 0.99881467, 0.99937424, 0.49324412],
     8013                             [- 6.27323972, - 0.00038799, 0.00023769, 7.27285173, 0.99881481, 0.99937432, 0.49324405],
     8014                             [- 6.27323984, - 0.00038794, 0.00023766, 7.27285190, 0.99881496, 0.99937440, 0.49324413],
     8015                             [- 6.27323996, - 0.00038789, 0.00023763, 7.27285206, 0.99881511, 0.99937448, 0.49324398],
     8016                             [- 6.27324007, - 0.00038785, 0.00023760, 7.27285223, 0.99881526, 0.99937455, 0.49324408],
     8017                             [- 6.27324019, - 0.00038780, 0.00023757, 7.27285239, 0.99881541, 0.99937463, 0.49324411],
     8018                             [- 6.27324030, - 0.00038775, 0.00023754, 7.27285256, 0.99881556, 0.99937471, 0.49324404],
     8019                             [- 6.27324042, - 0.00038770, 0.00023751, 7.27285272, 0.99881571, 0.99937479, 0.49324417],
     8020                             [- 6.27324054, - 0.00038765, 0.00023748, 7.27285289, 0.99881585, 0.99937487, 0.49324417],
     8021                             [- 6.27324065, - 0.00038760, 0.00023745, 7.27285305, 0.99881600, 0.99937495, 0.49324417],
     8022                             [- 6.27324077, - 0.00038755, 0.00023742, 7.27285321, 0.99881615, 0.99937502, 0.49324410],
     8023                             [- 6.27324089, - 0.00038751, 0.00023739, 7.27285338, 0.99881630, 0.99937510, 0.49324415],
     8024                             [- 6.27324100, - 0.00038746, 0.00023736, 7.27285354, 0.99881645, 0.99937518, 0.49324415],
     8025                             [- 6.27324112, - 0.00038741, 0.00023733, 7.27285371, 0.99881660, 0.99937526, 0.49324428],
     8026                             [- 6.27324123, - 0.00038736, 0.00023730, 7.27285387, 0.99881674, 0.99937534, 0.49324427],
     8027                             [- 6.27324135, - 0.00038731, 0.00023727, 7.27285404, 0.99881689, 0.99937541, 0.49324429],
     8028                             [- 6.27324147, - 0.00038726, 0.00023724, 7.27285420, 0.99881704, 0.99937549, 0.49324429],
     8029                             [- 6.27324158, - 0.00038722, 0.00023721, 7.27285437, 0.99881719, 0.99937557, 0.49324431],
     8030                             [- 6.27324170, - 0.00038717, 0.00023718, 7.27285453, 0.99881734, 0.99937565, 0.49324418],
     8031                             [- 6.27324181, - 0.00038712, 0.00023715, 7.27285469, 0.99881748, 0.99937573, 0.49324436],
     8032                             [- 6.27324193, - 0.00038707, 0.00023712, 7.27285486, 0.99881763, 0.99937581, 0.49324427],
     8033                             [- 6.27324205, - 0.00038702, 0.00023709, 7.27285502, 0.99881778, 0.99937588, 0.49324438],
     8034                             [- 6.27324216, - 0.00038697, 0.00023706, 7.27285519, 0.99881793, 0.99937596, 0.49324441],
     8035                             [- 6.27324228, - 0.00038693, 0.00023704, 7.27285535, 0.99881807, 0.99937604, 0.49324425],
     8036                             [- 6.27324239, - 0.00038688, 0.00023701, 7.27285552, 0.99881822, 0.99937612, 0.49324444],
     8037                             [- 6.27324251, - 0.00038683, 0.00023698, 7.27285568, 0.99881837, 0.99937620, 0.49324437],
     8038                             [- 6.27324262, - 0.00038678, 0.00023695, 7.27285584, 0.99881852, 0.99937627, 0.49324451],
     8039                             [- 6.27324274, - 0.00038673, 0.00023692, 7.27285601, 0.99881867, 0.99937635, 0.49324443],
     8040                             [- 6.27324286, - 0.00038668, 0.00023689, 7.27285617, 0.99881881, 0.99937643, 0.49324463],
     8041                             [- 6.27324297, - 0.00038664, 0.00023686, 7.27285634, 0.99881896, 0.99937651, 0.49324464],
     8042                             [- 6.27324309, - 0.00038659, 0.00023683, 7.27285650, 0.99881911, 0.99937659, 0.49324460],
     8043                             [- 6.27324320, - 0.00038654, 0.00023680, 7.27285666, 0.99881926, 0.99937666, 0.49324474],
     8044                             [- 6.27324332, - 0.00038649, 0.00023677, 7.27285683, 0.99881940, 0.99937674, 0.49324457],
     8045                             [- 6.27324343, - 0.00038644, 0.00023674, 7.27285699, 0.99881955, 0.99937682, 0.49324464],
     8046                             [- 6.27324355, - 0.00038639, 0.00023671, 7.27285716, 0.99881970, 0.99937690, 0.49324452],
     8047                             [- 6.27324366, - 0.00038635, 0.00023668, 7.27285732, 0.99881985, 0.99937697, 0.49324451],
     8048                             [- 6.27324378, - 0.00038630, 0.00023665, 7.27285748, 0.99881999, 0.99937705, 0.49324463],
     8049                             [- 6.27324390, - 0.00038625, 0.00023662, 7.27285765, 0.99882014, 0.99937713, 0.49324460],
     8050                             [- 6.27324401, - 0.00038620, 0.00023659, 7.27285781, 0.99882029, 0.99937721, 0.49324461],
     8051                             [- 6.27324413, - 0.00038615, 0.00023656, 7.27285797, 0.99882043, 0.99937729, 0.49324473],
     8052                             [- 6.27324424, - 0.00038610, 0.00023653, 7.27285814, 0.99882058, 0.99937736, 0.49324474],
     8053                             [- 6.27324436, - 0.00038606, 0.00023650, 7.27285830, 0.99882073, 0.99937744, 0.49324465],
     8054                             [- 6.27324447, - 0.00038601, 0.00023647, 7.27285846, 0.99882088, 0.99937752, 0.49324475],
     8055                             [- 6.27324459, - 0.00038596, 0.00023644, 7.27285863, 0.99882102, 0.99937760, 0.49324482],
     8056                             [- 6.27324470, - 0.00038591, 0.00023641, 7.27285879, 0.99882117, 0.99937767, 0.49324468],
     8057                             [- 6.27324482, - 0.00038586, 0.00023638, 7.27285895, 0.99882132, 0.99937775, 0.49324472],
     8058                             [- 6.27324493, - 0.00038582, 0.00023636, 7.27285912, 0.99882146, 0.99937783, 0.49324478],
     8059                             [- 6.27324505, - 0.00038577, 0.00023633, 7.27285928, 0.99882161, 0.99937791, 0.49324486],
     8060                             [- 6.27324516, - 0.00038572, 0.00023630, 7.27285944, 0.99882176, 0.99937798, 0.49324500],
     8061                             [- 6.27324528, - 0.00038567, 0.00023627, 7.27285961, 0.99882190, 0.99937806, 0.49324482],
     8062                             [- 6.27324539, - 0.00038562, 0.00023624, 7.27285977, 0.99882205, 0.99937814, 0.49324496],
     8063                             [- 6.27324551, - 0.00038558, 0.00023621, 7.27285993, 0.99882220, 0.99937822, 0.49324495],
     8064                             [- 6.27324562, - 0.00038553, 0.00023618, 7.27286009, 0.99882234, 0.99937829, 0.49324492],
     8065                             [- 6.27324574, - 0.00038548, 0.00023615, 7.27286026, 0.99882249, 0.99937837, 0.49324476],
     8066                             [- 6.27324585, - 0.00038543, 0.00023612, 7.27286042, 0.99882264, 0.99937845, 0.49324499],
     8067                             [- 6.27324597, - 0.00038538, 0.00023609, 7.27286058, 0.99882278, 0.99937853, 0.49324495],
     8068                             [- 6.27324608, - 0.00038534, 0.00023606, 7.27286075, 0.99882293, 0.99937860, 0.49324497],
     8069                             [- 6.27324620, - 0.00038529, 0.00023603, 7.27286091, 0.99882308, 0.99937868, 0.49324499],
     8070                             [- 6.27324631, - 0.00038524, 0.00023600, 7.27286107, 0.99882322, 0.99937876, 0.49324496],
     8071                             [- 6.27324643, - 0.00038519, 0.00023597, 7.27286123, 0.99882337, 0.99937884, 0.49324507],
     8072                             [- 6.27324654, - 0.00038514, 0.00023594, 7.27286140, 0.99882352, 0.99937891, 0.49324506],
     8073                             [- 6.27324666, - 0.00038510, 0.00023591, 7.27286156, 0.99882366, 0.99937899, 0.49324519],
     8074                             [- 6.27324677, - 0.00038505, 0.00023588, 7.27286172, 0.99882381, 0.99937907, 0.49324510],
     8075                             [- 6.27324689, - 0.00038500, 0.00023586, 7.27286188, 0.99882396, 0.99937914, 0.49324509],
     8076                             [- 6.27324700, - 0.00038495, 0.00023583, 7.27286205, 0.99882410, 0.99937922, 0.49324510],
     8077                             [- 6.27324711, - 0.00038490, 0.00023580, 7.27286221, 0.99882425, 0.99937930, 0.49324517],
     8078                             [- 6.27324723, - 0.00038486, 0.00023577, 7.27286237, 0.99882440, 0.99937938, 0.49324527],
     8079                             [- 6.27324734, - 0.00038481, 0.00023574, 7.27286253, 0.99882454, 0.99937945, 0.49324519],
     8080                             [- 6.27324746, - 0.00038476, 0.00023571, 7.27286270, 0.99882469, 0.99937953, 0.49324516],
     8081                             [- 6.27324757, - 0.00038471, 0.00023568, 7.27286286, 0.99882483, 0.99937961, 0.49324513],
     8082                             [- 6.27324769, - 0.00038467, 0.00023565, 7.27286302, 0.99882498, 0.99937968, 0.49324519],
     8083                             [- 6.27324780, - 0.00038462, 0.00023562, 7.27286318, 0.99882513, 0.99937976, 0.49324509],
     8084                             [- 6.27324792, - 0.00038457, 0.00023559, 7.27286335, 0.99882527, 0.99937984, 0.49324532],
     8085                             [- 6.27324803, - 0.00038452, 0.00023556, 7.27286351, 0.99882542, 0.99937992, 0.49324518],
     8086                             [- 6.27324814, - 0.00038447, 0.00023553, 7.27286367, 0.99882556, 0.99937999, 0.49324537],
     8087                             [- 6.27324826, - 0.00038443, 0.00023550, 7.27286383, 0.99882571, 0.99938007, 0.49324536],
     8088                             [- 6.27324837, - 0.00038438, 0.00023547, 7.27286399, 0.99882586, 0.99938015, 0.49324540],
     8089                             [- 6.27324849, - 0.00038433, 0.00023545, 7.27286416, 0.99882600, 0.99938022, 0.49324531],
     8090                             [- 6.27324860, - 0.00038428, 0.00023542, 7.27286432, 0.99882615, 0.99938030, 0.49324544],
     8091                             [- 6.27324872, - 0.00038424, 0.00023539, 7.27286448, 0.99882629, 0.99938038, 0.49324534],
     8092                             [- 6.27324883, - 0.00038419, 0.00023536, 7.27286464, 0.99882644, 0.99938045, 0.49324551],
     8093                             [- 6.27324894, - 0.00038414, 0.00023533, 7.27286480, 0.99882658, 0.99938053, 0.49324541],
     8094                             [- 6.27324906, - 0.00038409, 0.00023530, 7.27286497, 0.99882673, 0.99938061, 0.49324551],
     8095                             [- 6.27324917, - 0.00038405, 0.00023527, 7.27286513, 0.99882688, 0.99938068, 0.49324541],
     8096                             [- 6.27324929, - 0.00038400, 0.00023524, 7.27286529, 0.99882702, 0.99938076, 0.49324543],
     8097                             [- 6.27324940, - 0.00038395, 0.00023521, 7.27286545, 0.99882717, 0.99938084, 0.49324548],
     8098                             [- 6.27324951, - 0.00038390, 0.00023518, 7.27286561, 0.99882731, 0.99938092, 0.49324547],
     8099                             [- 6.27324963, - 0.00038385, 0.00023515, 7.27286577, 0.99882746, 0.99938099, 0.49324552],
     8100                             [- 6.27324974, - 0.00038381, 0.00023512, 7.27286594, 0.99882760, 0.99938107, 0.49324561],
     8101                             [- 6.27324986, - 0.00038376, 0.00023509, 7.27286610, 0.99882775, 0.99938115, 0.49324575],
     8102                             [- 6.27324997, - 0.00038371, 0.00023507, 7.27286626, 0.99882789, 0.99938122, 0.49324555],
     8103                             [- 6.27325008, - 0.00038366, 0.00023504, 7.27286642, 0.99882804, 0.99938130, 0.49324561],
     8104                             [- 6.27325020, - 0.00038362, 0.00023501, 7.27286658, 0.99882818, 0.99938138, 0.49324560],
     8105                             [- 6.27325031, - 0.00038357, 0.00023498, 7.27286674, 0.99882833, 0.99938145, 0.49324567],
     8106                             [- 6.27325043, - 0.00038352, 0.00023495, 7.27286690, 0.99882847, 0.99938153, 0.49324557],
     8107                             [- 6.27325054, - 0.00038347, 0.00023492, 7.27286706, 0.99882862, 0.99938161, 0.49324572],
     8108                             [- 6.27325065, - 0.00038343, 0.00023489, 7.27286723, 0.99882877, 0.99938168, 0.49324570],
     8109                             [- 6.27325077, - 0.00038338, 0.00023486, 7.27286739, 0.99882891, 0.99938176, 0.49324576],
     8110                             [- 6.27325088, - 0.00038333, 0.00023483, 7.27286755, 0.99882906, 0.99938184, 0.49324591],
     8111                             [- 6.27325099, - 0.00038328, 0.00023480, 7.27286771, 0.99882920, 0.99938191, 0.49324569],
     8112                             [- 6.27325111, - 0.00038324, 0.00023477, 7.27286787, 0.99882935, 0.99938199, 0.49324559],
     8113                             [- 6.27325122, - 0.00038319, 0.00023475, 7.27286803, 0.99882949, 0.99938207, 0.49324564],
     8114                             [- 6.27325133, - 0.00038314, 0.00023472, 7.27286819, 0.99882964, 0.99938214, 0.49324576],
     8115                             [- 6.27325145, - 0.00038309, 0.00023469, 7.27286835, 0.99882978, 0.99938222, 0.49324581],
     8116                             [- 6.27325156, - 0.00038305, 0.00023466, 7.27286851, 0.99882993, 0.99938229, 0.49324590],
     8117                             [- 6.27325168, - 0.00038300, 0.00023463, 7.27286868, 0.99883007, 0.99938237, 0.49324573],
     8118                             [- 6.27325179, - 0.00038295, 0.00023460, 7.27286884, 0.99883021, 0.99938245, 0.49324578],
     8119                             [- 6.27325190, - 0.00038291, 0.00023457, 7.27286900, 0.99883036, 0.99938252, 0.49324585],
     8120                             [- 6.27325202, - 0.00038286, 0.00023454, 7.27286916, 0.99883050, 0.99938260, 0.49324579],
     8121                             [- 6.27325213, - 0.00038281, 0.00023451, 7.27286932, 0.99883065, 0.99938268, 0.49324589],
     8122                             [- 6.27325224, - 0.00038276, 0.00023448, 7.27286948, 0.99883079, 0.99938275, 0.49324588],
     8123                             [- 6.27325236, - 0.00038272, 0.00023446, 7.27286964, 0.99883094, 0.99938283, 0.49324586],
     8124                             [- 6.27325247, - 0.00038267, 0.00023443, 7.27286980, 0.99883108, 0.99938291, 0.49324588],
     8125                             [- 6.27325258, - 0.00038262, 0.00023440, 7.27286996, 0.99883123, 0.99938298, 0.49324600],
     8126                             [- 6.27325269, - 0.00038257, 0.00023437, 7.27287012, 0.99883137, 0.99938306, 0.49324602],
     8127                             [- 6.27325281, - 0.00038253, 0.00023434, 7.27287028, 0.99883152, 0.99938313, 0.49324593],
     8128                             [- 6.27325292, - 0.00038248, 0.00023431, 7.27287044, 0.99883166, 0.99938321, 0.49324600],
     8129                             [- 6.27325303, - 0.00038243, 0.00023428, 7.27287060, 0.99883180, 0.99938329, 0.49324594],
     8130                             [- 6.27325315, - 0.00038238, 0.00023425, 7.27287076, 0.99883195, 0.99938336, 0.49324594],
     8131                             [- 6.27325326, - 0.00038234, 0.00023422, 7.27287092, 0.99883209, 0.99938344, 0.49324616],
     8132                             [- 6.27325337, - 0.00038229, 0.00023419, 7.27287108, 0.99883224, 0.99938352, 0.49324609],
     8133                             [- 6.27325349, - 0.00038224, 0.00023417, 7.27287124, 0.99883238, 0.99938359, 0.49324615],
     8134                             [- 6.27325360, - 0.00038220, 0.00023414, 7.27287140, 0.99883253, 0.99938367, 0.49324616],
     8135                             [- 6.27325371, - 0.00038215, 0.00023411, 7.27287156, 0.99883267, 0.99938374, 0.49324616],
     8136                             [- 6.27325383, - 0.00038210, 0.00023408, 7.27287172, 0.99883281, 0.99938382, 0.49324603],
     8137                             [- 6.27325394, - 0.00038205, 0.00023405, 7.27287188, 0.99883296, 0.99938390, 0.49324614],
     8138                             [- 6.27325405, - 0.00038201, 0.00023402, 7.27287204, 0.99883310, 0.99938397, 0.49324629],
     8139                             [- 6.27325416, - 0.00038196, 0.00023399, 7.27287220, 0.99883325, 0.99938405, 0.49324628],
     8140                             [- 6.27325428, - 0.00038191, 0.00023396, 7.27287236, 0.99883339, 0.99938412, 0.49324634],
     8141                             [- 6.27325439, - 0.00038187, 0.00023393, 7.27287252, 0.99883353, 0.99938420, 0.49324618],
     8142                             [- 6.27325450, - 0.00038182, 0.00023391, 7.27287268, 0.99883368, 0.99938428, 0.49324620],
     8143                             [- 6.27325462, - 0.00038177, 0.00023388, 7.27287284, 0.99883382, 0.99938435, 0.49324621],
     8144                             [- 6.27325473, - 0.00038172, 0.00023385, 7.27287300, 0.99883397, 0.99938443, 0.49324620],
     8145                             [- 6.27325484, - 0.00038168, 0.00023382, 7.27287316, 0.99883411, 0.99938450, 0.49324631],
     8146                             [- 6.27325495, - 0.00038163, 0.00023379, 7.27287332, 0.99883425, 0.99938458, 0.49324616],
     8147                             [- 6.27325507, - 0.00038158, 0.00023376, 7.27287348, 0.99883440, 0.99938466, 0.49324629],
     8148                             [- 6.27325518, - 0.00038154, 0.00023373, 7.27287364, 0.99883454, 0.99938473, 0.49324635],
     8149                             [- 6.27325529, - 0.00038149, 0.00023370, 7.27287380, 0.99883469, 0.99938481, 0.49324648],
     8150                             [- 6.27325540, - 0.00038144, 0.00023367, 7.27287396, 0.99883483, 0.99938488, 0.49324638],
     8151                             [- 6.27325552, - 0.00038140, 0.00023365, 7.27287412, 0.99883497, 0.99938496, 0.49324637],
     8152                             [- 6.27325563, - 0.00038135, 0.00023362, 7.27287428, 0.99883512, 0.99938503, 0.49324641],
     8153                             [- 6.27325574, - 0.00038130, 0.00023359, 7.27287444, 0.99883526, 0.99938511, 0.49324645],
     8154                             [- 6.27325585, - 0.00038125, 0.00023356, 7.27287460, 0.99883540, 0.99938519, 0.49324647],
     8155                             [- 6.27325597, - 0.00038121, 0.00023353, 7.27287476, 0.99883555, 0.99938526, 0.49324642],
     8156                             [- 6.27325608, - 0.00038116, 0.00023350, 7.27287492, 0.99883569, 0.99938534, 0.49324651],
     8157                             [- 6.27325619, - 0.00038111, 0.00023347, 7.27287508, 0.99883583, 0.99938541, 0.49324649],
     8158                             [- 6.27325630, - 0.00038107, 0.00023344, 7.27287524, 0.99883598, 0.99938549, 0.49324647],
     8159                             [- 6.27325642, - 0.00038102, 0.00023342, 7.27287540, 0.99883612, 0.99938556, 0.49324658],
     8160                             [- 6.27325653, - 0.00038097, 0.00023339, 7.27287555, 0.99883626, 0.99938564, 0.49324664],
     8161                             [- 6.27325664, - 0.00038093, 0.00023336, 7.27287571, 0.99883641, 0.99938572, 0.49324649],
     8162                             [- 6.27325675, - 0.00038088, 0.00023333, 7.27287587, 0.99883655, 0.99938579, 0.49324658],
     8163                             [- 6.27325686, - 0.00038083, 0.00023330, 7.27287603, 0.99883669, 0.99938587, 0.49324653],
     8164                             [- 6.27325698, - 0.00038079, 0.00023327, 7.27287619, 0.99883684, 0.99938594, 0.49324658],
     8165                             [- 6.27325709, - 0.00038074, 0.00023324, 7.27287635, 0.99883698, 0.99938602, 0.49324649],
     8166                             [- 6.27325720, - 0.00038069, 0.00023321, 7.27287651, 0.99883712, 0.99938609, 0.49324663],
     8167                             [- 6.27325731, - 0.00038065, 0.00023319, 7.27287667, 0.99883727, 0.99938617, 0.49324670],
     8168                             [- 6.27325742, - 0.00038060, 0.00023316, 7.27287683, 0.99883741, 0.99938624, 0.49324665],
     8169                             [- 6.27325754, - 0.00038055, 0.00023313, 7.27287699, 0.99883755, 0.99938632, 0.49324681],
     8170                             [- 6.27325765, - 0.00038050, 0.00023310, 7.27287714, 0.99883769, 0.99938640, 0.49324678],
     8171                             [- 6.27325776, - 0.00038046, 0.00023307, 7.27287730, 0.99883784, 0.99938647, 0.49324668],
     8172                             [- 6.27325787, - 0.00038041, 0.00023304, 7.27287746, 0.99883798, 0.99938655, 0.49324676],
     8173                             [- 6.27325798, - 0.00038036, 0.00023301, 7.27287762, 0.99883812, 0.99938662, 0.49324679],
     8174                             [- 6.27325810, - 0.00038032, 0.00023299, 7.27287778, 0.99883827, 0.99938670, 0.49324680],
     8175                             [- 6.27325821, - 0.00038027, 0.00023296, 7.27287794, 0.99883841, 0.99938677, 0.49324686],
     8176                             [- 6.27325832, - 0.00038022, 0.00023293, 7.27287810, 0.99883855, 0.99938685, 0.49324703],
     8177                             [- 6.27325843, - 0.00038018, 0.00023290, 7.27287825, 0.99883869, 0.99938692, 0.49324683],
     8178                             [- 6.27325854, - 0.00038013, 0.00023287, 7.27287841, 0.99883884, 0.99938700, 0.49324688],
     8179                             [- 6.27325866, - 0.00038008, 0.00023284, 7.27287857, 0.99883898, 0.99938707, 0.49324687],
     8180                             [- 6.27325877, - 0.00038004, 0.00023281, 7.27287873, 0.99883912, 0.99938715, 0.49324692],
     8181                             [- 6.27325888, - 0.00037999, 0.00023279, 7.27287889, 0.99883926, 0.99938722, 0.49324678],
     8182                             [- 6.27325899, - 0.00037994, 0.00023276, 7.27287905, 0.99883941, 0.99938730, 0.49324693],
     8183                             [- 6.27325910, - 0.00037990, 0.00023273, 7.27287920, 0.99883955, 0.99938737, 0.49324693],
     8184                             [- 6.27325921, - 0.00037985, 0.00023270, 7.27287936, 0.99883969, 0.99938745, 0.49324695],
     8185                             [- 6.27325932, - 0.00037980, 0.00023267, 7.27287952, 0.99883983, 0.99938752, 0.49324704],
     8186                             [- 6.27325944, - 0.00037976, 0.00023264, 7.27287968, 0.99883998, 0.99938760, 0.49324699],
     8187                             [- 6.27325955, - 0.00037971, 0.00023261, 7.27287984, 0.99884012, 0.99938768, 0.49324702],
     8188                             [- 6.27325966, - 0.00037966, 0.00023259, 7.27287999, 0.99884026, 0.99938775, 0.49324694],
     8189                             [- 6.27325977, - 0.00037962, 0.00023256, 7.27288015, 0.99884040, 0.99938783, 0.49324708],
     8190                             [- 6.27325988, - 0.00037957, 0.00023253, 7.27288031, 0.99884055, 0.99938790, 0.49324716],
     8191                             [- 6.27325999, - 0.00037953, 0.00023250, 7.27288047, 0.99884069, 0.99938798, 0.49324712],
     8192                             [- 6.27326011, - 0.00037948, 0.00023247, 7.27288063, 0.99884083, 0.99938805, 0.49324715],
     8193                             [- 6.27326022, - 0.00037943, 0.00023244, 7.27288078, 0.99884097, 0.99938813, 0.49324707],
     8194                             [- 6.27326033, - 0.00037939, 0.00023241, 7.27288094, 0.99884111, 0.99938820, 0.49324704],
     8195                             [- 6.27326044, - 0.00037934, 0.00023239, 7.27288110, 0.99884126, 0.99938828, 0.49324718],
     8196                             [- 6.27326055, - 0.00037929, 0.00023236, 7.27288126, 0.99884140, 0.99938835, 0.49324714],
     8197                             [- 6.27326066, - 0.00037925, 0.00023233, 7.27288142, 0.99884154, 0.99938843, 0.49324726],
     8198                             [- 6.27326077, - 0.00037920, 0.00023230, 7.27288157, 0.99884168, 0.99938850, 0.49324702],
     8199                             [- 6.27326088, - 0.00037915, 0.00023227, 7.27288173, 0.99884182, 0.99938858, 0.49324721],
     8200                             [- 6.27326100, - 0.00037911, 0.00023224, 7.27288189, 0.99884197, 0.99938865, 0.49324723],
     8201                             [- 6.27326111, - 0.00037906, 0.00023221, 7.27288205, 0.99884211, 0.99938873, 0.49324718],
     8202                             [- 6.27326122, - 0.00037901, 0.00023219, 7.27288220, 0.99884225, 0.99938880, 0.49324712],
     8203                             [- 6.27326133, - 0.00037897, 0.00023216, 7.27288236, 0.99884239, 0.99938887, 0.49324742],
     8204                             [- 6.27326144, - 0.00037892, 0.00023213, 7.27288252, 0.99884253, 0.99938895, 0.49324731],
     8205                             [- 6.27326155, - 0.00037887, 0.00023210, 7.27288268, 0.99884267, 0.99938902, 0.49324731],
     8206                             [- 6.27326166, - 0.00037883, 0.00023207, 7.27288283, 0.99884282, 0.99938910, 0.49324735],
     8207                             [- 6.27326177, - 0.00037878, 0.00023204, 7.27288299, 0.99884296, 0.99938917, 0.49324724],
     8208                             [- 6.27326188, - 0.00037874, 0.00023202, 7.27288315, 0.99884310, 0.99938925, 0.49324733],
     8209                             [- 6.27326199, - 0.00037869, 0.00023199, 7.27288331, 0.99884324, 0.99938932, 0.49324726],
     8210                             [- 6.27326211, - 0.00037864, 0.00023196, 7.27288346, 0.99884338, 0.99938940, 0.49324734],
     8211                             [- 6.27326222, - 0.00037860, 0.00023193, 7.27288362, 0.99884352, 0.99938947, 0.49324737],
     8212                             [- 6.27326233, - 0.00037855, 0.00023190, 7.27288378, 0.99884367, 0.99938955, 0.49324746],
     8213                             [- 6.27326244, - 0.00037850, 0.00023187, 7.27288393, 0.99884381, 0.99938962, 0.49324742],
     8214                             [- 6.27326255, - 0.00037846, 0.00023185, 7.27288409, 0.99884395, 0.99938970, 0.49324750],
     8215                             [- 6.27326266, - 0.00037841, 0.00023182, 7.27288425, 0.99884409, 0.99938977, 0.49324754],
     8216                             [- 6.27326277, - 0.00037837, 0.00023179, 7.27288441, 0.99884423, 0.99938985, 0.49324741],
     8217                             [- 6.27326288, - 0.00037832, 0.00023176, 7.27288456, 0.99884437, 0.99938992, 0.49324760],
     8218                             [- 6.27326299, - 0.00037827, 0.00023173, 7.27288472, 0.99884451, 0.99939000, 0.49324751],
     8219                             [- 6.27326310, - 0.00037823, 0.00023170, 7.27288488, 0.99884466, 0.99939007, 0.49324747],
     8220                             [- 6.27326321, - 0.00037818, 0.00023168, 7.27288503, 0.99884480, 0.99939014, 0.49324756],
     8221                             [- 6.27326332, - 0.00037813, 0.00023165, 7.27288519, 0.99884494, 0.99939022, 0.49324744],
     8222                             [- 6.27326343, - 0.00037809, 0.00023162, 7.27288535, 0.99884508, 0.99939029, 0.49324765],
     8223                             [- 6.27326354, - 0.00037804, 0.00023159, 7.27288550, 0.99884522, 0.99939037, 0.49324755],
     8224                             [- 6.27326366, - 0.00037800, 0.00023156, 7.27288566, 0.99884536, 0.99939044, 0.49324760],
     8225                             [- 6.27326377, - 0.00037795, 0.00023153, 7.27288582, 0.99884550, 0.99939052, 0.49324764],
     8226                             [- 6.27326388, - 0.00037790, 0.00023151, 7.27288597, 0.99884564, 0.99939059, 0.49324764],
     8227                             [- 6.27326399, - 0.00037786, 0.00023148, 7.27288613, 0.99884578, 0.99939067, 0.49324768],
     8228                             [- 6.27326410, - 0.00037781, 0.00023145, 7.27288629, 0.99884592, 0.99939074, 0.49324772],
     8229                             [- 6.27326421, - 0.00037777, 0.00023142, 7.27288644, 0.99884607, 0.99939081, 0.49324775],
     8230                             [- 6.27326432, - 0.00037772, 0.00023139, 7.27288660, 0.99884621, 0.99939089, 0.49324763],
     8231                             [- 6.27326443, - 0.00037767, 0.00023136, 7.27288676, 0.99884635, 0.99939096, 0.49324773],
     8232                             [- 6.27326454, - 0.00037763, 0.00023134, 7.27288691, 0.99884649, 0.99939104, 0.49324770],
     8233                             [- 6.27326465, - 0.00037758, 0.00023131, 7.27288707, 0.99884663, 0.99939111, 0.49324772],
     8234                             [- 6.27326476, - 0.00037753, 0.00023128, 7.27288722, 0.99884677, 0.99939119, 0.49324778],
     8235                             [- 6.27326487, - 0.00037749, 0.00023125, 7.27288738, 0.99884691, 0.99939126, 0.49324783],
     8236                             [- 6.27326498, - 0.00037744, 0.00023122, 7.27288754, 0.99884705, 0.99939133, 0.49324780],
     8237                             [- 6.27326509, - 0.00037740, 0.00023120, 7.27288769, 0.99884719, 0.99939141, 0.49324776],
     8238                             [- 6.27326520, - 0.00037735, 0.00023117, 7.27288785, 0.99884733, 0.99939148, 0.49324786],
     8239                             [- 6.27326531, - 0.00037730, 0.00023114, 7.27288801, 0.99884747, 0.99939156, 0.49324788],
     8240                             [- 6.27326542, - 0.00037726, 0.00023111, 7.27288816, 0.99884761, 0.99939163, 0.49324776],
     8241                             [- 6.27326553, - 0.00037721, 0.00023108, 7.27288832, 0.99884775, 0.99939171, 0.49324788],
     8242                             [- 6.27326564, - 0.00037717, 0.00023105, 7.27288847, 0.99884789, 0.99939178, 0.49324801],
     8243                             [- 6.27326575, - 0.00037712, 0.00023103, 7.27288863, 0.99884803, 0.99939185, 0.49324790],
     8244                             [- 6.27326586, - 0.00037707, 0.00023100, 7.27288879, 0.99884817, 0.99939193, 0.49324783],
     8245                             [- 6.27326597, - 0.00037703, 0.00023097, 7.27288894, 0.99884831, 0.99939200, 0.49324795],
     8246                             [- 6.27326608, - 0.00037698, 0.00023094, 7.27288910, 0.99884846, 0.99939208, 0.49324808],
     8247                             [- 6.27326619, - 0.00037694, 0.00023091, 7.27288925, 0.99884860, 0.99939215, 0.49324796],
     8248                             [- 6.27326630, - 0.00037689, 0.00023089, 7.27288941, 0.99884874, 0.99939222, 0.49324802],
     8249                             [- 6.27326641, - 0.00037685, 0.00023086, 7.27288956, 0.99884888, 0.99939230, 0.49324786],
     8250                             [- 6.27326652, - 0.00037680, 0.00023083, 7.27288972, 0.99884902, 0.99939237, 0.49324795],
     8251                             [- 6.27326663, - 0.00037675, 0.00023080, 7.27288988, 0.99884916, 0.99939245, 0.49324822],
     8252                             [- 6.27326674, - 0.00037671, 0.00023077, 7.27289003, 0.99884930, 0.99939252, 0.49324803],
     8253                             [- 6.27326685, - 0.00037666, 0.00023074, 7.27289019, 0.99884944, 0.99939259, 0.49324799],
     8254                             [- 6.27326696, - 0.00037662, 0.00023072, 7.27289034, 0.99884958, 0.99939267, 0.49324798],
     8255                             [- 6.27326707, - 0.00037657, 0.00023069, 7.27289050, 0.99884972, 0.99939274, 0.49324802],
     8256                             [- 6.27326718, - 0.00037652, 0.00023066, 7.27289065, 0.99884986, 0.99939282, 0.49324803],
     8257                             [- 6.27326729, - 0.00037648, 0.00023063, 7.27289081, 0.99885000, 0.99939289, 0.49324811],
     8258                             [- 6.27326740, - 0.00037643, 0.00023060, 7.27289096, 0.99885014, 0.99939296, 0.49324817],
     8259                             [- 6.27326751, - 0.00037639, 0.00023058, 7.27289112, 0.99885028, 0.99939304, 0.49324821],
     8260                             [- 6.27326762, - 0.00037634, 0.00023055, 7.27289127, 0.99885042, 0.99939311, 0.49324821],
     8261                             [- 6.27326773, - 0.00037630, 0.00023052, 7.27289143, 0.99885056, 0.99939318, 0.49324827],
     8262                             [- 6.27326783, - 0.00037625, 0.00023049, 7.27289159, 0.99885070, 0.99939326, 0.49324820],
     8263                             [- 6.27326794, - 0.00037620, 0.00023046, 7.27289174, 0.99885084, 0.99939333, 0.49324832],
     8264                             [- 6.27326805, - 0.00037616, 0.00023044, 7.27289190, 0.99885097, 0.99939341, 0.49324834],
     8265                             [- 6.27326816, - 0.00037611, 0.00023041, 7.27289205, 0.99885111, 0.99939348, 0.49324841],
     8266                             [- 6.27326827, - 0.00037607, 0.00023038, 7.27289221, 0.99885125, 0.99939355, 0.49324834],
     8267                             [- 6.27326838, - 0.00037602, 0.00023035, 7.27289236, 0.99885139, 0.99939363, 0.49324834],
     8268                             [- 6.27326849, - 0.00037598, 0.00023032, 7.27289252, 0.99885153, 0.99939370, 0.49324836],
     8269                             [- 6.27326860, - 0.00037593, 0.00023030, 7.27289267, 0.99885167, 0.99939377, 0.49324838],
     8270                             [- 6.27326871, - 0.00037588, 0.00023027, 7.27289283, 0.99885181, 0.99939385, 0.49324843],
     8271                             [- 6.27326882, - 0.00037584, 0.00023024, 7.27289298, 0.99885195, 0.99939392, 0.49324818],
     8272                             [- 6.27326893, - 0.00037579, 0.00023021, 7.27289314, 0.99885209, 0.99939399, 0.49324852],
     8273                             [- 6.27326904, - 0.00037575, 0.00023018, 7.27289329, 0.99885223, 0.99939407, 0.49324850],
     8274                             [- 6.27326915, - 0.00037570, 0.00023016, 7.27289345, 0.99885237, 0.99939414, 0.49324851],
     8275                             [- 6.27326926, - 0.00037566, 0.00023013, 7.27289360, 0.99885251, 0.99939422, 0.49324838],
     8276                             [- 6.27326937, - 0.00037561, 0.00023010, 7.27289375, 0.99885265, 0.99939429, 0.49324847],
     8277                             [- 6.27326947, - 0.00037557, 0.00023007, 7.27289391, 0.99885279, 0.99939436, 0.49324849],
     8278                             [- 6.27326958, - 0.00037552, 0.00023004, 7.27289406, 0.99885293, 0.99939444, 0.49324851],
     8279                             [- 6.27326969, - 0.00037547, 0.00023002, 7.27289422, 0.99885307, 0.99939451, 0.49324844],
     8280                             [- 6.27326980, - 0.00037543, 0.00022999, 7.27289437, 0.99885321, 0.99939458, 0.49324862],
     8281                             [- 6.27326991, - 0.00037538, 0.00022996, 7.27289453, 0.99885334, 0.99939466, 0.49324845],
     8282                             [- 6.27327002, - 0.00037534, 0.00022993, 7.27289468, 0.99885348, 0.99939473, 0.49324866],
     8283                             [- 6.27327013, - 0.00037529, 0.00022991, 7.27289484, 0.99885362, 0.99939480, 0.49324850],
     8284                             [- 6.27327024, - 0.00037525, 0.00022988, 7.27289499, 0.99885376, 0.99939488, 0.49324874],
     8285                             [- 6.27327035, - 0.00037520, 0.00022985, 7.27289514, 0.99885390, 0.99939495, 0.49324863],
     8286                             [- 6.27327045, - 0.00037516, 0.00022982, 7.27289530, 0.99885404, 0.99939502, 0.49324861],
     8287                             [- 6.27327056, - 0.00037511, 0.00022979, 7.27289545, 0.99885418, 0.99939510, 0.49324863],
     8288                             [- 6.27327067, - 0.00037506, 0.00022977, 7.27289561, 0.99885432, 0.99939517, 0.49324878],
     8289                             [- 6.27327078, - 0.00037502, 0.00022974, 7.27289576, 0.99885446, 0.99939524, 0.49324852],
     8290                             [- 6.27327089, - 0.00037497, 0.00022971, 7.27289592, 0.99885459, 0.99939532, 0.49324868],
     8291                             [- 6.27327100, - 0.00037493, 0.00022968, 7.27289607, 0.99885473, 0.99939539, 0.49324870],
     8292                             [- 6.27327111, - 0.00037488, 0.00022965, 7.27289622, 0.99885487, 0.99939546, 0.49324867],
     8293                             [- 6.27327122, - 0.00037484, 0.00022963, 7.27289638, 0.99885501, 0.99939554, 0.49324861],
     8294                             [- 6.27327132, - 0.00037479, 0.00022960, 7.27289653, 0.99885515, 0.99939561, 0.49324879],
     8295                             [- 6.27327143, - 0.00037475, 0.00022957, 7.27289669, 0.99885529, 0.99939568, 0.49324878],
     8296                             [- 6.27327154, - 0.00037470, 0.00022954, 7.27289684, 0.99885543, 0.99939576, 0.49324873],
     8297                             [- 6.27327165, - 0.00037466, 0.00022952, 7.27289699, 0.99885557, 0.99939583, 0.49324877],
     8298                             [- 6.27327176, - 0.00037461, 0.00022949, 7.27289715, 0.99885570, 0.99939590, 0.49324893],
     8299                             [- 6.27327187, - 0.00037457, 0.00022946, 7.27289730, 0.99885584, 0.99939597, 0.49324876],
     8300                             [- 6.27327198, - 0.00037452, 0.00022943, 7.27289746, 0.99885598, 0.99939605, 0.49324876],
     8301                             [- 6.27327208, - 0.00037447, 0.00022940, 7.27289761, 0.99885612, 0.99939612, 0.49324883],
     8302                             [- 6.27327219, - 0.00037443, 0.00022938, 7.27289776, 0.99885626, 0.99939619, 0.49324897],
     8303                             [- 6.27327230, - 0.00037438, 0.00022935, 7.27289792, 0.99885640, 0.99939627, 0.49324903],
     8304                             [- 6.27327241, - 0.00037434, 0.00022932, 7.27289807, 0.99885653, 0.99939634, 0.49324897],
     8305                             [- 6.27327252, - 0.00037429, 0.00022929, 7.27289822, 0.99885667, 0.99939641, 0.49324915],
     8306                             [- 6.27327263, - 0.00037425, 0.00022927, 7.27289838, 0.99885681, 0.99939649, 0.49324899],
     8307                             [- 6.27327273, - 0.00037420, 0.00022924, 7.27289853, 0.99885695, 0.99939656, 0.49324895],
     8308                             [- 6.27327284, - 0.00037416, 0.00022921, 7.27289869, 0.99885709, 0.99939663, 0.49324901],
     8309                             [- 6.27327295, - 0.00037411, 0.00022918, 7.27289884, 0.99885723, 0.99939671, 0.49324899],
     8310                             [- 6.27327306, - 0.00037407, 0.00022915, 7.27289899, 0.99885736, 0.99939678, 0.49324910],
     8311                             [- 6.27327317, - 0.00037402, 0.00022913, 7.27289915, 0.99885750, 0.99939685, 0.49324893],
     8312                             [- 6.27327328, - 0.00037398, 0.00022910, 7.27289930, 0.99885764, 0.99939692, 0.49324897],
     8313                             [- 6.27327338, - 0.00037393, 0.00022907, 7.27289945, 0.99885778, 0.99939700, 0.49324903],
     8314                             [- 6.27327349, - 0.00037389, 0.00022904, 7.27289961, 0.99885792, 0.99939707, 0.49324907],
     8315                             [- 6.27327360, - 0.00037384, 0.00022902, 7.27289976, 0.99885805, 0.99939714, 0.49324912],
     8316                             [- 6.27327371, - 0.00037380, 0.00022899, 7.27289991, 0.99885819, 0.99939722, 0.49324911],
     8317                             [- 6.27327382, - 0.00037375, 0.00022896, 7.27290007, 0.99885833, 0.99939729, 0.49324918],
     8318                             [- 6.27327392, - 0.00037371, 0.00022893, 7.27290022, 0.99885847, 0.99939736, 0.49324911],
     8319                             [- 6.27327403, - 0.00037366, 0.00022891, 7.27290037, 0.99885861, 0.99939743, 0.49324922],
     8320                             [- 6.27327414, - 0.00037362, 0.00022888, 7.27290052, 0.99885874, 0.99939751, 0.49324912],
     8321                             [- 6.27327425, - 0.00037357, 0.00022885, 7.27290068, 0.99885888, 0.99939758, 0.49324914],
     8322                             [- 6.27327436, - 0.00037353, 0.00022882, 7.27290083, 0.99885902, 0.99939765, 0.49324919],
     8323                             [- 6.27327446, - 0.00037348, 0.00022880, 7.27290098, 0.99885916, 0.99939772, 0.49324915],
     8324                             [- 6.27327457, - 0.00037344, 0.00022877, 7.27290114, 0.99885929, 0.99939780, 0.49324920],
     8325                             [- 6.27327468, - 0.00037339, 0.00022874, 7.27290129, 0.99885943, 0.99939787, 0.49324914],
     8326                             [- 6.27327479, - 0.00037335, 0.00022871, 7.27290144, 0.99885957, 0.99939794, 0.49324927],
     8327                             [- 6.27327490, - 0.00037330, 0.00022868, 7.27290160, 0.99885971, 0.99939801, 0.49324924],
     8328                             [- 6.27327500, - 0.00037326, 0.00022866, 7.27290175, 0.99885984, 0.99939809, 0.49324926],
     8329                             [- 6.27327511, - 0.00037321, 0.00022863, 7.27290190, 0.99885998, 0.99939816, 0.49324920],
     8330                             [- 6.27327522, - 0.00037317, 0.00022860, 7.27290205, 0.99886012, 0.99939823, 0.49324932],
     8331                             [- 6.27327533, - 0.00037312, 0.00022857, 7.27290221, 0.99886026, 0.99939831, 0.49324939],
     8332                             [- 6.27327543, - 0.00037308, 0.00022855, 7.27290236, 0.99886039, 0.99939838, 0.49324946],
     8333                             [- 6.27327554, - 0.00037303, 0.00022852, 7.27290251, 0.99886053, 0.99939845, 0.49324935],
     8334                             [- 6.27327565, - 0.00037299, 0.00022849, 7.27290266, 0.99886067, 0.99939852, 0.49324930],
     8335                             [- 6.27327576, - 0.00037294, 0.00022846, 7.27290282, 0.99886081, 0.99939860, 0.49324950],
     8336                             [- 6.27327586, - 0.00037290, 0.00022844, 7.27290297, 0.99886094, 0.99939867, 0.49324938],
     8337                             [- 6.27327597, - 0.00037285, 0.00022841, 7.27290312, 0.99886108, 0.99939874, 0.49324942],
     8338                             [- 6.27327608, - 0.00037281, 0.00022838, 7.27290327, 0.99886122, 0.99939881, 0.49324944],
     8339                             [- 6.27327619, - 0.00037276, 0.00022835, 7.27290343, 0.99886136, 0.99939888, 0.49324942],
     8340                             [- 6.27327629, - 0.00037272, 0.00022833, 7.27290358, 0.99886149, 0.99939896, 0.49324940],
     8341                             [- 6.27327640, - 0.00037267, 0.00022830, 7.27290373, 0.99886163, 0.99939903, 0.49324954],
     8342                             [- 6.27327651, - 0.00037263, 0.00022827, 7.27290388, 0.99886177, 0.99939910, 0.49324936],
     8343                             [- 6.27327662, - 0.00037258, 0.00022824, 7.27290404, 0.99886190, 0.99939917, 0.49324945],
     8344                             [- 6.27327672, - 0.00037254, 0.00022822, 7.27290419, 0.99886204, 0.99939925, 0.49324953],
     8345                             [- 6.27327683, - 0.00037249, 0.00022819, 7.27290434, 0.99886218, 0.99939932, 0.49324957],
     8346                             [- 6.27327694, - 0.00037245, 0.00022816, 7.27290449, 0.99886231, 0.99939939, 0.49324952],
     8347                             [- 6.27327705, - 0.00037240, 0.00022813, 7.27290464, 0.99886245, 0.99939946, 0.49324959],
     8348                             [- 6.27327715, - 0.00037236, 0.00022811, 7.27290480, 0.99886259, 0.99939954, 0.49324957],
     8349                             [- 6.27327726, - 0.00037231, 0.00022808, 7.27290495, 0.99886273, 0.99939961, 0.49324964],
     8350                             [- 6.27327737, - 0.00037227, 0.00022805, 7.27290510, 0.99886286, 0.99939968, 0.49324963],
     8351                             [- 6.27327747, - 0.00037222, 0.00022802, 7.27290525, 0.99886300, 0.99939975, 0.49324974],
     8352                             [- 6.27327758, - 0.00037218, 0.00022800, 7.27290540, 0.99886314, 0.99939982, 0.49324966],
     8353                             [- 6.27327769, - 0.00037213, 0.00022797, 7.27290556, 0.99886327, 0.99939990, 0.49324952],
     8354                             [- 6.27327780, - 0.00037209, 0.00022794, 7.27290571, 0.99886341, 0.99939997, 0.49324969],
     8355                             [- 6.27327790, - 0.00037204, 0.00022791, 7.27290586, 0.99886355, 0.99940004, 0.49324970],
     8356                             [- 6.27327801, - 0.00037200, 0.00022789, 7.27290601, 0.99886368, 0.99940011, 0.49324976],
     8357                             [- 6.27327812, - 0.00037195, 0.00022786, 7.27290616, 0.99886382, 0.99940019, 0.49324984],
     8358                             [- 6.27327822, - 0.00037191, 0.00022783, 7.27290631, 0.99886396, 0.99940026, 0.49324963],
     8359                             [- 6.27327833, - 0.00037187, 0.00022781, 7.27290647, 0.99886409, 0.99940033, 0.49324968],
     8360                             [- 6.27327844, - 0.00037182, 0.00022778, 7.27290662, 0.99886423, 0.99940040, 0.49324978],
     8361                             [- 6.27327855, - 0.00037178, 0.00022775, 7.27290677, 0.99886436, 0.99940047, 0.49324985],
     8362                             [- 6.27327865, - 0.00037173, 0.00022772, 7.27290692, 0.99886450, 0.99940055, 0.49325000],
     8363                             [- 6.27327876, - 0.00037169, 0.00022770, 7.27290707, 0.99886464, 0.99940062, 0.49324984],
     8364                             [- 6.27327887, - 0.00037164, 0.00022767, 7.27290722, 0.99886477, 0.99940069, 0.49324982],
     8365                             [- 6.27327897, - 0.00037160, 0.00022764, 7.27290737, 0.99886491, 0.99940076, 0.49324988],
     8366                             [- 6.27327908, - 0.00037155, 0.00022761, 7.27290753, 0.99886505, 0.99940083, 0.49325015],
     8367                             [- 6.27327919, - 0.00037151, 0.00022759, 7.27290768, 0.99886518, 0.99940091, 0.49324977],
     8368                             [- 6.27327929, - 0.00037146, 0.00022756, 7.27290783, 0.99886532, 0.99940098, 0.49324993],
     8369                             [- 6.27327940, - 0.00037142, 0.00022753, 7.27290798, 0.99886546, 0.99940105, 0.49325002],
     8370                             [- 6.27327951, - 0.00037137, 0.00022750, 7.27290813, 0.99886559, 0.99940112, 0.49324999],
     8371                             [- 6.27327961, - 0.00037133, 0.00022748, 7.27290828, 0.99886573, 0.99940119, 0.49325000],
     8372                             [- 6.27327972, - 0.00037129, 0.00022745, 7.27290843, 0.99886586, 0.99940126, 0.49325006],
     8373                             [- 6.27327983, - 0.00037124, 0.00022742, 7.27290858, 0.99886600, 0.99940134, 0.49324994],
     8374                             [- 6.27327993, - 0.00037120, 0.00022740, 7.27290874, 0.99886614, 0.99940141, 0.49324986],
     8375                             [- 6.27328004, - 0.00037115, 0.00022737, 7.27290889, 0.99886627, 0.99940148, 0.49325009],
     8376                             [- 6.27328015, - 0.00037111, 0.00022734, 7.27290904, 0.99886641, 0.99940155, 0.49325012],
     8377                             [- 6.27328025, - 0.00037106, 0.00022731, 7.27290919, 0.99886654, 0.99940162, 0.49325015],
     8378                             [- 6.27328036, - 0.00037102, 0.00022729, 7.27290934, 0.99886668, 0.99940170, 0.49325010],
     8379                             [- 6.27328047, - 0.00037097, 0.00022726, 7.27290949, 0.99886682, 0.99940177, 0.49325020],
     8380                             [- 6.27328057, - 0.00037093, 0.00022723, 7.27290964, 0.99886695, 0.99940184, 0.49325004],
     8381                             [- 6.27328068, - 0.00037089, 0.00022720, 7.27290979, 0.99886709, 0.99940191, 0.49325014],
     8382                             [- 6.27328078, - 0.00037084, 0.00022718, 7.27290994, 0.99886722, 0.99940198, 0.49325025],
     8383                             [- 6.27328089, - 0.00037080, 0.00022715, 7.27291009, 0.99886736, 0.99940205, 0.49325008],
     8384                             [- 6.27328100, - 0.00037075, 0.00022712, 7.27291024, 0.99886749, 0.99940213, 0.49325032],
     8385                             [- 6.27328110, - 0.00037071, 0.00022710, 7.27291040, 0.99886763, 0.99940220, 0.49325016],
     8386                             [- 6.27328121, - 0.00037066, 0.00022707, 7.27291055, 0.99886777, 0.99940227, 0.49325010],
     8387                             [- 6.27328132, - 0.00037062, 0.00022704, 7.27291070, 0.99886790, 0.99940234, 0.49325006],
     8388                             [- 6.27328142, - 0.00037057, 0.00022701, 7.27291085, 0.99886804, 0.99940241, 0.49325022],
     8389                             [- 6.27328153, - 0.00037053, 0.00022699, 7.27291100, 0.99886817, 0.99940248, 0.49325031],
     8390                             [- 6.27328163, - 0.00037049, 0.00022696, 7.27291115, 0.99886831, 0.99940255, 0.49325037],
     8391                             [- 6.27328174, - 0.00037044, 0.00022693, 7.27291130, 0.99886844, 0.99940263, 0.49325027],
     8392                             [- 6.27328185, - 0.00037040, 0.00022691, 7.27291145, 0.99886858, 0.99940270, 0.49325034],
     8393                             [- 6.27328195, - 0.00037035, 0.00022688, 7.27291160, 0.99886871, 0.99940277, 0.49325020],
     8394                             [- 6.27328206, - 0.00037031, 0.00022685, 7.27291175, 0.99886885, 0.99940284, 0.49325035],
     8395                             [- 6.27328217, - 0.00037026, 0.00022682, 7.27291190, 0.99886898, 0.99940291, 0.49325022],
     8396                             [- 6.27328227, - 0.00037022, 0.00022680, 7.27291205, 0.99886912, 0.99940298, 0.49325038],
     8397                             [- 6.27328238, - 0.00037018, 0.00022677, 7.27291220, 0.99886926, 0.99940305, 0.49325045],
     8398                             [- 6.27328248, - 0.00037013, 0.00022674, 7.27291235, 0.99886939, 0.99940313, 0.49325055],
     8399                             [- 6.27328259, - 0.00037009, 0.00022672, 7.27291250, 0.99886953, 0.99940320, 0.49325042],
     8400                             [- 6.27328269, - 0.00037004, 0.00022669, 7.27291265, 0.99886966, 0.99940327, 0.49325036],
     8401                             [- 6.27328280, - 0.00037000, 0.00022666, 7.27291280, 0.99886980, 0.99940334, 0.49325057],
     8402                             [- 6.27328291, - 0.00036995, 0.00022663, 7.27291295, 0.99886993, 0.99940341, 0.49325047],
     8403                             [- 6.27328301, - 0.00036991, 0.00022661, 7.27291310, 0.99887007, 0.99940348, 0.49325050],
     8404                             [- 6.27328312, - 0.00036987, 0.00022658, 7.27291325, 0.99887020, 0.99940355, 0.49325044],
     8405                             [- 6.27328322, - 0.00036982, 0.00022655, 7.27291340, 0.99887034, 0.99940363, 0.49325060],
     8406                             [- 6.27328333, - 0.00036978, 0.00022653, 7.27291355, 0.99887047, 0.99940370, 0.49325046],
     8407                             [- 6.27328344, - 0.00036973, 0.00022650, 7.27291370, 0.99887061, 0.99940377, 0.49325049],
     8408                             [- 6.27328354, - 0.00036969, 0.00022647, 7.27291385, 0.99887074, 0.99940384, 0.49325054],
     8409                             [- 6.27328365, - 0.00036965, 0.00022644, 7.27291400, 0.99887088, 0.99940391, 0.49325051],
     8410                             [- 6.27328375, - 0.00036960, 0.00022642, 7.27291415, 0.99887101, 0.99940398, 0.49325068],
     8411                             [- 6.27328386, - 0.00036956, 0.00022639, 7.27291430, 0.99887115, 0.99940405, 0.49325059],
     8412                             [- 6.27328396, - 0.00036951, 0.00022636, 7.27291445, 0.99887128, 0.99940412, 0.49325082],
     8413                             [- 6.27328407, - 0.00036947, 0.00022634, 7.27291460, 0.99887142, 0.99940419, 0.49325077],
     8414                             [- 6.27328418, - 0.00036942, 0.00022631, 7.27291475, 0.99887155, 0.99940427, 0.49325076],
     8415                             [- 6.27328428, - 0.00036938, 0.00022628, 7.27291490, 0.99887168, 0.99940434, 0.49325073],
     8416                             [- 6.27328439, - 0.00036934, 0.00022626, 7.27291505, 0.99887182, 0.99940441, 0.49325073],
     8417                             [- 6.27328449, - 0.00036929, 0.00022623, 7.27291520, 0.99887195, 0.99940448, 0.49325059],
     8418                             [- 6.27328460, - 0.00036925, 0.00022620, 7.27291535, 0.99887209, 0.99940455, 0.49325071],
     8419                             [- 6.27328470, - 0.00036920, 0.00022617, 7.27291550, 0.99887222, 0.99940462, 0.49325075],
     8420                             [- 6.27328481, - 0.00036916, 0.00022615, 7.27291565, 0.99887236, 0.99940469, 0.49325074],
     8421                             [- 6.27328491, - 0.00036912, 0.00022612, 7.27291580, 0.99887249, 0.99940476, 0.49325076],
     8422                             [- 6.27328502, - 0.00036907, 0.00022609, 7.27291595, 0.99887263, 0.99940483, 0.49325069],
     8423                             [- 6.27328512, - 0.00036903, 0.00022607, 7.27291610, 0.99887276, 0.99940491, 0.49325089],
     8424                             [- 6.27328523, - 0.00036898, 0.00022604, 7.27291624, 0.99887290, 0.99940498, 0.49325087],
     8425                             [- 6.27328533, - 0.00036894, 0.00022601, 7.27291639, 0.99887303, 0.99940505, 0.49325089],
     8426                             [- 6.27328544, - 0.00036890, 0.00022599, 7.27291654, 0.99887316, 0.99940512, 0.49325087],
     8427                             [- 6.27328555, - 0.00036885, 0.00022596, 7.27291669, 0.99887330, 0.99940519, 0.49325085],
     8428                             [- 6.27328565, - 0.00036881, 0.00022593, 7.27291684, 0.99887343, 0.99940526, 0.49325080],
     8429                             [- 6.27328576, - 0.00036876, 0.00022590, 7.27291699, 0.99887357, 0.99940533, 0.49325071],
     8430                             [- 6.27328586, - 0.00036872, 0.00022588, 7.27291714, 0.99887370, 0.99940540, 0.49325095],
     8431                             [- 6.27328597, - 0.00036868, 0.00022585, 7.27291729, 0.99887384, 0.99940547, 0.49325080],
     8432                             [- 6.27328607, - 0.00036863, 0.00022582, 7.27291744, 0.99887397, 0.99940554, 0.49325088],
     8433                             [- 6.27328618, - 0.00036859, 0.00022580, 7.27291759, 0.99887410, 0.99940561, 0.49325100],
     8434                             [- 6.27328628, - 0.00036855, 0.00022577, 7.27291774, 0.99887424, 0.99940568, 0.49325106],
     8435                             [- 6.27328639, - 0.00036850, 0.00022574, 7.27291789, 0.99887437, 0.99940576, 0.49325085],
     8436                             [- 6.27328649, - 0.00036846, 0.00022572, 7.27291803, 0.99887451, 0.99940583, 0.49325087],
     8437                             [- 6.27328660, - 0.00036841, 0.00022569, 7.27291818, 0.99887464, 0.99940590, 0.49325084],
     8438                             [- 6.27328670, - 0.00036837, 0.00022566, 7.27291833, 0.99887477, 0.99940597, 0.49325118],
     8439                             [- 6.27328681, - 0.00036833, 0.00022564, 7.27291848, 0.99887491, 0.99940604, 0.49325112],
     8440                             [- 6.27328691, - 0.00036828, 0.00022561, 7.27291863, 0.99887504, 0.99940611, 0.49325104],
     8441                             [- 6.27328702, - 0.00036824, 0.00022558, 7.27291878, 0.99887518, 0.99940618, 0.49325104],
     8442                             [- 6.27328712, - 0.00036819, 0.00022556, 7.27291893, 0.99887531, 0.99940625, 0.49325116],
     8443                             [- 6.27328723, - 0.00036815, 0.00022553, 7.27291907, 0.99887544, 0.99940632, 0.49325111],
     8444                             [- 6.27328733, - 0.00036811, 0.00022550, 7.27291922, 0.99887558, 0.99940639, 0.49325116],
     8445                             [- 6.27328744, - 0.00036806, 0.00022547, 7.27291937, 0.99887571, 0.99940646, 0.49325108],
     8446                             [- 6.27328754, - 0.00036802, 0.00022545, 7.27291952, 0.99887584, 0.99940653, 0.49325111],
     8447                             [- 6.27328764, - 0.00036798, 0.00022542, 7.27291967, 0.99887598, 0.99940660, 0.49325113],
     8448                             [- 6.27328775, - 0.00036793, 0.00022539, 7.27291982, 0.99887611, 0.99940667, 0.49325130],
     8449                             [- 6.27328785, - 0.00036789, 0.00022537, 7.27291997, 0.99887625, 0.99940674, 0.49325114],
     8450                             [- 6.27328796, - 0.00036784, 0.00022534, 7.27292011, 0.99887638, 0.99940681, 0.49325125],
     8451                             [- 6.27328806, - 0.00036780, 0.00022531, 7.27292026, 0.99887651, 0.99940689, 0.49325120],
     8452                             [- 6.27328817, - 0.00036776, 0.00022529, 7.27292041, 0.99887665, 0.99940696, 0.49325118],
     8453                             [- 6.27328827, - 0.00036771, 0.00022526, 7.27292056, 0.99887678, 0.99940703, 0.49325120],
     8454                             [- 6.27328838, - 0.00036767, 0.00022523, 7.27292071, 0.99887691, 0.99940710, 0.49325135],
     8455                             [- 6.27328848, - 0.00036763, 0.00022521, 7.27292086, 0.99887705, 0.99940717, 0.49325134],
     8456                             [- 6.27328859, - 0.00036758, 0.00022518, 7.27292100, 0.99887718, 0.99940724, 0.49325139],
     8457                             [- 6.27328869, - 0.00036754, 0.00022515, 7.27292115, 0.99887731, 0.99940731, 0.49325135],
     8458                             [- 6.27328880, - 0.00036749, 0.00022513, 7.27292130, 0.99887745, 0.99940738, 0.49325126],
     8459                             [- 6.27328890, - 0.00036745, 0.00022510, 7.27292145, 0.99887758, 0.99940745, 0.49325131],
     8460                             [- 6.27328900, - 0.00036741, 0.00022507, 7.27292160, 0.99887771, 0.99940752, 0.49325136],
     8461                             [- 6.27328911, - 0.00036736, 0.00022505, 7.27292174, 0.99887785, 0.99940759, 0.49325152],
     8462                             [- 6.27328921, - 0.00036732, 0.00022502, 7.27292189, 0.99887798, 0.99940766, 0.49325159],
     8463                             [- 6.27328932, - 0.00036728, 0.00022499, 7.27292204, 0.99887811, 0.99940773, 0.49325140],
     8464                             [- 6.27328942, - 0.00036723, 0.00022497, 7.27292219, 0.99887825, 0.99940780, 0.49325141],
     8465                             [- 6.27328953, - 0.00036719, 0.00022494, 7.27292234, 0.99887838, 0.99940787, 0.49325131],
     8466                             [- 6.27328963, - 0.00036715, 0.00022491, 7.27292248, 0.99887851, 0.99940794, 0.49325145],
     8467                             [- 6.27328973, - 0.00036710, 0.00022489, 7.27292263, 0.99887864, 0.99940801, 0.49325145],
     8468                             [- 6.27328984, - 0.00036706, 0.00022486, 7.27292278, 0.99887878, 0.99940808, 0.49325157],
     8469                             [- 6.27328994, - 0.00036702, 0.00022483, 7.27292293, 0.99887891, 0.99940815, 0.49325149],
     8470                             [- 6.27329005, - 0.00036697, 0.00022481, 7.27292307, 0.99887904, 0.99940822, 0.49325164],
     8471                             [- 6.27329015, - 0.00036693, 0.00022478, 7.27292322, 0.99887918, 0.99940829, 0.49325155],
     8472                             [- 6.27329025, - 0.00036689, 0.00022475, 7.27292337, 0.99887931, 0.99940836, 0.49325164],
     8473                             [- 6.27329036, - 0.00036684, 0.00022473, 7.27292352, 0.99887944, 0.99940843, 0.49325151],
     8474                             [- 6.27329046, - 0.00036680, 0.00022470, 7.27292366, 0.99887958, 0.99940850, 0.49325168],
     8475                             [- 6.27329057, - 0.00036675, 0.00022467, 7.27292381, 0.99887971, 0.99940857, 0.49325138],
     8476                             [- 6.27329067, - 0.00036671, 0.00022465, 7.27292396, 0.99887984, 0.99940864, 0.49325171],
     8477                             [- 6.27329078, - 0.00036667, 0.00022462, 7.27292411, 0.99887997, 0.99940871, 0.49325159],
     8478                             [- 6.27329088, - 0.00036662, 0.00022459, 7.27292425, 0.99888011, 0.99940878, 0.49325160],
     8479                             [- 6.27329098, - 0.00036658, 0.00022457, 7.27292440, 0.99888024, 0.99940885, 0.49325177],
     8480                             [- 6.27329109, - 0.00036654, 0.00022454, 7.27292455, 0.99888037, 0.99940892, 0.49325177],
     8481                             [- 6.27329119, - 0.00036649, 0.00022451, 7.27292470, 0.99888050, 0.99940899, 0.49325164],
     8482                             [- 6.27329129, - 0.00036645, 0.00022449, 7.27292484, 0.99888064, 0.99940906, 0.49325172],
     8483                             [- 6.27329140, - 0.00036641, 0.00022446, 7.27292499, 0.99888077, 0.99940913, 0.49325179],
     8484                             [- 6.27329150, - 0.00036636, 0.00022443, 7.27292514, 0.99888090, 0.99940920, 0.49325181],
     8485                             [- 6.27329161, - 0.00036632, 0.00022441, 7.27292529, 0.99888103, 0.99940927, 0.49325178],
     8486                             [- 6.27329171, - 0.00036628, 0.00022438, 7.27292543, 0.99888117, 0.99940934, 0.49325178],
     8487                             [- 6.27329181, - 0.00036623, 0.00022435, 7.27292558, 0.99888130, 0.99940941, 0.49325183],
     8488                             [- 6.27329192, - 0.00036619, 0.00022433, 7.27292573, 0.99888143, 0.99940948, 0.49325179],
     8489                             [- 6.27329202, - 0.00036615, 0.00022430, 7.27292587, 0.99888156, 0.99940955, 0.49325183],
     8490                             [- 6.27329212, - 0.00036610, 0.00022427, 7.27292602, 0.99888170, 0.99940962, 0.49325178],
     8491                             [- 6.27329223, - 0.00036606, 0.00022425, 7.27292617, 0.99888183, 0.99940969, 0.49325167],
     8492                             [- 6.27329233, - 0.00036602, 0.00022422, 7.27292631, 0.99888196, 0.99940976, 0.49325180],
     8493                             [- 6.27329244, - 0.00036597, 0.00022419, 7.27292646, 0.99888209, 0.99940983, 0.49325201],
     8494                             [- 6.27329254, - 0.00036593, 0.00022417, 7.27292661, 0.99888222, 0.99940990, 0.49325190],
     8495                             [- 6.27329264, - 0.00036589, 0.00022414, 7.27292675, 0.99888236, 0.99940997, 0.49325201],
     8496                             [- 6.27329275, - 0.00036584, 0.00022412, 7.27292690, 0.99888249, 0.99941004, 0.49325203],
     8497                             [- 6.27329285, - 0.00036580, 0.00022409, 7.27292705, 0.99888262, 0.99941011, 0.49325195],
     8498                             [- 6.27329295, - 0.00036576, 0.00022406, 7.27292720, 0.99888275, 0.99941018, 0.49325194],
     8499                             [- 6.27329306, - 0.00036571, 0.00022404, 7.27292734, 0.99888289, 0.99941025, 0.49325187],
     8500                             [- 6.27329316, - 0.00036567, 0.00022401, 7.27292749, 0.99888302, 0.99941032, 0.49325203],
     8501                             [- 6.27329326, - 0.00036563, 0.00022398, 7.27292764, 0.99888315, 0.99941039, 0.49325193],
     8502                             [- 6.27329337, - 0.00036559, 0.00022396, 7.27292778, 0.99888328, 0.99941046, 0.49325192],
     8503                             [- 6.27329347, - 0.00036554, 0.00022393, 7.27292793, 0.99888341, 0.99941053, 0.49325212],
     8504                             [- 6.27329357, - 0.00036550, 0.00022390, 7.27292807, 0.99888355, 0.99941060, 0.49325192],
     8505                             [- 6.27329368, - 0.00036546, 0.00022388, 7.27292822, 0.99888368, 0.99941067, 0.49325204],
     8506                             [- 6.27329378, - 0.00036541, 0.00022385, 7.27292837, 0.99888381, 0.99941074, 0.49325210],
     8507                             [- 6.27329388, - 0.00036537, 0.00022382, 7.27292851, 0.99888394, 0.99941081, 0.49325200],
     8508                             [- 6.27329399, - 0.00036533, 0.00022380, 7.27292866, 0.99888407, 0.99941088, 0.49325216],
     8509                             [- 6.27329409, - 0.00036528, 0.00022377, 7.27292881, 0.99888420, 0.99941095, 0.49325212],
     8510                             [- 6.27329419, - 0.00036524, 0.00022374, 7.27292895, 0.99888434, 0.99941102, 0.49325214],
     8511                             [- 6.27329430, - 0.00036520, 0.00022372, 7.27292910, 0.99888447, 0.99941108, 0.49325208],
     8512                             [- 6.27329440, - 0.00036515, 0.00022369, 7.27292925, 0.99888460, 0.99941115, 0.49325230],
     8513                             [- 6.27329450, - 0.00036511, 0.00022367, 7.27292939, 0.99888473, 0.99941122, 0.49325225],
     8514                             [- 6.27329461, - 0.00036507, 0.00022364, 7.27292954, 0.99888486, 0.99941129, 0.49325212],
     8515                             [- 6.27329471, - 0.00036502, 0.00022361, 7.27292968, 0.99888499, 0.99941136, 0.49325221],
     8516                             [- 6.27329481, - 0.00036498, 0.00022359, 7.27292983, 0.99888513, 0.99941143, 0.49325215],
     8517                             [- 6.27329491, - 0.00036494, 0.00022356, 7.27292998, 0.99888526, 0.99941150, 0.49325228],
     8518                             [- 6.27329502, - 0.00036490, 0.00022353, 7.27293012, 0.99888539, 0.99941157, 0.49325236],
     8519                             [- 6.27329512, - 0.00036485, 0.00022351, 7.27293027, 0.99888552, 0.99941164, 0.49325238],
     8520                             [- 6.27329522, - 0.00036481, 0.00022348, 7.27293041, 0.99888565, 0.99941171, 0.49325230],
     8521                             [- 6.27329533, - 0.00036477, 0.00022345, 7.27293056, 0.99888578, 0.99941178, 0.49325233],
     8522                             [- 6.27329543, - 0.00036472, 0.00022343, 7.27293071, 0.99888591, 0.99941185, 0.49325243],
     8523                             [- 6.27329553, - 0.00036468, 0.00022340, 7.27293085, 0.99888605, 0.99941192, 0.49325248],
     8524                             [- 6.27329564, - 0.00036464, 0.00022338, 7.27293100, 0.99888618, 0.99941199, 0.49325226],
     8525                             [- 6.27329574, - 0.00036460, 0.00022335, 7.27293114, 0.99888631, 0.99941206, 0.49325247],
     8526                             [- 6.27329584, - 0.00036455, 0.00022332, 7.27293129, 0.99888644, 0.99941213, 0.49325235],
     8527                             [- 6.27329594, - 0.00036451, 0.00022330, 7.27293143, 0.99888657, 0.99941219, 0.49325238],
     8528                             [- 6.27329605, - 0.00036447, 0.00022327, 7.27293158, 0.99888670, 0.99941226, 0.49325236],
     8529                             [- 6.27329615, - 0.00036442, 0.00022324, 7.27293173, 0.99888683, 0.99941233, 0.49325251],
     8530                             [- 6.27329625, - 0.00036438, 0.00022322, 7.27293187, 0.99888696, 0.99941240, 0.49325244],
     8531                             [- 6.27329635, - 0.00036434, 0.00022319, 7.27293202, 0.99888709, 0.99941247, 0.49325243],
     8532                             [- 6.27329646, - 0.00036429, 0.00022317, 7.27293216, 0.99888723, 0.99941254, 0.49325235],
     8533                             [- 6.27329656, - 0.00036425, 0.00022314, 7.27293231, 0.99888736, 0.99941261, 0.49325265],
     8534                             [- 6.27329666, - 0.00036421, 0.00022311, 7.27293245, 0.99888749, 0.99941268, 0.49325266],
     8535                             [- 6.27329677, - 0.00036417, 0.00022309, 7.27293260, 0.99888762, 0.99941275, 0.49325241],
     8536                             [- 6.27329687, - 0.00036412, 0.00022306, 7.27293274, 0.99888775, 0.99941282, 0.49325251],
     8537                             [- 6.27329697, - 0.00036408, 0.00022303, 7.27293289, 0.99888788, 0.99941289, 0.49325244],
     8538                             [- 6.27329707, - 0.00036404, 0.00022301, 7.27293304, 0.99888801, 0.99941295, 0.49325256],
     8539                             [- 6.27329718, - 0.00036399, 0.00022298, 7.27293318, 0.99888814, 0.99941302, 0.49325261],
     8540                             [- 6.27329728, - 0.00036395, 0.00022296, 7.27293333, 0.99888827, 0.99941309, 0.49325262],
     8541                             [- 6.27329738, - 0.00036391, 0.00022293, 7.27293347, 0.99888840, 0.99941316, 0.49325272],
     8542                             [- 6.27329748, - 0.00036387, 0.00022290, 7.27293362, 0.99888853, 0.99941323, 0.49325264],
     8543                             [- 6.27329758, - 0.00036382, 0.00022288, 7.27293376, 0.99888866, 0.99941330, 0.49325271],
     8544                             [- 6.27329769, - 0.00036378, 0.00022285, 7.27293391, 0.99888879, 0.99941337, 0.49325250],
     8545                             [- 6.27329779, - 0.00036374, 0.00022282, 7.27293405, 0.99888893, 0.99941344, 0.49325276],
     8546                             [- 6.27329789, - 0.00036370, 0.00022280, 7.27293420, 0.99888906, 0.99941351, 0.49325279],
     8547                             [- 6.27329799, - 0.00036365, 0.00022277, 7.27293434, 0.99888919, 0.99941358, 0.49325256],
     8548                             [- 6.27329810, - 0.00036361, 0.00022275, 7.27293449, 0.99888932, 0.99941364, 0.49325269],
     8549                             [- 6.27329820, - 0.00036357, 0.00022272, 7.27293463, 0.99888945, 0.99941371, 0.49325274],
     8550                             [- 6.27329830, - 0.00036352, 0.00022269, 7.27293478, 0.99888958, 0.99941378, 0.49325276],
     8551                             [- 6.27329840, - 0.00036348, 0.00022267, 7.27293492, 0.99888971, 0.99941385, 0.49325275],
     8552                             [- 6.27329851, - 0.00036344, 0.00022264, 7.27293507, 0.99888984, 0.99941392, 0.49325266],
     8553                             [- 6.27329861, - 0.00036340, 0.00022261, 7.27293521, 0.99888997, 0.99941399, 0.49325274],
     8554                             [- 6.27329871, - 0.00036335, 0.00022259, 7.27293536, 0.99889010, 0.99941406, 0.49325275],
     8555                             [- 6.27329881, - 0.00036331, 0.00022256, 7.27293550, 0.99889023, 0.99941413, 0.49325279],
     8556                             [- 6.27329891, - 0.00036327, 0.00022254, 7.27293565, 0.99889036, 0.99941420, 0.49325277],
     8557                             [- 6.27329902, - 0.00036323, 0.00022251, 7.27293579, 0.99889049, 0.99941426, 0.49325299],
     8558                             [- 6.27329912, - 0.00036318, 0.00022248, 7.27293593, 0.99889062, 0.99941433, 0.49325298],
     8559                             [- 6.27329922, - 0.00036314, 0.00022246, 7.27293608, 0.99889075, 0.99941440, 0.49325274],
     8560                             [- 6.27329932, - 0.00036310, 0.00022243, 7.27293622, 0.99889088, 0.99941447, 0.49325294],
     8561                             [- 6.27329942, - 0.00036306, 0.00022241, 7.27293637, 0.99889101, 0.99941454, 0.49325297],
     8562                             [- 6.27329953, - 0.00036301, 0.00022238, 7.27293651, 0.99889114, 0.99941461, 0.49325278],
     8563                             [- 6.27329963, - 0.00036297, 0.00022235, 7.27293666, 0.99889127, 0.99941468, 0.49325281],
     8564                             [- 6.27329973, - 0.00036293, 0.00022233, 7.27293680, 0.99889140, 0.99941474, 0.49325304],
     8565                             [- 6.27329983, - 0.00036289, 0.00022230, 7.27293695, 0.99889153, 0.99941481, 0.49325295],
     8566                             [- 6.27329993, - 0.00036284, 0.00022228, 7.27293709, 0.99889166, 0.99941488, 0.49325311],
     8567                             [- 6.27330004, - 0.00036280, 0.00022225, 7.27293723, 0.99889179, 0.99941495, 0.49325291],
     8568                             [- 6.27330014, - 0.00036276, 0.00022222, 7.27293738, 0.99889192, 0.99941502, 0.49325317],
     8569                             [- 6.27330024, - 0.00036272, 0.00022220, 7.27293752, 0.99889205, 0.99941509, 0.49325298],
     8570                             [- 6.27330034, - 0.00036267, 0.00022217, 7.27293767, 0.99889218, 0.99941516, 0.49325316],
     8571                             [- 6.27330044, - 0.00036263, 0.00022215, 7.27293781, 0.99889231, 0.99941522, 0.49325310],
     8572                             [- 6.27330054, - 0.00036259, 0.00022212, 7.27293796, 0.99889244, 0.99941529, 0.49325314],
     8573                             [- 6.27330065, - 0.00036255, 0.00022209, 7.27293810, 0.99889257, 0.99941536, 0.49325310],
     8574                             [- 6.27330075, - 0.00036250, 0.00022207, 7.27293824, 0.99889270, 0.99941543, 0.49325300],
     8575                             [- 6.27330085, - 0.00036246, 0.00022204, 7.27293839, 0.99889283, 0.99941550, 0.49325323],
     8576                             [- 6.27330095, - 0.00036242, 0.00022202, 7.27293853, 0.99889296, 0.99941557, 0.49325313],
     8577                             [- 6.27330105, - 0.00036238, 0.00022199, 7.27293868, 0.99889309, 0.99941564, 0.49325318],
     8578                             [- 6.27330115, - 0.00036233, 0.00022196, 7.27293882, 0.99889322, 0.99941570, 0.49325325],
     8579                             [- 6.27330126, - 0.00036229, 0.00022194, 7.27293896, 0.99889335, 0.99941577, 0.49325315],
     8580                             [- 6.27330136, - 0.00036225, 0.00022191, 7.27293911, 0.99889348, 0.99941584, 0.49325312],
     8581                             [- 6.27330146, - 0.00036221, 0.00022189, 7.27293925, 0.99889361, 0.99941591, 0.49325327],
     8582                             [- 6.27330156, - 0.00036216, 0.00022186, 7.27293940, 0.99889374, 0.99941598, 0.49325334],
     8583                             [- 6.27330166, - 0.00036212, 0.00022183, 7.27293954, 0.99889387, 0.99941605, 0.49325318],
     8584                             [- 6.27330176, - 0.00036208, 0.00022181, 7.27293968, 0.99889400, 0.99941611, 0.49325339],
     8585                             [- 6.27330186, - 0.00036204, 0.00022178, 7.27293983, 0.99889412, 0.99941618, 0.49325320],
     8586                             [- 6.27330197, - 0.00036199, 0.00022176, 7.27293997, 0.99889425, 0.99941625, 0.49325327],
     8587                             [- 6.27330207, - 0.00036195, 0.00022173, 7.27294011, 0.99889438, 0.99941632, 0.49325329],
     8588                             [- 6.27330217, - 0.00036191, 0.00022170, 7.27294026, 0.99889451, 0.99941639, 0.49325333],
     8589                             [- 6.27330227, - 0.00036187, 0.00022168, 7.27294040, 0.99889464, 0.99941646, 0.49325330],
     8590                             [- 6.27330237, - 0.00036182, 0.00022165, 7.27294055, 0.99889477, 0.99941652, 0.49325321],
     8591                             [- 6.27330247, - 0.00036178, 0.00022163, 7.27294069, 0.99889490, 0.99941659, 0.49325343],
     8592                             [- 6.27330257, - 0.00036174, 0.00022160, 7.27294083, 0.99889503, 0.99941666, 0.49325334],
     8593                             [- 6.27330267, - 0.00036170, 0.00022157, 7.27294098, 0.99889516, 0.99941673, 0.49325333],
     8594                             [- 6.27330278, - 0.00036166, 0.00022155, 7.27294112, 0.99889529, 0.99941680, 0.49325328],
     8595                             [- 6.27330288, - 0.00036161, 0.00022152, 7.27294126, 0.99889542, 0.99941686, 0.49325344],
     8596                             [- 6.27330298, - 0.00036157, 0.00022150, 7.27294141, 0.99889555, 0.99941693, 0.49325340],
     8597                             [- 6.27330308, - 0.00036153, 0.00022147, 7.27294155, 0.99889568, 0.99941700, 0.49325337],
     8598                             [- 6.27330318, - 0.00036149, 0.00022144, 7.27294169, 0.99889580, 0.99941707, 0.49325346],
     8599                             [- 6.27330328, - 0.00036144, 0.00022142, 7.27294184, 0.99889593, 0.99941714, 0.49325350],
     8600                             [- 6.27330338, - 0.00036140, 0.00022139, 7.27294198, 0.99889606, 0.99941720, 0.49325355],
     8601                             [- 6.27330348, - 0.00036136, 0.00022137, 7.27294212, 0.99889619, 0.99941727, 0.49325362],
     8602                             [- 6.27330358, - 0.00036132, 0.00022134, 7.27294227, 0.99889632, 0.99941734, 0.49325356],
     8603                             [- 6.27330368, - 0.00036128, 0.00022132, 7.27294241, 0.99889645, 0.99941741, 0.49325360],
     8604                             [- 6.27330379, - 0.00036123, 0.00022129, 7.27294255, 0.99889658, 0.99941748, 0.49325348],
     8605                             [- 6.27330389, - 0.00036119, 0.00022126, 7.27294269, 0.99889671, 0.99941754, 0.49325378],
     8606                             [- 6.27330399, - 0.00036115, 0.00022124, 7.27294284, 0.99889684, 0.99941761, 0.49325364],
     8607                             [- 6.27330409, - 0.00036111, 0.00022121, 7.27294298, 0.99889696, 0.99941768, 0.49325361],
     8608                             [- 6.27330419, - 0.00036107, 0.00022119, 7.27294312, 0.99889709, 0.99941775, 0.49325386],
     8609                             [- 6.27330429, - 0.00036102, 0.00022116, 7.27294327, 0.99889722, 0.99941782, 0.49325359],
     8610                             [- 6.27330439, - 0.00036098, 0.00022113, 7.27294341, 0.99889735, 0.99941788, 0.49325371],
     8611                             [- 6.27330449, - 0.00036094, 0.00022111, 7.27294355, 0.99889748, 0.99941795, 0.49325375],
     8612                             [- 6.27330459, - 0.00036090, 0.00022108, 7.27294370, 0.99889761, 0.99941802, 0.49325371],
     8613                             [- 6.27330469, - 0.00036085, 0.00022106, 7.27294384, 0.99889774, 0.99941809, 0.49325378],
     8614                             [- 6.27330479, - 0.00036081, 0.00022103, 7.27294398, 0.99889786, 0.99941816, 0.49325370],
     8615                             [- 6.27330489, - 0.00036077, 0.00022101, 7.27294412, 0.99889799, 0.99941822, 0.49325364],
     8616                             [- 6.27330499, - 0.00036073, 0.00022098, 7.27294427, 0.99889812, 0.99941829, 0.49325373],
     8617                             [- 6.27330510, - 0.00036069, 0.00022095, 7.27294441, 0.99889825, 0.99941836, 0.49325372],
     8618                             [- 6.27330520, - 0.00036064, 0.00022093, 7.27294455, 0.99889838, 0.99941843, 0.49325391],
     8619                             [- 6.27330530, - 0.00036060, 0.00022090, 7.27294469, 0.99889851, 0.99941849, 0.49325378],
     8620                             [- 6.27330540, - 0.00036056, 0.00022088, 7.27294484, 0.99889863, 0.99941856, 0.49325387],
     8621                             [- 6.27330550, - 0.00036052, 0.00022085, 7.27294498, 0.99889876, 0.99941863, 0.49325370],
     8622                             [- 6.27330560, - 0.00036048, 0.00022083, 7.27294512, 0.99889889, 0.99941870, 0.49325386],
     8623                             [- 6.27330570, - 0.00036043, 0.00022080, 7.27294526, 0.99889902, 0.99941877, 0.49325387],
     8624                             [- 6.27330580, - 0.00036039, 0.00022077, 7.27294541, 0.99889915, 0.99941883, 0.49325384],
     8625                             [- 6.27330590, - 0.00036035, 0.00022075, 7.27294555, 0.99889928, 0.99941890, 0.49325392],
     8626                             [- 6.27330600, - 0.00036031, 0.00022072, 7.27294569, 0.99889940, 0.99941897, 0.49325387],
     8627                             [- 6.27330610, - 0.00036027, 0.00022070, 7.27294583, 0.99889953, 0.99941904, 0.49325390],
     8628                             [- 6.27330620, - 0.00036023, 0.00022067, 7.27294598, 0.99889966, 0.99941910, 0.49325400],
     8629                             [- 6.27330630, - 0.00036018, 0.00022065, 7.27294612, 0.99889979, 0.99941917, 0.49325409],
     8630                             [- 6.27330640, - 0.00036014, 0.00022062, 7.27294626, 0.99889992, 0.99941924, 0.49325386],
     8631                             [- 6.27330650, - 0.00036010, 0.00022059, 7.27294640, 0.99890004, 0.99941931, 0.49325408],
     8632                             [- 6.27330660, - 0.00036006, 0.00022057, 7.27294654, 0.99890017, 0.99941937, 0.49325391],
     8633                             [- 6.27330670, - 0.00036002, 0.00022054, 7.27294669, 0.99890030, 0.99941944, 0.49325389],
     8634                             [- 6.27330680, - 0.00035997, 0.00022052, 7.27294683, 0.99890043, 0.99941951, 0.49325379],
     8635                             [- 6.27330690, - 0.00035993, 0.00022049, 7.27294697, 0.99890056, 0.99941958, 0.49325409],
     8636                             [- 6.27330700, - 0.00035989, 0.00022047, 7.27294711, 0.99890068, 0.99941964, 0.49325388],
     8637                             [- 6.27330710, - 0.00035985, 0.00022044, 7.27294726, 0.99890081, 0.99941971, 0.49325402],
     8638                             [- 6.27330720, - 0.00035981, 0.00022041, 7.27294740, 0.99890094, 0.99941978, 0.49325423],
     8639                             [- 6.27330730, - 0.00035976, 0.00022039, 7.27294754, 0.99890107, 0.99941985, 0.49325405],
     8640                             [- 6.27330740, - 0.00035972, 0.00022036, 7.27294768, 0.99890119, 0.99941991, 0.49325402],
     8641                             [- 6.27330750, - 0.00035968, 0.00022034, 7.27294782, 0.99890132, 0.99941998, 0.49325409],
     8642                             [- 6.27330760, - 0.00035964, 0.00022031, 7.27294796, 0.99890145, 0.99942005, 0.49325408],
     8643                             [- 6.27330770, - 0.00035960, 0.00022029, 7.27294811, 0.99890158, 0.99942012, 0.49325430],
     8644                             [- 6.27330780, - 0.00035956, 0.00022026, 7.27294825, 0.99890171, 0.99942018, 0.49325412],
     8645                             [- 6.27330790, - 0.00035951, 0.00022024, 7.27294839, 0.99890183, 0.99942025, 0.49325410],
     8646                             [- 6.27330800, - 0.00035947, 0.00022021, 7.27294853, 0.99890196, 0.99942032, 0.49325444],
     8647                             [- 6.27330810, - 0.00035943, 0.00022018, 7.27294867, 0.99890209, 0.99942039, 0.49325431],
     8648                             [- 6.27330820, - 0.00035939, 0.00022016, 7.27294882, 0.99890222, 0.99942045, 0.49325422],
     8649                             [- 6.27330830, - 0.00035935, 0.00022013, 7.27294896, 0.99890234, 0.99942052, 0.49325435],
     8650                             [- 6.27330840, - 0.00035931, 0.00022011, 7.27294910, 0.99890247, 0.99942059, 0.49325426],
     8651                             [- 6.27330850, - 0.00035926, 0.00022008, 7.27294924, 0.99890260, 0.99942065, 0.49325433],
     8652                             [- 6.27330860, - 0.00035922, 0.00022006, 7.27294938, 0.99890273, 0.99942072, 0.49325432],
     8653                             [- 6.27330870, - 0.00035918, 0.00022003, 7.27294952, 0.99890285, 0.99942079, 0.49325444],
     8654                             [- 6.27330880, - 0.00035914, 0.00022001, 7.27294966, 0.99890298, 0.99942086, 0.49325435],
     8655                             [- 6.27330890, - 0.00035910, 0.00021998, 7.27294981, 0.99890311, 0.99942092, 0.49325422],
     8656                             [- 6.27330900, - 0.00035906, 0.00021995, 7.27294995, 0.99890323, 0.99942099, 0.49325439],
     8657                             [- 6.27330910, - 0.00035901, 0.00021993, 7.27295009, 0.99890336, 0.99942106, 0.49325438],
     8658                             [- 6.27330920, - 0.00035897, 0.00021990, 7.27295023, 0.99890349, 0.99942113, 0.49325454],
     8659                             [- 6.27330930, - 0.00035893, 0.00021988, 7.27295037, 0.99890362, 0.99942119, 0.49325448],
     8660                             [- 6.27330940, - 0.00035889, 0.00021985, 7.27295051, 0.99890374, 0.99942126, 0.49325441],
     8661                             [- 6.27330950, - 0.00035885, 0.00021983, 7.27295065, 0.99890387, 0.99942133, 0.49325438],
     8662                             [- 6.27330960, - 0.00035881, 0.00021980, 7.27295079, 0.99890400, 0.99942139, 0.49325444],
     8663                             [- 6.27330970, - 0.00035876, 0.00021978, 7.27295094, 0.99890412, 0.99942146, 0.49325455],
     8664                             [- 6.27330980, - 0.00035872, 0.00021975, 7.27295108, 0.99890425, 0.99942153, 0.49325435],
     8665                             [- 6.27330990, - 0.00035868, 0.00021972, 7.27295122, 0.99890438, 0.99942159, 0.49325446],
     8666                             [- 6.27331000, - 0.00035864, 0.00021970, 7.27295136, 0.99890451, 0.99942166, 0.49325463],
     8667                             [- 6.27331010, - 0.00035860, 0.00021967, 7.27295150, 0.99890463, 0.99942173, 0.49325459],
     8668                             [- 6.27331020, - 0.00035856, 0.00021965, 7.27295164, 0.99890476, 0.99942180, 0.49325444],
     8669                             [- 6.27331030, - 0.00035851, 0.00021962, 7.27295178, 0.99890489, 0.99942186, 0.49325446],
     8670                             [- 6.27331040, - 0.00035847, 0.00021960, 7.27295192, 0.99890501, 0.99942193, 0.49325470],
     8671                             [- 6.27331050, - 0.00035843, 0.00021957, 7.27295206, 0.99890514, 0.99942200, 0.49325447],
     8672                             [- 6.27331059, - 0.00035839, 0.00021955, 7.27295220, 0.99890527, 0.99942206, 0.49325451],
     8673                             [- 6.27331069, - 0.00035835, 0.00021952, 7.27295235, 0.99890539, 0.99942213, 0.49325471],
     8674                             [- 6.27331079, - 0.00035831, 0.00021950, 7.27295249, 0.99890552, 0.99942220, 0.49325479],
     8675                             [- 6.27331089, - 0.00035827, 0.00021947, 7.27295263, 0.99890565, 0.99942226, 0.49325465],
     8676                             [- 6.27331099, - 0.00035822, 0.00021944, 7.27295277, 0.99890577, 0.99942233, 0.49325460],
     8677                             [- 6.27331109, - 0.00035818, 0.00021942, 7.27295291, 0.99890590, 0.99942240, 0.49325463],
     8678                             [- 6.27331119, - 0.00035814, 0.00021939, 7.27295305, 0.99890603, 0.99942246, 0.49325475],
     8679                             [- 6.27331129, - 0.00035810, 0.00021937, 7.27295319, 0.99890615, 0.99942253, 0.49325484],
     8680                             [- 6.27331139, - 0.00035806, 0.00021934, 7.27295333, 0.99890628, 0.99942260, 0.49325478],
     8681                             [- 6.27331149, - 0.00035802, 0.00021932, 7.27295347, 0.99890641, 0.99942267, 0.49325476],
     8682                             [- 6.27331159, - 0.00035798, 0.00021929, 7.27295361, 0.99890653, 0.99942273, 0.49325474],
     8683                             [- 6.27331169, - 0.00035793, 0.00021927, 7.27295375, 0.99890666, 0.99942280, 0.49325471],
     8684                             [- 6.27331179, - 0.00035789, 0.00021924, 7.27295389, 0.99890679, 0.99942287, 0.49325479],
     8685                             [- 6.27331188, - 0.00035785, 0.00021922, 7.27295403, 0.99890691, 0.99942293, 0.49325475],
     8686                             [- 6.27331198, - 0.00035781, 0.00021919, 7.27295417, 0.99890704, 0.99942300, 0.49325483],
     8687                             [- 6.27331208, - 0.00035777, 0.00021917, 7.27295431, 0.99890717, 0.99942307, 0.49325488],
     8688                             [- 6.27331218, - 0.00035773, 0.00021914, 7.27295445, 0.99890729, 0.99942313, 0.49325468],
     8689                             [- 6.27331228, - 0.00035769, 0.00021911, 7.27295459, 0.99890742, 0.99942320, 0.49325487],
     8690                             [- 6.27331238, - 0.00035764, 0.00021909, 7.27295473, 0.99890754, 0.99942327, 0.49325491],
     8691                             [- 6.27331248, - 0.00035760, 0.00021906, 7.27295487, 0.99890767, 0.99942333, 0.49325485],
     8692                             [- 6.27331258, - 0.00035756, 0.00021904, 7.27295501, 0.99890780, 0.99942340, 0.49325494],
     8693                             [- 6.27331268, - 0.00035752, 0.00021901, 7.27295515, 0.99890792, 0.99942347, 0.49325489],
     8694                             [- 6.27331277, - 0.00035748, 0.00021899, 7.27295529, 0.99890805, 0.99942353, 0.49325507],
     8695                             [- 6.27331287, - 0.00035744, 0.00021896, 7.27295544, 0.99890818, 0.99942360, 0.49325487],
     8696                             [- 6.27331297, - 0.00035740, 0.00021894, 7.27295558, 0.99890830, 0.99942367, 0.49325485],
     8697                             [- 6.27331307, - 0.00035736, 0.00021891, 7.27295572, 0.99890843, 0.99942373, 0.49325494],
     8698                             [- 6.27331317, - 0.00035731, 0.00021889, 7.27295586, 0.99890855, 0.99942380, 0.49325502],
     8699                             [- 6.27331327, - 0.00035727, 0.00021886, 7.27295600, 0.99890868, 0.99942386, 0.49325506],
     8700                             [- 6.27331337, - 0.00035723, 0.00021884, 7.27295614, 0.99890881, 0.99942393, 0.49325501],
     8701                             [- 6.27331347, - 0.00035719, 0.00021881, 7.27295628, 0.99890893, 0.99942400, 0.49325503],
     8702                             [- 6.27331356, - 0.00035715, 0.00021879, 7.27295642, 0.99890906, 0.99942406, 0.49325490],
     8703                             [- 6.27331366, - 0.00035711, 0.00021876, 7.27295655, 0.99890918, 0.99942413, 0.49325500],
     8704                             [- 6.27331376, - 0.00035707, 0.00021874, 7.27295669, 0.99890931, 0.99942420, 0.49325510],
     8705                             [- 6.27331386, - 0.00035703, 0.00021871, 7.27295683, 0.99890943, 0.99942426, 0.49325499],
     8706                             [- 6.27331396, - 0.00035698, 0.00021869, 7.27295697, 0.99890956, 0.99942433, 0.49325505],
     8707                             [- 6.27331406, - 0.00035694, 0.00021866, 7.27295711, 0.99890969, 0.99942440, 0.49325506],
     8708                             [- 6.27331416, - 0.00035690, 0.00021863, 7.27295725, 0.99890981, 0.99942446, 0.49325523],
     8709                             [- 6.27331425, - 0.00035686, 0.00021861, 7.27295739, 0.99890994, 0.99942453, 0.49325511],
     8710                             [- 6.27331435, - 0.00035682, 0.00021858, 7.27295753, 0.99891006, 0.99942460, 0.49325502],
     8711                             [- 6.27331445, - 0.00035678, 0.00021856, 7.27295767, 0.99891019, 0.99942466, 0.49325512],
     8712                             [- 6.27331455, - 0.00035674, 0.00021853, 7.27295781, 0.99891032, 0.99942473, 0.49325535],
     8713                             [- 6.27331465, - 0.00035670, 0.00021851, 7.27295795, 0.99891044, 0.99942479, 0.49325526],
     8714                             [- 6.27331475, - 0.00035666, 0.00021848, 7.27295809, 0.99891057, 0.99942486, 0.49325504],
     8715                             [- 6.27331485, - 0.00035661, 0.00021846, 7.27295823, 0.99891069, 0.99942493, 0.49325512],
     8716                             [- 6.27331494, - 0.00035657, 0.00021843, 7.27295837, 0.99891082, 0.99942499, 0.49325533],
     8717                             [- 6.27331504, - 0.00035653, 0.00021841, 7.27295851, 0.99891094, 0.99942506, 0.49325523],
     8718                             [- 6.27331514, - 0.00035649, 0.00021838, 7.27295865, 0.99891107, 0.99942513, 0.49325528],
     8719                             [- 6.27331524, - 0.00035645, 0.00021836, 7.27295879, 0.99891119, 0.99942519, 0.49325526],
     8720                             [- 6.27331534, - 0.00035641, 0.00021833, 7.27295893, 0.99891132, 0.99942526, 0.49325527],
     8721                             [- 6.27331543, - 0.00035637, 0.00021831, 7.27295907, 0.99891144, 0.99942532, 0.49325541],
     8722                             [- 6.27331553, - 0.00035633, 0.00021828, 7.27295921, 0.99891157, 0.99942539, 0.49325526],
     8723                             [- 6.27331563, - 0.00035629, 0.00021826, 7.27295935, 0.99891169, 0.99942546, 0.49325518],
     8724                             [- 6.27331573, - 0.00035625, 0.00021823, 7.27295948, 0.99891182, 0.99942552, 0.49325527],
     8725                             [- 6.27331583, - 0.00035620, 0.00021821, 7.27295962, 0.99891195, 0.99942559, 0.49325543],
     8726                             [- 6.27331593, - 0.00035616, 0.00021818, 7.27295976, 0.99891207, 0.99942566, 0.49325535],
     8727                             [- 6.27331602, - 0.00035612, 0.00021816, 7.27295990, 0.99891220, 0.99942572, 0.49325531],
     8728                             [- 6.27331612, - 0.00035608, 0.00021813, 7.27296004, 0.99891232, 0.99942579, 0.49325537],
     8729                             [- 6.27331622, - 0.00035604, 0.00021811, 7.27296018, 0.99891245, 0.99942585, 0.49325536],
     8730                             [- 6.27331632, - 0.00035600, 0.00021808, 7.27296032, 0.99891257, 0.99942592, 0.49325546],
     8731                             [- 6.27331642, - 0.00035596, 0.00021806, 7.27296046, 0.99891270, 0.99942599, 0.49325549],
     8732                             [- 6.27331651, - 0.00035592, 0.00021803, 7.27296060, 0.99891282, 0.99942605, 0.49325546],
     8733                             [- 6.27331661, - 0.00035588, 0.00021801, 7.27296074, 0.99891295, 0.99942612, 0.49325542],
     8734                             [- 6.27331671, - 0.00035584, 0.00021798, 7.27296087, 0.99891307, 0.99942618, 0.49325537],
     8735                             [- 6.27331681, - 0.00035579, 0.00021796, 7.27296101, 0.99891320, 0.99942625, 0.49325535],
     8736                             [- 6.27331691, - 0.00035575, 0.00021793, 7.27296115, 0.99891332, 0.99942632, 0.49325540],
     8737                             [- 6.27331700, - 0.00035571, 0.00021791, 7.27296129, 0.99891345, 0.99942638, 0.49325546],
     8738                             [- 6.27331710, - 0.00035567, 0.00021788, 7.27296143, 0.99891357, 0.99942645, 0.49325545],
     8739                             [- 6.27331720, - 0.00035563, 0.00021786, 7.27296157, 0.99891370, 0.99942651, 0.49325569],
     8740                             [- 6.27331730, - 0.00035559, 0.00021783, 7.27296171, 0.99891382, 0.99942658, 0.49325550],
     8741                             [- 6.27331740, - 0.00035555, 0.00021781, 7.27296185, 0.99891395, 0.99942664, 0.49325563],
     8742                             [- 6.27331749, - 0.00035551, 0.00021778, 7.27296198, 0.99891407, 0.99942671, 0.49325568],
     8743                             [- 6.27331759, - 0.00035547, 0.00021776, 7.27296212, 0.99891420, 0.99942678, 0.49325547],
     8744                             [- 6.27331769, - 0.00035543, 0.00021773, 7.27296226, 0.99891432, 0.99942684, 0.49325550],
     8745                             [- 6.27331779, - 0.00035539, 0.00021771, 7.27296240, 0.99891444, 0.99942691, 0.49325571],
     8746                             [- 6.27331788, - 0.00035535, 0.00021768, 7.27296254, 0.99891457, 0.99942697, 0.49325568],
     8747                             [- 6.27331798, - 0.00035530, 0.00021766, 7.27296268, 0.99891469, 0.99942704, 0.49325562],
     8748                             [- 6.27331808, - 0.00035526, 0.00021763, 7.27296281, 0.99891482, 0.99942711, 0.49325569],
     8749                             [- 6.27331818, - 0.00035522, 0.00021761, 7.27296295, 0.99891494, 0.99942717, 0.49325576],
     8750                             [- 6.27331827, - 0.00035518, 0.00021758, 7.27296309, 0.99891507, 0.99942724, 0.49325584],
     8751                             [- 6.27331837, - 0.00035514, 0.00021756, 7.27296323, 0.99891519, 0.99942730, 0.49325572],
     8752                             [- 6.27331847, - 0.00035510, 0.00021753, 7.27296337, 0.99891532, 0.99942737, 0.49325557],
     8753                             [- 6.27331857, - 0.00035506, 0.00021751, 7.27296351, 0.99891544, 0.99942743, 0.49325555],
     8754                             [- 6.27331866, - 0.00035502, 0.00021748, 7.27296364, 0.99891557, 0.99942750, 0.49325590],
     8755                             [- 6.27331876, - 0.00035498, 0.00021746, 7.27296378, 0.99891569, 0.99942757, 0.49325582],
     8756                             [- 6.27331886, - 0.00035494, 0.00021743, 7.27296392, 0.99891581, 0.99942763, 0.49325599],
     8757                             [- 6.27331896, - 0.00035490, 0.00021741, 7.27296406, 0.99891594, 0.99942770, 0.49325596],
     8758                             [- 6.27331905, - 0.00035486, 0.00021738, 7.27296420, 0.99891606, 0.99942776, 0.49325600],
     8759                             [- 6.27331915, - 0.00035482, 0.00021736, 7.27296434, 0.99891619, 0.99942783, 0.49325578],
     8760                             [- 6.27331925, - 0.00035478, 0.00021733, 7.27296447, 0.99891631, 0.99942789, 0.49325597],
     8761                             [- 6.27331935, - 0.00035473, 0.00021731, 7.27296461, 0.99891644, 0.99942796, 0.49325578],
     8762                             [- 6.27331944, - 0.00035469, 0.00021728, 7.27296475, 0.99891656, 0.99942802, 0.49325601],
     8763                             [- 6.27331954, - 0.00035465, 0.00021726, 7.27296489, 0.99891668, 0.99942809, 0.49325574],
     8764                             [- 6.27331964, - 0.00035461, 0.00021723, 7.27296503, 0.99891681, 0.99942816, 0.49325598],
     8765                             [- 6.27331974, - 0.00035457, 0.00021721, 7.27296516, 0.99891693, 0.99942822, 0.49325602],
     8766                             [- 6.27331983, - 0.00035453, 0.00021718, 7.27296530, 0.99891706, 0.99942829, 0.49325595],
     8767                             [- 6.27331993, - 0.00035449, 0.00021716, 7.27296544, 0.99891718, 0.99942835, 0.49325608],
     8768                             [- 6.27332003, - 0.00035445, 0.00021713, 7.27296558, 0.99891730, 0.99942842, 0.49325597],
     8769                             [- 6.27332012, - 0.00035441, 0.00021711, 7.27296571, 0.99891743, 0.99942848, 0.49325598],
     8770                             [- 6.27332022, - 0.00035437, 0.00021708, 7.27296585, 0.99891755, 0.99942855, 0.49325613],
     8771                             [- 6.27332032, - 0.00035433, 0.00021706, 7.27296599, 0.99891768, 0.99942861, 0.49325588],
     8772                             [- 6.27332042, - 0.00035429, 0.00021703, 7.27296613, 0.99891780, 0.99942868, 0.49325598],
     8773                             [- 6.27332051, - 0.00035425, 0.00021701, 7.27296626, 0.99891792, 0.99942874, 0.49325592],
     8774                             [- 6.27332061, - 0.00035421, 0.00021698, 7.27296640, 0.99891805, 0.99942881, 0.49325612],
     8775                             [- 6.27332071, - 0.00035417, 0.00021696, 7.27296654, 0.99891817, 0.99942888, 0.49325620],
     8776                             [- 6.27332080, - 0.00035413, 0.00021693, 7.27296668, 0.99891830, 0.99942894, 0.49325610],
     8777                             [- 6.27332090, - 0.00035409, 0.00021691, 7.27296681, 0.99891842, 0.99942901, 0.49325614],
     8778                             [- 6.27332100, - 0.00035405, 0.00021688, 7.27296695, 0.99891854, 0.99942907, 0.49325612],
     8779                             [- 6.27332109, - 0.00035400, 0.00021686, 7.27296709, 0.99891867, 0.99942914, 0.49325613],
     8780                             [- 6.27332119, - 0.00035396, 0.00021683, 7.27296723, 0.99891879, 0.99942920, 0.49325604],
     8781                             [- 6.27332129, - 0.00035392, 0.00021681, 7.27296736, 0.99891891, 0.99942927, 0.49325626],
     8782                             [- 6.27332139, - 0.00035388, 0.00021678, 7.27296750, 0.99891904, 0.99942933, 0.49325625],
     8783                             [- 6.27332148, - 0.00035384, 0.00021676, 7.27296764, 0.99891916, 0.99942940, 0.49325605],
     8784                             [- 6.27332158, - 0.00035380, 0.00021673, 7.27296778, 0.99891928, 0.99942946, 0.49325626],
     8785                             [- 6.27332168, - 0.00035376, 0.00021671, 7.27296791, 0.99891941, 0.99942953, 0.49325629],
     8786                             [- 6.27332177, - 0.00035372, 0.00021669, 7.27296805, 0.99891953, 0.99942959, 0.49325630],
     8787                             [- 6.27332187, - 0.00035368, 0.00021666, 7.27296819, 0.99891966, 0.99942966, 0.49325628],
     8788                             [- 6.27332197, - 0.00035364, 0.00021664, 7.27296833, 0.99891978, 0.99942972, 0.49325635],
     8789                             [- 6.27332206, - 0.00035360, 0.00021661, 7.27296846, 0.99891990, 0.99942979, 0.49325625],
     8790                             [- 6.27332216, - 0.00035356, 0.00021659, 7.27296860, 0.99892003, 0.99942985, 0.49325617],
     8791                             [- 6.27332226, - 0.00035352, 0.00021656, 7.27296874, 0.99892015, 0.99942992, 0.49325641],
     8792                             [- 6.27332235, - 0.00035348, 0.00021654, 7.27296887, 0.99892027, 0.99942998, 0.49325636],
     8793                             [- 6.27332245, - 0.00035344, 0.00021651, 7.27296901, 0.99892040, 0.99943005, 0.49325630],
     8794                             [- 6.27332255, - 0.00035340, 0.00021649, 7.27296915, 0.99892052, 0.99943011, 0.49325637],
     8795                             [- 6.27332264, - 0.00035336, 0.00021646, 7.27296928, 0.99892064, 0.99943018, 0.49325631],
     8796                             [- 6.27332274, - 0.00035332, 0.00021644, 7.27296942, 0.99892077, 0.99943024, 0.49325656],
     8797                             [- 6.27332284, - 0.00035328, 0.00021641, 7.27296956, 0.99892089, 0.99943031, 0.49325631],
     8798                             [- 6.27332293, - 0.00035324, 0.00021639, 7.27296970, 0.99892101, 0.99943037, 0.49325638],
     8799                             [- 6.27332303, - 0.00035320, 0.00021636, 7.27296983, 0.99892114, 0.99943044, 0.49325647],
     8800                             [- 6.27332313, - 0.00035316, 0.00021634, 7.27296997, 0.99892126, 0.99943050, 0.49325639],
     8801                             [- 6.27332322, - 0.00035312, 0.00021631, 7.27297011, 0.99892138, 0.99943057, 0.49325638],
     8802                             [- 6.27332332, - 0.00035308, 0.00021629, 7.27297024, 0.99892150, 0.99943063, 0.49325638],
     8803                             [- 6.27332341, - 0.00035304, 0.00021626, 7.27297038, 0.99892163, 0.99943070, 0.49325643],
     8804                             [- 6.27332351, - 0.00035300, 0.00021624, 7.27297052, 0.99892175, 0.99943076, 0.49325659],
     8805                             [- 6.27332361, - 0.00035296, 0.00021622, 7.27297065, 0.99892187, 0.99943083, 0.49325672],
     8806                             [- 6.27332370, - 0.00035291, 0.00021619, 7.27297079, 0.99892200, 0.99943089, 0.49325654],
     8807                             [- 6.27332380, - 0.00035287, 0.00021617, 7.27297093, 0.99892212, 0.99943096, 0.49325642],
     8808                             [- 6.27332390, - 0.00035283, 0.00021614, 7.27297106, 0.99892224, 0.99943102, 0.49325660],
     8809                             [- 6.27332399, - 0.00035279, 0.00021612, 7.27297120, 0.99892237, 0.99943109, 0.49325667],
     8810                             [- 6.27332409, - 0.00035275, 0.00021609, 7.27297133, 0.99892249, 0.99943115, 0.49325649],
     8811                             [- 6.27332418, - 0.00035271, 0.00021607, 7.27297147, 0.99892261, 0.99943122, 0.49325655],
     8812                             [- 6.27332428, - 0.00035267, 0.00021604, 7.27297161, 0.99892273, 0.99943128, 0.49325662],
     8813                             [- 6.27332438, - 0.00035263, 0.00021602, 7.27297174, 0.99892286, 0.99943135, 0.49325664],
     8814                             [- 6.27332447, - 0.00035259, 0.00021599, 7.27297188, 0.99892298, 0.99943141, 0.49325657],
     8815                             [- 6.27332457, - 0.00035255, 0.00021597, 7.27297202, 0.99892310, 0.99943148, 0.49325670],
     8816                             [- 6.27332467, - 0.00035251, 0.00021594, 7.27297215, 0.99892322, 0.99943154, 0.49325664],
     8817                             [- 6.27332476, - 0.00035247, 0.00021592, 7.27297229, 0.99892335, 0.99943161, 0.49325680],
     8818                             [- 6.27332486, - 0.00035243, 0.00021590, 7.27297243, 0.99892347, 0.99943167, 0.49325677],
     8819                             [- 6.27332495, - 0.00035239, 0.00021587, 7.27297256, 0.99892359, 0.99943174, 0.49325674],
     8820                             [- 6.27332505, - 0.00035235, 0.00021585, 7.27297270, 0.99892371, 0.99943180, 0.49325673],
     8821                             [- 6.27332515, - 0.00035231, 0.00021582, 7.27297283, 0.99892384, 0.99943187, 0.49325687],
     8822                             [- 6.27332524, - 0.00035227, 0.00021580, 7.27297297, 0.99892396, 0.99943193, 0.49325676],
     8823                             [- 6.27332534, - 0.00035223, 0.00021577, 7.27297311, 0.99892408, 0.99943200, 0.49325694],
     8824                             [- 6.27332543, - 0.00035219, 0.00021575, 7.27297324, 0.99892420, 0.99943206, 0.49325684],
     8825                             [- 6.27332553, - 0.00035215, 0.00021572, 7.27297338, 0.99892433, 0.99943212, 0.49325673],
     8826                             [- 6.27332563, - 0.00035211, 0.00021570, 7.27297351, 0.99892445, 0.99943219, 0.49325679],
     8827                             [- 6.27332572, - 0.00035207, 0.00021567, 7.27297365, 0.99892457, 0.99943225, 0.49325687],
     8828                             [- 6.27332582, - 0.00035203, 0.00021565, 7.27297379, 0.99892469, 0.99943232, 0.49325682],
     8829                             [- 6.27332591, - 0.00035199, 0.00021563, 7.27297392, 0.99892482, 0.99943238, 0.49325693],
     8830                             [- 6.27332601, - 0.00035195, 0.00021560, 7.27297406, 0.99892494, 0.99943245, 0.49325706],
     8831                             [- 6.27332611, - 0.00035191, 0.00021558, 7.27297419, 0.99892506, 0.99943251, 0.49325679],
     8832                             [- 6.27332620, - 0.00035187, 0.00021555, 7.27297433, 0.99892518, 0.99943258, 0.49325693],
     8833                             [- 6.27332630, - 0.00035183, 0.00021553, 7.27297446, 0.99892531, 0.99943264, 0.49325690],
     8834                             [- 6.27332639, - 0.00035179, 0.00021550, 7.27297460, 0.99892543, 0.99943271, 0.49325679],
     8835                             [- 6.27332649, - 0.00035175, 0.00021548, 7.27297474, 0.99892555, 0.99943277, 0.49325703],
     8836                             [- 6.27332658, - 0.00035171, 0.00021545, 7.27297487, 0.99892567, 0.99943283, 0.49325709],
     8837                             [- 6.27332668, - 0.00035167, 0.00021543, 7.27297501, 0.99892579, 0.99943290, 0.49325716],
     8838                             [- 6.27332678, - 0.00035163, 0.00021540, 7.27297514, 0.99892592, 0.99943296, 0.49325688],
     8839                             [- 6.27332687, - 0.00035159, 0.00021538, 7.27297528, 0.99892604, 0.99943303, 0.49325701],
     8840                             [- 6.27332697, - 0.00035155, 0.00021536, 7.27297541, 0.99892616, 0.99943309, 0.49325699],
     8841                             [- 6.27332706, - 0.00035151, 0.00021533, 7.27297555, 0.99892628, 0.99943316, 0.49325716],
     8842                             [- 6.27332716, - 0.00035147, 0.00021531, 7.27297569, 0.99892640, 0.99943322, 0.49325705],
     8843                             [- 6.27332725, - 0.00035143, 0.00021528, 7.27297582, 0.99892653, 0.99943329, 0.49325714],
     8844                             [- 6.27332735, - 0.00035139, 0.00021526, 7.27297596, 0.99892665, 0.99943335, 0.49325697],
     8845                             [- 6.27332744, - 0.00035135, 0.00021523, 7.27297609, 0.99892677, 0.99943341, 0.49325706],
     8846                             [- 6.27332754, - 0.00035131, 0.00021521, 7.27297623, 0.99892689, 0.99943348, 0.49325710],
     8847                             [- 6.27332763, - 0.00035127, 0.00021518, 7.27297636, 0.99892701, 0.99943354, 0.49325718],
     8848                             [- 6.27332773, - 0.00035123, 0.00021516, 7.27297650, 0.99892714, 0.99943361, 0.49325714],
     8849                             [- 6.27332783, - 0.00035119, 0.00021514, 7.27297663, 0.99892726, 0.99943367, 0.49325704],
     8850                             [- 6.27332792, - 0.00035115, 0.00021511, 7.27297677, 0.99892738, 0.99943374, 0.49325724],
     8851                             [- 6.27332802, - 0.00035111, 0.00021509, 7.27297690, 0.99892750, 0.99943380, 0.49325727],
     8852                             [- 6.27332811, - 0.00035107, 0.00021506, 7.27297704, 0.99892762, 0.99943386, 0.49325718],
     8853                             [- 6.27332821, - 0.00035103, 0.00021504, 7.27297717, 0.99892774, 0.99943393, 0.49325715],
     8854                             [- 6.27332830, - 0.00035099, 0.00021501, 7.27297731, 0.99892787, 0.99943399, 0.49325736],
     8855                             [- 6.27332840, - 0.00035095, 0.00021499, 7.27297744, 0.99892799, 0.99943406, 0.49325725],
     8856                             [- 6.27332849, - 0.00035091, 0.00021496, 7.27297758, 0.99892811, 0.99943412, 0.49325737],
     8857                             [- 6.27332859, - 0.00035087, 0.00021494, 7.27297771, 0.99892823, 0.99943418, 0.49325733],
     8858                             [- 6.27332868, - 0.00035084, 0.00021492, 7.27297785, 0.99892835, 0.99943425, 0.49325727],
     8859                             [- 6.27332878, - 0.00035080, 0.00021489, 7.27297798, 0.99892847, 0.99943431, 0.49325722],
     8860                             [- 6.27332887, - 0.00035076, 0.00021487, 7.27297812, 0.99892859, 0.99943438, 0.49325726],
     8861                             [- 6.27332897, - 0.00035072, 0.00021484, 7.27297825, 0.99892872, 0.99943444, 0.49325746],
     8862                             [- 6.27332906, - 0.00035068, 0.00021482, 7.27297839, 0.99892884, 0.99943451, 0.49325735],
     8863                             [- 6.27332916, - 0.00035064, 0.00021479, 7.27297852, 0.99892896, 0.99943457, 0.49325729],
     8864                             [- 6.27332925, - 0.00035060, 0.00021477, 7.27297866, 0.99892908, 0.99943463, 0.49325733],
     8865                             [- 6.27332935, - 0.00035056, 0.00021475, 7.27297879, 0.99892920, 0.99943470, 0.49325743],
     8866                             [- 6.27332944, - 0.00035052, 0.00021472, 7.27297893, 0.99892932, 0.99943476, 0.49325745],
     8867                             [- 6.27332954, - 0.00035048, 0.00021470, 7.27297906, 0.99892944, 0.99943483, 0.49325763],
     8868                             [- 6.27332963, - 0.00035044, 0.00021467, 7.27297920, 0.99892956, 0.99943489, 0.49325734],
     8869                             [- 6.27332973, - 0.00035040, 0.00021465, 7.27297933, 0.99892969, 0.99943495, 0.49325743],
     8870                             [- 6.27332982, - 0.00035036, 0.00021462, 7.27297947, 0.99892981, 0.99943502, 0.49325746],
     8871                             [- 6.27332992, - 0.00035032, 0.00021460, 7.27297960, 0.99892993, 0.99943508, 0.49325750],
     8872                             [- 6.27333001, - 0.00035028, 0.00021458, 7.27297973, 0.99893005, 0.99943515, 0.49325754],
     8873                             [- 6.27333011, - 0.00035024, 0.00021455, 7.27297987, 0.99893017, 0.99943521, 0.49325751],
     8874                             [- 6.27333020, - 0.00035020, 0.00021453, 7.27298000, 0.99893029, 0.99943527, 0.49325761],
     8875                             [- 6.27333030, - 0.00035016, 0.00021450, 7.27298014, 0.99893041, 0.99943534, 0.49325752],
     8876                             [- 6.27333039, - 0.00035012, 0.00021448, 7.27298027, 0.99893053, 0.99943540, 0.49325748],
     8877                             [- 6.27333049, - 0.00035008, 0.00021445, 7.27298041, 0.99893065, 0.99943546, 0.49325770],
     8878                             [- 6.27333058, - 0.00035004, 0.00021443, 7.27298054, 0.99893078, 0.99943553, 0.49325749],
     8879                             [- 6.27333068, - 0.00035000, 0.00021441, 7.27298068, 0.99893090, 0.99943559, 0.49325754],
     8880                             [- 6.27333077, - 0.00034996, 0.00021438, 7.27298081, 0.99893102, 0.99943566, 0.49325757],
     8881                             [- 6.27333087, - 0.00034992, 0.00021436, 7.27298094, 0.99893114, 0.99943572, 0.49325772],
     8882                             [- 6.27333096, - 0.00034988, 0.00021433, 7.27298108, 0.99893126, 0.99943578, 0.49325749],
     8883                             [- 6.27333106, - 0.00034984, 0.00021431, 7.27298121, 0.99893138, 0.99943585, 0.49325746],
     8884                             [- 6.27333115, - 0.00034980, 0.00021428, 7.27298135, 0.99893150, 0.99943591, 0.49325763],
     8885                             [- 6.27333125, - 0.00034976, 0.00021426, 7.27298148, 0.99893162, 0.99943597, 0.49325780],
     8886                             [- 6.27333134, - 0.00034973, 0.00021424, 7.27298162, 0.99893174, 0.99943604, 0.49325773],
     8887                             [- 6.27333144, - 0.00034969, 0.00021421, 7.27298175, 0.99893186, 0.99943610, 0.49325774],
     8888                             [- 6.27333153, - 0.00034965, 0.00021419, 7.27298188, 0.99893198, 0.99943617, 0.49325768],
     8889                             [- 6.27333162, - 0.00034961, 0.00021416, 7.27298202, 0.99893210, 0.99943623, 0.49325772],
     8890                             [- 6.27333172, - 0.00034957, 0.00021414, 7.27298215, 0.99893223, 0.99943629, 0.49325780],
     8891                             [- 6.27333181, - 0.00034953, 0.00021412, 7.27298229, 0.99893235, 0.99943636, 0.49325790],
     8892                             [- 6.27333191, - 0.00034949, 0.00021409, 7.27298242, 0.99893247, 0.99943642, 0.49325769],
     8893                             [- 6.27333200, - 0.00034945, 0.00021407, 7.27298255, 0.99893259, 0.99943648, 0.49325784],
     8894                             [- 6.27333210, - 0.00034941, 0.00021404, 7.27298269, 0.99893271, 0.99943655, 0.49325781],
     8895                             [- 6.27333219, - 0.00034937, 0.00021402, 7.27298282, 0.99893283, 0.99943661, 0.49325781],
     8896                             [- 6.27333229, - 0.00034933, 0.00021399, 7.27298296, 0.99893295, 0.99943668, 0.49325775],
     8897                             [- 6.27333238, - 0.00034929, 0.00021397, 7.27298309, 0.99893307, 0.99943674, 0.49325777],
     8898                             [- 6.27333247, - 0.00034925, 0.00021395, 7.27298322, 0.99893319, 0.99943680, 0.49325794],
     8899                             [- 6.27333257, - 0.00034921, 0.00021392, 7.27298336, 0.99893331, 0.99943687, 0.49325786],
     8900                             [- 6.27333266, - 0.00034917, 0.00021390, 7.27298349, 0.99893343, 0.99943693, 0.49325783],
     8901                             [- 6.27333276, - 0.00034913, 0.00021387, 7.27298362, 0.99893355, 0.99943699, 0.49325777],
     8902                             [- 6.27333285, - 0.00034909, 0.00021385, 7.27298376, 0.99893367, 0.99943706, 0.49325800],
     8903                             [- 6.27333295, - 0.00034905, 0.00021383, 7.27298389, 0.99893379, 0.99943712, 0.49325788],
     8904                             [- 6.27333304, - 0.00034902, 0.00021380, 7.27298402, 0.99893391, 0.99943718, 0.49325796],
     8905                             [- 6.27333313, - 0.00034898, 0.00021378, 7.27298416, 0.99893403, 0.99943725, 0.49325777],
     8906                             [- 6.27333323, - 0.00034894, 0.00021375, 7.27298429, 0.99893415, 0.99943731, 0.49325803],
     8907                             [- 6.27333332, - 0.00034890, 0.00021373, 7.27298443, 0.99893427, 0.99943737, 0.49325799],
     8908                             [- 6.27333342, - 0.00034886, 0.00021370, 7.27298456, 0.99893439, 0.99943744, 0.49325815],
     8909                             [- 6.27333351, - 0.00034882, 0.00021368, 7.27298469, 0.99893451, 0.99943750, 0.49325810],
     8910                             [- 6.27333360, - 0.00034878, 0.00021366, 7.27298483, 0.99893463, 0.99943756, 0.49325805],
     8911                             [- 6.27333370, - 0.00034874, 0.00021363, 7.27298496, 0.99893475, 0.99943763, 0.49325805],
     8912                             [- 6.27333379, - 0.00034870, 0.00021361, 7.27298509, 0.99893487, 0.99943769, 0.49325810],
     8913                             [- 6.27333389, - 0.00034866, 0.00021358, 7.27298523, 0.99893499, 0.99943775, 0.49325812],
     8914                             [- 6.27333398, - 0.00034862, 0.00021356, 7.27298536, 0.99893511, 0.99943782, 0.49325800],
     8915                             [- 6.27333408, - 0.00034858, 0.00021354, 7.27298549, 0.99893523, 0.99943788, 0.49325798],
     8916                             [- 6.27333417, - 0.00034854, 0.00021351, 7.27298563, 0.99893535, 0.99943794, 0.49325819],
     8917                             [- 6.27333426, - 0.00034850, 0.00021349, 7.27298576, 0.99893547, 0.99943801, 0.49325809],
     8918                             [- 6.27333436, - 0.00034847, 0.00021346, 7.27298589, 0.99893559, 0.99943807, 0.49325811],
     8919                             [- 6.27333445, - 0.00034843, 0.00021344, 7.27298602, 0.99893571, 0.99943813, 0.49325804],
     8920                             [- 6.27333454, - 0.00034839, 0.00021342, 7.27298616, 0.99893583, 0.99943820, 0.49325814],
     8921                             [- 6.27333464, - 0.00034835, 0.00021339, 7.27298629, 0.99893595, 0.99943826, 0.49325817],
     8922                             [- 6.27333473, - 0.00034831, 0.00021337, 7.27298642, 0.99893607, 0.99943832, 0.49325810],
     8923                             [- 6.27333483, - 0.00034827, 0.00021334, 7.27298656, 0.99893619, 0.99943839, 0.49325810],
     8924                             [- 6.27333492, - 0.00034823, 0.00021332, 7.27298669, 0.99893631, 0.99943845, 0.49325813],
     8925                             [- 6.27333501, - 0.00034819, 0.00021330, 7.27298682, 0.99893643, 0.99943851, 0.49325821],
     8926                             [- 6.27333511, - 0.00034815, 0.00021327, 7.27298696, 0.99893655, 0.99943858, 0.49325825],
     8927                             [- 6.27333520, - 0.00034811, 0.00021325, 7.27298709, 0.99893667, 0.99943864, 0.49325802],
     8928                             [- 6.27333530, - 0.00034807, 0.00021322, 7.27298722, 0.99893679, 0.99943870, 0.49325839],
     8929                             [- 6.27333539, - 0.00034803, 0.00021320, 7.27298735, 0.99893691, 0.99943877, 0.49325824],
     8930                             [- 6.27333548, - 0.00034800, 0.00021318, 7.27298749, 0.99893703, 0.99943883, 0.49325827],
     8931                             [- 6.27333558, - 0.00034796, 0.00021315, 7.27298762, 0.99893715, 0.99943889, 0.49325830],
     8932                             [- 6.27333567, - 0.00034792, 0.00021313, 7.27298775, 0.99893727, 0.99943895, 0.49325817],
     8933                             [- 6.27333576, - 0.00034788, 0.00021310, 7.27298789, 0.99893739, 0.99943902, 0.49325841],
     8934                             [- 6.27333586, - 0.00034784, 0.00021308, 7.27298802, 0.99893751, 0.99943908, 0.49325836],
     8935                             [- 6.27333595, - 0.00034780, 0.00021306, 7.27298815, 0.99893763, 0.99943914, 0.49325836],
     8936                             [- 6.27333604, - 0.00034776, 0.00021303, 7.27298828, 0.99893774, 0.99943921, 0.49325838],
     8937                             [- 6.27333614, - 0.00034772, 0.00021301, 7.27298842, 0.99893786, 0.99943927, 0.49325845],
     8938                             [- 6.27333623, - 0.00034768, 0.00021298, 7.27298855, 0.99893798, 0.99943933, 0.49325848],
     8939                             [- 6.27333632, - 0.00034764, 0.00021296, 7.27298868, 0.99893810, 0.99943940, 0.49325833],
     8940                             [- 6.27333642, - 0.00034760, 0.00021294, 7.27298881, 0.99893822, 0.99943946, 0.49325843],
     8941                             [- 6.27333651, - 0.00034757, 0.00021291, 7.27298895, 0.99893834, 0.99943952, 0.49325849],
     8942                             [- 6.27333661, - 0.00034753, 0.00021289, 7.27298908, 0.99893846, 0.99943958, 0.49325841],
     8943                             [- 6.27333670, - 0.00034749, 0.00021286, 7.27298921, 0.99893858, 0.99943965, 0.49325856],
     8944                             [- 6.27333679, - 0.00034745, 0.00021284, 7.27298934, 0.99893870, 0.99943971, 0.49325841],
     8945                             [- 6.27333689, - 0.00034741, 0.00021282, 7.27298948, 0.99893882, 0.99943977, 0.49325845],
     8946                             [- 6.27333698, - 0.00034737, 0.00021279, 7.27298961, 0.99893894, 0.99943984, 0.49325852],
     8947                             [- 6.27333707, - 0.00034733, 0.00021277, 7.27298974, 0.99893906, 0.99943990, 0.49325863],
     8948                             [- 6.27333717, - 0.00034729, 0.00021275, 7.27298987, 0.99893918, 0.99943996, 0.49325866],
     8949                             [- 6.27333726, - 0.00034725, 0.00021272, 7.27299000, 0.99893929, 0.99944002, 0.49325856],
     8950                             [- 6.27333735, - 0.00034721, 0.00021270, 7.27299014, 0.99893941, 0.99944009, 0.49325854],
     8951                             [- 6.27333745, - 0.00034718, 0.00021267, 7.27299027, 0.99893953, 0.99944015, 0.49325858],
     8952                             [- 6.27333754, - 0.00034714, 0.00021265, 7.27299040, 0.99893965, 0.99944021, 0.49325856],
     8953                             [- 6.27333763, - 0.00034710, 0.00021263, 7.27299053, 0.99893977, 0.99944028, 0.49325873],
     8954                             [- 6.27333772, - 0.00034706, 0.00021260, 7.27299067, 0.99893989, 0.99944034, 0.49325877],
     8955                             [- 6.27333782, - 0.00034702, 0.00021258, 7.27299080, 0.99894001, 0.99944040, 0.49325864],
     8956                             [- 6.27333791, - 0.00034698, 0.00021255, 7.27299093, 0.99894013, 0.99944046, 0.49325857],
     8957                             [- 6.27333800, - 0.00034694, 0.00021253, 7.27299106, 0.99894025, 0.99944053, 0.49325852],
     8958                             [- 6.27333810, - 0.00034690, 0.00021251, 7.27299119, 0.99894036, 0.99944059, 0.49325872],
     8959                             [- 6.27333819, - 0.00034686, 0.00021248, 7.27299133, 0.99894048, 0.99944065, 0.49325865],
     8960                             [- 6.27333828, - 0.00034683, 0.00021246, 7.27299146, 0.99894060, 0.99944072, 0.49325884],
     8961                             [- 6.27333838, - 0.00034679, 0.00021244, 7.27299159, 0.99894072, 0.99944078, 0.49325864],
     8962                             [- 6.27333847, - 0.00034675, 0.00021241, 7.27299172, 0.99894084, 0.99944084, 0.49325865],
     8963                             [- 6.27333856, - 0.00034671, 0.00021239, 7.27299185, 0.99894096, 0.99944090, 0.49325871],
     8964                             [- 6.27333866, - 0.00034667, 0.00021236, 7.27299199, 0.99894108, 0.99944097, 0.49325862],
     8965                             [- 6.27333875, - 0.00034663, 0.00021234, 7.27299212, 0.99894120, 0.99944103, 0.49325892],
     8966                             [- 6.27333884, - 0.00034659, 0.00021232, 7.27299225, 0.99894131, 0.99944109, 0.49325886],
     8967                             [- 6.27333893, - 0.00034655, 0.00021229, 7.27299238, 0.99894143, 0.99944115, 0.49325892],
     8968                             [- 6.27333903, - 0.00034652, 0.00021227, 7.27299251, 0.99894155, 0.99944122, 0.49325878],
     8969                             [- 6.27333912, - 0.00034648, 0.00021225, 7.27299264, 0.99894167, 0.99944128, 0.49325893],
     8970                             [- 6.27333921, - 0.00034644, 0.00021222, 7.27299278, 0.99894179, 0.99944134, 0.49325882],
     8971                             [- 6.27333931, - 0.00034640, 0.00021220, 7.27299291, 0.99894191, 0.99944140, 0.49325880],
     8972                             [- 6.27333940, - 0.00034636, 0.00021217, 7.27299304, 0.99894202, 0.99944147, 0.49325884],
     8973                             [- 6.27333949, - 0.00034632, 0.00021215, 7.27299317, 0.99894214, 0.99944153, 0.49325871],
     8974                             [- 6.27333958, - 0.00034628, 0.00021213, 7.27299330, 0.99894226, 0.99944159, 0.49325888],
     8975                             [- 6.27333968, - 0.00034624, 0.00021210, 7.27299343, 0.99894238, 0.99944165, 0.49325907],
     8976                             [- 6.27333977, - 0.00034620, 0.00021208, 7.27299356, 0.99894250, 0.99944172, 0.49325884],
     8977                             [- 6.27333986, - 0.00034617, 0.00021206, 7.27299370, 0.99894262, 0.99944178, 0.49325906],
     8978                             [- 6.27333995, - 0.00034613, 0.00021203, 7.27299383, 0.99894273, 0.99944184, 0.49325903],
     8979                             [- 6.27334005, - 0.00034609, 0.00021201, 7.27299396, 0.99894285, 0.99944190, 0.49325895],
     8980                             [- 6.27334014, - 0.00034605, 0.00021198, 7.27299409, 0.99894297, 0.99944197, 0.49325883],
     8981                             [- 6.27334023, - 0.00034601, 0.00021196, 7.27299422, 0.99894309, 0.99944203, 0.49325893],
     8982                             [- 6.27334033, - 0.00034597, 0.00021194, 7.27299435, 0.99894321, 0.99944209, 0.49325903],
     8983                             [- 6.27334042, - 0.00034593, 0.00021191, 7.27299448, 0.99894333, 0.99944215, 0.49325919],
     8984                             [- 6.27334051, - 0.00034590, 0.00021189, 7.27299461, 0.99894344, 0.99944222, 0.49325911],
     8985                             [- 6.27334060, - 0.00034586, 0.00021187, 7.27299475, 0.99894356, 0.99944228, 0.49325916],
     8986                             [- 6.27334070, - 0.00034582, 0.00021184, 7.27299488, 0.99894368, 0.99944234, 0.49325910],
     8987                             [- 6.27334079, - 0.00034578, 0.00021182, 7.27299501, 0.99894380, 0.99944240, 0.49325905],
     8988                             [- 6.27334088, - 0.00034574, 0.00021179, 7.27299514, 0.99894392, 0.99944246, 0.49325907],
     8989                             [- 6.27334097, - 0.00034570, 0.00021177, 7.27299527, 0.99894403, 0.99944253, 0.49325918],
     8990                             [- 6.27334107, - 0.00034566, 0.00021175, 7.27299540, 0.99894415, 0.99944259, 0.49325910],
     8991                             [- 6.27334116, - 0.00034563, 0.00021172, 7.27299553, 0.99894427, 0.99944265, 0.49325909],
     8992                             [- 6.27334125, - 0.00034559, 0.00021170, 7.27299566, 0.99894439, 0.99944271, 0.49325903],
     8993                             [- 6.27334134, - 0.00034555, 0.00021168, 7.27299579, 0.99894451, 0.99944278, 0.49325934],
     8994                             [- 6.27334143, - 0.00034551, 0.00021165, 7.27299593, 0.99894462, 0.99944284, 0.49325921],
     8995                             [- 6.27334153, - 0.00034547, 0.00021163, 7.27299606, 0.99894474, 0.99944290, 0.49325916],
     8996                             [- 6.27334162, - 0.00034543, 0.00021161, 7.27299619, 0.99894486, 0.99944296, 0.49325905],
     8997                             [- 6.27334171, - 0.00034539, 0.00021158, 7.27299632, 0.99894498, 0.99944302, 0.49325932],
     8998                             [- 6.27334180, - 0.00034536, 0.00021156, 7.27299645, 0.99894509, 0.99944309, 0.49325918],
     8999                             [- 6.27334190, - 0.00034532, 0.00021153, 7.27299658, 0.99894521, 0.99944315, 0.49325928],
     9000                             [- 6.27334199, - 0.00034528, 0.00021151, 7.27299671, 0.99894533, 0.99944321, 0.49325927],
     9001                             [- 6.27334208, - 0.00034524, 0.00021149, 7.27299684, 0.99894545, 0.99944327, 0.49325910],
     9002                             [- 6.27334217, - 0.00034520, 0.00021146, 7.27299697, 0.99894557, 0.99944334, 0.49325933],
     9003                             [- 6.27334226, - 0.00034516, 0.00021144, 7.27299710, 0.99894568, 0.99944340, 0.49325931],
     9004                             [- 6.27334236, - 0.00034512, 0.00021142, 7.27299723, 0.99894580, 0.99944346, 0.49325913],
     9005                             [- 6.27334245, - 0.00034509, 0.00021139, 7.27299736, 0.99894592, 0.99944352, 0.49325935],
     9006                             [- 6.27334254, - 0.00034505, 0.00021137, 7.27299749, 0.99894604, 0.99944358, 0.49325926],
     9007                             [- 6.27334263, - 0.00034501, 0.00021135, 7.27299762, 0.99894615, 0.99944365, 0.49325931],
     9008                             [- 6.27334273, - 0.00034497, 0.00021132, 7.27299776, 0.99894627, 0.99944371, 0.49325923],
     9009                             [- 6.27334282, - 0.00034493, 0.00021130, 7.27299789, 0.99894639, 0.99944377, 0.49325932],
     9010                             [- 6.27334291, - 0.00034489, 0.00021128, 7.27299802, 0.99894651, 0.99944383, 0.49325937],
     9011                             [- 6.27334300, - 0.00034486, 0.00021125, 7.27299815, 0.99894662, 0.99944389, 0.49325925],
     9012                             [- 6.27334309, - 0.00034482, 0.00021123, 7.27299828, 0.99894674, 0.99944396, 0.49325938],
     9013                             [- 6.27334319, - 0.00034478, 0.00021120, 7.27299841, 0.99894686, 0.99944402, 0.49325937],
     9014                             [- 6.27334328, - 0.00034474, 0.00021118, 7.27299854, 0.99894697, 0.99944408, 0.49325933],
     9015                             [- 6.27334337, - 0.00034470, 0.00021116, 7.27299867, 0.99894709, 0.99944414, 0.49325964],
     9016                             [- 6.27334346, - 0.00034466, 0.00021113, 7.27299880, 0.99894721, 0.99944420, 0.49325932],
     9017                             [- 6.27334355, - 0.00034462, 0.00021111, 7.27299893, 0.99894733, 0.99944426, 0.49325939],
     9018                             [- 6.27334364, - 0.00034459, 0.00021109, 7.27299906, 0.99894744, 0.99944433, 0.49325953],
     9019                             [- 6.27334374, - 0.00034455, 0.00021106, 7.27299919, 0.99894756, 0.99944439, 0.49325955],
     9020                             [- 6.27334383, - 0.00034451, 0.00021104, 7.27299932, 0.99894768, 0.99944445, 0.49325952],
     9021                             [- 6.27334392, - 0.00034447, 0.00021102, 7.27299945, 0.99894780, 0.99944451, 0.49325957],
     9022                             [- 6.27334401, - 0.00034443, 0.00021099, 7.27299958, 0.99894791, 0.99944457, 0.49325952],
     9023                             [- 6.27334410, - 0.00034439, 0.00021097, 7.27299971, 0.99894803, 0.99944464, 0.49325948],
     9024                             [- 6.27334420, - 0.00034436, 0.00021095, 7.27299984, 0.99894815, 0.99944470, 0.49325953],
     9025                             [- 6.27334429, - 0.00034432, 0.00021092, 7.27299997, 0.99894826, 0.99944476, 0.49325969],
     9026                             [- 6.27334438, - 0.00034428, 0.00021090, 7.27300010, 0.99894838, 0.99944482, 0.49325951],
     9027                             [- 6.27334447, - 0.00034424, 0.00021088, 7.27300023, 0.99894850, 0.99944488, 0.49325964],
     9028                             [- 6.27334456, - 0.00034420, 0.00021085, 7.27300036, 0.99894861, 0.99944494, 0.49325959],
     9029                             [- 6.27334465, - 0.00034417, 0.00021083, 7.27300049, 0.99894873, 0.99944501, 0.49325984],
     9030                             [- 6.27334475, - 0.00034413, 0.00021081, 7.27300062, 0.99894885, 0.99944507, 0.49325961],
     9031                             [- 6.27334484, - 0.00034409, 0.00021078, 7.27300075, 0.99894897, 0.99944513, 0.49325970],
     9032                             [- 6.27334493, - 0.00034405, 0.00021076, 7.27300088, 0.99894908, 0.99944519, 0.49325973],
     9033                             [- 6.27334502, - 0.00034401, 0.00021073, 7.27300101, 0.99894920, 0.99944525, 0.49325965],
     9034                             [- 6.27334511, - 0.00034397, 0.00021071, 7.27300114, 0.99894932, 0.99944531, 0.49325961],
     9035                             [- 6.27334520, - 0.00034394, 0.00021069, 7.27300127, 0.99894943, 0.99944538, 0.49325970],
     9036                             [- 6.27334529, - 0.00034390, 0.00021066, 7.27300140, 0.99894955, 0.99944544, 0.49325947],
     9037                             [- 6.27334539, - 0.00034386, 0.00021064, 7.27300153, 0.99894967, 0.99944550, 0.49325970],
     9038                             [- 6.27334548, - 0.00034382, 0.00021062, 7.27300166, 0.99894978, 0.99944556, 0.49325986],
     9039                             [- 6.27334557, - 0.00034378, 0.00021059, 7.27300179, 0.99894990, 0.99944562, 0.49325975],
     9040                             [- 6.27334566, - 0.00034374, 0.00021057, 7.27300192, 0.99895002, 0.99944568, 0.49325973],
     9041                             [- 6.27334575, - 0.00034371, 0.00021055, 7.27300205, 0.99895013, 0.99944575, 0.49325990],
     9042                             [- 6.27334584, - 0.00034367, 0.00021052, 7.27300217, 0.99895025, 0.99944581, 0.49325987],
     9043                             [- 6.27334593, - 0.00034363, 0.00021050, 7.27300230, 0.99895037, 0.99944587, 0.49325975],
     9044                             [- 6.27334603, - 0.00034359, 0.00021048, 7.27300243, 0.99895048, 0.99944593, 0.49325986],
     9045                             [- 6.27334612, - 0.00034355, 0.00021045, 7.27300256, 0.99895060, 0.99944599, 0.49325980],
     9046                             [- 6.27334621, - 0.00034352, 0.00021043, 7.27300269, 0.99895072, 0.99944605, 0.49325999],
     9047                             [- 6.27334630, - 0.00034348, 0.00021041, 7.27300282, 0.99895083, 0.99944611, 0.49326005],
     9048                             [- 6.27334639, - 0.00034344, 0.00021038, 7.27300295, 0.99895095, 0.99944618, 0.49325989],
     9049                             [- 6.27334648, - 0.00034340, 0.00021036, 7.27300308, 0.99895106, 0.99944624, 0.49325982],
     9050                             [- 6.27334657, - 0.00034336, 0.00021034, 7.27300321, 0.99895118, 0.99944630, 0.49326004],
     9051                             [- 6.27334666, - 0.00034333, 0.00021031, 7.27300334, 0.99895130, 0.99944636, 0.49325987],
     9052                             [- 6.27334676, - 0.00034329, 0.00021029, 7.27300347, 0.99895141, 0.99944642, 0.49326003],
     9053                             [- 6.27334685, - 0.00034325, 0.00021027, 7.27300360, 0.99895153, 0.99944648, 0.49325986],
     9054                             [- 6.27334694, - 0.00034321, 0.00021024, 7.27300373, 0.99895165, 0.99944654, 0.49326013],
     9055                             [- 6.27334703, - 0.00034317, 0.00021022, 7.27300386, 0.99895176, 0.99944661, 0.49326001],
     9056                             [- 6.27334712, - 0.00034313, 0.00021020, 7.27300399, 0.99895188, 0.99944667, 0.49325997],
     9057                             [- 6.27334721, - 0.00034310, 0.00021017, 7.27300411, 0.99895199, 0.99944673, 0.49325982],
     9058                             [- 6.27334730, - 0.00034306, 0.00021015, 7.27300424, 0.99895211, 0.99944679, 0.49326004],
     9059                             [- 6.27334739, - 0.00034302, 0.00021013, 7.27300437, 0.99895223, 0.99944685, 0.49326000],
     9060                             [- 6.27334748, - 0.00034298, 0.00021010, 7.27300450, 0.99895234, 0.99944691, 0.49326002],
     9061                             [- 6.27334758, - 0.00034294, 0.00021008, 7.27300463, 0.99895246, 0.99944697, 0.49326019],
     9062                             [- 6.27334767, - 0.00034291, 0.00021006, 7.27300476, 0.99895258, 0.99944704, 0.49326022],
     9063                             [- 6.27334776, - 0.00034287, 0.00021003, 7.27300489, 0.99895269, 0.99944710, 0.49325991],
     9064                             [- 6.27334785, - 0.00034283, 0.00021001, 7.27300502, 0.99895281, 0.99944716, 0.49326017],
     9065                             [- 6.27334794, - 0.00034279, 0.00020999, 7.27300515, 0.99895292, 0.99944722, 0.49326012],
     9066                             [- 6.27334803, - 0.00034276, 0.00020996, 7.27300527, 0.99895304, 0.99944728, 0.49326022],
     9067                             [- 6.27334812, - 0.00034272, 0.00020994, 7.27300540, 0.99895316, 0.99944734, 0.49326001],
     9068                             [- 6.27334821, - 0.00034268, 0.00020992, 7.27300553, 0.99895327, 0.99944740, 0.49326024],
     9069                             [- 6.27334830, - 0.00034264, 0.00020989, 7.27300566, 0.99895339, 0.99944746, 0.49326021],
     9070                             [- 6.27334839, - 0.00034260, 0.00020987, 7.27300579, 0.99895350, 0.99944753, 0.49326029],
     9071                             [- 6.27334848, - 0.00034257, 0.00020985, 7.27300592, 0.99895362, 0.99944759, 0.49326016],
     9072                             [- 6.27334857, - 0.00034253, 0.00020983, 7.27300605, 0.99895373, 0.99944765, 0.49326016],
     9073                             [- 6.27334867, - 0.00034249, 0.00020980, 7.27300618, 0.99895385, 0.99944771, 0.49326045],
     9074                             [- 6.27334876, - 0.00034245, 0.00020978, 7.27300630, 0.99895397, 0.99944777, 0.49326011],
     9075                             [- 6.27334885, - 0.00034241, 0.00020976, 7.27300643, 0.99895408, 0.99944783, 0.49326023],
     9076                             [- 6.27334894, - 0.00034238, 0.00020973, 7.27300656, 0.99895420, 0.99944789, 0.49326007],
     9077                             [- 6.27334903, - 0.00034234, 0.00020971, 7.27300669, 0.99895431, 0.99944795, 0.49326021],
     9078                             [- 6.27334912, - 0.00034230, 0.00020969, 7.27300682, 0.99895443, 0.99944801, 0.49326027],
     9079                             [- 6.27334921, - 0.00034226, 0.00020966, 7.27300695, 0.99895454, 0.99944807, 0.49326040],
     9080                             [- 6.27334930, - 0.00034222, 0.00020964, 7.27300708, 0.99895466, 0.99944814, 0.49326032],
     9081                             [- 6.27334939, - 0.00034219, 0.00020962, 7.27300720, 0.99895478, 0.99944820, 0.49326028],
     9082                             [- 6.27334948, - 0.00034215, 0.00020959, 7.27300733, 0.99895489, 0.99944826, 0.49326022],
     9083                             [- 6.27334957, - 0.00034211, 0.00020957, 7.27300746, 0.99895501, 0.99944832, 0.49326044],
     9084                             [- 6.27334966, - 0.00034207, 0.00020955, 7.27300759, 0.99895512, 0.99944838, 0.49326036],
     9085                             [- 6.27334975, - 0.00034204, 0.00020952, 7.27300772, 0.99895524, 0.99944844, 0.49326052],
     9086                             [- 6.27334984, - 0.00034200, 0.00020950, 7.27300785, 0.99895535, 0.99944850, 0.49326050],
     9087                             [- 6.27334993, - 0.00034196, 0.00020948, 7.27300797, 0.99895547, 0.99944856, 0.49326047],
     9088                             [- 6.27335002, - 0.00034192, 0.00020945, 7.27300810, 0.99895558, 0.99944862, 0.49326049],
     9089                             [- 6.27335011, - 0.00034188, 0.00020943, 7.27300823, 0.99895570, 0.99944868, 0.49326038],
     9090                             [- 6.27335021, - 0.00034185, 0.00020941, 7.27300836, 0.99895582, 0.99944875, 0.49326054],
     9091                             [- 6.27335030, - 0.00034181, 0.00020938, 7.27300849, 0.99895593, 0.99944881, 0.49326041],
     9092                             [- 6.27335039, - 0.00034177, 0.00020936, 7.27300861, 0.99895605, 0.99944887, 0.49326059],
     9093                             [- 6.27335048, - 0.00034173, 0.00020934, 7.27300874, 0.99895616, 0.99944893, 0.49326058],
     9094                             [- 6.27335057, - 0.00034170, 0.00020932, 7.27300887, 0.99895628, 0.99944899, 0.49326043],
     9095                             [- 6.27335066, - 0.00034166, 0.00020929, 7.27300900, 0.99895639, 0.99944905, 0.49326062],
     9096                             [- 6.27335075, - 0.00034162, 0.00020927, 7.27300913, 0.99895651, 0.99944911, 0.49326067],
     9097                             [- 6.27335084, - 0.00034158, 0.00020925, 7.27300925, 0.99895662, 0.99944917, 0.49326078],
     9098                             [- 6.27335093, - 0.00034154, 0.00020922, 7.27300938, 0.99895674, 0.99944923, 0.49326065],
     9099                             [- 6.27335102, - 0.00034151, 0.00020920, 7.27300951, 0.99895685, 0.99944929, 0.49326059],
     9100                             [- 6.27335111, - 0.00034147, 0.00020918, 7.27300964, 0.99895697, 0.99944935, 0.49326055],
     9101                             [- 6.27335120, - 0.00034143, 0.00020915, 7.27300977, 0.99895708, 0.99944941, 0.49326066],
     9102                             [- 6.27335129, - 0.00034139, 0.00020913, 7.27300989, 0.99895720, 0.99944948, 0.49326077],
     9103                             [- 6.27335138, - 0.00034136, 0.00020911, 7.27301002, 0.99895731, 0.99944954, 0.49326066],
     9104                             [- 6.27335147, - 0.00034132, 0.00020908, 7.27301015, 0.99895743, 0.99944960, 0.49326075],
     9105                             [- 6.27335156, - 0.00034128, 0.00020906, 7.27301028, 0.99895754, 0.99944966, 0.49326055],
     9106                             [- 6.27335165, - 0.00034124, 0.00020904, 7.27301040, 0.99895766, 0.99944972, 0.49326086],
     9107                             [- 6.27335174, - 0.00034121, 0.00020902, 7.27301053, 0.99895777, 0.99944978, 0.49326055],
     9108                             [- 6.27335183, - 0.00034117, 0.00020899, 7.27301066, 0.99895789, 0.99944984, 0.49326069],
     9109                             [- 6.27335192, - 0.00034113, 0.00020897, 7.27301079, 0.99895800, 0.99944990, 0.49326076],
     9110                             [- 6.27335201, - 0.00034109, 0.00020895, 7.27301092, 0.99895812, 0.99944996, 0.49326064],
     9111                             [- 6.27335210, - 0.00034106, 0.00020892, 7.27301104, 0.99895823, 0.99945002, 0.49326064],
     9112                             [- 6.27335219, - 0.00034102, 0.00020890, 7.27301117, 0.99895835, 0.99945008, 0.49326079],
     9113                             [- 6.27335228, - 0.00034098, 0.00020888, 7.27301130, 0.99895846, 0.99945014, 0.49326094],
     9114                             [- 6.27335237, - 0.00034094, 0.00020885, 7.27301143, 0.99895858, 0.99945020, 0.49326073],
     9115                             [- 6.27335246, - 0.00034091, 0.00020883, 7.27301155, 0.99895869, 0.99945026, 0.49326067],
     9116                             [- 6.27335255, - 0.00034087, 0.00020881, 7.27301168, 0.99895881, 0.99945032, 0.49326096],
     9117                             [- 6.27335264, - 0.00034083, 0.00020878, 7.27301181, 0.99895892, 0.99945038, 0.49326074],
     9118                             [- 6.27335273, - 0.00034079, 0.00020876, 7.27301194, 0.99895903, 0.99945045, 0.49326072],
     9119                             [- 6.27335282, - 0.00034076, 0.00020874, 7.27301206, 0.99895915, 0.99945051, 0.49326097],
     9120                             [- 6.27335291, - 0.00034072, 0.00020872, 7.27301219, 0.99895926, 0.99945057, 0.49326095],
     9121                             [- 6.27335300, - 0.00034068, 0.00020869, 7.27301232, 0.99895938, 0.99945063, 0.49326083],
     9122                             [- 6.27335309, - 0.00034064, 0.00020867, 7.27301244, 0.99895949, 0.99945069, 0.49326094],
     9123                             [- 6.27335318, - 0.00034061, 0.00020865, 7.27301257, 0.99895961, 0.99945075, 0.49326071],
     9124                             [- 6.27335327, - 0.00034057, 0.00020862, 7.27301270, 0.99895972, 0.99945081, 0.49326094],
     9125                             [- 6.27335336, - 0.00034053, 0.00020860, 7.27301283, 0.99895984, 0.99945087, 0.49326119],
     9126                             [- 6.27335345, - 0.00034049, 0.00020858, 7.27301295, 0.99895995, 0.99945093, 0.49326102],
     9127                             [- 6.27335354, - 0.00034046, 0.00020856, 7.27301308, 0.99896007, 0.99945099, 0.49326095],
     9128                             [- 6.27335363, - 0.00034042, 0.00020853, 7.27301321, 0.99896018, 0.99945105, 0.49326111],
     9129                             [- 6.27335372, - 0.00034038, 0.00020851, 7.27301333, 0.99896029, 0.99945111, 0.49326093],
     9130                             [- 6.27335380, - 0.00034034, 0.00020849, 7.27301346, 0.99896041, 0.99945117, 0.49326092],
     9131                             [- 6.27335389, - 0.00034031, 0.00020846, 7.27301359, 0.99896052, 0.99945123, 0.49326086],
     9132                             [- 6.27335398, - 0.00034027, 0.00020844, 7.27301372, 0.99896064, 0.99945129, 0.49326111],
     9133                             [- 6.27335407, - 0.00034023, 0.00020842, 7.27301384, 0.99896075, 0.99945135, 0.49326085],
     9134                             [- 6.27335416, - 0.00034019, 0.00020839, 7.27301397, 0.99896087, 0.99945141, 0.49326107],
     9135                             [- 6.27335425, - 0.00034016, 0.00020837, 7.27301410, 0.99896098, 0.99945147, 0.49326138],
     9136                             [- 6.27335434, - 0.00034012, 0.00020835, 7.27301422, 0.99896109, 0.99945153, 0.49326107],
     9137                             [- 6.27335443, - 0.00034008, 0.00020833, 7.27301435, 0.99896121, 0.99945159, 0.49326110],
     9138                             [- 6.27335452, - 0.00034004, 0.00020830, 7.27301448, 0.99896132, 0.99945165, 0.49326107],
     9139                             [- 6.27335461, - 0.00034001, 0.00020828, 7.27301460, 0.99896144, 0.99945171, 0.49326111],
     9140                             [- 6.27335470, - 0.00033997, 0.00020826, 7.27301473, 0.99896155, 0.99945177, 0.49326094],
     9141                             [- 6.27335479, - 0.00033993, 0.00020823, 7.27301486, 0.99896166, 0.99945183, 0.49326116],
     9142                             [- 6.27335488, - 0.00033989, 0.00020821, 7.27301498, 0.99896178, 0.99945189, 0.49326119],
     9143                             [- 6.27335497, - 0.00033986, 0.00020819, 7.27301511, 0.99896189, 0.99945195, 0.49326130],
     9144                             [- 6.27335506, - 0.00033982, 0.00020817, 7.27301524, 0.99896201, 0.99945201, 0.49326119],
     9145                             [- 6.27335515, - 0.00033978, 0.00020814, 7.27301536, 0.99896212, 0.99945207, 0.49326105],
     9146                             [- 6.27335524, - 0.00033975, 0.00020812, 7.27301549, 0.99896223, 0.99945213, 0.49326119],
     9147                             [- 6.27335533, - 0.00033971, 0.00020810, 7.27301562, 0.99896235, 0.99945219, 0.49326118],
     9148                             [- 6.27335541, - 0.00033967, 0.00020807, 7.27301574, 0.99896246, 0.99945225, 0.49326126],
     9149                             [- 6.27335550, - 0.00033963, 0.00020805, 7.27301587, 0.99896258, 0.99945231, 0.49326104],
     9150                             [- 6.27335559, - 0.00033960, 0.00020803, 7.27301600, 0.99896269, 0.99945237, 0.49326124],
     9151                             [- 6.27335568, - 0.00033956, 0.00020801, 7.27301612, 0.99896280, 0.99945243, 0.49326121],
     9152                             [- 6.27335577, - 0.00033952, 0.00020798, 7.27301625, 0.99896292, 0.99945249, 0.49326126],
     9153                             [- 6.27335586, - 0.00033948, 0.00020796, 7.27301638, 0.99896303, 0.99945255, 0.49326146],
     9154                             [- 6.27335595, - 0.00033945, 0.00020794, 7.27301650, 0.99896315, 0.99945261, 0.49326123],
     9155                             [- 6.27335604, - 0.00033941, 0.00020791, 7.27301663, 0.99896326, 0.99945267, 0.49326137],
     9156                             [- 6.27335613, - 0.00033937, 0.00020789, 7.27301675, 0.99896337, 0.99945274, 0.49326124],
     9157                             [- 6.27335622, - 0.00033934, 0.00020787, 7.27301688, 0.99896349, 0.99945279, 0.49326144],
     9158                             [- 6.27335631, - 0.00033930, 0.00020785, 7.27301701, 0.99896360, 0.99945286, 0.49326118],
     9159                             [- 6.27335639, - 0.00033926, 0.00020782, 7.27301713, 0.99896371, 0.99945291, 0.49326131],
     9160                             [- 6.27335648, - 0.00033922, 0.00020780, 7.27301726, 0.99896383, 0.99945297, 0.49326131],
     9161                             [- 6.27335657, - 0.00033919, 0.00020778, 7.27301739, 0.99896394, 0.99945303, 0.49326137],
     9162                             [- 6.27335666, - 0.00033915, 0.00020776, 7.27301751, 0.99896405, 0.99945309, 0.49326160],
     9163                             [- 6.27335675, - 0.00033911, 0.00020773, 7.27301764, 0.99896417, 0.99945315, 0.49326160],
     9164                             [- 6.27335684, - 0.00033908, 0.00020771, 7.27301776, 0.99896428, 0.99945321, 0.49326123],
     9165                             [- 6.27335693, - 0.00033904, 0.00020769, 7.27301789, 0.99896439, 0.99945327, 0.49326161],
     9166                             [- 6.27335702, - 0.00033900, 0.00020766, 7.27301802, 0.99896451, 0.99945333, 0.49326152],
     9167                             [- 6.27335711, - 0.00033896, 0.00020764, 7.27301814, 0.99896462, 0.99945339, 0.49326143],
     9168                             [- 6.27335720, - 0.00033893, 0.00020762, 7.27301827, 0.99896473, 0.99945345, 0.49326145],
     9169                             [- 6.27335728, - 0.00033889, 0.00020760, 7.27301839, 0.99896485, 0.99945351, 0.49326173],
     9170                             [- 6.27335737, - 0.00033885, 0.00020757, 7.27301852, 0.99896496, 0.99945357, 0.49326144],
     9171                             [- 6.27335746, - 0.00033882, 0.00020755, 7.27301865, 0.99896507, 0.99945363, 0.49326151],
     9172                             [- 6.27335755, - 0.00033878, 0.00020753, 7.27301877, 0.99896519, 0.99945369, 0.49326137],
     9173                             [- 6.27335764, - 0.00033874, 0.00020751, 7.27301890, 0.99896530, 0.99945375, 0.49326159],
     9174                             [- 6.27335773, - 0.00033870, 0.00020748, 7.27301902, 0.99896541, 0.99945381, 0.49326170],
     9175                             [- 6.27335782, - 0.00033867, 0.00020746, 7.27301915, 0.99896553, 0.99945387, 0.49326167],
     9176                             [- 6.27335791, - 0.00033863, 0.00020744, 7.27301927, 0.99896564, 0.99945393, 0.49326166],
     9177                             [- 6.27335799, - 0.00033859, 0.00020741, 7.27301940, 0.99896575, 0.99945399, 0.49326169],
     9178                             [- 6.27335808, - 0.00033856, 0.00020739, 7.27301953, 0.99896587, 0.99945405, 0.49326162],
     9179                             [- 6.27335817, - 0.00033852, 0.00020737, 7.27301965, 0.99896598, 0.99945411, 0.49326183],
     9180                             [- 6.27335826, - 0.00033848, 0.00020735, 7.27301978, 0.99896609, 0.99945417, 0.49326173],
     9181                             [- 6.27335835, - 0.00033845, 0.00020732, 7.27301990, 0.99896621, 0.99945423, 0.49326171],
     9182                             [- 6.27335844, - 0.00033841, 0.00020730, 7.27302003, 0.99896632, 0.99945429, 0.49326166],
     9183                             [- 6.27335853, - 0.00033837, 0.00020728, 7.27302015, 0.99896643, 0.99945435, 0.49326165],
     9184                             [- 6.27335861, - 0.00033833, 0.00020726, 7.27302028, 0.99896655, 0.99945441, 0.49326181],
     9185                             [- 6.27335870, - 0.00033830, 0.00020723, 7.27302041, 0.99896666, 0.99945447, 0.49326156],
     9186                             [- 6.27335879, - 0.00033826, 0.00020721, 7.27302053, 0.99896677, 0.99945453, 0.49326193],
     9187                             [- 6.27335888, - 0.00033822, 0.00020719, 7.27302066, 0.99896688, 0.99945459, 0.49326181],
     9188                             [- 6.27335897, - 0.00033819, 0.00020716, 7.27302078, 0.99896700, 0.99945465, 0.49326163],
     9189                             [- 6.27335906, - 0.00033815, 0.00020714, 7.27302091, 0.99896711, 0.99945471, 0.49326173],
     9190                             [- 6.27335915, - 0.00033811, 0.00020712, 7.27302103, 0.99896722, 0.99945477, 0.49326188],
     9191                             [- 6.27335923, - 0.00033808, 0.00020710, 7.27302116, 0.99896734, 0.99945483, 0.49326193],
     9192                             [- 6.27335932, - 0.00033804, 0.00020707, 7.27302128, 0.99896745, 0.99945489, 0.49326203],
     9193                             [- 6.27335941, - 0.00033800, 0.00020705, 7.27302141, 0.99896756, 0.99945495, 0.49326181],
     9194                             [- 6.27335950, - 0.00033797, 0.00020703, 7.27302153, 0.99896767, 0.99945501, 0.49326178],
     9195                             [- 6.27335959, - 0.00033793, 0.00020701, 7.27302166, 0.99896779, 0.99945507, 0.49326183],
     9196                             [- 6.27335968, - 0.00033789, 0.00020698, 7.27302178, 0.99896790, 0.99945512, 0.49326183],
     9197                             [- 6.27335976, - 0.00033785, 0.00020696, 7.27302191, 0.99896801, 0.99945518, 0.49326190],
     9198                             [- 6.27335985, - 0.00033782, 0.00020694, 7.27302203, 0.99896813, 0.99945524, 0.49326204],
     9199                             [- 6.27335994, - 0.00033778, 0.00020692, 7.27302216, 0.99896824, 0.99945530, 0.49326197],
     9200                             [- 6.27336003, - 0.00033774, 0.00020689, 7.27302228, 0.99896835, 0.99945536, 0.49326200],
     9201                             [- 6.27336012, - 0.00033771, 0.00020687, 7.27302241, 0.99896846, 0.99945542, 0.49326187],
     9202                             [- 6.27336021, - 0.00033767, 0.00020685, 7.27302253, 0.99896858, 0.99945548, 0.49326214],
     9203                             [- 6.27336029, - 0.00033763, 0.00020683, 7.27302266, 0.99896869, 0.99945554, 0.49326210],
     9204                             [- 6.27336038, - 0.00033760, 0.00020680, 7.27302278, 0.99896880, 0.99945560, 0.49326210],
     9205                             [- 6.27336047, - 0.00033756, 0.00020678, 7.27302291, 0.99896891, 0.99945566, 0.49326201],
     9206                             [- 6.27336056, - 0.00033752, 0.00020676, 7.27302303, 0.99896903, 0.99945572, 0.49326223],
     9207                             [- 6.27336065, - 0.00033749, 0.00020674, 7.27302316, 0.99896914, 0.99945578, 0.49326214],
     9208                             [- 6.27336073, - 0.00033745, 0.00020671, 7.27302328, 0.99896925, 0.99945584, 0.49326184],
     9209                             [- 6.27336082, - 0.00033741, 0.00020669, 7.27302341, 0.99896936, 0.99945590, 0.49326190],
     9210                             [- 6.27336091, - 0.00033738, 0.00020667, 7.27302353, 0.99896948, 0.99945596, 0.49326192],
     9211                             [- 6.27336100, - 0.00033734, 0.00020665, 7.27302366, 0.99896959, 0.99945602, 0.49326215],
     9212                             [- 6.27336109, - 0.00033730, 0.00020662, 7.27302378, 0.99896970, 0.99945607, 0.49326198],
     9213                             [- 6.27336117, - 0.00033727, 0.00020660, 7.27302391, 0.99896981, 0.99945613, 0.49326211],
     9214                             [- 6.27336126, - 0.00033723, 0.00020658, 7.27302403, 0.99896992, 0.99945619, 0.49326202],
     9215                             [- 6.27336135, - 0.00033719, 0.00020656, 7.27302416, 0.99897004, 0.99945625, 0.49326208],
     9216                             [- 6.27336144, - 0.00033716, 0.00020653, 7.27302428, 0.99897015, 0.99945631, 0.49326216],
     9217                             [- 6.27336153, - 0.00033712, 0.00020651, 7.27302441, 0.99897026, 0.99945637, 0.49326199],
     9218                             [- 6.27336161, - 0.00033708, 0.00020649, 7.27302453, 0.99897037, 0.99945643, 0.49326218],
     9219                             [- 6.27336170, - 0.00033705, 0.00020647, 7.27302466, 0.99897049, 0.99945649, 0.49326214],
     9220                             [- 6.27336179, - 0.00033701, 0.00020644, 7.27302478, 0.99897060, 0.99945655, 0.49326240],
     9221                             [- 6.27336188, - 0.00033697, 0.00020642, 7.27302491, 0.99897071, 0.99945661, 0.49326199],
     9222                             [- 6.27336197, - 0.00033694, 0.00020640, 7.27302503, 0.99897082, 0.99945667, 0.49326203],
     9223                             [- 6.27336205, - 0.00033690, 0.00020638, 7.27302515, 0.99897093, 0.99945673, 0.49326224],
     9224                             [- 6.27336214, - 0.00033686, 0.00020635, 7.27302528, 0.99897105, 0.99945679, 0.49326220],
     9225                             [- 6.27336223, - 0.00033683, 0.00020633, 7.27302540, 0.99897116, 0.99945684, 0.49326222],
     9226                             [- 6.27336232, - 0.00033679, 0.00020631, 7.27302553, 0.99897127, 0.99945690, 0.49326242],
     9227                             [- 6.27336240, - 0.00033675, 0.00020629, 7.27302565, 0.99897138, 0.99945696, 0.49326213],
     9228                             [- 6.27336249, - 0.00033672, 0.00020626, 7.27302578, 0.99897149, 0.99945702, 0.49326219],
     9229                             [- 6.27336258, - 0.00033668, 0.00020624, 7.27302590, 0.99897161, 0.99945708, 0.49326219],
     9230                             [- 6.27336267, - 0.00033664, 0.00020622, 7.27302603, 0.99897172, 0.99945714, 0.49326250],
     9231                             [- 6.27336275, - 0.00033661, 0.00020620, 7.27302615, 0.99897183, 0.99945720, 0.49326244],
     9232                             [- 6.27336284, - 0.00033657, 0.00020617, 7.27302627, 0.99897194, 0.99945726, 0.49326221],
     9233                             [- 6.27336293, - 0.00033653, 0.00020615, 7.27302640, 0.99897205, 0.99945732, 0.49326264],
     9234                             [- 6.27336302, - 0.00033650, 0.00020613, 7.27302652, 0.99897216, 0.99945738, 0.49326232],
     9235                             [- 6.27336311, - 0.00033646, 0.00020611, 7.27302665, 0.99897228, 0.99945743, 0.49326230],
     9236                             [- 6.27336319, - 0.00033642, 0.00020608, 7.27302677, 0.99897239, 0.99945749, 0.49326227],
     9237                             [- 6.27336328, - 0.00033639, 0.00020606, 7.27302689, 0.99897250, 0.99945755, 0.49326245],
     9238                             [- 6.27336337, - 0.00033635, 0.00020604, 7.27302702, 0.99897261, 0.99945761, 0.49326242],
     9239                             [- 6.27336346, - 0.00033631, 0.00020602, 7.27302714, 0.99897272, 0.99945767, 0.49326246],
     9240                             [- 6.27336354, - 0.00033628, 0.00020599, 7.27302727, 0.99897283, 0.99945773, 0.49326241],
     9241                             [- 6.27336363, - 0.00033624, 0.00020597, 7.27302739, 0.99897295, 0.99945779, 0.49326240],
     9242                             [- 6.27336372, - 0.00033620, 0.00020595, 7.27302751, 0.99897306, 0.99945785, 0.49326249],
     9243                             [- 6.27336381, - 0.00033617, 0.00020593, 7.27302764, 0.99897317, 0.99945791, 0.49326270],
     9244                             [- 6.27336389, - 0.00033613, 0.00020590, 7.27302776, 0.99897328, 0.99945797, 0.49326235],
     9245                             [- 6.27336398, - 0.00033609, 0.00020588, 7.27302789, 0.99897339, 0.99945802, 0.49326239],
     9246                             [- 6.27336407, - 0.00033606, 0.00020586, 7.27302801, 0.99897350, 0.99945808, 0.49326248],
     9247                             [- 6.27336415, - 0.00033602, 0.00020584, 7.27302813, 0.99897362, 0.99945814, 0.49326264],
     9248                             [- 6.27336424, - 0.00033598, 0.00020582, 7.27302826, 0.99897373, 0.99945820, 0.49326263],
     9249                             [- 6.27336433, - 0.00033595, 0.00020579, 7.27302838, 0.99897384, 0.99945826, 0.49326243],
     9250                             [- 6.27336442, - 0.00033591, 0.00020577, 7.27302851, 0.99897395, 0.99945832, 0.49326267],
     9251                             [- 6.27336450, - 0.00033587, 0.00020575, 7.27302863, 0.99897406, 0.99945838, 0.49326234],
     9252                             [- 6.27336459, - 0.00033584, 0.00020573, 7.27302875, 0.99897417, 0.99945844, 0.49326251],
     9253                             [- 6.27336468, - 0.00033580, 0.00020570, 7.27302888, 0.99897428, 0.99945849, 0.49326259],
     9254                             [- 6.27336477, - 0.00033577, 0.00020568, 7.27302900, 0.99897439, 0.99945855, 0.49326266],
     9255                             [- 6.27336485, - 0.00033573, 0.00020566, 7.27302912, 0.99897451, 0.99945861, 0.49326257],
     9256                             [- 6.27336494, - 0.00033569, 0.00020564, 7.27302925, 0.99897462, 0.99945867, 0.49326257],
     9257                             [- 6.27336503, - 0.00033566, 0.00020561, 7.27302937, 0.99897473, 0.99945873, 0.49326264],
     9258                             [- 6.27336511, - 0.00033562, 0.00020559, 7.27302949, 0.99897484, 0.99945879, 0.49326274],
     9259                             [- 6.27336520, - 0.00033558, 0.00020557, 7.27302962, 0.99897495, 0.99945885, 0.49326286],
     9260                             [- 6.27336529, - 0.00033555, 0.00020555, 7.27302974, 0.99897506, 0.99945891, 0.49326289],
     9261                             [- 6.27336538, - 0.00033551, 0.00020553, 7.27302986, 0.99897517, 0.99945896, 0.49326274],
     9262                             [- 6.27336546, - 0.00033547, 0.00020550, 7.27302999, 0.99897528, 0.99945902, 0.49326267],
     9263                             [- 6.27336555, - 0.00033544, 0.00020548, 7.27303011, 0.99897540, 0.99945908, 0.49326282],
     9264                             [- 6.27336564, - 0.00033540, 0.00020546, 7.27303023, 0.99897551, 0.99945914, 0.49326268],
     9265                             [- 6.27336572, - 0.00033537, 0.00020544, 7.27303036, 0.99897562, 0.99945920, 0.49326305],
     9266                             [- 6.27336581, - 0.00033533, 0.00020541, 7.27303048, 0.99897573, 0.99945926, 0.49326276],
     9267                             [- 6.27336590, - 0.00033529, 0.00020539, 7.27303060, 0.99897584, 0.99945932, 0.49326281],
     9268                             [- 6.27336598, - 0.00033526, 0.00020537, 7.27303073, 0.99897595, 0.99945937, 0.49326294],
     9269                             [- 6.27336607, - 0.00033522, 0.00020535, 7.27303085, 0.99897606, 0.99945943, 0.49326286],
     9270                             [- 6.27336616, - 0.00033518, 0.00020532, 7.27303097, 0.99897617, 0.99945949, 0.49326281],
     9271                             [- 6.27336625, - 0.00033515, 0.00020530, 7.27303110, 0.99897628, 0.99945955, 0.49326286],
     9272                             [- 6.27336633, - 0.00033511, 0.00020528, 7.27303122, 0.99897639, 0.99945961, 0.49326297],
     9273                             [- 6.27336642, - 0.00033508, 0.00020526, 7.27303134, 0.99897650, 0.99945967, 0.49326279],
     9274                             [- 6.27336651, - 0.00033504, 0.00020524, 7.27303147, 0.99897662, 0.99945973, 0.49326311],
     9275                             [- 6.27336659, - 0.00033500, 0.00020521, 7.27303159, 0.99897673, 0.99945978, 0.49326289],
     9276                             [- 6.27336668, - 0.00033497, 0.00020519, 7.27303171, 0.99897684, 0.99945984, 0.49326305],
     9277                             [- 6.27336677, - 0.00033493, 0.00020517, 7.27303184, 0.99897695, 0.99945990, 0.49326297],
     9278                             [- 6.27336685, - 0.00033489, 0.00020515, 7.27303196, 0.99897706, 0.99945996, 0.49326277],
     9279                             [- 6.27336694, - 0.00033486, 0.00020512, 7.27303208, 0.99897717, 0.99946002, 0.49326308],
     9280                             [- 6.27336703, - 0.00033482, 0.00020510, 7.27303221, 0.99897728, 0.99946008, 0.49326289],
     9281                             [- 6.27336711, - 0.00033479, 0.00020508, 7.27303233, 0.99897739, 0.99946013, 0.49326298],
     9282                             [- 6.27336720, - 0.00033475, 0.00020506, 7.27303245, 0.99897750, 0.99946019, 0.49326300],
     9283                             [- 6.27336729, - 0.00033471, 0.00020504, 7.27303257, 0.99897761, 0.99946025, 0.49326304],
     9284                             [- 6.27336737, - 0.00033468, 0.00020501, 7.27303270, 0.99897772, 0.99946031, 0.49326311],
     9285                             [- 6.27336746, - 0.00033464, 0.00020499, 7.27303282, 0.99897783, 0.99946037, 0.49326309],
     9286                             [- 6.27336755, - 0.00033460, 0.00020497, 7.27303294, 0.99897794, 0.99946043, 0.49326303],
     9287                             [- 6.27336763, - 0.00033457, 0.00020495, 7.27303306, 0.99897805, 0.99946048, 0.49326308],
     9288                             [- 6.27336772, - 0.00033453, 0.00020493, 7.27303319, 0.99897816, 0.99946054, 0.49326287],
     9289                             [- 6.27336781, - 0.00033450, 0.00020490, 7.27303331, 0.99897827, 0.99946060, 0.49326314],
     9290                             [- 6.27336789, - 0.00033446, 0.00020488, 7.27303343, 0.99897839, 0.99946066, 0.49326307],
     9291                             [- 6.27336798, - 0.00033442, 0.00020486, 7.27303356, 0.99897850, 0.99946072, 0.49326307],
     9292                             [- 6.27336807, - 0.00033439, 0.00020484, 7.27303368, 0.99897861, 0.99946078, 0.49326322],
     9293                             [- 6.27336815, - 0.00033435, 0.00020481, 7.27303380, 0.99897872, 0.99946083, 0.49326311],
     9294                             [- 6.27336824, - 0.00033432, 0.00020479, 7.27303392, 0.99897883, 0.99946089, 0.49326322],
     9295                             [- 6.27336833, - 0.00033428, 0.00020477, 7.27303405, 0.99897894, 0.99946095, 0.49326339],
     9296                             [- 6.27336841, - 0.00033424, 0.00020475, 7.27303417, 0.99897905, 0.99946101, 0.49326319],
     9297                             [- 6.27336850, - 0.00033421, 0.00020473, 7.27303429, 0.99897916, 0.99946107, 0.49326315],
     9298                             [- 6.27336858, - 0.00033417, 0.00020470, 7.27303441, 0.99897927, 0.99946113, 0.49326326],
     9299                             [- 6.27336867, - 0.00033413, 0.00020468, 7.27303454, 0.99897938, 0.99946118, 0.49326320],
     9300                             [- 6.27336876, - 0.00033410, 0.00020466, 7.27303466, 0.99897949, 0.99946124, 0.49326335],
     9301                             [- 6.27336884, - 0.00033406, 0.00020464, 7.27303478, 0.99897960, 0.99946130, 0.49326321],
     9302                             [- 6.27336893, - 0.00033403, 0.00020462, 7.27303490, 0.99897971, 0.99946136, 0.49326341],
     9303                             [- 6.27336902, - 0.00033399, 0.00020459, 7.27303503, 0.99897982, 0.99946142, 0.49326319],
     9304                             [- 6.27336910, - 0.00033395, 0.00020457, 7.27303515, 0.99897993, 0.99946147, 0.49326349],
     9305                             [- 6.27336919, - 0.00033392, 0.00020455, 7.27303527, 0.99898004, 0.99946153, 0.49326330],
     9306                             [- 6.27336927, - 0.00033388, 0.00020453, 7.27303539, 0.99898015, 0.99946159, 0.49326316],
     9307                             [- 6.27336936, - 0.00033385, 0.00020451, 7.27303551, 0.99898026, 0.99946165, 0.49326319],
     9308                             [- 6.27336945, - 0.00033381, 0.00020448, 7.27303564, 0.99898037, 0.99946171, 0.49326337],
     9309                             [- 6.27336953, - 0.00033377, 0.00020446, 7.27303576, 0.99898048, 0.99946176, 0.49326350],
     9310                             [- 6.27336962, - 0.00033374, 0.00020444, 7.27303588, 0.99898059, 0.99946182, 0.49326333],
     9311                             [- 6.27336971, - 0.00033370, 0.00020442, 7.27303600, 0.99898070, 0.99946188, 0.49326343],
     9312                             [- 6.27336979, - 0.00033367, 0.00020439, 7.27303613, 0.99898081, 0.99946194, 0.49326342],
     9313                             [- 6.27336988, - 0.00033363, 0.00020437, 7.27303625, 0.99898092, 0.99946200, 0.49326348],
     9314                             [- 6.27336996, - 0.00033359, 0.00020435, 7.27303637, 0.99898103, 0.99946205, 0.49326358],
     9315                             [- 6.27337005, - 0.00033356, 0.00020433, 7.27303649, 0.99898114, 0.99946211, 0.49326344],
     9316                             [- 6.27337014, - 0.00033352, 0.00020431, 7.27303661, 0.99898125, 0.99946217, 0.49326333],
     9317                             [- 6.27337022, - 0.00033349, 0.00020428, 7.27303674, 0.99898136, 0.99946223, 0.49326344],
     9318                             [- 6.27337031, - 0.00033345, 0.00020426, 7.27303686, 0.99898147, 0.99946229, 0.49326346],
     9319                             [- 6.27337039, - 0.00033342, 0.00020424, 7.27303698, 0.99898158, 0.99946234, 0.49326354],
     9320                             [- 6.27337048, - 0.00033338, 0.00020422, 7.27303710, 0.99898169, 0.99946240, 0.49326336],
     9321                             [- 6.27337057, - 0.00033334, 0.00020420, 7.27303722, 0.99898180, 0.99946246, 0.49326349],
     9322                             [- 6.27337065, - 0.00033331, 0.00020417, 7.27303734, 0.99898191, 0.99946252, 0.49326348],
     9323                             [- 6.27337074, - 0.00033327, 0.00020415, 7.27303747, 0.99898202, 0.99946258, 0.49326342],
     9324                             [- 6.27337082, - 0.00033324, 0.00020413, 7.27303759, 0.99898213, 0.99946263, 0.49326343],
     9325                             [- 6.27337091, - 0.00033320, 0.00020411, 7.27303771, 0.99898224, 0.99946269, 0.49326362],
     9326                             [- 6.27337100, - 0.00033316, 0.00020409, 7.27303783, 0.99898234, 0.99946275, 0.49326356],
     9327                             [- 6.27337108, - 0.00033313, 0.00020406, 7.27303795, 0.99898245, 0.99946281, 0.49326362],
     9328                             [- 6.27337117, - 0.00033309, 0.00020404, 7.27303808, 0.99898256, 0.99946287, 0.49326353],
     9329                             [- 6.27337125, - 0.00033306, 0.00020402, 7.27303820, 0.99898267, 0.99946292, 0.49326384],
     9330                             [- 6.27337134, - 0.00033302, 0.00020400, 7.27303832, 0.99898278, 0.99946298, 0.49326355],
     9331                             [- 6.27337142, - 0.00033298, 0.00020398, 7.27303844, 0.99898289, 0.99946304, 0.49326361],
     9332                             [- 6.27337151, - 0.00033295, 0.00020395, 7.27303856, 0.99898300, 0.99946310, 0.49326362],
     9333                             [- 6.27337160, - 0.00033291, 0.00020393, 7.27303868, 0.99898311, 0.99946315, 0.49326349],
     9334                             [- 6.27337168, - 0.00033288, 0.00020391, 7.27303880, 0.99898322, 0.99946321, 0.49326369],
     9335                             [- 6.27337177, - 0.00033284, 0.00020389, 7.27303893, 0.99898333, 0.99946327, 0.49326369],
     9336                             [- 6.27337185, - 0.00033281, 0.00020387, 7.27303905, 0.99898344, 0.99946333, 0.49326369],
     9337                             [- 6.27337194, - 0.00033277, 0.00020385, 7.27303917, 0.99898355, 0.99946338, 0.49326367],
     9338                             [- 6.27337202, - 0.00033273, 0.00020382, 7.27303929, 0.99898366, 0.99946344, 0.49326359],
     9339                             [- 6.27337211, - 0.00033270, 0.00020380, 7.27303941, 0.99898377, 0.99946350, 0.49326376],
     9340                             [- 6.27337220, - 0.00033266, 0.00020378, 7.27303953, 0.99898388, 0.99946356, 0.49326382],
     9341                             [- 6.27337228, - 0.00033263, 0.00020376, 7.27303965, 0.99898399, 0.99946362, 0.49326384],
     9342                             [- 6.27337237, - 0.00033259, 0.00020374, 7.27303978, 0.99898409, 0.99946367, 0.49326379],
     9343                             [- 6.27337245, - 0.00033256, 0.00020371, 7.27303990, 0.99898420, 0.99946373, 0.49326389],
     9344                             [- 6.27337254, - 0.00033252, 0.00020369, 7.27304002, 0.99898431, 0.99946379, 0.49326390],
     9345                             [- 6.27337262, - 0.00033248, 0.00020367, 7.27304014, 0.99898442, 0.99946385, 0.49326379],
     9346                             [- 6.27337271, - 0.00033245, 0.00020365, 7.27304026, 0.99898453, 0.99946390, 0.49326384],
     9347                             [- 6.27337279, - 0.00033241, 0.00020363, 7.27304038, 0.99898464, 0.99946396, 0.49326381],
     9348                             [- 6.27337288, - 0.00033238, 0.00020360, 7.27304050, 0.99898475, 0.99946402, 0.49326372],
     9349                             [- 6.27337297, - 0.00033234, 0.00020358, 7.27304062, 0.99898486, 0.99946408, 0.49326377],
     9350                             [- 6.27337305, - 0.00033231, 0.00020356, 7.27304075, 0.99898497, 0.99946413, 0.49326406],
     9351                             [- 6.27337314, - 0.00033227, 0.00020354, 7.27304087, 0.99898508, 0.99946419, 0.49326380],
     9352                             [- 6.27337322, - 0.00033223, 0.00020352, 7.27304099, 0.99898519, 0.99946425, 0.49326407],
     9353                             [- 6.27337331, - 0.00033220, 0.00020350, 7.27304111, 0.99898529, 0.99946431, 0.49326377],
     9354                             [- 6.27337339, - 0.00033216, 0.00020347, 7.27304123, 0.99898540, 0.99946436, 0.49326399],
     9355                             [- 6.27337348, - 0.00033213, 0.00020345, 7.27304135, 0.99898551, 0.99946442, 0.49326392],
     9356                             [- 6.27337356, - 0.00033209, 0.00020343, 7.27304147, 0.99898562, 0.99946448, 0.49326402],
     9357                             [- 6.27337365, - 0.00033206, 0.00020341, 7.27304159, 0.99898573, 0.99946454, 0.49326407],
     9358                             [- 6.27337373, - 0.00033202, 0.00020339, 7.27304171, 0.99898584, 0.99946459, 0.49326397],
     9359                             [- 6.27337382, - 0.00033198, 0.00020336, 7.27304183, 0.99898595, 0.99946465, 0.49326388],
     9360                             [- 6.27337390, - 0.00033195, 0.00020334, 7.27304196, 0.99898606, 0.99946471, 0.49326400],
     9361                             [- 6.27337399, - 0.00033191, 0.00020332, 7.27304208, 0.99898616, 0.99946477, 0.49326405],
     9362                             [- 6.27337407, - 0.00033188, 0.00020330, 7.27304220, 0.99898627, 0.99946482, 0.49326405],
     9363                             [- 6.27337416, - 0.00033184, 0.00020328, 7.27304232, 0.99898638, 0.99946488, 0.49326395],
     9364                             [- 6.27337425, - 0.00033181, 0.00020326, 7.27304244, 0.99898649, 0.99946494, 0.49326406],
     9365                             [- 6.27337433, - 0.00033177, 0.00020323, 7.27304256, 0.99898660, 0.99946500, 0.49326412],
     9366                             [- 6.27337442, - 0.00033174, 0.00020321, 7.27304268, 0.99898671, 0.99946505, 0.49326418],
     9367                             [- 6.27337450, - 0.00033170, 0.00020319, 7.27304280, 0.99898682, 0.99946511, 0.49326405],
     9368                             [- 6.27337459, - 0.00033166, 0.00020317, 7.27304292, 0.99898693, 0.99946517, 0.49326394],
     9369                             [- 6.27337467, - 0.00033163, 0.00020315, 7.27304304, 0.99898703, 0.99946522, 0.49326407],
     9370                             [- 6.27337476, - 0.00033159, 0.00020312, 7.27304316, 0.99898714, 0.99946528, 0.49326381],
     9371                             [- 6.27337484, - 0.00033156, 0.00020310, 7.27304328, 0.99898725, 0.99946534, 0.49326400],
     9372                             [- 6.27337493, - 0.00033152, 0.00020308, 7.27304340, 0.99898736, 0.99946540, 0.49326414],
     9373                             [- 6.27337501, - 0.00033149, 0.00020306, 7.27304352, 0.99898747, 0.99946545, 0.49326426],
     9374                             [- 6.27337510, - 0.00033145, 0.00020304, 7.27304364, 0.99898758, 0.99946551, 0.49326422],
     9375                             [- 6.27337518, - 0.00033142, 0.00020302, 7.27304376, 0.99898768, 0.99946557, 0.49326412],
     9376                             [- 6.27337527, - 0.00033138, 0.00020299, 7.27304389, 0.99898779, 0.99946563, 0.49326410],
     9377                             [- 6.27337535, - 0.00033135, 0.00020297, 7.27304401, 0.99898790, 0.99946568, 0.49326415],
     9378                             [- 6.27337544, - 0.00033131, 0.00020295, 7.27304413, 0.99898801, 0.99946574, 0.49326422],
     9379                             [- 6.27337552, - 0.00033127, 0.00020293, 7.27304425, 0.99898812, 0.99946580, 0.49326416],
     9380                             [- 6.27337561, - 0.00033124, 0.00020291, 7.27304437, 0.99898823, 0.99946585, 0.49326449],
     9381                             [- 6.27337569, - 0.00033120, 0.00020289, 7.27304449, 0.99898833, 0.99946591, 0.49326425],
     9382                             [- 6.27337578, - 0.00033117, 0.00020286, 7.27304461, 0.99898844, 0.99946597, 0.49326435],
     9383                             [- 6.27337586, - 0.00033113, 0.00020284, 7.27304473, 0.99898855, 0.99946603, 0.49326445],
     9384                             [- 6.27337594, - 0.00033110, 0.00020282, 7.27304485, 0.99898866, 0.99946608, 0.49326455],
     9385                             [- 6.27337603, - 0.00033106, 0.00020280, 7.27304497, 0.99898877, 0.99946614, 0.49326433],
     9386                             [- 6.27337611, - 0.00033103, 0.00020278, 7.27304509, 0.99898888, 0.99946620, 0.49326418],
     9387                             [- 6.27337620, - 0.00033099, 0.00020275, 7.27304521, 0.99898898, 0.99946625, 0.49326429],
     9388                             [- 6.27337628, - 0.00033096, 0.00020273, 7.27304533, 0.99898909, 0.99946631, 0.49326433],
     9389                             [- 6.27337637, - 0.00033092, 0.00020271, 7.27304545, 0.99898920, 0.99946637, 0.49326438],
     9390                             [- 6.27337645, - 0.00033088, 0.00020269, 7.27304557, 0.99898931, 0.99946643, 0.49326440],
     9391                             [- 6.27337654, - 0.00033085, 0.00020267, 7.27304569, 0.99898942, 0.99946648, 0.49326448],
     9392                             [- 6.27337662, - 0.00033081, 0.00020265, 7.27304581, 0.99898952, 0.99946654, 0.49326440],
     9393                             [- 6.27337671, - 0.00033078, 0.00020262, 7.27304593, 0.99898963, 0.99946660, 0.49326441],
     9394                             [- 6.27337679, - 0.00033074, 0.00020260, 7.27304605, 0.99898974, 0.99946665, 0.49326439],
     9395                             [- 6.27337688, - 0.00033071, 0.00020258, 7.27304617, 0.99898985, 0.99946671, 0.49326444],
     9396                             [- 6.27337696, - 0.00033067, 0.00020256, 7.27304629, 0.99898996, 0.99946677, 0.49326437],
     9397                             [- 6.27337705, - 0.00033064, 0.00020254, 7.27304641, 0.99899006, 0.99946682, 0.49326463],
     9398                             [- 6.27337713, - 0.00033060, 0.00020252, 7.27304653, 0.99899017, 0.99946688, 0.49326433],
     9399                             [- 6.27337721, - 0.00033057, 0.00020250, 7.27304665, 0.99899028, 0.99946694, 0.49326452],
     9400                             [- 6.27337730, - 0.00033053, 0.00020247, 7.27304677, 0.99899039, 0.99946700, 0.49326464],
     9401                             [- 6.27337738, - 0.00033050, 0.00020245, 7.27304689, 0.99899050, 0.99946705, 0.49326462],
     9402                             [- 6.27337747, - 0.00033046, 0.00020243, 7.27304701, 0.99899060, 0.99946711, 0.49326446],
     9403                             [- 6.27337755, - 0.00033043, 0.00020241, 7.27304713, 0.99899071, 0.99946717, 0.49326448],
     9404                             [- 6.27337764, - 0.00033039, 0.00020239, 7.27304725, 0.99899082, 0.99946722, 0.49326479],
     9405                             [- 6.27337772, - 0.00033035, 0.00020237, 7.27304737, 0.99899093, 0.99946728, 0.49326445],
     9406                             [- 6.27337781, - 0.00033032, 0.00020234, 7.27304749, 0.99899103, 0.99946734, 0.49326446],
     9407                             [- 6.27337789, - 0.00033028, 0.00020232, 7.27304761, 0.99899114, 0.99946739, 0.49326446],
     9408                             [- 6.27337797, - 0.00033025, 0.00020230, 7.27304773, 0.99899125, 0.99946745, 0.49326456],
     9409                             [- 6.27337806, - 0.00033021, 0.00020228, 7.27304785, 0.99899136, 0.99946751, 0.49326462],
     9410                             [- 6.27337814, - 0.00033018, 0.00020226, 7.27304796, 0.99899146, 0.99946756, 0.49326466],
     9411                             [- 6.27337823, - 0.00033014, 0.00020224, 7.27304808, 0.99899157, 0.99946762, 0.49326469],
     9412                             [- 6.27337831, - 0.00033011, 0.00020221, 7.27304820, 0.99899168, 0.99946768, 0.49326455],
     9413                             [- 6.27337840, - 0.00033007, 0.00020219, 7.27304832, 0.99899179, 0.99946773, 0.49326445],
     9414                             [- 6.27337848, - 0.00033004, 0.00020217, 7.27304844, 0.99899190, 0.99946779, 0.49326466],
     9415                             [- 6.27337856, - 0.00033000, 0.00020215, 7.27304856, 0.99899200, 0.99946785, 0.49326467],
     9416                             [- 6.27337865, - 0.00032997, 0.00020213, 7.27304868, 0.99899211, 0.99946790, 0.49326472],
     9417                             [- 6.27337873, - 0.00032993, 0.00020211, 7.27304880, 0.99899222, 0.99946796, 0.49326465],
     9418                             [- 6.27337882, - 0.00032990, 0.00020208, 7.27304892, 0.99899233, 0.99946802, 0.49326487],
     9419                             [- 6.27337890, - 0.00032986, 0.00020206, 7.27304904, 0.99899243, 0.99946807, 0.49326453],
     9420                             [- 6.27337899, - 0.00032983, 0.00020204, 7.27304916, 0.99899254, 0.99946813, 0.49326462],
     9421                             [- 6.27337907, - 0.00032979, 0.00020202, 7.27304928, 0.99899265, 0.99946819, 0.49326466],
     9422                             [- 6.27337915, - 0.00032976, 0.00020200, 7.27304940, 0.99899275, 0.99946824, 0.49326470],
     9423                             [- 6.27337924, - 0.00032972, 0.00020198, 7.27304952, 0.99899286, 0.99946830, 0.49326485],
     9424                             [- 6.27337932, - 0.00032969, 0.00020196, 7.27304964, 0.99899297, 0.99946836, 0.49326493],
     9425                             [- 6.27337941, - 0.00032965, 0.00020193, 7.27304976, 0.99899308, 0.99946841, 0.49326472],
     9426                             [- 6.27337949, - 0.00032962, 0.00020191, 7.27304987, 0.99899318, 0.99946847, 0.49326466],
     9427                             [- 6.27337957, - 0.00032958, 0.00020189, 7.27304999, 0.99899329, 0.99946853, 0.49326475],
     9428                             [- 6.27337966, - 0.00032955, 0.00020187, 7.27305011, 0.99899340, 0.99946858, 0.49326474],
     9429                             [- 6.27337974, - 0.00032951, 0.00020185, 7.27305023, 0.99899351, 0.99946864, 0.49326494],
     9430                             [- 6.27337983, - 0.00032948, 0.00020183, 7.27305035, 0.99899361, 0.99946870, 0.49326475],
     9431                             [- 6.27337991, - 0.00032944, 0.00020181, 7.27305047, 0.99899372, 0.99946875, 0.49326504],
     9432                             [- 6.27337999, - 0.00032941, 0.00020178, 7.27305059, 0.99899383, 0.99946881, 0.49326510],
     9433                             [- 6.27338008, - 0.00032937, 0.00020176, 7.27305071, 0.99899393, 0.99946887, 0.49326506],
     9434                             [- 6.27338016, - 0.00032934, 0.00020174, 7.27305083, 0.99899404, 0.99946892, 0.49326491],
     9435                             [- 6.27338025, - 0.00032930, 0.00020172, 7.27305095, 0.99899415, 0.99946898, 0.49326495],
     9436                             [- 6.27338033, - 0.00032927, 0.00020170, 7.27305106, 0.99899425, 0.99946904, 0.49326488],
     9437                             [- 6.27338041, - 0.00032923, 0.00020168, 7.27305118, 0.99899436, 0.99946909, 0.49326492],
     9438                             [- 6.27338050, - 0.00032920, 0.00020165, 7.27305130, 0.99899447, 0.99946915, 0.49326492],
     9439                             [- 6.27338058, - 0.00032916, 0.00020163, 7.27305142, 0.99899458, 0.99946921, 0.49326493],
     9440                             [- 6.27338067, - 0.00032913, 0.00020161, 7.27305154, 0.99899468, 0.99946926, 0.49326498],
     9441                             [- 6.27338075, - 0.00032909, 0.00020159, 7.27305166, 0.99899479, 0.99946932, 0.49326509],
     9442                             [- 6.27338083, - 0.00032906, 0.00020157, 7.27305178, 0.99899490, 0.99946938, 0.49326511],
     9443                             [- 6.27338092, - 0.00032902, 0.00020155, 7.27305190, 0.99899500, 0.99946943, 0.49326491],
     9444                             [- 6.27338100, - 0.00032899, 0.00020153, 7.27305201, 0.99899511, 0.99946949, 0.49326497],
     9445                             [- 6.27338108, - 0.00032895, 0.00020150, 7.27305213, 0.99899522, 0.99946954, 0.49326517],
     9446                             [- 6.27338117, - 0.00032892, 0.00020148, 7.27305225, 0.99899532, 0.99946960, 0.49326501],
     9447                             [- 6.27338125, - 0.00032888, 0.00020146, 7.27305237, 0.99899543, 0.99946966, 0.49326506],
     9448                             [- 6.27338134, - 0.00032885, 0.00020144, 7.27305249, 0.99899554, 0.99946971, 0.49326507],
     9449                             [- 6.27338142, - 0.00032881, 0.00020142, 7.27305261, 0.99899564, 0.99946977, 0.49326497],
     9450                             [- 6.27338150, - 0.00032878, 0.00020140, 7.27305273, 0.99899575, 0.99946983, 0.49326508],
     9451                             [- 6.27338159, - 0.00032874, 0.00020138, 7.27305284, 0.99899586, 0.99946988, 0.49326522],
     9452                             [- 6.27338167, - 0.00032871, 0.00020135, 7.27305296, 0.99899596, 0.99946994, 0.49326525],
     9453                             [- 6.27338175, - 0.00032867, 0.00020133, 7.27305308, 0.99899607, 0.99946999, 0.49326527],
     9454                             [- 6.27338184, - 0.00032864, 0.00020131, 7.27305320, 0.99899618, 0.99947005, 0.49326512],
     9455                             [- 6.27338192, - 0.00032860, 0.00020129, 7.27305332, 0.99899628, 0.99947011, 0.49326544],
     9456                             [- 6.27338200, - 0.00032857, 0.00020127, 7.27305344, 0.99899639, 0.99947016, 0.49326511],
     9457                             [- 6.27338209, - 0.00032853, 0.00020125, 7.27305356, 0.99899650, 0.99947022, 0.49326525],
     9458                             [- 6.27338217, - 0.00032850, 0.00020123, 7.27305367, 0.99899660, 0.99947028, 0.49326517],
     9459                             [- 6.27338225, - 0.00032846, 0.00020121, 7.27305379, 0.99899671, 0.99947033, 0.49326515],
     9460                             [- 6.27338234, - 0.00032843, 0.00020118, 7.27305391, 0.99899682, 0.99947039, 0.49326512],
     9461                             [- 6.27338242, - 0.00032839, 0.00020116, 7.27305403, 0.99899692, 0.99947045, 0.49326510],
     9462                             [- 6.27338250, - 0.00032836, 0.00020114, 7.27305415, 0.99899703, 0.99947050, 0.49326538],
     9463                             [- 6.27338259, - 0.00032832, 0.00020112, 7.27305427, 0.99899714, 0.99947056, 0.49326526],
     9464                             [- 6.27338267, - 0.00032829, 0.00020110, 7.27305438, 0.99899724, 0.99947061, 0.49326555],
     9465                             [- 6.27338275, - 0.00032825, 0.00020108, 7.27305450, 0.99899735, 0.99947067, 0.49326559],
     9466                             [- 6.27338284, - 0.00032822, 0.00020106, 7.27305462, 0.99899745, 0.99947073, 0.49326528],
     9467                             [- 6.27338292, - 0.00032818, 0.00020103, 7.27305474, 0.99899756, 0.99947078, 0.49326542],
     9468                             [- 6.27338300, - 0.00032815, 0.00020101, 7.27305486, 0.99899767, 0.99947084, 0.49326519],
     9469                             [- 6.27338309, - 0.00032811, 0.00020099, 7.27305497, 0.99899777, 0.99947089, 0.49326536],
     9470                             [- 6.27338317, - 0.00032808, 0.00020097, 7.27305509, 0.99899788, 0.99947095, 0.49326533],
     9471                             [- 6.27338325, - 0.00032804, 0.00020095, 7.27305521, 0.99899799, 0.99947101, 0.49326540],
     9472                             [- 6.27338334, - 0.00032801, 0.00020093, 7.27305533, 0.99899809, 0.99947106, 0.49326552],
     9473                             [- 6.27338342, - 0.00032797, 0.00020091, 7.27305545, 0.99899820, 0.99947112, 0.49326543],
     9474                             [- 6.27338350, - 0.00032794, 0.00020089, 7.27305556, 0.99899830, 0.99947117, 0.49326548],
     9475                             [- 6.27338359, - 0.00032791, 0.00020086, 7.27305568, 0.99899841, 0.99947123, 0.49326555],
     9476                             [- 6.27338367, - 0.00032787, 0.00020084, 7.27305580, 0.99899852, 0.99947129, 0.49326550],
     9477                             [- 6.27338375, - 0.00032784, 0.00020082, 7.27305592, 0.99899862, 0.99947134, 0.49326539],
     9478                             [- 6.27338384, - 0.00032780, 0.00020080, 7.27305604, 0.99899873, 0.99947140, 0.49326537],
     9479                             [- 6.27338392, - 0.00032777, 0.00020078, 7.27305615, 0.99899884, 0.99947145, 0.49326540],
     9480                             [- 6.27338400, - 0.00032773, 0.00020076, 7.27305627, 0.99899894, 0.99947151, 0.49326552],
     9481                             [- 6.27338409, - 0.00032770, 0.00020074, 7.27305639, 0.99899905, 0.99947157, 0.49326544],
     9482                             [- 6.27338417, - 0.00032766, 0.00020072, 7.27305651, 0.99899915, 0.99947162, 0.49326541],
     9483                             [- 6.27338425, - 0.00032763, 0.00020069, 7.27305662, 0.99899926, 0.99947168, 0.49326544],
     9484                             [- 6.27338433, - 0.00032759, 0.00020067, 7.27305674, 0.99899937, 0.99947173, 0.49326555],
     9485                             [- 6.27338442, - 0.00032756, 0.00020065, 7.27305686, 0.99899947, 0.99947179, 0.49326592],
     9486                             [- 6.27338450, - 0.00032752, 0.00020063, 7.27305698, 0.99899958, 0.99947185, 0.49326555],
     9487                             [- 6.27338458, - 0.00032749, 0.00020061, 7.27305709, 0.99899968, 0.99947190, 0.49326556],
     9488                             [- 6.27338467, - 0.00032745, 0.00020059, 7.27305721, 0.99899979, 0.99947196, 0.49326577],
     9489                             [- 6.27338475, - 0.00032742, 0.00020057, 7.27305733, 0.99899989, 0.99947201, 0.49326572],
     9490                             [- 6.27338483, - 0.00032739, 0.00020055, 7.27305745, 0.99900000, 0.99947207, 0.49326564],
     9491                             [- 6.27338492, - 0.00032735, 0.00020052, 7.27305756, 0.99900011, 0.99947213, 0.49326574],
     9492                             [- 6.27338500, - 0.00032732, 0.00020050, 7.27305768, 0.99900021, 0.99947218, 0.49326570],
     9493                             [- 6.27338508, - 0.00032728, 0.00020048, 7.27305780, 0.99900032, 0.99947224, 0.49326585],
     9494                             [- 6.27338516, - 0.00032725, 0.00020046, 7.27305792, 0.99900042, 0.99947229, 0.49326561],
     9495                             [- 6.27338525, - 0.00032721, 0.00020044, 7.27305804, 0.99900053, 0.99947235, 0.49326554],
     9496                             [- 6.27338533, - 0.00032718, 0.00020042, 7.27305815, 0.99900063, 0.99947240, 0.49326565],
     9497                             [- 6.27338541, - 0.00032714, 0.00020040, 7.27305827, 0.99900074, 0.99947246, 0.49326560],
     9498                             [- 6.27338550, - 0.00032711, 0.00020038, 7.27305839, 0.99900085, 0.99947252, 0.49326561],
     9499                             [- 6.27338558, - 0.00032707, 0.00020035, 7.27305850, 0.99900095, 0.99947257, 0.49326588],
     9500                             [- 6.27338566, - 0.00032704, 0.00020033, 7.27305862, 0.99900106, 0.99947263, 0.49326567],
     9501                             [- 6.27338574, - 0.00032700, 0.00020031, 7.27305874, 0.99900116, 0.99947268, 0.49326573],
     9502                             [- 6.27338583, - 0.00032697, 0.00020029, 7.27305886, 0.99900127, 0.99947274, 0.49326588],
     9503                             [- 6.27338591, - 0.00032694, 0.00020027, 7.27305897, 0.99900137, 0.99947279, 0.49326587],
     9504                             [- 6.27338599, - 0.00032690, 0.00020025, 7.27305909, 0.99900148, 0.99947285, 0.49326591],
     9505                             [- 6.27338607, - 0.00032687, 0.00020023, 7.27305921, 0.99900158, 0.99947291, 0.49326568],
     9506                             [- 6.27338616, - 0.00032683, 0.00020021, 7.27305932, 0.99900169, 0.99947296, 0.49326586],
     9507                             [- 6.27338624, - 0.00032680, 0.00020019, 7.27305944, 0.99900180, 0.99947302, 0.49326595],
     9508                             [- 6.27338632, - 0.00032676, 0.00020016, 7.27305956, 0.99900190, 0.99947307, 0.49326594],
     9509                             [- 6.27338640, - 0.00032673, 0.00020014, 7.27305968, 0.99900201, 0.99947313, 0.49326576],
     9510                             [- 6.27338649, - 0.00032669, 0.00020012, 7.27305979, 0.99900211, 0.99947318, 0.49326600],
     9511                             [- 6.27338657, - 0.00032666, 0.00020010, 7.27305991, 0.99900222, 0.99947324, 0.49326567],
     9512                             [- 6.27338665, - 0.00032663, 0.00020008, 7.27306003, 0.99900232, 0.99947330, 0.49326591],
     9513                             [- 6.27338674, - 0.00032659, 0.00020006, 7.27306014, 0.99900243, 0.99947335, 0.49326584],
     9514                             [- 6.27338682, - 0.00032656, 0.00020004, 7.27306026, 0.99900253, 0.99947341, 0.49326591],
     9515                             [- 6.27338690, - 0.00032652, 0.00020002, 7.27306038, 0.99900264, 0.99947346, 0.49326598],
     9516                             [- 6.27338698, - 0.00032649, 0.00020000, 7.27306050, 0.99900274, 0.99947352, 0.49326605],
     9517                             [- 6.27338706, - 0.00032645, 0.00019997, 7.27306061, 0.99900285, 0.99947357, 0.49326584],
     9518                             [- 6.27338715, - 0.00032642, 0.00019995, 7.27306073, 0.99900295, 0.99947363, 0.49326610],
     9519                             [- 6.27338723, - 0.00032638, 0.00019993, 7.27306085, 0.99900306, 0.99947368, 0.49326584],
     9520                             [- 6.27338731, - 0.00032635, 0.00019991, 7.27306096, 0.99900316, 0.99947374, 0.49326595],
     9521                             [- 6.27338739, - 0.00032632, 0.00019989, 7.27306108, 0.99900327, 0.99947379, 0.49326574],
     9522                             [- 6.27338748, - 0.00032628, 0.00019987, 7.27306120, 0.99900337, 0.99947385, 0.49326593],
     9523                             [- 6.27338756, - 0.00032625, 0.00019985, 7.27306131, 0.99900348, 0.99947391, 0.49326617],
     9524                             [- 6.27338764, - 0.00032621, 0.00019983, 7.27306143, 0.99900358, 0.99947396, 0.49326608],
     9525                             [- 6.27338772, - 0.00032618, 0.00019981, 7.27306155, 0.99900369, 0.99947402, 0.49326601],
     9526                             [- 6.27338781, - 0.00032614, 0.00019978, 7.27306166, 0.99900379, 0.99947407, 0.49326595],
     9527                             [- 6.27338789, - 0.00032611, 0.00019976, 7.27306178, 0.99900390, 0.99947413, 0.49326615],
     9528                             [- 6.27338797, - 0.00032607, 0.00019974, 7.27306190, 0.99900400, 0.99947418, 0.49326594],
     9529                             [- 6.27338805, - 0.00032604, 0.00019972, 7.27306201, 0.99900411, 0.99947424, 0.49326623],
     9530                             [- 6.27338814, - 0.00032601, 0.00019970, 7.27306213, 0.99900421, 0.99947429, 0.49326628],
     9531                             [- 6.27338822, - 0.00032597, 0.00019968, 7.27306225, 0.99900432, 0.99947435, 0.49326618],
     9532                             [- 6.27338830, - 0.00032594, 0.00019966, 7.27306236, 0.99900442, 0.99947440, 0.49326621],
     9533                             [- 6.27338838, - 0.00032590, 0.00019964, 7.27306248, 0.99900453, 0.99947446, 0.49326598],
     9534                             [- 6.27338846, - 0.00032587, 0.00019962, 7.27306260, 0.99900463, 0.99947452, 0.49326615],
     9535                             [- 6.27338855, - 0.00032583, 0.00019960, 7.27306271, 0.99900474, 0.99947457, 0.49326647],
     9536                             [- 6.27338863, - 0.00032580, 0.00019957, 7.27306283, 0.99900484, 0.99947463, 0.49326621],
     9537                             [- 6.27338871, - 0.00032577, 0.00019955, 7.27306294, 0.99900495, 0.99947468, 0.49326643],
     9538                             [- 6.27338879, - 0.00032573, 0.00019953, 7.27306306, 0.99900505, 0.99947474, 0.49326629],
     9539                             [- 6.27338887, - 0.00032570, 0.00019951, 7.27306318, 0.99900516, 0.99947479, 0.49326635],
     9540                             [- 6.27338896, - 0.00032566, 0.00019949, 7.27306329, 0.99900526, 0.99947485, 0.49326632],
     9541                             [- 6.27338904, - 0.00032563, 0.00019947, 7.27306341, 0.99900537, 0.99947490, 0.49326626],
     9542                             [- 6.27338912, - 0.00032559, 0.00019945, 7.27306353, 0.99900547, 0.99947496, 0.49326639],
     9543                             [- 6.27338920, - 0.00032556, 0.00019943, 7.27306364, 0.99900558, 0.99947501, 0.49326627],
     9544                             [- 6.27338928, - 0.00032553, 0.00019941, 7.27306376, 0.99900568, 0.99947507, 0.49326645],
     9545                             [- 6.27338937, - 0.00032549, 0.00019939, 7.27306387, 0.99900578, 0.99947512, 0.49326623],
     9546                             [- 6.27338945, - 0.00032546, 0.00019936, 7.27306399, 0.99900589, 0.99947518, 0.49326607],
     9547                             [- 6.27338953, - 0.00032542, 0.00019934, 7.27306411, 0.99900599, 0.99947523, 0.49326641],
     9548                             [- 6.27338961, - 0.00032539, 0.00019932, 7.27306422, 0.99900610, 0.99947529, 0.49326644],
     9549                             [- 6.27338969, - 0.00032536, 0.00019930, 7.27306434, 0.99900620, 0.99947534, 0.49326635],
     9550                             [- 6.27338978, - 0.00032532, 0.00019928, 7.27306446, 0.99900631, 0.99947540, 0.49326617],
     9551                             [- 6.27338986, - 0.00032529, 0.00019926, 7.27306457, 0.99900641, 0.99947545, 0.49326647],
     9552                             [- 6.27338994, - 0.00032525, 0.00019924, 7.27306469, 0.99900652, 0.99947551, 0.49326638],
     9553                             [- 6.27339002, - 0.00032522, 0.00019922, 7.27306480, 0.99900662, 0.99947556, 0.49326625],
     9554                             [- 6.27339010, - 0.00032518, 0.00019920, 7.27306492, 0.99900673, 0.99947562, 0.49326654],
     9555                             [- 6.27339019, - 0.00032515, 0.00019918, 7.27306504, 0.99900683, 0.99947567, 0.49326643],
     9556                             [- 6.27339027, - 0.00032512, 0.00019915, 7.27306515, 0.99900693, 0.99947573, 0.49326639],
     9557                             [- 6.27339035, - 0.00032508, 0.00019913, 7.27306527, 0.99900704, 0.99947578, 0.49326643],
     9558                             [- 6.27339043, - 0.00032505, 0.00019911, 7.27306538, 0.99900714, 0.99947584, 0.49326613],
     9559                             [- 6.27339051, - 0.00032501, 0.00019909, 7.27306550, 0.99900725, 0.99947589, 0.49326635],
     9560                             [- 6.27339059, - 0.00032498, 0.00019907, 7.27306561, 0.99900735, 0.99947595, 0.49326654],
     9561                             [- 6.27339068, - 0.00032495, 0.00019905, 7.27306573, 0.99900746, 0.99947600, 0.49326649],
     9562                             [- 6.27339076, - 0.00032491, 0.00019903, 7.27306585, 0.99900756, 0.99947606, 0.49326645],
     9563                             [- 6.27339084, - 0.00032488, 0.00019901, 7.27306596, 0.99900766, 0.99947611, 0.49326635],
     9564                             [- 6.27339092, - 0.00032484, 0.00019899, 7.27306608, 0.99900777, 0.99947617, 0.49326646],
     9565                             [- 6.27339100, - 0.00032481, 0.00019897, 7.27306619, 0.99900787, 0.99947622, 0.49326660],
     9566                             [- 6.27339108, - 0.00032477, 0.00019895, 7.27306631, 0.99900798, 0.99947628, 0.49326653],
     9567                             [- 6.27339117, - 0.00032474, 0.00019892, 7.27306642, 0.99900808, 0.99947633, 0.49326655],
     9568                             [- 6.27339125, - 0.00032471, 0.00019890, 7.27306654, 0.99900818, 0.99947639, 0.49326642],
     9569                             [- 6.27339133, - 0.00032467, 0.00019888, 7.27306666, 0.99900829, 0.99947644, 0.49326648],
     9570                             [- 6.27339141, - 0.00032464, 0.00019886, 7.27306677, 0.99900839, 0.99947650, 0.49326679],
     9571                             [- 6.27339149, - 0.00032460, 0.00019884, 7.27306689, 0.99900850, 0.99947655, 0.49326686],
     9572                             [- 6.27339157, - 0.00032457, 0.00019882, 7.27306700, 0.99900860, 0.99947661, 0.49326656],
     9573                             [- 6.27339165, - 0.00032454, 0.00019880, 7.27306712, 0.99900870, 0.99947666, 0.49326662],
     9574                             [- 6.27339174, - 0.00032450, 0.00019878, 7.27306723, 0.99900881, 0.99947672, 0.49326679],
     9575                             [- 6.27339182, - 0.00032447, 0.00019876, 7.27306735, 0.99900891, 0.99947677, 0.49326673],
     9576                             [- 6.27339190, - 0.00032443, 0.00019874, 7.27306746, 0.99900902, 0.99947683, 0.49326675],
     9577                             [- 6.27339198, - 0.00032440, 0.00019872, 7.27306758, 0.99900912, 0.99947688, 0.49326682],
     9578                             [- 6.27339206, - 0.00032437, 0.00019870, 7.27306770, 0.99900922, 0.99947694, 0.49326647],
     9579                             [- 6.27339214, - 0.00032433, 0.00019867, 7.27306781, 0.99900933, 0.99947699, 0.49326653],
     9580                             [- 6.27339222, - 0.00032430, 0.00019865, 7.27306793, 0.99900943, 0.99947705, 0.49326669],
     9581                             [- 6.27339231, - 0.00032426, 0.00019863, 7.27306804, 0.99900954, 0.99947710, 0.49326657],
     9582                             [- 6.27339239, - 0.00032423, 0.00019861, 7.27306816, 0.99900964, 0.99947716, 0.49326679],
     9583                             [- 6.27339247, - 0.00032420, 0.00019859, 7.27306827, 0.99900974, 0.99947721, 0.49326690],
     9584                             [- 6.27339255, - 0.00032416, 0.00019857, 7.27306839, 0.99900985, 0.99947727, 0.49326680],
     9585                             [- 6.27339263, - 0.00032413, 0.00019855, 7.27306850, 0.99900995, 0.99947732, 0.49326670],
     9586                             [- 6.27339271, - 0.00032409, 0.00019853, 7.27306862, 0.99901005, 0.99947738, 0.49326690],
     9587                             [- 6.27339279, - 0.00032406, 0.00019851, 7.27306873, 0.99901016, 0.99947743, 0.49326682],
     9588                             [- 6.27339287, - 0.00032403, 0.00019849, 7.27306885, 0.99901026, 0.99947749, 0.49326670],
     9589                             [- 6.27339296, - 0.00032399, 0.00019847, 7.27306896, 0.99901036, 0.99947754, 0.49326689],
     9590                             [- 6.27339304, - 0.00032396, 0.00019845, 7.27306908, 0.99901047, 0.99947760, 0.49326683],
     9591                             [- 6.27339312, - 0.00032393, 0.00019843, 7.27306919, 0.99901057, 0.99947765, 0.49326682],
     9592                             [- 6.27339320, - 0.00032389, 0.00019840, 7.27306931, 0.99901068, 0.99947770, 0.49326694],
     9593                             [- 6.27339328, - 0.00032386, 0.00019838, 7.27306942, 0.99901078, 0.99947776, 0.49326682],
     9594                             [- 6.27339336, - 0.00032382, 0.00019836, 7.27306954, 0.99901088, 0.99947781, 0.49326696],
     9595                             [- 6.27339344, - 0.00032379, 0.00019834, 7.27306965, 0.99901099, 0.99947787, 0.49326703],
     9596                             [- 6.27339352, - 0.00032376, 0.00019832, 7.27306977, 0.99901109, 0.99947792, 0.49326705],
     9597                             [- 6.27339360, - 0.00032372, 0.00019830, 7.27306988, 0.99901119, 0.99947798, 0.49326683],
     9598                             [- 6.27339369, - 0.00032369, 0.00019828, 7.27307000, 0.99901130, 0.99947803, 0.49326692],
     9599                             [- 6.27339377, - 0.00032365, 0.00019826, 7.27307011, 0.99901140, 0.99947809, 0.49326694],
     9600                             [- 6.27339385, - 0.00032362, 0.00019824, 7.27307023, 0.99901150, 0.99947814, 0.49326688],
     9601                             [- 6.27339393, - 0.00032359, 0.00019822, 7.27307034, 0.99901161, 0.99947820, 0.49326687],
     9602                             [- 6.27339401, - 0.00032355, 0.00019820, 7.27307046, 0.99901171, 0.99947825, 0.49326697],
     9603                             [- 6.27339409, - 0.00032352, 0.00019818, 7.27307057, 0.99901181, 0.99947830, 0.49326717],
     9604                             [- 6.27339417, - 0.00032349, 0.00019816, 7.27307069, 0.99901192, 0.99947836, 0.49326712],
     9605                             [- 6.27339425, - 0.00032345, 0.00019813, 7.27307080, 0.99901202, 0.99947841, 0.49326703],
     9606                             [- 6.27339433, - 0.00032342, 0.00019811, 7.27307092, 0.99901212, 0.99947847, 0.49326706],
     9607                             [- 6.27339441, - 0.00032338, 0.00019809, 7.27307103, 0.99901223, 0.99947852, 0.49326716],
     9608                             [- 6.27339450, - 0.00032335, 0.00019807, 7.27307115, 0.99901233, 0.99947858, 0.49326689],
     9609                             [- 6.27339458, - 0.00032332, 0.00019805, 7.27307126, 0.99901243, 0.99947863, 0.49326699],
     9610                             [- 6.27339466, - 0.00032328, 0.00019803, 7.27307137, 0.99901254, 0.99947869, 0.49326696],
     9611                             [- 6.27339474, - 0.00032325, 0.00019801, 7.27307149, 0.99901264, 0.99947874, 0.49326718],
     9612                             [- 6.27339482, - 0.00032321, 0.00019799, 7.27307160, 0.99901274, 0.99947880, 0.49326717],
     9613                             [- 6.27339490, - 0.00032318, 0.00019797, 7.27307172, 0.99901285, 0.99947885, 0.49326705],
     9614                             [- 6.27339498, - 0.00032315, 0.00019795, 7.27307183, 0.99901295, 0.99947890, 0.49326716],
     9615                             [- 6.27339506, - 0.00032311, 0.00019793, 7.27307195, 0.99901305, 0.99947896, 0.49326730],
     9616                             [- 6.27339514, - 0.00032308, 0.00019791, 7.27307206, 0.99901315, 0.99947901, 0.49326718],
     9617                             [- 6.27339522, - 0.00032305, 0.00019789, 7.27307218, 0.99901326, 0.99947907, 0.49326722],
     9618                             [- 6.27339530, - 0.00032301, 0.00019787, 7.27307229, 0.99901336, 0.99947912, 0.49326715],
     9619                             [- 6.27339538, - 0.00032298, 0.00019785, 7.27307241, 0.99901346, 0.99947918, 0.49326728],
     9620                             [- 6.27339546, - 0.00032295, 0.00019782, 7.27307252, 0.99901357, 0.99947923, 0.49326724],
     9621                             [- 6.27339555, - 0.00032291, 0.00019780, 7.27307263, 0.99901367, 0.99947928, 0.49326701],
     9622                             [- 6.27339563, - 0.00032288, 0.00019778, 7.27307275, 0.99901377, 0.99947934, 0.49326708],
     9623                             [- 6.27339571, - 0.00032284, 0.00019776, 7.27307286, 0.99901388, 0.99947939, 0.49326726],
     9624                             [- 6.27339579, - 0.00032281, 0.00019774, 7.27307298, 0.99901398, 0.99947945, 0.49326720],
     9625                             [- 6.27339587, - 0.00032278, 0.00019772, 7.27307309, 0.99901408, 0.99947950, 0.49326714],
     9626                             [- 6.27339595, - 0.00032274, 0.00019770, 7.27307321, 0.99901418, 0.99947956, 0.49326729],
     9627                             [- 6.27339603, - 0.00032271, 0.00019768, 7.27307332, 0.99901429, 0.99947961, 0.49326744],
     9628                             [- 6.27339611, - 0.00032268, 0.00019766, 7.27307343, 0.99901439, 0.99947966, 0.49326726],
     9629                             [- 6.27339619, - 0.00032264, 0.00019764, 7.27307355, 0.99901449, 0.99947972, 0.49326746],
     9630                             [- 6.27339627, - 0.00032261, 0.00019762, 7.27307366, 0.99901459, 0.99947977, 0.49326747],
     9631                             [- 6.27339635, - 0.00032258, 0.00019760, 7.27307378, 0.99901470, 0.99947983, 0.49326746],
     9632                             [- 6.27339643, - 0.00032254, 0.00019758, 7.27307389, 0.99901480, 0.99947988, 0.49326737],
     9633                             [- 6.27339651, - 0.00032251, 0.00019756, 7.27307400, 0.99901490, 0.99947994, 0.49326725],
     9634                             [- 6.27339659, - 0.00032247, 0.00019754, 7.27307412, 0.99901501, 0.99947999, 0.49326744],
     9635                             [- 6.27339667, - 0.00032244, 0.00019752, 7.27307423, 0.99901511, 0.99948004, 0.49326734],
     9636                             [- 6.27339675, - 0.00032241, 0.00019749, 7.27307435, 0.99901521, 0.99948010, 0.49326748],
     9637                             [- 6.27339683, - 0.00032237, 0.00019747, 7.27307446, 0.99901531, 0.99948015, 0.49326735],
     9638                             [- 6.27339691, - 0.00032234, 0.00019745, 7.27307457, 0.99901542, 0.99948021, 0.49326718],
     9639                             [- 6.27339699, - 0.00032231, 0.00019743, 7.27307469, 0.99901552, 0.99948026, 0.49326726],
     9640                             [- 6.27339708, - 0.00032227, 0.00019741, 7.27307480, 0.99901562, 0.99948031, 0.49326739],
     9641                             [- 6.27339716, - 0.00032224, 0.00019739, 7.27307492, 0.99901572, 0.99948037, 0.49326736],
     9642                             [- 6.27339724, - 0.00032221, 0.00019737, 7.27307503, 0.99901583, 0.99948042, 0.49326751],
     9643                             [- 6.27339732, - 0.00032217, 0.00019735, 7.27307514, 0.99901593, 0.99948048, 0.49326746],
     9644                             [- 6.27339740, - 0.00032214, 0.00019733, 7.27307526, 0.99901603, 0.99948053, 0.49326750],
     9645                             [- 6.27339748, - 0.00032210, 0.00019731, 7.27307537, 0.99901613, 0.99948059, 0.49326720],
     9646                             [- 6.27339756, - 0.00032207, 0.00019729, 7.27307549, 0.99901624, 0.99948064, 0.49326742],
     9647                             [- 6.27339764, - 0.00032204, 0.00019727, 7.27307560, 0.99901634, 0.99948069, 0.49326770],
     9648                             [- 6.27339772, - 0.00032200, 0.00019725, 7.27307571, 0.99901644, 0.99948075, 0.49326757],
     9649                             [- 6.27339780, - 0.00032197, 0.00019723, 7.27307583, 0.99901654, 0.99948080, 0.49326750],
     9650                             [- 6.27339788, - 0.00032194, 0.00019721, 7.27307594, 0.99901664, 0.99948086, 0.49326781],
     9651                             [- 6.27339796, - 0.00032190, 0.00019719, 7.27307605, 0.99901675, 0.99948091, 0.49326776],
     9652                             [- 6.27339804, - 0.00032187, 0.00019717, 7.27307617, 0.99901685, 0.99948096, 0.49326747],
     9653                             [- 6.27339812, - 0.00032184, 0.00019715, 7.27307628, 0.99901695, 0.99948102, 0.49326778],
     9654                             [- 6.27339820, - 0.00032180, 0.00019713, 7.27307639, 0.99901705, 0.99948107, 0.49326749],
     9655                             [- 6.27339828, - 0.00032177, 0.00019710, 7.27307651, 0.99901716, 0.99948113, 0.49326751],
     9656                             [- 6.27339836, - 0.00032174, 0.00019708, 7.27307662, 0.99901726, 0.99948118, 0.49326780],
     9657                             [- 6.27339844, - 0.00032170, 0.00019706, 7.27307674, 0.99901736, 0.99948123, 0.49326747],
     9658                             [- 6.27339852, - 0.00032167, 0.00019704, 7.27307685, 0.99901746, 0.99948129, 0.49326772],
     9659                             [- 6.27339860, - 0.00032164, 0.00019702, 7.27307696, 0.99901756, 0.99948134, 0.49326768],
     9660                             [- 6.27339868, - 0.00032160, 0.00019700, 7.27307708, 0.99901767, 0.99948139, 0.49326756],
     9661                             [- 6.27339876, - 0.00032157, 0.00019698, 7.27307719, 0.99901777, 0.99948145, 0.49326753],
     9662                             [- 6.27339884, - 0.00032154, 0.00019696, 7.27307730, 0.99901787, 0.99948150, 0.49326754],
     9663                             [- 6.27339892, - 0.00032150, 0.00019694, 7.27307742, 0.99901797, 0.99948156, 0.49326763],
     9664                             [- 6.27339900, - 0.00032147, 0.00019692, 7.27307753, 0.99901807, 0.99948161, 0.49326773],
     9665                             [- 6.27339908, - 0.00032144, 0.00019690, 7.27307764, 0.99901818, 0.99948166, 0.49326760],
     9666                             [- 6.27339916, - 0.00032140, 0.00019688, 7.27307776, 0.99901828, 0.99948172, 0.49326795],
     9667                             [- 6.27339924, - 0.00032137, 0.00019686, 7.27307787, 0.99901838, 0.99948177, 0.49326781],
     9668                             [- 6.27339932, - 0.00032134, 0.00019684, 7.27307798, 0.99901848, 0.99948183, 0.49326791],
     9669                             [- 6.27339940, - 0.00032130, 0.00019682, 7.27307810, 0.99901858, 0.99948188, 0.49326782],
     9670                             [- 6.27339948, - 0.00032127, 0.00019680, 7.27307821, 0.99901869, 0.99948193, 0.49326774],
     9671                             [- 6.27339956, - 0.00032124, 0.00019678, 7.27307832, 0.99901879, 0.99948199, 0.49326801],
     9672                             [- 6.27339964, - 0.00032120, 0.00019676, 7.27307843, 0.99901889, 0.99948204, 0.49326796],
     9673                             [- 6.27339972, - 0.00032117, 0.00019674, 7.27307855, 0.99901899, 0.99948209, 0.49326796],
     9674                             [- 6.27339980, - 0.00032114, 0.00019672, 7.27307866, 0.99901909, 0.99948215, 0.49326764],
     9675                             [- 6.27339988, - 0.00032110, 0.00019670, 7.27307877, 0.99901920, 0.99948220, 0.49326786],
     9676                             [- 6.27339996, - 0.00032107, 0.00019668, 7.27307889, 0.99901930, 0.99948226, 0.49326797],
     9677                             [- 6.27340004, - 0.00032104, 0.00019665, 7.27307900, 0.99901940, 0.99948231, 0.49326772],
     9678                             [- 6.27340012, - 0.00032100, 0.00019663, 7.27307911, 0.99901950, 0.99948236, 0.49326808],
     9679                             [- 6.27340020, - 0.00032097, 0.00019661, 7.27307923, 0.99901960, 0.99948242, 0.49326793],
     9680                             [- 6.27340028, - 0.00032094, 0.00019659, 7.27307934, 0.99901970, 0.99948247, 0.49326800],
     9681                             [- 6.27340036, - 0.00032090, 0.00019657, 7.27307945, 0.99901981, 0.99948252, 0.49326818],
     9682                             [- 6.27340043, - 0.00032087, 0.00019655, 7.27307956, 0.99901991, 0.99948258, 0.49326800],
     9683                             [- 6.27340051, - 0.00032084, 0.00019653, 7.27307968, 0.99902001, 0.99948263, 0.49326833],
     9684                             [- 6.27340059, - 0.00032080, 0.00019651, 7.27307979, 0.99902011, 0.99948268, 0.49326799],
     9685                             [- 6.27340067, - 0.00032077, 0.00019649, 7.27307990, 0.99902021, 0.99948274, 0.49326805],
     9686                             [- 6.27340075, - 0.00032074, 0.00019647, 7.27308002, 0.99902031, 0.99948279, 0.49326790],
     9687                             [- 6.27340083, - 0.00032070, 0.00019645, 7.27308013, 0.99902042, 0.99948285, 0.49326822],
     9688                             [- 6.27340091, - 0.00032067, 0.00019643, 7.27308024, 0.99902052, 0.99948290, 0.49326817],
     9689                             [- 6.27340099, - 0.00032064, 0.00019641, 7.27308035, 0.99902062, 0.99948295, 0.49326820],
     9690                             [- 6.27340107, - 0.00032060, 0.00019639, 7.27308047, 0.99902072, 0.99948301, 0.49326814],
     9691                             [- 6.27340115, - 0.00032057, 0.00019637, 7.27308058, 0.99902082, 0.99948306, 0.49326794],
     9692                             [- 6.27340123, - 0.00032054, 0.00019635, 7.27308069, 0.99902092, 0.99948311, 0.49326788],
     9693                             [- 6.27340131, - 0.00032050, 0.00019633, 7.27308081, 0.99902102, 0.99948317, 0.49326824],
     9694                             [- 6.27340139, - 0.00032047, 0.00019631, 7.27308092, 0.99902113, 0.99948322, 0.49326821],
     9695                             [- 6.27340147, - 0.00032044, 0.00019629, 7.27308103, 0.99902123, 0.99948327, 0.49326804],
     9696                             [- 6.27340155, - 0.00032040, 0.00019627, 7.27308114, 0.99902133, 0.99948333, 0.49326826],
     9697                             [- 6.27340163, - 0.00032037, 0.00019625, 7.27308126, 0.99902143, 0.99948338, 0.49326837],
     9698                             [- 6.27340171, - 0.00032034, 0.00019623, 7.27308137, 0.99902153, 0.99948343, 0.49326808],
     9699                             [- 6.27340179, - 0.00032031, 0.00019621, 7.27308148, 0.99902163, 0.99948349, 0.49326814],
     9700                             [- 6.27340187, - 0.00032027, 0.00019619, 7.27308159, 0.99902173, 0.99948354, 0.49326823],
     9701                             [- 6.27340194, - 0.00032024, 0.00019617, 7.27308171, 0.99902183, 0.99948359, 0.49326820],
     9702                             [- 6.27340202, - 0.00032021, 0.00019615, 7.27308182, 0.99902194, 0.99948365, 0.49326819],
     9703                             [- 6.27340210, - 0.00032017, 0.00019613, 7.27308193, 0.99902204, 0.99948370, 0.49326828],
     9704                             [- 6.27340218, - 0.00032014, 0.00019611, 7.27308204, 0.99902214, 0.99948376, 0.49326815],
     9705                             [- 6.27340226, - 0.00032011, 0.00019608, 7.27308216, 0.99902224, 0.99948381, 0.49326833],
     9706                             [- 6.27340234, - 0.00032007, 0.00019606, 7.27308227, 0.99902234, 0.99948386, 0.49326820],
     9707                             [- 6.27340242, - 0.00032004, 0.00019604, 7.27308238, 0.99902244, 0.99948392, 0.49326839],
     9708                             [- 6.27340250, - 0.00032001, 0.00019602, 7.27308249, 0.99902254, 0.99948397, 0.49326825],
     9709                             [- 6.27340258, - 0.00031997, 0.00019600, 7.27308261, 0.99902264, 0.99948402, 0.49326820],
     9710                             [- 6.27340266, - 0.00031994, 0.00019598, 7.27308272, 0.99902274, 0.99948408, 0.49326829],
     9711                             [- 6.27340274, - 0.00031991, 0.00019596, 7.27308283, 0.99902285, 0.99948413, 0.49326838],
     9712                             [- 6.27340282, - 0.00031987, 0.00019594, 7.27308294, 0.99902295, 0.99948418, 0.49326829],
     9713                             [- 6.27340290, - 0.00031984, 0.00019592, 7.27308305, 0.99902305, 0.99948424, 0.49326812],
     9714                             [- 6.27340297, - 0.00031981, 0.00019590, 7.27308317, 0.99902315, 0.99948429, 0.49326825],
     9715                             [- 6.27340305, - 0.00031978, 0.00019588, 7.27308328, 0.99902325, 0.99948434, 0.49326844],
     9716                             [- 6.27340313, - 0.00031974, 0.00019586, 7.27308339, 0.99902335, 0.99948440, 0.49326822],
     9717                             [- 6.27340321, - 0.00031971, 0.00019584, 7.27308350, 0.99902345, 0.99948445, 0.49326848],
     9718                             [- 6.27340329, - 0.00031968, 0.00019582, 7.27308361, 0.99902355, 0.99948450, 0.49326823],
     9719                             [- 6.27340337, - 0.00031964, 0.00019580, 7.27308373, 0.99902365, 0.99948455, 0.49326831],
     9720                             [- 6.27340345, - 0.00031961, 0.00019578, 7.27308384, 0.99902375, 0.99948461, 0.49326842],
     9721                             [- 6.27340353, - 0.00031958, 0.00019576, 7.27308395, 0.99902385, 0.99948466, 0.49326833],
     9722                             [- 6.27340361, - 0.00031954, 0.00019574, 7.27308406, 0.99902396, 0.99948471, 0.49326844],
     9723                             [- 6.27340369, - 0.00031951, 0.00019572, 7.27308417, 0.99902406, 0.99948477, 0.49326841],
     9724                             [- 6.27340377, - 0.00031948, 0.00019570, 7.27308429, 0.99902416, 0.99948482, 0.49326813],
     9725                             [- 6.27340384, - 0.00031945, 0.00019568, 7.27308440, 0.99902426, 0.99948487, 0.49326861],
     9726                             [- 6.27340392, - 0.00031941, 0.00019566, 7.27308451, 0.99902436, 0.99948493, 0.49326836],
     9727                             [- 6.27340400, - 0.00031938, 0.00019564, 7.27308462, 0.99902446, 0.99948498, 0.49326869],
     9728                             [- 6.27340408, - 0.00031935, 0.00019562, 7.27308473, 0.99902456, 0.99948503, 0.49326883],
     9729                             [- 6.27340416, - 0.00031931, 0.00019560, 7.27308485, 0.99902466, 0.99948509, 0.49326857],
     9730                             [- 6.27340424, - 0.00031928, 0.00019558, 7.27308496, 0.99902476, 0.99948514, 0.49326861],
     9731                             [- 6.27340432, - 0.00031925, 0.00019556, 7.27308507, 0.99902486, 0.99948519, 0.49326841],
     9732                             [- 6.27340440, - 0.00031922, 0.00019554, 7.27308518, 0.99902496, 0.99948525, 0.49326856],
     9733                             [- 6.27340448, - 0.00031918, 0.00019552, 7.27308529, 0.99902506, 0.99948530, 0.49326867],
     9734                             [- 6.27340455, - 0.00031915, 0.00019550, 7.27308540, 0.99902516, 0.99948535, 0.49326859],
     9735                             [- 6.27340463, - 0.00031912, 0.00019548, 7.27308552, 0.99902526, 0.99948541, 0.49326854],
     9736                             [- 6.27340471, - 0.00031908, 0.00019546, 7.27308563, 0.99902536, 0.99948546, 0.49326869],
     9737                             [- 6.27340479, - 0.00031905, 0.00019544, 7.27308574, 0.99902546, 0.99948551, 0.49326853],
     9738                             [- 6.27340487, - 0.00031902, 0.00019542, 7.27308585, 0.99902557, 0.99948556, 0.49326880],
     9739                             [- 6.27340495, - 0.00031899, 0.00019540, 7.27308596, 0.99902567, 0.99948562, 0.49326872],
     9740                             [- 6.27340503, - 0.00031895, 0.00019538, 7.27308607, 0.99902577, 0.99948567, 0.49326861],
     9741                             [- 6.27340511, - 0.00031892, 0.00019536, 7.27308619, 0.99902587, 0.99948572, 0.49326878],
     9742                             [- 6.27340518, - 0.00031889, 0.00019534, 7.27308630, 0.99902597, 0.99948578, 0.49326876],
     9743                             [- 6.27340526, - 0.00031885, 0.00019532, 7.27308641, 0.99902607, 0.99948583, 0.49326873],
     9744                             [- 6.27340534, - 0.00031882, 0.00019530, 7.27308652, 0.99902617, 0.99948588, 0.49326869],
     9745                             [- 6.27340542, - 0.00031879, 0.00019528, 7.27308663, 0.99902627, 0.99948594, 0.49326868],
     9746                             [- 6.27340550, - 0.00031876, 0.00019526, 7.27308674, 0.99902637, 0.99948599, 0.49326886],
     9747                             [- 6.27340558, - 0.00031872, 0.00019524, 7.27308685, 0.99902647, 0.99948604, 0.49326868],
     9748                             [- 6.27340566, - 0.00031869, 0.00019522, 7.27308697, 0.99902657, 0.99948609, 0.49326883],
     9749                             [- 6.27340573, - 0.00031866, 0.00019520, 7.27308708, 0.99902667, 0.99948615, 0.49326876],
     9750                             [- 6.27340581, - 0.00031862, 0.00019518, 7.27308719, 0.99902677, 0.99948620, 0.49326874],
     9751                             [- 6.27340589, - 0.00031859, 0.00019516, 7.27308730, 0.99902687, 0.99948625, 0.49326882],
     9752                             [- 6.27340597, - 0.00031856, 0.00019514, 7.27308741, 0.99902697, 0.99948631, 0.49326866],
     9753                             [- 6.27340605, - 0.00031853, 0.00019512, 7.27308752, 0.99902707, 0.99948636, 0.49326860],
     9754                             [- 6.27340613, - 0.00031849, 0.00019510, 7.27308763, 0.99902717, 0.99948641, 0.49326865],
     9755                             [- 6.27340621, - 0.00031846, 0.00019508, 7.27308775, 0.99902727, 0.99948646, 0.49326872],
     9756                             [- 6.27340628, - 0.00031843, 0.00019506, 7.27308786, 0.99902737, 0.99948652, 0.49326863],
     9757                             [- 6.27340636, - 0.00031839, 0.00019504, 7.27308797, 0.99902747, 0.99948657, 0.49326869],
     9758                             [- 6.27340644, - 0.00031836, 0.00019502, 7.27308808, 0.99902757, 0.99948662, 0.49326888],
     9759                             [- 6.27340652, - 0.00031833, 0.00019500, 7.27308819, 0.99902767, 0.99948668, 0.49326895],
     9760                             [- 6.27340660, - 0.00031830, 0.00019498, 7.27308830, 0.99902777, 0.99948673, 0.49326876],
     9761                             [- 6.27340668, - 0.00031826, 0.00019496, 7.27308841, 0.99902787, 0.99948678, 0.49326889],
     9762                             [- 6.27340675, - 0.00031823, 0.00019494, 7.27308852, 0.99902797, 0.99948683, 0.49326878],
     9763                             [- 6.27340683, - 0.00031820, 0.00019492, 7.27308863, 0.99902807, 0.99948689, 0.49326887],
     9764                             [- 6.27340691, - 0.00031817, 0.00019490, 7.27308875, 0.99902817, 0.99948694, 0.49326916],
     9765                             [- 6.27340699, - 0.00031813, 0.00019488, 7.27308886, 0.99902827, 0.99948699, 0.49326908],
     9766                             [- 6.27340707, - 0.00031810, 0.00019486, 7.27308897, 0.99902837, 0.99948704, 0.49326893],
     9767                             [- 6.27340715, - 0.00031807, 0.00019484, 7.27308908, 0.99902847, 0.99948710, 0.49326890],
     9768                             [- 6.27340722, - 0.00031803, 0.00019482, 7.27308919, 0.99902857, 0.99948715, 0.49326887],
     9769                             [- 6.27340730, - 0.00031800, 0.00019480, 7.27308930, 0.99902867, 0.99948720, 0.49326878],
     9770                             [- 6.27340738, - 0.00031797, 0.00019478, 7.27308941, 0.99902877, 0.99948726, 0.49326894],
     9771                             [- 6.27340746, - 0.00031794, 0.00019476, 7.27308952, 0.99902887, 0.99948731, 0.49326894],
     9772                             [- 6.27340754, - 0.00031790, 0.00019474, 7.27308963, 0.99902897, 0.99948736, 0.49326908],
     9773                             [- 6.27340761, - 0.00031787, 0.00019472, 7.27308974, 0.99902907, 0.99948741, 0.49326876],
     9774                             [- 6.27340769, - 0.00031784, 0.00019470, 7.27308985, 0.99902917, 0.99948747, 0.49326912],
     9775                             [- 6.27340777, - 0.00031781, 0.00019468, 7.27308996, 0.99902927, 0.99948752, 0.49326904],
     9776                             [- 6.27340785, - 0.00031777, 0.00019466, 7.27309008, 0.99902937, 0.99948757, 0.49326901],
     9777                             [- 6.27340793, - 0.00031774, 0.00019464, 7.27309019, 0.99902947, 0.99948762, 0.49326930],
     9778                             [- 6.27340801, - 0.00031771, 0.00019462, 7.27309030, 0.99902957, 0.99948768, 0.49326907],
     9779                             [- 6.27340808, - 0.00031768, 0.00019460, 7.27309041, 0.99902967, 0.99948773, 0.49326924],
     9780                             [- 6.27340816, - 0.00031764, 0.00019458, 7.27309052, 0.99902977, 0.99948778, 0.49326904],
     9781                             [- 6.27340824, - 0.00031761, 0.00019456, 7.27309063, 0.99902987, 0.99948783, 0.49326893],
     9782                             [- 6.27340832, - 0.00031758, 0.00019454, 7.27309074, 0.99902997, 0.99948789, 0.49326909],
     9783                             [- 6.27340840, - 0.00031755, 0.00019452, 7.27309085, 0.99903006, 0.99948794, 0.49326930],
     9784                             [- 6.27340847, - 0.00031751, 0.00019450, 7.27309096, 0.99903016, 0.99948799, 0.49326922],
     9785                             [- 6.27340855, - 0.00031748, 0.00019448, 7.27309107, 0.99903026, 0.99948804, 0.49326913],
     9786                             [- 6.27340863, - 0.00031745, 0.00019446, 7.27309118, 0.99903036, 0.99948810, 0.49326905],
     9787                             [- 6.27340871, - 0.00031742, 0.00019444, 7.27309129, 0.99903046, 0.99948815, 0.49326923],
     9788                             [- 6.27340879, - 0.00031738, 0.00019442, 7.27309140, 0.99903056, 0.99948820, 0.49326938],
     9789                             [- 6.27340886, - 0.00031735, 0.00019440, 7.27309151, 0.99903066, 0.99948825, 0.49326909],
     9790                             [- 6.27340894, - 0.00031732, 0.00019438, 7.27309162, 0.99903076, 0.99948831, 0.49326912],
     9791                             [- 6.27340902, - 0.00031728, 0.00019436, 7.27309173, 0.99903086, 0.99948836, 0.49326920],
     9792                             [- 6.27340910, - 0.00031725, 0.00019434, 7.27309184, 0.99903096, 0.99948841, 0.49326917],
     9793                             [- 6.27340917, - 0.00031722, 0.00019432, 7.27309196, 0.99903106, 0.99948846, 0.49326921],
     9794                             [- 6.27340925, - 0.00031719, 0.00019430, 7.27309207, 0.99903116, 0.99948852, 0.49326919],
     9795                             [- 6.27340933, - 0.00031715, 0.00019428, 7.27309218, 0.99903126, 0.99948857, 0.49326928],
     9796                             [- 6.27340941, - 0.00031712, 0.00019426, 7.27309229, 0.99903136, 0.99948862, 0.49326918],
     9797                             [- 6.27340949, - 0.00031709, 0.00019424, 7.27309240, 0.99903146, 0.99948867, 0.49326958],
     9798                             [- 6.27340956, - 0.00031706, 0.00019422, 7.27309251, 0.99903156, 0.99948873, 0.49326936],
     9799                             [- 6.27340964, - 0.00031702, 0.00019420, 7.27309262, 0.99903165, 0.99948878, 0.49326927],
     9800                             [- 6.27340972, - 0.00031699, 0.00019418, 7.27309273, 0.99903175, 0.99948883, 0.49326942],
     9801                             [- 6.27340980, - 0.00031696, 0.00019416, 7.27309284, 0.99903185, 0.99948888, 0.49326912],
     9802                             [- 6.27340987, - 0.00031693, 0.00019414, 7.27309295, 0.99903195, 0.99948894, 0.49326924],
     9803                             [- 6.27340995, - 0.00031690, 0.00019412, 7.27309306, 0.99903205, 0.99948899, 0.49326951],
     9804                             [- 6.27341003, - 0.00031686, 0.00019410, 7.27309317, 0.99903215, 0.99948904, 0.49326942],
     9805                             [- 6.27341011, - 0.00031683, 0.00019408, 7.27309328, 0.99903225, 0.99948909, 0.49326925],
     9806                             [- 6.27341019, - 0.00031680, 0.00019406, 7.27309339, 0.99903235, 0.99948914, 0.49326927],
     9807                             [- 6.27341026, - 0.00031677, 0.00019404, 7.27309350, 0.99903245, 0.99948920, 0.49326936],
     9808                             [- 6.27341034, - 0.00031673, 0.00019402, 7.27309361, 0.99903255, 0.99948925, 0.49326944],
     9809                             [- 6.27341042, - 0.00031670, 0.00019400, 7.27309372, 0.99903265, 0.99948930, 0.49326949],
     9810                             [- 6.27341050, - 0.00031667, 0.00019398, 7.27309383, 0.99903274, 0.99948935, 0.49326915],
     9811                             [- 6.27341057, - 0.00031664, 0.00019396, 7.27309394, 0.99903284, 0.99948941, 0.49326929],
     9812                             [- 6.27341065, - 0.00031660, 0.00019394, 7.27309405, 0.99903294, 0.99948946, 0.49326955],
     9813                             [- 6.27341073, - 0.00031657, 0.00019392, 7.27309416, 0.99903304, 0.99948951, 0.49326921],
     9814                             [- 6.27341081, - 0.00031654, 0.00019390, 7.27309427, 0.99903314, 0.99948956, 0.49326941],
     9815                             [- 6.27341088, - 0.00031651, 0.00019388, 7.27309438, 0.99903324, 0.99948961, 0.49326954],
     9816                             [- 6.27341096, - 0.00031647, 0.00019386, 7.27309449, 0.99903334, 0.99948967, 0.49326935],
     9817                             [- 6.27341104, - 0.00031644, 0.00019384, 7.27309460, 0.99903344, 0.99948972, 0.49326969],
     9818                             [- 6.27341112, - 0.00031641, 0.00019382, 7.27309471, 0.99903354, 0.99948977, 0.49326971],
     9819                             [- 6.27341119, - 0.00031638, 0.00019380, 7.27309482, 0.99903363, 0.99948982, 0.49326945],
     9820                             [- 6.27341127, - 0.00031634, 0.00019378, 7.27309493, 0.99903373, 0.99948988, 0.49326964],
     9821                             [- 6.27341135, - 0.00031631, 0.00019376, 7.27309504, 0.99903383, 0.99948993, 0.49326955],
     9822                             [- 6.27341143, - 0.00031628, 0.00019374, 7.27309515, 0.99903393, 0.99948998, 0.49326931],
     9823                             [- 6.27341150, - 0.00031625, 0.00019372, 7.27309526, 0.99903403, 0.99949003, 0.49326939],
     9824                             [- 6.27341158, - 0.00031622, 0.00019370, 7.27309537, 0.99903413, 0.99949008, 0.49326953],
     9825                             [- 6.27341166, - 0.00031618, 0.00019368, 7.27309547, 0.99903423, 0.99949014, 0.49326974],
     9826                             [- 6.27341173, - 0.00031615, 0.00019366, 7.27309558, 0.99903433, 0.99949019, 0.49326980],
     9827                             [- 6.27341181, - 0.00031612, 0.00019364, 7.27309569, 0.99903442, 0.99949024, 0.49326965],
     9828                             [- 6.27341189, - 0.00031609, 0.00019362, 7.27309580, 0.99903452, 0.99949029, 0.49326969],
     9829                             [- 6.27341197, - 0.00031605, 0.00019360, 7.27309591, 0.99903462, 0.99949034, 0.49326954],
     9830                             [- 6.27341204, - 0.00031602, 0.00019358, 7.27309602, 0.99903472, 0.99949040, 0.49326953],
     9831                             [- 6.27341212, - 0.00031599, 0.00019356, 7.27309613, 0.99903482, 0.99949045, 0.49326986],
     9832                             [- 6.27341220, - 0.00031596, 0.00019354, 7.27309624, 0.99903492, 0.99949050, 0.49326990],
     9833                             [- 6.27341228, - 0.00031592, 0.00019352, 7.27309635, 0.99903502, 0.99949055, 0.49326950],
     9834                             [- 6.27341235, - 0.00031589, 0.00019350, 7.27309646, 0.99903511, 0.99949060, 0.49326968],
     9835                             [- 6.27341243, - 0.00031586, 0.00019348, 7.27309657, 0.99903521, 0.99949066, 0.49326946],
     9836                             [- 6.27341251, - 0.00031583, 0.00019346, 7.27309668, 0.99903531, 0.99949071, 0.49326958],
     9837                             [- 6.27341258, - 0.00031580, 0.00019344, 7.27309679, 0.99903541, 0.99949076, 0.49326990],
     9838                             [- 6.27341266, - 0.00031576, 0.00019342, 7.27309690, 0.99903551, 0.99949081, 0.49326972],
     9839                             [- 6.27341274, - 0.00031573, 0.00019340, 7.27309701, 0.99903561, 0.99949086, 0.49326980],
     9840                             [- 6.27341282, - 0.00031570, 0.00019338, 7.27309712, 0.99903570, 0.99949092, 0.49327001],
     9841                             [- 6.27341289, - 0.00031567, 0.00019336, 7.27309723, 0.99903580, 0.99949097, 0.49326985],
     9842                             [- 6.27341297, - 0.00031563, 0.00019334, 7.27309734, 0.99903590, 0.99949102, 0.49326983],
     9843                             [- 6.27341305, - 0.00031560, 0.00019333, 7.27309744, 0.99903600, 0.99949107, 0.49326985],
     9844                             [- 6.27341312, - 0.00031557, 0.00019331, 7.27309755, 0.99903610, 0.99949112, 0.49327005],
     9845                             [- 6.27341320, - 0.00031554, 0.00019329, 7.27309766, 0.99903620, 0.99949118, 0.49326985],
     9846                             [- 6.27341328, - 0.00031551, 0.00019327, 7.27309777, 0.99903629, 0.99949123, 0.49326980],
     9847                             [- 6.27341336, - 0.00031547, 0.00019325, 7.27309788, 0.99903639, 0.99949128, 0.49326990],
     9848                             [- 6.27341343, - 0.00031544, 0.00019323, 7.27309799, 0.99903649, 0.99949133, 0.49326985],
     9849                             [- 6.27341351, - 0.00031541, 0.00019321, 7.27309810, 0.99903659, 0.99949138, 0.49326999],
     9850                             [- 6.27341359, - 0.00031538, 0.00019319, 7.27309821, 0.99903669, 0.99949144, 0.49326989],
     9851                             [- 6.27341366, - 0.00031535, 0.00019317, 7.27309832, 0.99903679, 0.99949149, 0.49326987],
     9852                             [- 6.27341374, - 0.00031531, 0.00019315, 7.27309843, 0.99903688, 0.99949154, 0.49327012],
     9853                             [- 6.27341382, - 0.00031528, 0.00019313, 7.27309854, 0.99903698, 0.99949159, 0.49326994],
     9854                             [- 6.27341389, - 0.00031525, 0.00019311, 7.27309864, 0.99903708, 0.99949164, 0.49327001],
     9855                             [- 6.27341397, - 0.00031522, 0.00019309, 7.27309875, 0.99903718, 0.99949169, 0.49327008],
     9856                             [- 6.27341405, - 0.00031519, 0.00019307, 7.27309886, 0.99903728, 0.99949175, 0.49327008],
     9857                             [- 6.27341412, - 0.00031515, 0.00019305, 7.27309897, 0.99903737, 0.99949180, 0.49326970],
     9858                             [- 6.27341420, - 0.00031512, 0.00019303, 7.27309908, 0.99903747, 0.99949185, 0.49326989],
     9859                             [- 6.27341428, - 0.00031509, 0.00019301, 7.27309919, 0.99903757, 0.99949190, 0.49326992],
     9860                             [- 6.27341435, - 0.00031506, 0.00019299, 7.27309930, 0.99903767, 0.99949195, 0.49327000],
     9861                             [- 6.27341443, - 0.00031502, 0.00019297, 7.27309941, 0.99903777, 0.99949200, 0.49327006],
     9862                             [- 6.27341451, - 0.00031499, 0.00019295, 7.27309952, 0.99903786, 0.99949206, 0.49327023],
     9863                             [- 6.27341459, - 0.00031496, 0.00019293, 7.27309962, 0.99903796, 0.99949211, 0.49327002],
     9864                             [- 6.27341466, - 0.00031493, 0.00019291, 7.27309973, 0.99903806, 0.99949216, 0.49327004],
     9865                             [- 6.27341474, - 0.00031490, 0.00019289, 7.27309984, 0.99903816, 0.99949221, 0.49327010],
     9866                             [- 6.27341482, - 0.00031486, 0.00019287, 7.27309995, 0.99903826, 0.99949226, 0.49327000],
     9867                             [- 6.27341489, - 0.00031483, 0.00019285, 7.27310006, 0.99903835, 0.99949231, 0.49326994],
     9868                             [- 6.27341497, - 0.00031480, 0.00019283, 7.27310017, 0.99903845, 0.99949237, 0.49327008],
     9869                             [- 6.27341505, - 0.00031477, 0.00019281, 7.27310028, 0.99903855, 0.99949242, 0.49327002],
     9870                             [- 6.27341512, - 0.00031474, 0.00019279, 7.27310039, 0.99903865, 0.99949247, 0.49327015],
     9871                             [- 6.27341520, - 0.00031470, 0.00019277, 7.27310049, 0.99903874, 0.99949252, 0.49326998],
     9872                             [- 6.27341528, - 0.00031467, 0.00019275, 7.27310060, 0.99903884, 0.99949257, 0.49327030],
     9873                             [- 6.27341535, - 0.00031464, 0.00019274, 7.27310071, 0.99903894, 0.99949262, 0.49326995],
     9874                             [- 6.27341543, - 0.00031461, 0.00019272, 7.27310082, 0.99903904, 0.99949268, 0.49327013],
     9875                             [- 6.27341550, - 0.00031458, 0.00019270, 7.27310093, 0.99903914, 0.99949273, 0.49327030],
     9876                             [- 6.27341558, - 0.00031454, 0.00019268, 7.27310104, 0.99903923, 0.99949278, 0.49327016],
     9877                             [- 6.27341566, - 0.00031451, 0.00019266, 7.27310115, 0.99903933, 0.99949283, 0.49327003],
     9878                             [- 6.27341573, - 0.00031448, 0.00019264, 7.27310125, 0.99903943, 0.99949288, 0.49327020],
     9879                             [- 6.27341581, - 0.00031445, 0.00019262, 7.27310136, 0.99903953, 0.99949293, 0.49327016],
     9880                             [- 6.27341589, - 0.00031442, 0.00019260, 7.27310147, 0.99903962, 0.99949298, 0.49327038],
     9881                             [- 6.27341596, - 0.00031438, 0.00019258, 7.27310158, 0.99903972, 0.99949304, 0.49327020],
     9882                             [- 6.27341604, - 0.00031435, 0.00019256, 7.27310169, 0.99903982, 0.99949309, 0.49326989],
     9883                             [- 6.27341612, - 0.00031432, 0.00019254, 7.27310180, 0.99903992, 0.99949314, 0.49327033],
     9884                             [- 6.27341619, - 0.00031429, 0.00019252, 7.27310190, 0.99904001, 0.99949319, 0.49327021],
     9885                             [- 6.27341627, - 0.00031426, 0.00019250, 7.27310201, 0.99904011, 0.99949324, 0.49327047],
     9886                             [- 6.27341635, - 0.00031423, 0.00019248, 7.27310212, 0.99904021, 0.99949329, 0.49327024],
     9887                             [- 6.27341642, - 0.00031419, 0.00019246, 7.27310223, 0.99904031, 0.99949335, 0.49327034],
     9888                             [- 6.27341650, - 0.00031416, 0.00019244, 7.27310234, 0.99904040, 0.99949340, 0.49327024],
     9889                             [- 6.27341658, - 0.00031413, 0.00019242, 7.27310245, 0.99904050, 0.99949345, 0.49327049],
     9890                             [- 6.27341665, - 0.00031410, 0.00019240, 7.27310255, 0.99904060, 0.99949350, 0.49327029],
     9891                             [- 6.27341673, - 0.00031407, 0.00019238, 7.27310266, 0.99904070, 0.99949355, 0.49327027],
     9892                             [- 6.27341680, - 0.00031403, 0.00019236, 7.27310277, 0.99904079, 0.99949360, 0.49327052],
     9893                             [- 6.27341688, - 0.00031400, 0.00019234, 7.27310288, 0.99904089, 0.99949365, 0.49327062],
     9894                             [- 6.27341696, - 0.00031397, 0.00019232, 7.27310299, 0.99904099, 0.99949370, 0.49327051],
     9895                             [- 6.27341703, - 0.00031394, 0.00019231, 7.27310309, 0.99904108, 0.99949376, 0.49327035],
     9896                             [- 6.27341711, - 0.00031391, 0.00019229, 7.27310320, 0.99904118, 0.99949381, 0.49327029],
     9897                             [- 6.27341719, - 0.00031387, 0.00019227, 7.27310331, 0.99904128, 0.99949386, 0.49327040],
     9898                             [- 6.27341726, - 0.00031384, 0.00019225, 7.27310342, 0.99904138, 0.99949391, 0.49327054],
     9899                             [- 6.27341734, - 0.00031381, 0.00019223, 7.27310353, 0.99904147, 0.99949396, 0.49327057],
     9900                             [- 6.27341741, - 0.00031378, 0.00019221, 7.27310363, 0.99904157, 0.99949401, 0.49327065],
     9901                             [- 6.27341749, - 0.00031375, 0.00019219, 7.27310374, 0.99904167, 0.99949406, 0.49327055],
     9902                             [- 6.27341757, - 0.00031372, 0.00019217, 7.27310385, 0.99904177, 0.99949412, 0.49327044],
     9903                             [- 6.27341764, - 0.00031368, 0.00019215, 7.27310396, 0.99904186, 0.99949417, 0.49327060],
     9904                             [- 6.27341772, - 0.00031365, 0.00019213, 7.27310407, 0.99904196, 0.99949422, 0.49327062],
     9905                             [- 6.27341779, - 0.00031362, 0.00019211, 7.27310417, 0.99904206, 0.99949427, 0.49327057],
     9906                             [- 6.27341787, - 0.00031359, 0.00019209, 7.27310428, 0.99904215, 0.99949432, 0.49327068],
     9907                             [- 6.27341795, - 0.00031356, 0.00019207, 7.27310439, 0.99904225, 0.99949437, 0.49327087],
     9908                             [- 6.27341802, - 0.00031353, 0.00019205, 7.27310450, 0.99904235, 0.99949442, 0.49327065],
     9909                             [- 6.27341810, - 0.00031349, 0.00019203, 7.27310461, 0.99904244, 0.99949447, 0.49327040],
     9910                             [- 6.27341817, - 0.00031346, 0.00019201, 7.27310471, 0.99904254, 0.99949453, 0.49327056],
     9911                             [- 6.27341825, - 0.00031343, 0.00019199, 7.27310482, 0.99904264, 0.99949458, 0.49327057],
     9912                             [- 6.27341833, - 0.00031340, 0.00019197, 7.27310493, 0.99904274, 0.99949463, 0.49327059],
     9913                             [- 6.27341840, - 0.00031337, 0.00019195, 7.27310504, 0.99904283, 0.99949468, 0.49327075],
     9914                             [- 6.27341848, - 0.00031333, 0.00019194, 7.27310514, 0.99904293, 0.99949473, 0.49327058],
     9915                             [- 6.27341855, - 0.00031330, 0.00019192, 7.27310525, 0.99904303, 0.99949478, 0.49327073],
     9916                             [- 6.27341863, - 0.00031327, 0.00019190, 7.27310536, 0.99904312, 0.99949483, 0.49327054],
     9917                             [- 6.27341871, - 0.00031324, 0.00019188, 7.27310547, 0.99904322, 0.99949488, 0.49327048],
     9918                             [- 6.27341878, - 0.00031321, 0.00019186, 7.27310557, 0.99904332, 0.99949493, 0.49327086],
     9919                             [- 6.27341886, - 0.00031318, 0.00019184, 7.27310568, 0.99904341, 0.99949499, 0.49327056],
     9920                             [- 6.27341893, - 0.00031314, 0.00019182, 7.27310579, 0.99904351, 0.99949504, 0.49327071],
     9921                             [- 6.27341901, - 0.00031311, 0.00019180, 7.27310590, 0.99904361, 0.99949509, 0.49327045],
     9922                             [- 6.27341909, - 0.00031308, 0.00019178, 7.27310600, 0.99904370, 0.99949514, 0.49327067],
     9923                             [- 6.27341916, - 0.00031305, 0.00019176, 7.27310611, 0.99904380, 0.99949519, 0.49327067],
     9924                             [- 6.27341924, - 0.00031302, 0.00019174, 7.27310622, 0.99904390, 0.99949524, 0.49327074],
     9925                             [- 6.27341931, - 0.00031299, 0.00019172, 7.27310633, 0.99904399, 0.99949529, 0.49327107],
     9926                             [- 6.27341939, - 0.00031295, 0.00019170, 7.27310643, 0.99904409, 0.99949534, 0.49327064],
     9927                             [- 6.27341946, - 0.00031292, 0.00019168, 7.27310654, 0.99904419, 0.99949539, 0.49327063],
     9928                             [- 6.27341954, - 0.00031289, 0.00019166, 7.27310665, 0.99904428, 0.99949545, 0.49327050],
     9929                             [- 6.27341962, - 0.00031286, 0.00019164, 7.27310676, 0.99904438, 0.99949550, 0.49327069],
     9930                             [- 6.27341969, - 0.00031283, 0.00019162, 7.27310686, 0.99904448, 0.99949555, 0.49327081],
     9931                             [- 6.27341977, - 0.00031280, 0.00019161, 7.27310697, 0.99904457, 0.99949560, 0.49327077],
     9932                             [- 6.27341984, - 0.00031276, 0.00019159, 7.27310708, 0.99904467, 0.99949565, 0.49327081],
     9933                             [- 6.27341992, - 0.00031273, 0.00019157, 7.27310719, 0.99904477, 0.99949570, 0.49327088],
     9934                             [- 6.27341999, - 0.00031270, 0.00019155, 7.27310729, 0.99904486, 0.99949575, 0.49327082],
     9935                             [- 6.27342007, - 0.00031267, 0.00019153, 7.27310740, 0.99904496, 0.99949580, 0.49327067],
     9936                             [- 6.27342015, - 0.00031264, 0.00019151, 7.27310751, 0.99904506, 0.99949585, 0.49327061],
     9937                             [- 6.27342022, - 0.00031261, 0.00019149, 7.27310761, 0.99904515, 0.99949590, 0.49327079],
     9938                             [- 6.27342030, - 0.00031258, 0.00019147, 7.27310772, 0.99904525, 0.99949595, 0.49327103],
     9939                             [- 6.27342037, - 0.00031254, 0.00019145, 7.27310783, 0.99904535, 0.99949601, 0.49327107],
     9940                             [- 6.27342045, - 0.00031251, 0.00019143, 7.27310794, 0.99904544, 0.99949606, 0.49327084],
     9941                             [- 6.27342052, - 0.00031248, 0.00019141, 7.27310804, 0.99904554, 0.99949611, 0.49327096],
     9942                             [- 6.27342060, - 0.00031245, 0.00019139, 7.27310815, 0.99904563, 0.99949616, 0.49327062],
     9943                             [- 6.27342067, - 0.00031242, 0.00019137, 7.27310826, 0.99904573, 0.99949621, 0.49327088],
     9944                             [- 6.27342075, - 0.00031239, 0.00019135, 7.27310836, 0.99904583, 0.99949626, 0.49327094],
     9945                             [- 6.27342083, - 0.00031235, 0.00019133, 7.27310847, 0.99904592, 0.99949631, 0.49327095],
     9946                             [- 6.27342090, - 0.00031232, 0.00019132, 7.27310858, 0.99904602, 0.99949636, 0.49327111],
     9947                             [- 6.27342098, - 0.00031229, 0.00019130, 7.27310869, 0.99904612, 0.99949641, 0.49327066],
     9948                             [- 6.27342105, - 0.00031226, 0.00019128, 7.27310879, 0.99904621, 0.99949646, 0.49327112],
     9949                             [- 6.27342113, - 0.00031223, 0.00019126, 7.27310890, 0.99904631, 0.99949651, 0.49327094],
     9950                             [- 6.27342120, - 0.00031220, 0.00019124, 7.27310901, 0.99904641, 0.99949656, 0.49327097],
     9951                             [- 6.27342128, - 0.00031217, 0.00019122, 7.27310911, 0.99904650, 0.99949662, 0.49327094],
     9952                             [- 6.27342135, - 0.00031213, 0.00019120, 7.27310922, 0.99904660, 0.99949667, 0.49327120],
     9953                             [- 6.27342143, - 0.00031210, 0.00019118, 7.27310933, 0.99904669, 0.99949672, 0.49327123],
     9954                             [- 6.27342150, - 0.00031207, 0.00019116, 7.27310943, 0.99904679, 0.99949677, 0.49327124],
     9955                             [- 6.27342158, - 0.00031204, 0.00019114, 7.27310954, 0.99904689, 0.99949682, 0.49327089],
     9956                             [- 6.27342166, - 0.00031201, 0.00019112, 7.27310965, 0.99904698, 0.99949687, 0.49327096],
     9957                             [- 6.27342173, - 0.00031198, 0.00019110, 7.27310975, 0.99904708, 0.99949692, 0.49327093],
     9958                             [- 6.27342181, - 0.00031195, 0.00019108, 7.27310986, 0.99904717, 0.99949697, 0.49327128],
     9959                             [- 6.27342188, - 0.00031191, 0.00019106, 7.27310997, 0.99904727, 0.99949702, 0.49327122],
     9960                             [- 6.27342196, - 0.00031188, 0.00019105, 7.27311007, 0.99904737, 0.99949707, 0.49327128],
     9961                             [- 6.27342203, - 0.00031185, 0.00019103, 7.27311018, 0.99904746, 0.99949712, 0.49327113],
     9962                             [- 6.27342211, - 0.00031182, 0.00019101, 7.27311029, 0.99904756, 0.99949717, 0.49327121],
     9963                             [- 6.27342218, - 0.00031179, 0.00019099, 7.27311039, 0.99904765, 0.99949722, 0.49327115],
     9964                             [- 6.27342226, - 0.00031176, 0.00019097, 7.27311050, 0.99904775, 0.99949727, 0.49327114],
     9965                             [- 6.27342233, - 0.00031173, 0.00019095, 7.27311061, 0.99904785, 0.99949733, 0.49327102],
     9966                             [- 6.27342241, - 0.00031169, 0.00019093, 7.27311071, 0.99904794, 0.99949738, 0.49327120],
     9967                             [- 6.27342248, - 0.00031166, 0.00019091, 7.27311082, 0.99904804, 0.99949743, 0.49327130],
     9968                             [- 6.27342256, - 0.00031163, 0.00019089, 7.27311093, 0.99904813, 0.99949748, 0.49327109],
     9969                             [- 6.27342263, - 0.00031160, 0.00019087, 7.27311103, 0.99904823, 0.99949753, 0.49327132],
     9970                             [- 6.27342271, - 0.00031157, 0.00019085, 7.27311114, 0.99904833, 0.99949758, 0.49327146],
     9971                             [- 6.27342278, - 0.00031154, 0.00019083, 7.27311125, 0.99904842, 0.99949763, 0.49327090],
     9972                             [- 6.27342286, - 0.00031151, 0.00019081, 7.27311135, 0.99904852, 0.99949768, 0.49327123],
     9973                             [- 6.27342293, - 0.00031147, 0.00019080, 7.27311146, 0.99904861, 0.99949773, 0.49327134],
     9974                             [- 6.27342301, - 0.00031144, 0.00019078, 7.27311156, 0.99904871, 0.99949778, 0.49327133],
     9975                             [- 6.27342308, - 0.00031141, 0.00019076, 7.27311167, 0.99904880, 0.99949783, 0.49327117],
     9976                             [- 6.27342316, - 0.00031138, 0.00019074, 7.27311178, 0.99904890, 0.99949788, 0.49327124],
     9977                             [- 6.27342323, - 0.00031135, 0.00019072, 7.27311188, 0.99904900, 0.99949793, 0.49327116],
     9978                             [- 6.27342331, - 0.00031132, 0.00019070, 7.27311199, 0.99904909, 0.99949798, 0.49327125],
     9979                             [- 6.27342338, - 0.00031129, 0.00019068, 7.27311210, 0.99904919, 0.99949803, 0.49327132],
     9980                             [- 6.27342346, - 0.00031126, 0.00019066, 7.27311220, 0.99904928, 0.99949808, 0.49327161],
     9981                             [- 6.27342353, - 0.00031122, 0.00019064, 7.27311231, 0.99904938, 0.99949813, 0.49327137],
     9982                             [- 6.27342361, - 0.00031119, 0.00019062, 7.27311242, 0.99904947, 0.99949818, 0.49327141],
     9983                             [- 6.27342368, - 0.00031116, 0.00019060, 7.27311252, 0.99904957, 0.99949824, 0.49327151],
     9984                             [- 6.27342376, - 0.00031113, 0.00019058, 7.27311263, 0.99904966, 0.99949829, 0.49327147],
     9985                             [- 6.27342383, - 0.00031110, 0.00019057, 7.27311273, 0.99904976, 0.99949834, 0.49327157],
     9986                             [- 6.27342391, - 0.00031107, 0.00019055, 7.27311284, 0.99904986, 0.99949839, 0.49327158],
     9987                             [- 6.27342398, - 0.00031104, 0.00019053, 7.27311295, 0.99904995, 0.99949844, 0.49327140],
     9988                             [- 6.27342406, - 0.00031101, 0.00019051, 7.27311305, 0.99905005, 0.99949849, 0.49327149],
     9989                             [- 6.27342413, - 0.00031097, 0.00019049, 7.27311316, 0.99905014, 0.99949854, 0.49327130],
     9990                             [- 6.27342421, - 0.00031094, 0.00019047, 7.27311326, 0.99905024, 0.99949859, 0.49327138],
     9991                             [- 6.27342428, - 0.00031091, 0.00019045, 7.27311337, 0.99905033, 0.99949864, 0.49327154],
     9992                             [- 6.27342436, - 0.00031088, 0.00019043, 7.27311348, 0.99905043, 0.99949869, 0.49327144],
     9993                             [- 6.27342443, - 0.00031085, 0.00019041, 7.27311358, 0.99905052, 0.99949874, 0.49327149],
     9994                             [- 6.27342451, - 0.00031082, 0.00019039, 7.27311369, 0.99905062, 0.99949879, 0.49327160],
     9995                             [- 6.27342458, - 0.00031079, 0.00019037, 7.27311379, 0.99905071, 0.99949884, 0.49327162],
     9996                             [- 6.27342466, - 0.00031076, 0.00019035, 7.27311390, 0.99905081, 0.99949889, 0.49327146],
     9997                             [- 6.27342473, - 0.00031072, 0.00019034, 7.27311401, 0.99905091, 0.99949894, 0.49327178],
     9998                             [- 6.27342480, - 0.00031069, 0.00019032, 7.27311411, 0.99905100, 0.99949899, 0.49327156],
     9999                             [- 6.27342488, - 0.00031066, 0.00019030, 7.27311422, 0.99905110, 0.99949904, 0.49327151],
     10000                             [- 6.27342495, - 0.00031063, 0.00019028, 7.27311432, 0.99905119, 0.99949909, 0.49327157],
     10001                             [- 6.27342503, - 0.00031060, 0.00019026, 7.27311443, 0.99905129, 0.99949914, 0.49327162],
     10002                             [- 6.27342510, - 0.00031057, 0.00019024, 7.27311453, 0.99905138, 0.99949919, 0.49327180],
     10003                             [- 6.27342518, - 0.00031054, 0.00019022, 7.27311464, 0.99905148, 0.99949924, 0.49327153],
     10004                             [- 6.27342525, - 0.00031051, 0.00019020, 7.27311475, 0.99905157, 0.99949929, 0.49327170],
     10005                             [- 6.27342533, - 0.00031047, 0.00019018, 7.27311485, 0.99905167, 0.99949934, 0.49327164],
     10006                             [- 6.27342540, - 0.00031044, 0.00019016, 7.27311496, 0.99905176, 0.99949939, 0.49327177],
     10007                             [- 6.27342548, - 0.00031041, 0.00019014, 7.27311506, 0.99905186, 0.99949944, 0.49327171],
     10008                             [- 6.27342555, - 0.00031038, 0.00019013, 7.27311517, 0.99905195, 0.99949949, 0.49327163],
     10009                             [- 6.27342563, - 0.00031035, 0.00019011, 7.27311527, 0.99905205, 0.99949954, 0.49327148],
     10010                             [- 6.27342570, - 0.00031032, 0.00019009, 7.27311538, 0.99905214, 0.99949959, 0.49327177],
     10011                             [- 6.27342577, - 0.00031029, 0.00019007, 7.27311549, 0.99905224, 0.99949964, 0.49327190],
     10012                             [- 6.27342585, - 0.00031026, 0.00019005, 7.27311559, 0.99905233, 0.99949969, 0.49327174],
     10013                             [- 6.27342592, - 0.00031023, 0.00019003, 7.27311570, 0.99905243, 0.99949974, 0.49327179],
     10014                             [- 6.27342600, - 0.00031019, 0.00019001, 7.27311580, 0.99905252, 0.99949979, 0.49327165],
     10015                             [- 6.27342607, - 0.00031016, 0.00018999, 7.27311591, 0.99905262, 0.99949984, 0.49327180],
     10016                             [- 6.27342615, - 0.00031013, 0.00018997, 7.27311601, 0.99905271, 0.99949989, 0.49327176],
     10017                             [- 6.27342622, - 0.00031010, 0.00018995, 7.27311612, 0.99905281, 0.99949994, 0.49327155],
     10018                             [- 6.27342630, - 0.00031007, 0.00018993, 7.27311622, 0.99905290, 0.99949999, 0.49327169],
     10019                             [- 6.27342637, - 0.00031004, 0.00018992, 7.27311633, 0.99905300, 0.99950004, 0.49327184],
     10020                             [- 6.27342644, - 0.00031001, 0.00018990, 7.27311644, 0.99905309, 0.99950009, 0.49327184],
     10021                             [- 6.27342652, - 0.00030998, 0.00018988, 7.27311654, 0.99905319, 0.99950014, 0.49327176],
     10022                             [- 6.27342659, - 0.00030995, 0.00018986, 7.27311665, 0.99905328, 0.99950019, 0.49327184],
     10023                             [- 6.27342667, - 0.00030992, 0.00018984, 7.27311675, 0.99905338, 0.99950024, 0.49327166],
     10024                             [- 6.27342674, - 0.00030988, 0.00018982, 7.27311686, 0.99905347, 0.99950029, 0.49327222],
     10025                             [- 6.27342682, - 0.00030985, 0.00018980, 7.27311696, 0.99905357, 0.99950034, 0.49327211],
     10026                             [- 6.27342689, - 0.00030982, 0.00018978, 7.27311707, 0.99905366, 0.99950039, 0.49327202],
     10027                             [- 6.27342696, - 0.00030979, 0.00018976, 7.27311717, 0.99905376, 0.99950044, 0.49327179],
     10028                             [- 6.27342704, - 0.00030976, 0.00018974, 7.27311728, 0.99905385, 0.99950049, 0.49327176],
     10029                             [- 6.27342711, - 0.00030973, 0.00018973, 7.27311738, 0.99905394, 0.99950054, 0.49327202],
     10030                             [- 6.27342719, - 0.00030970, 0.00018971, 7.27311749, 0.99905404, 0.99950059, 0.49327184],
     10031                             [- 6.27342726, - 0.00030967, 0.00018969, 7.27311759, 0.99905413, 0.99950064, 0.49327198],
     10032                             [- 6.27342733, - 0.00030964, 0.00018967, 7.27311770, 0.99905423, 0.99950069, 0.49327205],
     10033                             [- 6.27342741, - 0.00030961, 0.00018965, 7.27311780, 0.99905432, 0.99950074, 0.49327200],
     10034                             [- 6.27342748, - 0.00030957, 0.00018963, 7.27311791, 0.99905442, 0.99950079, 0.49327197],
     10035                             [- 6.27342756, - 0.00030954, 0.00018961, 7.27311801, 0.99905451, 0.99950084, 0.49327183],
     10036                             [- 6.27342763, - 0.00030951, 0.00018959, 7.27311812, 0.99905461, 0.99950089, 0.49327208],
     10037                             [- 6.27342771, - 0.00030948, 0.00018957, 7.27311822, 0.99905470, 0.99950094, 0.49327205],
     10038                             [- 6.27342778, - 0.00030945, 0.00018956, 7.27311833, 0.99905480, 0.99950099, 0.49327194]])
     10039
     10040    if value == 'h':
     10041        series = love_numbers[:, 0]
     10042    elif value == 'k':
     10043        series = love_numbers[:, 1]
     10044    elif value == 'l':
     10045        series = love_numbers[:, 2]
     10046    elif value == 'gamma':
     10047        series = love_numbers[:, 3]
     10048    elif value == 'lambda':
     10049        series = love_numbers[:, 4]
    1005010050    else:
    1005110051        raise RuntimeError(['love_numbers error message: unknow value:', value])
    10052        
    10053         # choose degree 1 term for CF reference system
    10054     if frame=='CF': # from Blewitt, 2003, JGR
    10055         if value=='h':
    10056             series[1] = -0.269;
    10057         elif value=='k':
    10058             series[1] = 0.021
    10059         elif value=='l':
    10060             series[1] = 0.134;
     10052
     10053    # choose degree 1 term for CF reference system
     10054    if frame == 'CF':  # from Blewitt, 2003, JGR
     10055        if value == 'h':
     10056            series[1] = - 0.269
     10057        elif value == 'k':
     10058            series[1] = 0.021
     10059        elif value == 'l':
     10060            series[1] = 0.134
    1006110061
    1006210062    return series
    10063 
  • issm/trunk-jpl/src/m/classes/SMBcomponents.py

    r23833 r24213  
    33from project3d import *
    44from WriteData import *
     5
    56
    67class SMBcomponents(object):
     
    910
    1011       Usage:
    11           SMBcomponents=SMBcomponents();
     12          SMBcomponents = SMBcomponents()
    1213    """
    1314
    14     def __init__(self): # {{{
     15    def __init__(self):  # {{{
    1516        self.accumulation = float('NaN')
    1617        self.runoff = float('NaN')
    1718        self.evaporation = float('NaN')
    1819        self.isclimatology = 0
    19         self.requested_outputs      = []
    20         #}}}
    21     def __repr__(self): # {{{
    22         string="   surface forcings parameters (SMB=accumulation-runoff-evaporation) :"
    23         string="%s\n%s"%(string,fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]'))
    24         string="%s\n%s"%(string,fielddisplay(self,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]'))
    25         string="%s\n%s"%(string,fielddisplay(self,'evaporation','mount of ice lost to evaporative processes [m/yr ice eq]'))
    26         string="%s\n%s"%(string,fielddisplay(self,'isclimatology','repeat all forcings when past last forcing time (default false)'))
    27         string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
     20        self.requested_outputs = []
     21    #}}}
     22
     23    def __repr__(self):  # {{{
     24        string = "   surface forcings parameters (SMB = accumulation - runoff - evaporation) :"
     25        string = "%s\n%s" % (string, fielddisplay(self, 'accumulation', 'accumulated snow [m / yr ice eq]'))
     26        string = "%s\n%s" % (string, fielddisplay(self, 'runoff', 'amount of ice melt lost from the ice column [m / yr ice eq]'))
     27        string = "%s\n%s" % (string, fielddisplay(self, 'evaporation', 'mount of ice lost to evaporative processes [m / yr ice eq]'))
     28        string = "%s\n%s" % (string, fielddisplay(self, 'isclimatology', 'repeat all forcings when past last forcing time (default false)'))
     29        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
    2830        return string
    29         #}}}
    30     def extrude(self,md): # {{{
     31    #}}}
    3132
    32         self.mass_balance=project3d(md,'vector',self.accumulation,'type','node');
    33         self.mass_balance=project3d(md,'vector',self.runoff,'type','node');
    34         self.mass_balance=project3d(md,'vector',self.evaporation,'type','node');
     33    def extrude(self, md):  # {{{
     34        self.mass_balance = project3d(md, 'vector', self.accumulation, 'type', 'node')
     35        self.mass_balance = project3d(md, 'vector', self.runoff, 'type', 'node')
     36        self.mass_balance = project3d(md, 'vector', self.evaporation, 'type', 'node')
    3537        return self
    3638    #}}}
    37     def defaultoutputs(self,md): # {{{
     39
     40    def defaultoutputs(self, md):  # {{{
    3841        return []
    3942    #}}}
    40     def initialize(self,md): # {{{
    4143
     44    def initialize(self, md):  # {{{
    4245        if np.all(np.isnan(self.accumulation)):
    43             self.accumulation=np.zeros((md.mesh.numberofvertices))
     46            self.accumulation = np.zeros((md.mesh.numberofvertices))
    4447            print("      no SMB.accumulation specified: values set as zero")
    4548
    4649        if np.all(np.isnan(self.runoff)):
    47             self.runoff=np.zeros((md.mesh.numberofvertices))
     50            self.runoff = np.zeros((md.mesh.numberofvertices))
    4851            print("      no SMB.runoff specified: values set as zero")
    4952
    5053        if np.all(np.isnan(self.evaporation)):
    51             self.evaporation=np.zeros((md.mesh.numberofvertices))
     54            self.evaporation = np.zeros((md.mesh.numberofvertices))
    5255            print("      no SMB.evaporation specified: values set as zero")
    5356
    5457        return self
    5558    #}}}
    56     def checkconsistency(self,md,solution,analyses):    # {{{
     59
     60    def checkconsistency(self, md, solution, analyses):  # {{{
     61        if 'MasstransportAnalysis' in analyses:
     62            md = checkfield(md, 'fieldname', 'smb.accumulation', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     63
     64        if 'BalancethicknessAnalysis' in analyses:
     65            md = checkfield(md, 'fieldname', 'smb.accumulation', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
    5766
    5867        if 'MasstransportAnalysis' in analyses:
    59             md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1)
     68            md = checkfield(md, 'fieldname', 'smb.runoff', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    6069
    6170        if 'BalancethicknessAnalysis' in analyses:
    62             md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
     71            md = checkfield(md, 'fieldname', 'smb.runoff', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
    6372
    6473        if 'MasstransportAnalysis' in analyses:
    65             md = checkfield(md,'fieldname','smb.runoff','timeseries',1,'NaN',1,'Inf',1)
     74            md = checkfield(md, 'fieldname', 'smb.evaporation', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    6675
    6776        if 'BalancethicknessAnalysis' in analyses:
    68             md = checkfield(md,'fieldname','smb.runoff','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
     77            md = checkfield(md, 'fieldname', 'smb.evaporation', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
    6978
    70         if 'MasstransportAnalysis' in analyses:
    71             md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1)
    72 
    73         if 'BalancethicknessAnalysis' in analyses:
    74             md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    75        
    76         md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
    77         md = checkfield(md,'fieldname','smb.isclimatology','values',[0,1])
     79        md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
     80        md = checkfield(md, 'fieldname', 'smb.isclimatology', 'values', [0, 1])
    7881
    7982        return md
    8083    # }}}
    81     def marshall(self,prefix,md,fid):    # {{{
    8284
    83         yts=md.constants.yts
     85    def marshall(self, prefix, md, fid):  # {{{
     86        yts = md.constants.yts
    8487
    85         WriteData(fid,prefix,'name','md.smb.model','data',2,'format','Integer');
    86         WriteData(fid,prefix,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    87         WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    88         WriteData(fid,prefix,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    89        
    90         #process requested outputs
     88        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 2, 'format', 'Integer')
     89        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accumulation', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     90        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoff', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     91        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'evaporation', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     92
     93    #process requested outputs
    9194        outputs = self.requested_outputs
    9295        indices = [i for i, x in enumerate(outputs) if x == 'default']
    9396        if len(indices) > 0:
    94             outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    95             outputs    =outputscopy
    96         WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
    97         WriteData(fid,prefix,'object',self,'class','smb','fieldname','isclimatology','format','Boolean')
    98         if (self.isclimatology>0):
    99             md = checkfield(md,'fieldname', 'smb.accumulation', 'size',[md.mesh.numberofvertices+1],'message','accumulation must have md.mesh.numberofvertices+1 rows in order to force a climatology')
    100             md = checkfield(md,'fieldname', 'smb.runoff', 'size',[md.mesh.numberofvertices+1],'message','runoff must have md.mesh.numberofvertices+1 rows in order to force a climatology')
    101             md = checkfield(md,'fieldname', 'smb.evaporation', 'size',[md.mesh.numberofvertices+1],'message','evaporation must have md.mesh.numberofvertices+1 rows in order to force a climatology')
     97            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     98            outputs = outputscopy
     99        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
     100        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isclimatology', 'format', 'Boolean')
     101        if (self.isclimatology > 0):
     102            md = checkfield(md, 'fieldname', 'smb.accumulation', 'size', [md.mesh.numberofvertices + 1], 'message', 'accumulation must have md.mesh.numberofvertices + 1 rows in order to force a climatology')
     103            md = checkfield(md, 'fieldname', 'smb.runoff', 'size', [md.mesh.numberofvertices + 1], 'message', 'runoff must have md.mesh.numberofvertices + 1 rows in order to force a climatology')
     104            md = checkfield(md, 'fieldname', 'smb.evaporation', 'size', [md.mesh.numberofvertices + 1], 'message', 'evaporation must have md.mesh.numberofvertices + 1 rows in order to force a climatology')
    102105
    103106    # }}}
  • issm/trunk-jpl/src/m/classes/SMBd18opdd.py

    r23716 r24213  
    55from project3d import project3d
    66
     7
    78class SMBd18opdd(object):
    8         """
    9         SMBd18opdd Class definition
    10 
    11            Usage:
    12               SMBd18opdd=SMBd18opdd();
    13         """
    14 
    15         def __init__(self): # {{{
    16                 self.desfac                    = 0.
    17                 self.s0p                       = float('NaN')
    18                 self.s0t                       = float('NaN')
    19                 self.rlaps                     = 0.
    20                 self.rlapslgm                  = 0.
    21                 self.dpermil                   = 0.
    22                 self.f                         = 0.
    23                 self.Tdiff                     = float('NaN')
    24                 self.sealev                    = float('NaN')
    25                 self.ismungsm                  = 0
    26                 self.isd18opd                  = 0
    27                 self.issetpddfac               = 0
    28                 self.istemperaturescaled       = 0
    29                 self.isprecipscaled            = 0
    30                 self.delta18o                  = float('NaN')
    31                 self.delta18o_surface          = float('NaN')
    32                 self.temperatures_presentday   = float('NaN')
    33                 self.precipitations_presentday = float('NaN')
    34                 self.temperatures_reconstructed   = float('NaN')
    35                 self.precipitations_reconstructed = float('NaN')
    36                 self.pddfac_snow               = float('NaN')
    37                 self.pddfac_ice                = float('NaN')
    38 
    39                 #set defaults
    40                 self.setdefaultparameters()
    41                 self.requested_outputs      = []
    42                 #}}}
    43         def __repr__(self): # {{{
    44                 string="   surface forcings parameters:"
    45 
    46                 string="%s\n%s"%(string,fielddisplay(self,'isd18opd','is delta18o parametrisation from present day temperature and precipitation activated (0 or 1, default is 0)'))
    47                 string="%s\n%s"%(string,fielddisplay(self,'issetpddfac','is user passing in defined pdd factors at each vertex (0 or 1, default is 0)'))
    48                 string="%s\n%s"%(string,fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
    49                 string="%s\n%s"%(string,fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
    50                 string="%s\n%s"%(string,fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
    51                 string="%s\n%s"%(string,fielddisplay(self,'rlaps','present day lapse rate [degree/km]'))
    52                 if self.isd18opd:
    53                         string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
    54                         string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
    55                         string="%s\n%s"%(string,fielddisplay(self,'istemperaturescaled','if delta18o parametrisation from present day temperature and precipitation is activated, is temperature scaled to delta18o value? (0 or 1, default is 1)'))
    56                         string="%s\n%s"%(string,fielddisplay(self,'isprecipscaled','if delta18o parametrisation from present day temperature and precipitation is activated, is precipitation scaled to delta18o value? (0 or 1, default is 1)'))
    57                        
    58                         if self.istemperaturescaled==0:
    59                                 string="%s\n%s"%(string,fielddisplay(self,'temperatures_reconstructed','monthly historical surface temperatures [K], required if delta18o/mungsm/d18opd is activated and istemperaturescaled is not activated'))
    60                                
    61                         if self.isprecipscaled==0:
    62                                 string="%s\n%s"%(string,fielddisplay(self,'precipitations_reconstructed','monthly historical precipitation [m/yr water eq], required if delta18o/mungsm/d18opd is activated and isprecipscaled is not activated'))
    63 
    64                         string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated'))
    65                         string="%s\n%s"%(string,fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated'))
    66                         string="%s\n%s"%(string,fielddisplay(self,'f','precip/temperature scaling factor, required if d18opd is activated'))
    67 
    68                 if self.issetpddfac==1:
    69                         string="%s\n%s"%(string,fielddisplay(self,'pddfac_snow','Pdd factor for snow, at each vertex [mm ice equiv/day/degree C]'))
    70                         string="%s\n%s"%(string,fielddisplay(self,'pddfac_ice','Pdd factor for ice, at each vertex [mm ice equiv/day/degree C]'))
    71                 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
    72 
    73                 return string
    74                 #}}}
    75         def extrude(self,md): # {{{
    76 
    77                 if self.isd18opd: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node')
    78                 if self.isd18opd: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
    79                 if self.istemperaturescaled==0: self.temperatures_reconstructed=project3d(md,'vector',self.temperatures_reconstructed,'type','node')
    80                 if self.isprecipscaled==0: self.temperatures_reconstructed=project3d(md,'vector',self.precipitations_reconstructed,'type','node')
    81                 if self.isd18opd: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
    82                 if self.issetpddfac: self.pddfac_snow=project3d(md,'vector',self.pddfac_snow,'type','node')
    83                 if self.issetpddfac: self.pddfac_ice=project3d(md,'vector',self.pddfac_ice,'type','node')
    84                 self.s0p=project3d(md,'vector',self.s0p,'type','node')
    85                 self.s0t=project3d(md,'vector',self.s0t,'type','node')
    86 
    87                 return self
    88         #}}}
    89         def defaultoutputs(self,md): # {{{
    90                 return []
    91         #}}}
    92         def initialize(self,md): # {{{
    93 
    94                 if np.all(np.isnan(self.s0p)):
    95                         self.s0p=np.zeros((md.mesh.numberofvertices))
    96                         print("      no SMBd18opdd.s0p specified: values set as zero")
    97 
    98                 if np.all(np.isnan(self.s0t)):
    99                         self.s0t=np.zeros((md.mesh.numberofvertices))
    100                         print("      no SMBd18opdd.s0t specified: values set as zero")
    101                        
    102                 return self
    103         # }}}
    104         def setdefaultparameters(self): # {{{
    105 
    106                 #pdd method not used in default mode
    107                 self.ismungsm   = 0
    108                 self.isd18opd   = 1
    109                 self.istemperaturescaled = 1
    110                 self.isprecipscaled = 1
    111                 self.desfac     = 0.5
    112                 self.rlaps      = 6.5
    113                 self.rlapslgm   = 6.5
    114                 self.dpermil    = 2.4
    115                 self.f          = 0.169
    116                 self.issetpddfac = 0
    117                 return self
    118         #}}}
    119         def checkconsistency(self,md,solution,analyses):    # {{{
    120 
    121                 if 'MasstransportAnalysis' in analyses:
    122                         md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',[1])
    123                         md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    124                         md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    125                         md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',[1])
    126                         md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])
    127 
    128                         if self.isd18opd:
    129                                 lent=float(np.size(self.temperatures_presentday,1))
    130                                 lenp=float(np.size(self.precipitations_presentday,1))
    131                                 multt=np.ceil(lent/12.)*12.
    132                                 multp=np.ceil(lenp/12.)*12.
    133                                 md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
    134                                 md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
    135 
    136                                 if self.istemperaturescaled==0:
    137                                         lent=float(np.size(self.temperatures_reconstructed,1))
    138                                         multt=np.ceil(lent/12.)*12.
    139                                         md = checkfield(md,'fieldname','smb.temperatures_reconstructed','size',[md.mesh.numberofvertices+1,multt],'NaN',1,'Inf',1,'timeseries',1)
    140 
    141                                 if self.isprecipscaled==0:
    142                                         lenp=float(np.size(self.precipitations_reconstructed,1))
    143                                         multp=np.ceil(lent/12.)*12.
    144                                         md = checkfield(md,'fieldname','smb.precipitations_reconstructed','size',[md.mesh.numberofvertices+1,multt],'NaN',1,'Inf',1,'timeseries',1)
    145 
    146                                 md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,np.nan],'singletimeseries',1)
    147                                 md = checkfield(md,'fieldname','smb.dpermil','>=',0,'numel',[1])
    148                                 md = checkfield(md,'fieldname','smb.f','>=',0,'numel',[1])
    149 
    150                         if self.issetpddfac:
    151                                 md = checkfield(md,'fieldname','smb.pddfac_snow','>=',0,'NaN',1,'Inf',1)
    152                                 md = checkfield(md,'fieldname','smb.pddfac_ice','>=',0,'NaN',1,'Inf',1)
    153 
    154                 md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
    155 
    156                 return md
    157         # }}}
    158         def marshall(self,prefix,md,fid):    # {{{
    159 
    160                 yts=md.constants.yts
    161 
    162                 WriteData(fid,prefix,'name','md.smb.model','data',5,'format','Integer')
    163 
    164                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismungsm','format','Boolean')
    165                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isd18opd','format','Boolean')
    166                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','issetpddfac','format','Boolean');
    167                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double')
    168                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
    169                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
    170                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlaps','format','Double')
    171                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlapslgm','format','Double')
    172                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
    173                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
    174 
    175                 if self.isd18opd:
    176                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    177                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    178                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','istemperaturescaled','format','Boolean')
    179                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','isprecipscaled','format','Boolean')
    180 
    181                         if self.istemperaturescaled==0:
    182                                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_reconstructed','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    183 
    184                         if self.isprecipscaled==0:
    185                                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_reconstructed','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    186 
    187                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
    188                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','dpermil','format','Double')
    189                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','f','format','Double')
    190 
    191                 if self.issetpddfac:
    192                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','pddfac_snow','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    193                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','pddfac_ice','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    194 
    195                 #process requested outputs
    196                 outputs = self.requested_outputs
    197                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    198                 if len(indices) > 0:
    199                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    200                         outputs    =outputscopy
    201                 WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
    202 
    203         # }}}
     9    """
     10    SMBd18opdd Class definition
     11
     12       Usage:
     13          SMBd18opdd = SMBd18opdd()
     14    """
     15
     16    def __init__(self):  # {{{
     17        self.desfac = 0.
     18        self.s0p = float('NaN')
     19        self.s0t = float('NaN')
     20        self.rlaps = 0.
     21        self.rlapslgm = 0.
     22        self.dpermil = 0.
     23        self.f = 0.
     24        self.Tdiff = float('NaN')
     25        self.sealev = float('NaN')
     26        self.ismungsm = 0
     27        self.isd18opd = 0
     28        self.issetpddfac = 0
     29        self.istemperaturescaled = 0
     30        self.isprecipscaled = 0
     31        self.delta18o = float('NaN')
     32        self.delta18o_surface = float('NaN')
     33        self.temperatures_presentday = float('NaN')
     34        self.precipitations_presentday = float('NaN')
     35        self.temperatures_reconstructed = float('NaN')
     36        self.precipitations_reconstructed = float('NaN')
     37        self.pddfac_snow = float('NaN')
     38        self.pddfac_ice = float('NaN')
     39
     40    #set defaults
     41        self.setdefaultparameters()
     42        self.requested_outputs = []
     43    #}}}
     44
     45    def __repr__(self):  # {{{
     46        string = "   surface forcings parameters:"
     47
     48        string = "%s\n%s" % (string, fielddisplay(self, 'isd18opd', 'is delta18o parametrisation from present day temperature and precipitation activated (0 or 1, default is 0)'))
     49        string = "%s\n%s" % (string, fielddisplay(self, 'issetpddfac', 'is user passing in defined pdd factors at each vertex (0 or 1, default is 0)'))
     50        string = "%s\n%s" % (string, fielddisplay(self, 'desfac', 'desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
     51        string = "%s\n%s" % (string, fielddisplay(self, 's0p', 'should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
     52        string = "%s\n%s" % (string, fielddisplay(self, 's0t', 'should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
     53        string = "%s\n%s" % (string, fielddisplay(self, 'rlaps', 'present day lapse rate [degree / km]'))
     54        if self.isd18opd:
     55            string = "%s\n%s" % (string, fielddisplay(self, 'temperatures_presentday', 'monthly present day surface temperatures [K], required if delta18o / mungsm is activated'))
     56            string = "%s\n%s" % (string, fielddisplay(self, 'precipitations_presentday', 'monthly surface precipitation [m / yr water eq], required if delta18o or mungsm is activated'))
     57            string = "%s\n%s" % (string, fielddisplay(self, 'istemperaturescaled', 'if delta18o parametrisation from present day temperature and precipitation is activated, is temperature scaled to delta18o value? (0 or 1, default is 1)'))
     58            string = "%s\n%s" % (string, fielddisplay(self, 'isprecipscaled', 'if delta18o parametrisation from present day temperature and precipitation is activated, is precipitation scaled to delta18o value? (0 or 1, default is 1)'))
     59
     60            if self.istemperaturescaled == 0:
     61                string = "%s\n%s" % (string, fielddisplay(self, 'temperatures_reconstructed', 'monthly historical surface temperatures [K], required if delta18o / mungsm / d18opd is activated and istemperaturescaled is not activated'))
     62
     63            if self.isprecipscaled == 0:
     64                string = "%s\n%s" % (string, fielddisplay(self, 'precipitations_reconstructed', 'monthly historical precipitation [m / yr water eq], required if delta18o / mungsm / d18opd is activated and isprecipscaled is not activated'))
     65
     66            string = "%s\n%s" % (string, fielddisplay(self, 'delta18o', 'delta18o [per mil], required if pdd is activated and delta18o activated'))
     67            string = "%s\n%s" % (string, fielddisplay(self, 'dpermil', 'degree per mil, required if d18opd is activated'))
     68            string = "%s\n%s" % (string, fielddisplay(self, 'f', 'precip/temperature scaling factor, required if d18opd is activated'))
     69
     70        if self.issetpddfac == 1:
     71            string = "%s\n%s" % (string, fielddisplay(self, 'pddfac_snow', 'Pdd factor for snow, at each vertex [mm ice equiv / day / degree C]'))
     72            string = "%s\n%s" % (string, fielddisplay(self, 'pddfac_ice', 'Pdd factor for ice, at each vertex [mm ice equiv / day / degree C]'))
     73        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
     74
     75        return string
     76    #}}}
     77
     78    def extrude(self, md):  # {{{
     79        if self.isd18opd:
     80            self.temperatures_presentday = project3d(md, 'vector', self.temperatures_presentday, 'type', 'node')
     81        if self.isd18opd:
     82            self.precipitations_presentday = project3d(md, 'vector', self.precipitations_presentday, 'type', 'node')
     83        if self.istemperaturescaled == 0:
     84            self.temperatures_reconstructed = project3d(md, 'vector', self.temperatures_reconstructed, 'type', 'node')
     85        if self.isprecipscaled == 0:
     86            self.temperatures_reconstructed = project3d(md, 'vector', self.precipitations_reconstructed, 'type', 'node')
     87        if self.isd18opd:
     88            self.precipitations_presentday = project3d(md, 'vector', self.precipitations_presentday, 'type', 'node')
     89        if self.issetpddfac:
     90            self.pddfac_snow = project3d(md, 'vector', self.pddfac_snow, 'type', 'node')
     91        if self.issetpddfac:
     92            self.pddfac_ice = project3d(md, 'vector', self.pddfac_ice, 'type', 'node')
     93        self.s0p = project3d(md, 'vector', self.s0p, 'type', 'node')
     94        self.s0t = project3d(md, 'vector', self.s0t, 'type', 'node')
     95
     96        return self
     97    #}}}
     98
     99    def defaultoutputs(self, md):  # {{{
     100        return []
     101    #}}}
     102
     103    def initialize(self, md):  # {{{
     104        if np.all(np.isnan(self.s0p)):
     105            self.s0p = np.zeros((md.mesh.numberofvertices))
     106            print("      no SMBd18opdd.s0p specified: values set as zero")
     107
     108        if np.all(np.isnan(self.s0t)):
     109            self.s0t = np.zeros((md.mesh.numberofvertices))
     110            print("      no SMBd18opdd.s0t specified: values set as zero")
     111
     112        return self
     113    # }}}
     114
     115    def setdefaultparameters(self):  # {{{
     116        #pdd method not used in default mode
     117        self.ismungsm = 0
     118        self.isd18opd = 1
     119        self.istemperaturescaled = 1
     120        self.isprecipscaled = 1
     121        self.desfac = 0.5
     122        self.rlaps = 6.5
     123        self.rlapslgm = 6.5
     124        self.dpermil = 2.4
     125        self.f = 0.169
     126        self.issetpddfac = 0
     127        return self
     128    #}}}
     129
     130    def checkconsistency(self, md, solution, analyses):  # {{{
     131        if 'MasstransportAnalysis' in analyses:
     132            md = checkfield(md, 'fieldname', 'smb.desfac', '<=', 1, 'numel', [1])
     133            md = checkfield(md, 'fieldname', 'smb.s0p', '>=', 0, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     134            md = checkfield(md, 'fieldname', 'smb.s0t', '>=', 0, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     135            md = checkfield(md, 'fieldname', 'smb.rlaps', '>=', 0, 'numel', [1])
     136            md = checkfield(md, 'fieldname', 'smb.rlapslgm', '>=', 0, 'numel', [1])
     137
     138            if self.isd18opd:
     139                lent = float(np.size(self.temperatures_presentday, 1))
     140                lenp = float(np.size(self.precipitations_presentday, 1))
     141                multt = np.ceil(lent / 12.) * 12.
     142                multp = np.ceil(lenp / 12.) * 12.
     143                md = checkfield(md, 'fieldname', 'smb.temperatures_presentday', 'size', [md.mesh.numberofvertices + 1, 12], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     144                md = checkfield(md, 'fieldname', 'smb.precipitations_presentday', 'size', [md.mesh.numberofvertices + 1, 12], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     145
     146                if self.istemperaturescaled == 0:
     147                    lent = float(np.size(self.temperatures_reconstructed, 1))
     148                    multt = np.ceil(lent / 12.) * 12.
     149                    md = checkfield(md, 'fieldname', 'smb.temperatures_reconstructed', 'size', [md.mesh.numberofvertices + 1, multt], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     150
     151                if self.isprecipscaled == 0:
     152                    lenp = float(np.size(self.precipitations_reconstructed, 1))
     153                    multp = np.ceil(lent / 12.) * 12.
     154                    md = checkfield(md, 'fieldname', 'smb.precipitations_reconstructed', 'size', [md.mesh.numberofvertices + 1, multp], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     155
     156                md = checkfield(md, 'fieldname', 'smb.delta18o', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
     157                md = checkfield(md, 'fieldname', 'smb.dpermil', '>=', 0, 'numel', [1])
     158                md = checkfield(md, 'fieldname', 'smb.f', '>=', 0, 'numel', [1])
     159
     160            if self.issetpddfac:
     161                md = checkfield(md, 'fieldname', 'smb.pddfac_snow', '>=', 0, 'NaN', 1, 'Inf', 1)
     162                md = checkfield(md, 'fieldname', 'smb.pddfac_ice', '>=', 0, 'NaN', 1, 'Inf', 1)
     163
     164        md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
     165
     166        return md
     167    # }}}
     168
     169    def marshall(self, prefix, md, fid):  # {{{
     170        yts = md.constants.yts
     171
     172        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 5, 'format', 'Integer')
     173
     174        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ismungsm', 'format', 'Boolean')
     175        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isd18opd', 'format', 'Boolean')
     176        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'issetpddfac', 'format', 'Boolean')
     177        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'desfac', 'format', 'Double')
     178        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 's0p', 'format', 'DoubleMat', 'mattype', 1)
     179        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 's0t', 'format', 'DoubleMat', 'mattype', 1)
     180        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'rlaps', 'format', 'Double')
     181        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'rlapslgm', 'format', 'Double')
     182        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tdiff', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
     183        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'sealev', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
     184
     185        if self.isd18opd:
     186            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'temperatures_presentday', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     187            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitations_presentday', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     188            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'istemperaturescaled', 'format', 'Boolean')
     189            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isprecipscaled', 'format', 'Boolean')
     190
     191            if self.istemperaturescaled == 0:
     192                WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'temperatures_reconstructed', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     193
     194            if self.isprecipscaled == 0:
     195                WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitations_reconstructed', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     196
     197            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'delta18o', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
     198            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'dpermil', 'format', 'Double')
     199            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'f', 'format', 'Double')
     200
     201        if self.issetpddfac:
     202            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'pddfac_snow', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     203            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'pddfac_ice', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     204
     205    #process requested outputs
     206        outputs = self.requested_outputs
     207        indices = [i for i, x in enumerate(outputs) if x == 'default']
     208        if len(indices) > 0:
     209            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     210            outputs = outputscopy
     211        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
     212
     213    # }}}
  • issm/trunk-jpl/src/m/classes/SMBforcing.py

    r23833 r24213  
    55from project3d import project3d
    66
     7
    78class SMBforcing(object):
    89    """
     
    1011
    1112       Usage:
    12           SMB=SMBforcing();
     13          SMB = SMBforcing()
    1314    """
    1415
    15     def __init__(self): # {{{
     16    def __init__(self):  # {{{
    1617        self.mass_balance = float('NaN')
    17         self.requested_outputs      = []
     18        self.requested_outputs = []
    1819        self.isclimatology = 0
    19         #}}}
    20     def __repr__(self): # {{{
    21         string="   surface forcings parameters:"
    22         string="%s\n%s"%(string,fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]'))
    23         string="%s\n%s"%(string,fielddisplay(self,'isclimatology','repeat all forcings when past last forcing time (default false)'))
    24         string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
     20    #}}}
     21
     22    def __repr__(self):  # {{{
     23        string = "   surface forcings parameters:"
     24        string = "%s\n%s" % (string, fielddisplay(self, 'mass_balance', 'surface mass balance [m / yr ice eq]'))
     25        string = "%s\n%s" % (string, fielddisplay(self, 'isclimatology', 'repeat all forcings when past last forcing time (default false)'))
     26        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
    2527        return string
    26         #}}}
    27     def extrude(self,md): # {{{
     28    #}}}
    2829
    29         self.mass_balance=project3d(md,'vector',self.mass_balance,'type','node');
     30    def extrude(self, md):  # {{{
     31
     32        self.mass_balance = project3d(md, 'vector', self.mass_balance, 'type', 'node')
    3033        return self
    3134    #}}}
    32     def defaultoutputs(self,md): # {{{
     35
     36    def defaultoutputs(self, md):  # {{{
    3337        return []
    3438    #}}}
    35     def initialize(self,md): # {{{
    3639
     40    def initialize(self, md):  # {{{
    3741        if np.all(np.isnan(self.mass_balance)):
    38             self.mass_balance=np.zeros((md.mesh.numberofvertices))
     42            self.mass_balance = np.zeros((md.mesh.numberofvertices))
    3943            print("      no SMBforcing.mass_balance specified: values set as zero")
    4044
    4145        return self
    4246    #}}}
    43     def checkconsistency(self,md,solution,analyses):    # {{{
    4447
     48    def checkconsistency(self, md, solution, analyses):  # {{{
    4549        if 'MasstransportAnalysis' in analyses:
    46             md = checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1,'Inf',1)
     50            md = checkfield(md, 'fieldname', 'smb.mass_balance', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    4751
    4852        if 'BalancethicknessAnalysis' in analyses:
    49             md = checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
     53            md = checkfield(md, 'fieldname', 'smb.mass_balance', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
    5054
    51         md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
    52         md = checkfield(md,'fieldname','smb.isclimatology','values',[0,1])
    53         if (self.isclimatology>0):
    54             md = checkfield(md,'fieldname', 'smb.mass_balance', 'size',[md.mesh.numberofvertices+1],'message','mass_balance must have md.mesh.numberofvertices+1 rows in order to force a climatology')
     55        md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
     56        md = checkfield(md, 'fieldname', 'smb.isclimatology', 'values', [0, 1])
     57        if (self.isclimatology > 0):
     58            md = checkfield(md, 'fieldname', 'smb.mass_balance', 'size', [md.mesh.numberofvertices + 1], 'message', 'mass_balance must have md.mesh.numberofvertices + 1 rows in order to force a climatology')
    5559
    5660        return md
    5761    # }}}
    58     def marshall(self,prefix,md,fid):    # {{{
    5962
    60         yts=md.constants.yts
     63    def marshall(self, prefix, md, fid):  # {{{
     64        yts = md.constants.yts
    6165
    62         WriteData(fid,prefix,'name','md.smb.model','data',1,'format','Integer');
    63         WriteData(fid,prefix,'object',self,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    64         #WriteData(fid,prefix,'object',self,'class','smb','fieldname','mass_balance','format','CompressedMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
    65        
     66        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 1, 'format', 'Integer')
     67        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'mass_balance', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     68
    6669        #process requested outputs
    6770        outputs = self.requested_outputs
    6871        indices = [i for i, x in enumerate(outputs) if x == 'default']
    6972        if len(indices) > 0:
    70             outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    71             outputs    =outputscopy
    72         WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
    73         WriteData(fid,prefix,'object',self,'class','smb','fieldname','isclimatology','format','Boolean')
     73            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     74            outputs = outputscopy
     75        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
     76        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isclimatology', 'format', 'Boolean')
    7477
    7578    # }}}
  • issm/trunk-jpl/src/m/classes/SMBgemb.py

    r24194 r24213  
    55from project3d import project3d
    66
     7
    78class SMBgemb(object):
    8         """
    9         SMBgemb Class definition
    10 
    11            Usage:
    12               SMB = SMBgemb()
    13         """
    14 
    15         def __init__(self): # {{{
    16                 #each one of these properties is a transient forcing to the GEMB model, loaded from meteorological data derived
    17                 #from an automatic weather stations (AWS). Each property is therefore a matrix, of size (numberofvertices x number
    18                 #of time steps. )
    19 
    20                 #solution choices
    21                 #check these:
    22                 #isgraingrowth
    23                 #isalbedo
    24                 #isshortwave
    25                 #isthermal
    26                 #isaccumulation
    27                 #ismelt
    28                 #isdensification
    29                 #isturbulentflux
    30 
    31                 #inputs:
    32                 Ta    = float('NaN')    #2 m air temperature, in Kelvin
    33                 V     = float('NaN')    #wind speed (m/s-1)
    34                 dswrf = float('NaN')    #downward shortwave radiation flux [W/m^2]
    35                 dlwrf = float('NaN')    #downward longwave radiation flux [W/m^2]
    36                 P     = float('NaN')    #precipitation [mm w.e. / m^2]
    37                 eAir  = float('NaN')    #screen level vapor pressure [Pa]
    38                 pAir  = float('NaN')    #surface pressure [Pa]
    39                 Tmean = float('NaN')    #mean annual temperature [K]
    40                 Vmean = float('NaN') #mean annual wind velocity [m s-1]
    41                 C     = float('NaN')    #mean annual snow accumulation [kg m-2 yr-1]
    42                 Tz    = float('NaN')    #height above ground at which temperature (T) was sampled [m]
    43                 Vz    = float('NaN')    #height above ground at which wind (V) was sampled [m]
    44 
    45                 #optional inputs:
    46                 aValue  = float('NaN') #Albedo forcing at every element.  Used only if aIdx == 0.
    47                 teValue = float('NaN') #Outward longwave radiation thermal emissivity forcing at every element (default in code is 1)
    48 
    49                 # Initialization of snow properties
    50                 Dzini = float('NaN')    #cell depth (m)
    51                 Dini = float('NaN')     #snow density (kg m-3)
    52                 Reini = float('NaN')    #effective grain size (mm)
    53                 Gdnini = float('NaN')   #grain dricity (0-1)
    54                 Gspini = float('NaN')   #grain sphericity (0-1)
    55                 ECini = float('NaN')    #evaporation/condensation (kg m-2)
    56                 Wini = float('NaN')     #Water content (kg m-2)
    57                 Aini = float('NaN')     #albedo (0-1)
    58                 Tini = float('NaN')     #snow temperature (K)
    59                 Sizeini = float('NaN')  #Number of layers
    60 
    61                 #settings:
    62                 aIdx   = float('NaN')   #method for calculating albedo and subsurface absorption (default is 1)
    63                 # 0: direct input from aValue parameter
    64                 # 1: effective grain radius [Gardner & Sharp, 2009]
    65                 # 2: effective grain radius [Brun et al., 2009]
    66                 # 3: density and cloud amount [Greuell & Konzelmann, 1994]
    67                 # 4: exponential time decay & wetness [Bougamont & Bamber, 2005]
    68                 # 5: ingest MODIS mode, direct input from aValue parameter applied to surface ice only
    69                 swIdx  = float('NaN')   # apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 1)
    70                 denIdx = float('NaN')   #densification model to use (default is 2):
    71                 # 1 = emperical model of Herron and Langway (1980)
    72                 # 2 = semi-emperical model of Anthern et al. (2010)
    73                 # 3 = DO NOT USE: physical model from Appix B of Anthern et al. (2010)
    74                 # 4 = DO NOT USE: emperical model of Li and Zwally (2004)
    75                 # 5 = DO NOT USE: modified emperical model (4) by Helsen et al. (2008)
    76                 # 6 = Antarctica semi-emperical model of Ligtenberg et al. (2011)
    77                 # 7 = Greenland semi-emperical model of Kuipers Munneke et al. (2015)
    78                 dsnowIdx = float('NaN') #model for fresh snow accumulation density (default is 1):
    79                 # 0 = Original GEMB value, 150 kg/m^3
    80                 # 1 = Antarctica value of fresh snow density, 350 kg/m^3
    81                 # 2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (2008)
    82                 # 3 = Antarctica model of Kaspers et al. (2004)
    83                 # 4 = Greenland model of Kuipers Munneke et al. (2015)
    84 
    85                 zTop  = float('NaN')    # depth over which grid length is constant at the top of the snopack (default 10) [m]
    86                 dzTop = float('NaN')    # initial top vertical grid spacing (default .05) [m]
    87                 dzMin = float('NaN')    # initial min vertical allowable grid spacing (default dzTop/2) [m]
    88                 zY    = float('NaN')    # strech grid cells bellow top_z by a [top_dz * y ^ (cells bellow top_z)]
    89                 zMax = float('NaN')     #initial max model depth (default is min(thickness,250)) [m]
    90                 zMin = float('NaN')     #initial min model depth (default is min(thickness,130)) [m]
    91                 outputFreq = float('NaN')       #output frequency in days (default is monthly, 30)
    92 
    93                 #specific albedo parameters:
    94                 #Method 1 and 2:
    95                 aSnow = float('NaN')    # new snow albedo (0.64 - 0.89)
    96                 aIce  = float('NaN')    # range 0.27-0.58 for old snow
    97                 #Method 3: Radiation Correction Factors -> only used for met station data and Greuell & Konzelmann, 1994 albedo
    98                 cldFrac = float('NaN')  # average cloud amount
    99                 #Method 4: additonal tuning parameters albedo as a funtion of age and water content (Bougamont et al., 2005)
    100                 t0wet = float('NaN')    # time scale for wet snow (15-21.9)
    101                 t0dry = float('NaN')    # warm snow timescale (30)
    102                 K     = float('NaN')    # time scale temperature coef. (7)
    103                 adThresh = float('NaN') # Apply aIdx method to all areas with densities below this value,
    104                 # or else apply direct input value from aValue, allowing albedo to be altered.
    105                 # Default value is rho water (1023 kg m-3).
    106 
    107                 #densities:
    108                 InitDensityScaling =  float('NaN')      #initial scaling factor multiplying the density of ice, which describes the density of the snowpack.
    109 
    110                 #thermo:
    111                 ThermoDeltaTScaling = float('NaN') #scaling factor to multiply the thermal diffusion timestep (delta t)
    112 
    113                 requested_outputs      = []
    114 
    115                 #Several fields are missing from the standard GEMB model, which are capture intrinsically by ISSM.
    116                 #dateN: that's the last row of the above fields.
    117                 #dt:    included in dateN. Not an input.
    118                 #elev:  this is taken from the ISSM surface itself.
    119 
    120                 #}}}
    121         def __repr__(self): # {{{
    122                 #string = "   surface forcings parameters:"
    123                 #string = "#s\n#s"%(string,fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]'))
    124                 #string = "#s\n#s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
    125                 string = '   surface forcings for SMB GEMB model :'
    126                 string = "%s\n%s"%(string,fielddisplay(self,'issmbgradients','is smb gradients method activated (0 or 1, default is 0)'))
    127                 string = "%s\n%s"%(string,fielddisplay(self,'isgraingrowth','run grain growth module (default true)'))
    128                 string = "%s\n%s"%(string,fielddisplay(self,'isalbedo','run albedo module (default true)'))
    129                 string = "%s\n%s"%(string,fielddisplay(self,'isshortwave','run short wave module (default true)'))
    130                 string = "%s\n%s"%(string,fielddisplay(self,'isthermal','run thermal module (default true)'))
    131                 string = "%s\n%s"%(string,fielddisplay(self,'isaccumulation','run accumulation module (default true)'))
    132                 string = "%s\n%s"%(string,fielddisplay(self,'ismelt','run melting  module (default true)'))
    133                 string = "%s\n%s"%(string,fielddisplay(self,'isdensification','run densification module (default true)'))
    134                 string = "%s\n%s"%(string,fielddisplay(self,'isturbulentflux','run turbulant heat fluxes module (default true)'))
    135                 string = "%s\n%s"%(string,fielddisplay(self,'isclimatology','repeat all forcings when past last forcing time (default false)'))
    136                 string = "%s\n%s"%(string,fielddisplay(self,'Ta','2 m air temperature, in Kelvin'))
    137                 string = "%s\n%s"%(string,fielddisplay(self,'V','wind speed (m s-1)'))
    138                 string = "%s\n%s"%(string,fielddisplay(self,'dlwrf','downward shortwave radiation flux [W/m^2]'))
    139                 string = "%s\n%s"%(string,fielddisplay(self,'dswrf','downward longwave radiation flux [W/m^2]'))
    140                 string = "%s\n%s"%(string,fielddisplay(self,'P','precipitation [mm w.e. / m^2]'))
    141                 string = "%s\n%s"%(string,fielddisplay(self,'eAir','screen level vapor pressure [Pa]'))
    142                 string = "%s\n%s"%(string,fielddisplay(self,'pAir','surface pressure [Pa]'))
    143                 string = "%s\n%s"%(string,fielddisplay(self,'Tmean','mean annual temperature [K]'))
    144                 string = "%s\n%s"%(string,fielddisplay(self,'C','mean annual snow accumulation [kg m-2 yr-1]'))
    145                 string = "%s\n%s"%(string,fielddisplay(self,'Vmean','mean annual wind velocity [m s-1] (default 10 m/s)'))
    146                 string = "%s\n%s"%(string,fielddisplay(self,'Tz','height above ground at which temperature (T) was sampled [m]'))
    147                 string = "%s\n%s"%(string,fielddisplay(self,'Vz','height above ground at which wind (V) was sampled [m]'))
    148                 string = "%s\n%s"%(string,fielddisplay(self,'zTop','depth over which grid length is constant at the top of the snopack (default 10) [m]'))
    149                 string = "%s\n%s"%(string,fielddisplay(self,'dzTop','initial top vertical grid spacing (default .05) [m] '))
    150                 string = "%s\n%s"%(string,fielddisplay(self,'dzMin','initial min vertical allowable grid spacing (default dzMin/2) [m] '))
    151                 string = "%s\n%s"%(string,fielddisplay(self,'zMax','initial max model depth (default is min(thickness,500)) [m]'))
    152                 string = "%s\n%s"%(string,fielddisplay(self,'zMin','initial min model depth (default is min(thickness,30)) [m]'))
    153                 string = "%s\n%s"%(string,fielddisplay(self,'zY','strech grid cells bellow top_z by a [top_dz * y ^ (cells bellow top_z)]'))
    154                 string = "%s\n%s"%(string,fielddisplay(self,'InitDensityScaling',['initial scaling factor multiplying the density of ice','which describes the density of the snowpack.']))
    155                 string = "%s\n%s"%(string,fielddisplay(self,'ThermoDeltaTScaling','scaling factor to multiply the thermal diffusion timestep (delta t)'))
    156                 string = "%s\n%s"%(string,fielddisplay(self,'outputFreq','output frequency in days (default is monthly, 30)'))
    157                 string = "%s\n%s"%(string,fielddisplay(self,'adThresh','Apply aIdx method to all areas with densities below this value,','or else apply direct input value from aValue, allowing albedo to be altered.'))
    158                 string = "%s\n%s"%(string,fielddisplay(self,'aIdx',['method for calculating albedo and subsurface absorption (default is 1)',
    159                                                                                                                                                                                                                                 '0: direct input from aValue parameter',
    160                                                                                                                                                                                                                                 '1: effective grain radius [Gardner & Sharp, 2009]',
    161                                                                                                                                                                                                                                 '2: effective grain radius [Brun et al., 2009]',
    162                                                                                                                                                                                                                                 '3: density and cloud amount [Greuell & Konzelmann, 1994]',
    163                                                                                                                                                                                                                                 '4: exponential time decay & wetness [Bougamont & Bamber, 2005]']))
    164                 string = "%s\n%s"%(string,fielddisplay(self,'teValue','Outward longwave radiation thermal emissivity forcing at every element (default in code is 1)'))
    165                 #snow properties init
    166                 string = "%s\n%s"%(string,fielddisplay(self,'Dzini','Initial cell depth when restart [m]'))
    167                 string = "%s\n%s"%(string,fielddisplay(self,'Dini','Initial snow density when restart [kg m-3]'))
    168                 string = "%s\n%s"%(string,fielddisplay(self,'Reini','Initial grain size when restart [mm]'))
    169                 string = "%s\n%s"%(string,fielddisplay(self,'Gdnini','Initial grain dricity when restart [-]'))
    170                 string = "%s\n%s"%(string,fielddisplay(self,'Gspini','Initial grain sphericity when restart [-]'))
    171                 string = "%s\n%s"%(string,fielddisplay(self,'ECini','Initial evaporation/condensation when restart [kg m-2]'))
    172                 string = "%s\n%s"%(string,fielddisplay(self,'Wini','Initial snow water content when restart [kg m-2]'))
    173                 string = "%s\n%s"%(string,fielddisplay(self,'Aini','Initial albedo when restart [-]'))
    174                 string = "%s\n%s"%(string,fielddisplay(self,'Tini','Initial snow temperature when restart [K]'))
    175                 string = "%s\n%s"%(string,fielddisplay(self,'Sizeini','Initial number of layers when restart [K]'))
    176 
    177                 #additional albedo parameters:
    178                 if type(self.aIdx) == list or type(self.aIdx) == type(np.array([1,2])) and (self.aIdx == [1,2] or (1 in self.aIdx and 2 in self.aIdx)):
    179                         string = "%s\n%s"%(string,fielddisplay(self,'aSnow','new snow albedo (0.64 - 0.89)'))
    180                         string = "%s\n%s"%(string,fielddisplay(self,'aIce','albedo of ice (0.27-0.58)'))
    181                 elif elf.aIdx == 0:
    182                         string = "%s\n%s"%(string,fielddisplay(self,'aValue','Albedo forcing at every element.  Used only if aIdx == {0,5}'))
    183                 elif elf.aIdx == 5:
    184                         string = "%s\n%s"%(string,fielddisplay(self,'aValue','Albedo forcing at every element.  Used only if aIdx == {0,5}'))
    185                 elif self.aIdx == 3:
    186                         string = "%s\n%s"%(string,fielddisplay(self,'cldFrac','average cloud amount'))
    187                 elif self.aIdx == 4:
    188                         string = "%s\n%s"%(string,fielddisplay(self,'t0wet','time scale for wet snow (15-21.9) [d]'))
    189                         string = "%s\n%s"%(string,fielddisplay(self,'t0dry','warm snow timescale (30) [d]'))
    190                         string = "%s\n%s"%(string,fielddisplay(self,'K','time scale temperature coef. (7) [d]'))
    191 
    192                 string = "%s\n%s"%(string,fielddisplay(self,'swIdx','apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 1]'))
    193                 string = "%s\n%s"%(string,fielddisplay(self,'denIdx',['densification model to use (default is 2):',
    194                                                                                                                                                                                                                                         '1 = emperical model of Herron and Langway (1980)',
    195                                                                                                                                                                                                                                         '2 = semi-emperical model of Anthern et al. (2010)',
    196                                                                                                                                                                                                                                         '3 = DO NOT USE: physical model from Appix B of Anthern et al. (2010)',
    197                                                                                                                                                                                                                                         '4 = DO NOT USE: emperical model of Li and Zwally (2004)',
    198                                                                                                                                                                                                                                         '5 = DO NOT USE: modified emperical model (4) by Helsen et al. (2008)',
    199                                                                                                                                                                                                                                         '6 = Antarctica semi-emperical model of Ligtenberg et al. (2011)',
    200                                                                                                                                                                                                                                         '7 = Greenland semi-emperical model of Kuipers Munneke et al. (2015)']))
    201                 string = "%s\n%s"%(string,fielddisplay(self,'dsnowIdx',['model for fresh snow accumulation density (default is 1):',
    202                                                                                                                                                                                                                                                 '0 = Original GEMB value, 150 kg/m^3',
    203                                                                                                                                                                                                                                                 '1 = Antarctica value of fresh snow density, 350 kg/m^3',
    204                                                                                                                                                                                                                                                 '2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (2008)',
    205                                                                                                                                                                                                                                                 '3 = Antarctica model of Kaspers et al. (2004), Make sure to set Vmean accurately',
    206                                                                                                                                                                                                                                                 '4 = Greenland model of Kuipers Munneke et al. (2015)']));
    207                 string = "%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
    208                 return string
    209         #}}}
    210 
    211         def extrude(self,md): # {{{
    212 
    213                 self.Ta = project3d(md,'vector',self.Ta,'type','node')
    214                 self.V = project3d(md,'vector',self.V,'type','node')
    215                 self.dswrf = project3d(md,'vector',self.dswrf,'type','node')
    216                 self.dswrf = project3d(md,'vector',self.dswrf,'type','node')
    217                 self.P = project3d(md,'vector',self.P,'type','node')
    218                 self.eAir = project3d(md,'vector',self.eAir,'type','node')
    219                 self.pAir = project3d(md,'vector',self.pAir,'type','node')
    220 
    221                 if (aIdx == 0) and np.isnan(self.aValue):
    222                         self.aValue=project3d(md,'vector',self.aValue,'type','node');
    223                 if np.isnan(self.teValue):
    224                         self.teValue=project3d(md,'vector',self.teValue,'type','node');
    225 
    226                 return self
    227         #}}}
    228         def defaultoutputs(self,md): # {{{
    229                 return ['SmbMassBalance']
    230         #}}}
    231 
    232         def setdefaultparameters(self,mesh,geometry): # {{{
    233                 self.isgraingrowth = 1
    234                 self.isalbedo = 1
    235                 self.isshortwave = 1
    236                 self.isthermal = 1
    237                 self.isaccumulation = 1
    238                 self.ismelt = 1
    239                 self.isdensification = 1
    240                 self.isturbulentflux = 1
    241                 self.isclimatology = 0
    242 
    243                 self.aIdx = 1
    244                 self.swIdx = 1
    245                 self.denIdx = 2
    246                 self.dsnowIdx = 1
    247                 self.zTop = 10*np.ones((mesh.numberofelements,))
    248                 self.dzTop = .05* np.ones((mesh.numberofelements,))
    249                 self.dzMin = self.dzTop/2
    250                 self.InitDensityScaling = 1.0
    251                 self.ThermoDeltaTScaling = 1/11.0
    252 
    253                 self.Vmean = 10*np.ones((mesh.numberofelements,))
    254 
    255                 self.zMax = 250*np.ones((mesh.numberofelements,))
    256                 self.zMin = 130*np.ones((mesh.numberofelements,))
    257                 self.zY = 1.10*np.ones((mesh.numberofelements,))
    258                 self.outputFreq = 30
    259 
    260                 #additional albedo parameters
    261                 self.aSnow = 0.85
    262                 self.aIce = 0.48
    263                 self.cldFrac = 0.1
    264                 self.t0wet = 15
    265                 self.t0dry = 30
    266                 self.K = 7
    267                 self.adThresh = 1023
    268 
    269                 self.teValue = np.ones((mesh.numberofelements,));
    270                 self.aValue = self.aSnow*np.ones(mesh.numberofelements,);
    271 
    272                 self.Dzini = 0.05*np.ones((mesh.numberofelements,2))
    273                 self.Dini = 910.0*np.ones((mesh.numberofelements,2))
    274                 self.Reini = 2.5*np.ones((mesh.numberofelements,2))
    275                 self.Gdnini = 0.0*np.ones((mesh.numberofelements,2))
    276                 self.Gspini = 0.0*np.ones((mesh.numberofelements,2))
    277                 self.ECini = 0.0*np.ones((mesh.numberofelements,))
    278                 self.Wini = 0.0*np.ones((mesh.numberofelements,2))
    279                 self.Aini = self.aSnow*np.ones((mesh.numberofelements,2))
    280                 self.Tini = 273.15*np.ones((mesh.numberofelements,2))
    281 #               /!\ Default value of Tini must be equal to Tmean but don't know Tmean yet (computed when atmospheric forcings are interpolated on mesh).
    282 #               If initialization without restart, this value will be overwritten when snow parameters are retrieved in Element.cpp
    283                 self.Sizeini = 2*np.ones((mesh.numberofelements,))
    284         #}}}
    285 
    286         def checkconsistency(self,md,solution,analyses):    # {{{
    287 
    288                 md = checkfield(md,'fieldname','smb.isgraingrowth','values',[0,1])
    289                 md = checkfield(md,'fieldname','smb.isalbedo','values',[0,1])
    290                 md = checkfield(md,'fieldname','smb.isshortwave','values',[0,1])
    291                 md = checkfield(md,'fieldname','smb.isthermal','values',[0,1])
    292                 md = checkfield(md,'fieldname','smb.isaccumulation','values',[0,1])
    293                 md = checkfield(md,'fieldname','smb.ismelt','values',[0,1])
    294                 md = checkfield(md,'fieldname','smb.isdensification','values',[0,1])
    295                 md = checkfield(md,'fieldname','smb.isturbulentflux','values',[0,1])
    296                 md = checkfield(md,'fieldname','smb.isclimatology','values',[0,1])
    297 
    298                 md = checkfield(md,'fieldname','smb.Ta','timeseries',1,'NaN',1,'Inf',1,'>',273-100,'<',273+100) #-100/100 celsius min/max value
    299                 md = checkfield(md,'fieldname','smb.V','timeseries',1,'NaN',1,'Inf',1,'> = ',0,'<',45,'size',np.shape(self.Ta)) #max 500 km/h
    300                 md = checkfield(md,'fieldname','smb.dswrf','timeseries',1,'NaN',1,'Inf',1,'> = ',0,'< = ',1400,'size',np.shape(self.Ta))
    301                 md = checkfield(md,'fieldname','smb.dlwrf','timeseries',1,'NaN',1,'Inf',1,'> = ',0,'size',np.shape(self.Ta))
    302                 md = checkfield(md,'fieldname','smb.P','timeseries',1,'NaN',1,'Inf',1,'> = ',0,'< = ',100,'size',np.shape(self.Ta))
    303                 md = checkfield(md,'fieldname','smb.eAir','timeseries',1,'NaN',1,'Inf',1,'size',np.shape(self.Ta))
    304 
    305                 if (self.isclimatology>0):
    306                         md = checkfield(md,'fieldname', 'smb.Ta', 'size',[md.mesh.numberofelements+1],'message','Ta must have md.mesh.numberofelements+1 rows in order to force a climatology')
    307                         md = checkfield(md,'fieldname', 'smb.V', 'size',[md.mesh.numberofelements+1],'message','V must have md.mesh.numberofelements+1 rows in order to force a climatology')
    308                         md = checkfield(md,'fieldname', 'smb.dswrf', 'size',[md.mesh.numberofelements+1],'message','dswrf must have md.mesh.numberofelements+1 rows in order to force a climatology')
    309                         md = checkfield(md,'fieldname', 'smb.dlwrf', 'size',[md.mesh.numberofelements+1],'message','dlwrf must have md.mesh.numberofelements+1 rows in order to force a climatology')
    310                         md = checkfield(md,'fieldname', 'smb.P', 'size',[md.mesh.numberofelements+1],'message','P must have md.mesh.numberofelements+1 rows in order to force a climatology')
    311                         md = checkfield(md,'fieldname', 'smb.eAir', 'size',[md.mesh.numberofelements+1],'message','eAir must have md.mesh.numberofelements+1 rows in order to force a climatology')
    312 
    313                 md = checkfield(md,'fieldname','smb.Tmean','size',[md.mesh.numberofelements],'NaN',1,'Inf',1,'>',273-100,'<',273+100) #-100/100 celsius min/max value
    314                 md = checkfield(md,'fieldname','smb.C','size',[md.mesh.numberofelements],'NaN',1,'Inf',1,'> = ',0)
    315                 md = checkfield(md,'fieldname','smb.Vmean','size',[md.mesh.numberofelements],'NaN',1,'Inf',1,'> = ',0)
    316                 md = checkfield(md,'fieldname','smb.Tz','size',[md.mesh.numberofelements],'NaN',1,'Inf',1,'> = ',0,'< = ',5000)
    317                 md = checkfield(md,'fieldname','smb.Vz','size',[md.mesh.numberofelements],'NaN',1,'Inf',1,'> = ',0,'< = ',5000)
    318 
    319                 md = checkfield(md,'fieldname','smb.teValue','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',1);
    320 
    321                 md = checkfield(md,'fieldname','smb.aIdx','NaN',1,'Inf',1,'values',[0,1,2,3,4])
    322                 md = checkfield(md,'fieldname','smb.swIdx','NaN',1,'Inf',1,'values',[0,1])
    323                 md = checkfield(md,'fieldname','smb.denIdx','NaN',1,'Inf',1,'values',[1,2,3,4,5,6,7])
    324                 md = checkfield(md,'fieldname','smb.dsnowIdx','NaN',1,'Inf',1,'values',[0,1,2,3,4])
    325 
    326                 md = checkfield(md,'fieldname','smb.zTop','NaN',1,'Inf',1,'> = ',0)
    327                 md = checkfield(md,'fieldname','smb.dzTop','NaN',1,'Inf',1,'>',0)
    328                 md = checkfield(md,'fieldname','smb.dzMin','NaN',1,'Inf',1,'>',0)
    329                 md = checkfield(md,'fieldname','smb.zY','NaN',1,'Inf',1,'> = ',1)
    330                 md = checkfield(md,'fieldname','smb.outputFreq','NaN',1,'Inf',1,'>',0,'<',10*365) #10 years max
    331                 md = checkfield(md,'fieldname','smb.InitDensityScaling','NaN',1,'Inf',1,'> = ',0,'< = ',1)
    332                 md = checkfield(md,'fieldname','smb.ThermoDeltaTScaling','NaN',1,'Inf',1,'> = ',0,'< = ',1)
    333                 md = checkfield(md,'fieldname','smb.adThresh','NaN',1,'Inf',1,'>=',0)
    334 
    335                 if type(self.aIdx) == list or type(self.aIdx) == type(np.array([1,2])) and (self.aIdx == [1,2] or (1 in self.aIdx and 2 in self.aIdx)):
    336                         md = checkfield(md,'fieldname','smb.aSnow','NaN',1,'Inf',1,'> = ',.64,'< = ',.89)
    337                         md = checkfield(md,'fieldname','smb.aIce','NaN',1,'Inf',1,'> = ',.27,'< = ',.58)
    338                 elif self.aIdx == 0:
    339                         md = checkfield(md,'fieldname','smb.aValue','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',1);
    340                 elif self.aIdx == 3:
    341                         md = checkfield(md,'fieldname','smb.cldFrac','NaN',1,'Inf',1,'> = ',0,'< = ',1)
    342                 elif self.aIdx == 4:
    343                         md = checkfield(md,'fieldname','smb.t0wet','NaN',1,'Inf',1,'> = ',15,'< = ',21.9)
    344                         md = checkfield(md,'fieldname','smb.t0dry','NaN',1,'Inf',1,'> = ',30,'< = ',30)
    345                         md = checkfield(md,'fieldname','smb.K','NaN',1,'Inf',1,'> = ',7,'< = ',7)
    346 
    347 
    348                 #check zTop is < local thickness:
    349                 he = np.sum(md.geometry.thickness[md.mesh.elements-1],axis=1)/np.size(md.mesh.elements,1)
    350                 if np.any(he<self.zTop):
    351                         error('SMBgemb consistency check error: zTop should be smaller than local ice thickness')
    352 
    353                 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1)
    354                 return md
    355         # }}}
    356 
    357         def marshall(self,prefix,md,fid):    # {{{
    358 
    359                 yts = md.constants.yts
    360 
    361                 WriteData(fid,prefix,'name','md.smb.model','data',8,'format','Integer')
    362 
    363                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isgraingrowth','format','Boolean')
    364                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isalbedo','format','Boolean')
    365                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isshortwave','format','Boolean')
    366                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isthermal','format','Boolean')
    367                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isaccumulation','format','Boolean')
    368                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismelt','format','Boolean')
    369                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isdensification','format','Boolean')
    370                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isturbulentflux','format','Boolean')
    371                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isclimatology','format','Boolean')
    372 
    373                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Ta','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts)
    374                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','V','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts)
    375                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','dswrf','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts)
    376                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','dlwrf','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts)
    377                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','P','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts)
    378                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','eAir','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts)
    379                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','pAir','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts)
    380 
    381                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tmean','format','DoubleMat','mattype',2)
    382                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','C','format','DoubleMat','mattype',2)
    383                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Vmean','format','DoubleMat','mattype',2)
    384                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tz','format','DoubleMat','mattype',2)
    385                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Vz','format','DoubleMat','mattype',2)
    386                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','zTop','format','DoubleMat','mattype',2)
    387                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','dzTop','format','DoubleMat','mattype',2)
    388                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','dzMin','format','DoubleMat','mattype',2)
    389                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','zY','format','DoubleMat','mattype',2)
    390                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','zMax','format','DoubleMat','mattype',2)
    391                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','zMin','format','DoubleMat','mattype',2)
    392 
    393                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','aIdx','format','Integer')
    394                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','swIdx','format','Integer')
    395                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','denIdx','format','Integer')
    396                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','dsnowIdx','format','Integer')
    397                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','InitDensityScaling','format','Double')
    398                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','ThermoDeltaTScaling','format','Double')
    399                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','outputFreq','format','Double')
    400                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','aSnow','format','Double')
    401                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','aIce','format','Double')
    402                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','cldFrac','format','Double')
    403                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','t0wet','format','Double')
    404                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','t0dry','format','Double')
    405                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','K','format','Double')
    406                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','adThresh','format','Double');
    407 
    408                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','aValue','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
    409                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','teValue','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
    410 
    411                 #snow properties init
    412                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Dzini','format','DoubleMat','mattype',3)
    413                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Dini','format','DoubleMat','mattype',3)
    414                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Reini','format','DoubleMat','mattype',3)
    415                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Gdnini','format','DoubleMat','mattype',3)
    416                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Gspini','format','DoubleMat','mattype',3)
    417                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','ECini','format','DoubleMat','mattype',2)
    418                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Wini','format','DoubleMat','mattype',3)
    419                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Aini','format','DoubleMat','mattype',3)
    420                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tini','format','DoubleMat','mattype',3)
    421                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','Sizeini','format','IntMat','mattype',2)
    422 
    423                 #figure out dt from forcings:
    424                 time = self.Ta[-1] #assume all forcings are on the same time step
    425                 dtime = np.diff(time,n=1,axis=0)
    426                 dt = min(dtime) / yts
    427 
    428                 WriteData(fid,prefix,'data',dt,'name','md.smb.dt','format','Double','scale',yts)
    429 
    430                 # Check if smb_dt goes evenly into transient core time step
    431                 if (md.timestepping.time_step % dt >=  1e-10):
    432                         error('smb_dt/dt = #f. The number of SMB time steps in one transient core time step has to be an an integer',md.timestepping.time_step/dt)
    433 
    434                 #process requested outputs
    435                 outputs = self.requested_outputs
    436                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    437                 if len(indices) > 0:
    438                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    439                         outputs    =outputscopy
    440 
    441                 WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
    442         # }}}
     9    """
     10    SMBgemb Class definition
     11
     12       Usage:
     13          SMB = SMBgemb()
     14    """
     15
     16    def __init__(self):  # {{{
     17        #each one of these properties is a transient forcing to the GEMB model, loaded from meteorological data derived
     18        #from an automatic weather stations (AWS). Each property is therefore a matrix, of size (numberofvertices x number
     19        #of time steps. )
     20
     21        #solution choices
     22        #check these:
     23        #isgraingrowth
     24        #isalbedo
     25        #isshortwave
     26        #isthermal
     27        #isaccumulation
     28        #ismelt
     29        #isdensification
     30        #isturbulentflux
     31
     32        #inputs:
     33        self.Ta = float('NaN')  #2 m air temperature, in Kelvin
     34        self.V = float('NaN')  #wind speed (m / s - 1)
     35        self.dswrf = float('NaN')  #downward shortwave radiation flux [W / m^2]
     36        self.dlwrf = float('NaN')  #downward longwave radiation flux [W / m^2]
     37        self.P = float('NaN')  #precipitation [mm w.e. / m^2]
     38        self.eAir = float('NaN')  #screen level vapor pressure [Pa]
     39        self.pAir = float('NaN')  #surface pressure [Pa]
     40        self.Tmean = float('NaN')  #mean annual temperature [K]
     41        self.Vmean = float('NaN')  #mean annual wind velocity [m s - 1]
     42        self.C = float('NaN')  #mean annual snow accumulation [kg m - 2 yr - 1]
     43        self.Tz = float('NaN')  #height above ground at which temperature (T) was sampled [m]
     44        self.Vz = float('NaN')  #height above ground at which wind (V) was sampled [m]
     45
     46        #optional inputs:
     47        self.aValue = float('NaN')  #Albedo forcing at every element.  Used only if aIdx == 0.
     48        self.teValue = float('NaN')  #Outward longwave radiation thermal emissivity forcing at every element (default in code is 1)
     49
     50        # Initialization of snow properties
     51        self.Dzini = float('NaN')  #cell depth (m)
     52        self.Dini = float('NaN')  #snow density (kg m - 3)
     53        self.Reini = float('NaN')  #effective grain size (mm)
     54        self.Gdnini = float('NaN')  #grain dricity (0 - 1)
     55        self.Gspini = float('NaN')  #grain sphericity (0 - 1)
     56        self.ECini = float('NaN')  #evaporation/condensation (kg m - 2)
     57        self.Wini = float('NaN')  #Water content (kg m - 2)
     58        self.Aini = float('NaN')  #albedo (0 - 1)
     59        self.Tini = float('NaN')  #snow temperature (K)
     60        self.Sizeini = float('NaN')  #Number of layers
     61
     62        #settings:
     63        self.aIdx = float('NaN')  #method for calculating albedo and subsurface absorption (default is 1)
     64        # 0: direct input from aValue parameter
     65        # 1: effective grain radius [Gardner & Sharp, 2009]
     66        # 2: effective grain radius [Brun et al., 2009]
     67        # 3: density and cloud amount [Greuell & Konzelmann, 1994]
     68        # 4: exponential time decay & wetness [Bougamont & Bamber, 2005]
     69        # 5: ingest MODIS mode, direct input from aValue parameter applied to surface ice only
     70        self.swIdx = float('NaN')  # apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 1)
     71        self.denIdx = float('NaN')  #densification model to use (default is 2):
     72        # 1 = emperical model of Herron and Langway (1980)
     73        # 2 = semi - emperical model of Anthern et al. (2010)
     74        # 3 = DO NOT USE: physical model from Appix B of Anthern et al. (2010)
     75        # 4 = DO NOT USE: emperical model of Li and Zwally (2004)
     76        # 5 = DO NOT USE: modified emperical model (4) by Helsen et al. (2008)
     77        # 6 = Antarctica semi - emperical model of Ligtenberg et al. (2011)
     78        # 7 = Greenland semi - emperical model of Kuipers Munneke et al. (2015)
     79        self.dsnowIdx = float('NaN')  #model for fresh snow accumulation density (default is 1):
     80        # 0 = Original GEMB value, 150 kg / m^3
     81        # 1 = Antarctica value of fresh snow density, 350 kg / m^3
     82        # 2 = Greenland value of fresh snow density, 315 kg / m^3, Fausto et al. (2008)
     83        # 3 = Antarctica model of Kaspers et al. (2004)
     84        # 4 = Greenland model of Kuipers Munneke et al. (2015)
     85
     86        self.zTop = float('NaN')  # depth over which grid length is constant at the top of the snopack (default 10) [m]
     87        self.dzTop = float('NaN')  # initial top vertical grid spacing (default .05) [m]
     88        self.dzMin = float('NaN')  # initial min vertical allowable grid spacing (default dzTop / 2) [m]
     89        self.zY = float('NaN')  # strech grid cells bellow top_z by a [top_dz * y ^ (cells bellow top_z)]
     90        self.zMax = float('NaN')  #initial max model depth (default is min(thickness, 250)) [m]
     91        self.zMin = float('NaN')  #initial min model depth (default is min(thickness, 130)) [m]
     92        self.outputFreq = float('NaN')  #output frequency in days (default is monthly, 30)
     93
     94        #specific albedo parameters:
     95        #Method 1 and 2:
     96        self.aSnow = float('NaN')  # new snow albedo (0.64 - 0.89)
     97        self.aIce = float('NaN')  # range 0.27 - 0.58 for old snow
     98        #Method 3: Radiation Correction Factors - > only used for met station data and Greuell & Konzelmann, 1994 albedo
     99        self.cldFrac = float('NaN')  # average cloud amount
     100        #Method 4: additonal tuning parameters albedo as a funtion of age and water content (Bougamont et al., 2005)
     101        self.t0wet = float('NaN')  # time scale for wet snow (15 - 21.9)
     102        self.t0dry = float('NaN')  # warm snow timescale (30)
     103        self.K = float('NaN')  # time scale temperature coef. (7)
     104        self.adThresh = float('NaN')  # Apply aIdx method to all areas with densities below this value,
     105        # or else apply direct input value from aValue, allowing albedo to be altered.
     106        # Default value is rho water (1023 kg m - 3).
     107
     108        #densities:
     109        self.InitDensityScaling = float('NaN')  #initial scaling factor multiplying the density of ice, which describes the density of the snowpack.
     110
     111        #thermo:
     112        self.ThermoDeltaTScaling = float('NaN')  #scaling factor to multiply the thermal diffusion timestep (delta t)
     113
     114        self.requested_outputs = []
     115
     116    #Several fields are missing from the standard GEMB model, which are capture intrinsically by ISSM.
     117    #dateN: that's the last row of the above fields.
     118    #dt:    included in dateN. Not an input.
     119    #elev:  this is taken from the ISSM surface itself.
     120
     121    #}}}
     122
     123    def __repr__(self):  # {{{
     124        #string = "   surface forcings parameters:"
     125        #string = "  #s\n  #s" % (string, fielddisplay(self, 'mass_balance', 'surface mass balance [m / yr ice eq]'))
     126        #string = "  #s\n  #s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
     127        string = '   surface forcings for SMB GEMB model :'
     128        string = "%s\n%s" % (string, fielddisplay(self, 'issmbgradients', 'is smb gradients method activated (0 or 1, default is 0)'))
     129        string = "%s\n%s" % (string, fielddisplay(self, 'isgraingrowth', 'run grain growth module (default true)'))
     130        string = "%s\n%s" % (string, fielddisplay(self, 'isalbedo', 'run albedo module (default true)'))
     131        string = "%s\n%s" % (string, fielddisplay(self, 'isshortwave', 'run short wave module (default true)'))
     132        string = "%s\n%s" % (string, fielddisplay(self, 'isthermal', 'run thermal module (default true)'))
     133        string = "%s\n%s" % (string, fielddisplay(self, 'isaccumulation', 'run accumulation module (default true)'))
     134        string = "%s\n%s" % (string, fielddisplay(self, 'ismelt', 'run melting  module (default true)'))
     135        string = "%s\n%s" % (string, fielddisplay(self, 'isdensification', 'run densification module (default true)'))
     136        string = "%s\n%s" % (string, fielddisplay(self, 'isturbulentflux', 'run turbulant heat fluxes module (default true)'))
     137        string = "%s\n%s" % (string, fielddisplay(self, 'isclimatology', 'repeat all forcings when past last forcing time (default false)'))
     138        string = "%s\n%s" % (string, fielddisplay(self, 'Ta', '2 m air temperature, in Kelvin'))
     139        string = "%s\n%s" % (string, fielddisplay(self, 'V', 'wind speed (m s - 1)'))
     140        string = "%s\n%s" % (string, fielddisplay(self, 'dlwrf', 'downward shortwave radiation flux [W / m^2]'))
     141        string = "%s\n%s" % (string, fielddisplay(self, 'dswrf', 'downward longwave radiation flux [W / m^2]'))
     142        string = "%s\n%s" % (string, fielddisplay(self, 'P', 'precipitation [mm w.e. / m^2]'))
     143        string = "%s\n%s" % (string, fielddisplay(self, 'eAir', 'screen level vapor pressure [Pa]'))
     144        string = "%s\n%s" % (string, fielddisplay(self, 'pAir', 'surface pressure [Pa]'))
     145        string = "%s\n%s" % (string, fielddisplay(self, 'Tmean', 'mean annual temperature [K]'))
     146        string = "%s\n%s" % (string, fielddisplay(self, 'C', 'mean annual snow accumulation [kg m - 2 yr - 1]'))
     147        string = "%s\n%s" % (string, fielddisplay(self, 'Vmean', 'mean annual wind velocity [m s - 1] (default 10 m / s)'))
     148        string = "%s\n%s" % (string, fielddisplay(self, 'Tz', 'height above ground at which temperature (T) was sampled [m]'))
     149        string = "%s\n%s" % (string, fielddisplay(self, 'Vz', 'height above ground at which wind (V) was sampled [m]'))
     150        string = "%s\n%s" % (string, fielddisplay(self, 'zTop', 'depth over which grid length is constant at the top of the snopack (default 10) [m]'))
     151        string = "%s\n%s" % (string, fielddisplay(self, 'dzTop', 'initial top vertical grid spacing (default .05) [m] '))
     152        string = "%s\n%s" % (string, fielddisplay(self, 'dzMin', 'initial min vertical allowable grid spacing (default dzMin / 2) [m] '))
     153        string = "%s\n%s" % (string, fielddisplay(self, 'zMax', 'initial max model depth (default is min(thickness, 500)) [m]'))
     154        string = "%s\n%s" % (string, fielddisplay(self, 'zMin', 'initial min model depth (default is min(thickness, 30)) [m]'))
     155        string = "%s\n%s" % (string, fielddisplay(self, 'zY', 'strech grid cells bellow top_z by a [top_dz * y ^ (cells bellow top_z)]'))
     156        string = "%s\n%s" % (string, fielddisplay(self, 'InitDensityScaling', ['initial scaling factor multiplying the density of ice', 'which describes the density of the snowpack.']))
     157        string = "%s\n%s" % (string, fielddisplay(self, 'ThermoDeltaTScaling', 'scaling factor to multiply the thermal diffusion timestep (delta t)'))
     158        string = "%s\n%s" % (string, fielddisplay(self, 'outputFreq', 'output frequency in days (default is monthly, 30)'))
     159        string = "%s\n%s" % (string, fielddisplay(self, 'adThresh', 'Apply aIdx method to all areas with densities below this value, ', 'or else apply direct input value from aValue, allowing albedo to be altered.'))
     160        string = "%s\n%s" % (string, fielddisplay(self, 'aIdx', ['method for calculating albedo and subsurface absorption (default is 1)',
     161                                                                 '0: direct input from aValue parameter',
     162                                                                 '1: effective grain radius [Gardner & Sharp, 2009]',
     163                                                                 '2: effective grain radius [Brun et al., 2009]',
     164                                                                 '3: density and cloud amount [Greuell & Konzelmann, 1994]',
     165                                                                 '4: exponential time decay & wetness [Bougamont & Bamber, 2005]']))
     166        string = "%s\n%s" % (string, fielddisplay(self, 'teValue', 'Outward longwave radiation thermal emissivity forcing at every element (default in code is 1)'))
     167        #snow properties init
     168        string = "%s\n%s" % (string, fielddisplay(self, 'Dzini', 'Initial cell depth when restart [m]'))
     169        string = "%s\n%s" % (string, fielddisplay(self, 'Dini', 'Initial snow density when restart [kg m - 3]'))
     170        string = "%s\n%s" % (string, fielddisplay(self, 'Reini', 'Initial grain size when restart [mm]'))
     171        string = "%s\n%s" % (string, fielddisplay(self, 'Gdnini', 'Initial grain dricity when restart [ - ]'))
     172        string = "%s\n%s" % (string, fielddisplay(self, 'Gspini', 'Initial grain sphericity when restart [ - ]'))
     173        string = "%s\n%s" % (string, fielddisplay(self, 'ECini', 'Initial evaporation / condensation when restart [kg m - 2]'))
     174        string = "%s\n%s" % (string, fielddisplay(self, 'Wini', 'Initial snow water content when restart [kg m - 2]'))
     175        string = "%s\n%s" % (string, fielddisplay(self, 'Aini', 'Initial albedo when restart [ - ]'))
     176        string = "%s\n%s" % (string, fielddisplay(self, 'Tini', 'Initial snow temperature when restart [K]'))
     177        string = "%s\n%s" % (string, fielddisplay(self, 'Sizeini', 'Initial number of layers when restart [K]'))
     178
     179        #additional albedo parameters:
     180        if isinstance(self.aIdx, list) or isinstance(self.aIdx, np.ndarray) and (self.aIdx == [1, 2] or (1 in self.aIdx and 2 in self.aIdx)):
     181            string = "%s\n%s" % (string, fielddisplay(self, 'aSnow', 'new snow albedo (0.64 - 0.89)'))
     182            string = "%s\n%s" % (string, fielddisplay(self, 'aIce', 'albedo of ice (0.27 - 0.58)'))
     183        elif elf.aIdx == 0:
     184            string = "%s\n%s" % (string, fielddisplay(self, 'aValue', 'Albedo forcing at every element.  Used only if aIdx == {0, 5}'))
     185        elif elf.aIdx == 5:
     186            string = "%s\n%s" % (string, fielddisplay(self, 'aValue', 'Albedo forcing at every element.  Used only if aIdx == {0, 5}'))
     187        elif self.aIdx == 3:
     188            string = "%s\n%s" % (string, fielddisplay(self, 'cldFrac', 'average cloud amount'))
     189        elif self.aIdx == 4:
     190            string = "%s\n%s" % (string, fielddisplay(self, 't0wet', 'time scale for wet snow (15 - 21.9) [d]'))
     191            string = "%s\n%s" % (string, fielddisplay(self, 't0dry', 'warm snow timescale (30) [d]'))
     192            string = "%s\n%s" % (string, fielddisplay(self, 'K', 'time scale temperature coef. (7) [d]'))
     193
     194        string = "%s\n%s" % (string, fielddisplay(self, 'swIdx', 'apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 1]'))
     195        string = "%s\n%s" % (string, fielddisplay(self, 'denIdx', ['densification model to use (default is 2):',
     196                                                                   '1 = emperical model of Herron and Langway (1980)',
     197                                                                   '2 = semi - emperical model of Anthern et al. (2010)',
     198                                                                   '3 = DO NOT USE: physical model from Appix B of Anthern et al. (2010)',
     199                                                                   '4 = DO NOT USE: emperical model of Li and Zwally (2004)',
     200                                                                   '5 = DO NOT USE: modified emperical model (4) by Helsen et al. (2008)',
     201                                                                   '6 = Antarctica semi - emperical model of Ligtenberg et al. (2011)',
     202                                                                   '7 = Greenland semi - emperical model of Kuipers Munneke et al. (2015)']))
     203        string = "%s\n%s" % (string, fielddisplay(self, 'dsnowIdx', ['model for fresh snow accumulation density (default is 1):',
     204                                                                     '0 = Original GEMB value, 150 kg / m^3',
     205                                                                     '1 = Antarctica value of fresh snow density, 350 kg / m^3',
     206                                                                     '2 = Greenland value of fresh snow density, 315 kg / m^3, Fausto et al. (2008)',
     207                                                                     '3 = Antarctica model of Kaspers et al. (2004), Make sure to set Vmean accurately',
     208                                                                     '4 = Greenland model of Kuipers Munneke et al. (2015)']))
     209        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
     210        return string
     211    #}}}
     212
     213    def extrude(self, md):  # {{{
     214        self.Ta = project3d(md, 'vector', self.Ta, 'type', 'node')
     215        self.V = project3d(md, 'vector', self.V, 'type', 'node')
     216        self.dswrf = project3d(md, 'vector', self.dswrf, 'type', 'node')
     217        self.dswrf = project3d(md, 'vector', self.dswrf, 'type', 'node')
     218        self.P = project3d(md, 'vector', self.P, 'type', 'node')
     219        self.eAir = project3d(md, 'vector', self.eAir, 'type', 'node')
     220        self.pAir = project3d(md, 'vector', self.pAir, 'type', 'node')
     221
     222        if (self.aIdx == 0) and np.isnan(self.aValue):
     223            self.aValue = project3d(md, 'vector', self.aValue, 'type', 'node')
     224        if np.isnan(self.teValue):
     225            self.teValue = project3d(md, 'vector', self.teValue, 'type', 'node')
     226
     227        return self
     228    #}}}
     229
     230    def defaultoutputs(self, md):  # {{{
     231        return ['SmbMassBalance']
     232    #}}}
     233
     234    def setdefaultparameters(self, mesh, geometry):  # {{{
     235        self.isgraingrowth = 1
     236        self.isalbedo = 1
     237        self.isshortwave = 1
     238        self.isthermal = 1
     239        self.isaccumulation = 1
     240        self.ismelt = 1
     241        self.isdensification = 1
     242        self.isturbulentflux = 1
     243        self.isclimatology = 0
     244
     245        self.aIdx = 1
     246        self.swIdx = 1
     247        self.denIdx = 2
     248        self.dsnowIdx = 1
     249        self.zTop = 10 * np.ones((mesh.numberofelements, ))
     250        self.dzTop = .05 * np.ones((mesh.numberofelements, ))
     251        self.dzMin = self.dzTop / 2
     252        self.InitDensityScaling = 1.0
     253        self.ThermoDeltaTScaling = 1 / 11.0
     254
     255        self.Vmean = 10 * np.ones((mesh.numberofelements, ))
     256
     257        self.zMax = 250 * np.ones((mesh.numberofelements, ))
     258        self.zMin = 130 * np.ones((mesh.numberofelements, ))
     259        self.zY = 1.10 * np.ones((mesh.numberofelements, ))
     260        self.outputFreq = 30
     261
     262    #additional albedo parameters
     263        self.aSnow = 0.85
     264        self.aIce = 0.48
     265        self.cldFrac = 0.1
     266        self.t0wet = 15
     267        self.t0dry = 30
     268        self.K = 7
     269        self.adThresh = 1023
     270
     271        self.teValue = np.ones((mesh.numberofelements, ))
     272        self.aValue = self.aSnow * np.ones(mesh.numberofelements, )
     273
     274        self.Dzini = 0.05 * np.ones((mesh.numberofelements, 2))
     275        self.Dini = 910.0 * np.ones((mesh.numberofelements, 2))
     276        self.Reini = 2.5 * np.ones((mesh.numberofelements, 2))
     277        self.Gdnini = 0.0 * np.ones((mesh.numberofelements, 2))
     278        self.Gspini = 0.0 * np.ones((mesh.numberofelements, 2))
     279        self.ECini = 0.0 * np.ones((mesh.numberofelements, ))
     280        self.Wini = 0.0 * np.ones((mesh.numberofelements, 2))
     281        self.Aini = self.aSnow * np.ones((mesh.numberofelements, 2))
     282        self.Tini = 273.15 * np.ones((mesh.numberofelements, 2))
     283        #          / !\ Default value of Tini must be equal to Tmean but don't know Tmean yet (computed when atmospheric forcings are interpolated on mesh).
     284        #         If initialization without restart, this value will be overwritten when snow parameters are retrieved in Element.cpp
     285        self.Sizeini = 2 * np.ones((mesh.numberofelements, ))
     286    #}}}
     287
     288    def checkconsistency(self, md, solution, analyses):  # {{{
     289        md = checkfield(md, 'fieldname', 'smb.isgraingrowth', 'values', [0, 1])
     290        md = checkfield(md, 'fieldname', 'smb.isalbedo', 'values', [0, 1])
     291        md = checkfield(md, 'fieldname', 'smb.isshortwave', 'values', [0, 1])
     292        md = checkfield(md, 'fieldname', 'smb.isthermal', 'values', [0, 1])
     293        md = checkfield(md, 'fieldname', 'smb.isaccumulation', 'values', [0, 1])
     294        md = checkfield(md, 'fieldname', 'smb.ismelt', 'values', [0, 1])
     295        md = checkfield(md, 'fieldname', 'smb.isdensification', 'values', [0, 1])
     296        md = checkfield(md, 'fieldname', 'smb.isturbulentflux', 'values', [0, 1])
     297        md = checkfield(md, 'fieldname', 'smb.isclimatology', 'values', [0, 1])
     298
     299        md = checkfield(md, 'fieldname', 'smb.Ta', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '>', 273 - 100, '<', 273 + 100)  # - 100 / 100 celsius min / max value
     300        md = checkfield(md, 'fieldname', 'smb.V', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '>=', 0, '<', 45, 'size', np.shape(self.Ta))  #max 500 km / h
     301        md = checkfield(md, 'fieldname', 'smb.dswrf', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '>=', 0, '<=', 1400, 'size', np.shape(self.Ta))
     302        md = checkfield(md, 'fieldname', 'smb.dlwrf', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '>=', 0, 'size', np.shape(self.Ta))
     303        md = checkfield(md, 'fieldname', 'smb.P', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '>=', 0, '<=', 100, 'size', np.shape(self.Ta))
     304        md = checkfield(md, 'fieldname', 'smb.eAir', 'timeseries', 1, 'NaN', 1, 'Inf', 1, 'size', np.shape(self.Ta))
     305
     306        if (self.isclimatology > 0):
     307            md = checkfield(md, 'fieldname', 'smb.Ta', 'size', [md.mesh.numberofelements + 1], 'message', 'Ta must have md.mesh.numberofelements + 1 rows in order to force a climatology')
     308            md = checkfield(md, 'fieldname', 'smb.V', 'size', [md.mesh.numberofelements + 1], 'message', 'V must have md.mesh.numberofelements + 1 rows in order to force a climatology')
     309            md = checkfield(md, 'fieldname', 'smb.dswrf', 'size', [md.mesh.numberofelements + 1], 'message', 'dswrf must have md.mesh.numberofelements + 1 rows in order to force a climatology')
     310            md = checkfield(md, 'fieldname', 'smb.dlwrf', 'size', [md.mesh.numberofelements + 1], 'message', 'dlwrf must have md.mesh.numberofelements + 1 rows in order to force a climatology')
     311            md = checkfield(md, 'fieldname', 'smb.P', 'size', [md.mesh.numberofelements + 1], 'message', 'P must have md.mesh.numberofelements + 1 rows in order to force a climatology')
     312            md = checkfield(md, 'fieldname', 'smb.eAir', 'size', [md.mesh.numberofelements + 1], 'message', 'eAir must have md.mesh.numberofelements + 1 rows in order to force a climatology')
     313
     314        md = checkfield(md, 'fieldname', 'smb.Tmean', 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1, '>', 273 - 100, '<', 273 + 100)  # - 100 / 100 celsius min / max value
     315        md = checkfield(md, 'fieldname', 'smb.C', 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1, '>=', 0)
     316        md = checkfield(md, 'fieldname', 'smb.Vmean', 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1, '>=', 0)
     317        md = checkfield(md, 'fieldname', 'smb.Tz', 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1, '>=', 0, '<=', 5000)
     318        md = checkfield(md, 'fieldname', 'smb.Vz', 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1, '>=', 0, '<=', 5000)
     319
     320        md = checkfield(md, 'fieldname', 'smb.teValue', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '>=', 0, '<=', 1)
     321
     322        md = checkfield(md, 'fieldname', 'smb.aIdx', 'NaN', 1, 'Inf', 1, 'values', [0, 1, 2, 3, 4])
     323        md = checkfield(md, 'fieldname', 'smb.swIdx', 'NaN', 1, 'Inf', 1, 'values', [0, 1])
     324        md = checkfield(md, 'fieldname', 'smb.denIdx', 'NaN', 1, 'Inf', 1, 'values', [1, 2, 3, 4, 5, 6, 7])
     325        md = checkfield(md, 'fieldname', 'smb.dsnowIdx', 'NaN', 1, 'Inf', 1, 'values', [0, 1, 2, 3, 4])
     326
     327        md = checkfield(md, 'fieldname', 'smb.zTop', 'NaN', 1, 'Inf', 1, '>=', 0)
     328        md = checkfield(md, 'fieldname', 'smb.dzTop', 'NaN', 1, 'Inf', 1, '>', 0)
     329        md = checkfield(md, 'fieldname', 'smb.dzMin', 'NaN', 1, 'Inf', 1, '>', 0)
     330        md = checkfield(md, 'fieldname', 'smb.zY', 'NaN', 1, 'Inf', 1, '>=', 1)
     331        md = checkfield(md, 'fieldname', 'smb.outputFreq', 'NaN', 1, 'Inf', 1, '>', 0, '<', 10 * 365)  #10 years max
     332        md = checkfield(md, 'fieldname', 'smb.InitDensityScaling', 'NaN', 1, 'Inf', 1, '>=', 0, '<=', 1)
     333        md = checkfield(md, 'fieldname', 'smb.ThermoDeltaTScaling', 'NaN', 1, 'Inf', 1, '>=', 0, '<=', 1)
     334        md = checkfield(md, 'fieldname', 'smb.adThresh', 'NaN', 1, 'Inf', 1, '>=', 0)
     335
     336        if isinstance(self.aIdx, list) or isinstance(self.aIdx, np.ndarray) and (self.aIdx == [1, 2] or (1 in self.aIdx and 2 in self.aIdx)):
     337            md = checkfield(md, 'fieldname', 'smb.aSnow', 'NaN', 1, 'Inf', 1, '>=', .64, '<=', .89)
     338            md = checkfield(md, 'fieldname', 'smb.aIce', 'NaN', 1, 'Inf', 1, '>=', .27, '<=', .58)
     339        elif self.aIdx == 0:
     340            md = checkfield(md, 'fieldname', 'smb.aValue', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '>=', 0, '<=', 1)
     341        elif self.aIdx == 3:
     342            md = checkfield(md, 'fieldname', 'smb.cldFrac', 'NaN', 1, 'Inf', 1, '>=', 0, '<=', 1)
     343        elif self.aIdx == 4:
     344            md = checkfield(md, 'fieldname', 'smb.t0wet', 'NaN', 1, 'Inf', 1, '>=', 15, '<=', 21.9)
     345            md = checkfield(md, 'fieldname', 'smb.t0dry', 'NaN', 1, 'Inf', 1, '>=', 30, '<=', 30)
     346            md = checkfield(md, 'fieldname', 'smb.K', 'NaN', 1, 'Inf', 1, '>=', 7, '<=', 7)
     347
     348        #check zTop is < local thickness:
     349        he = np.sum(md.geometry.thickness[md.mesh.elements - 1], axis=1) / np.size(md.mesh.elements, 1)
     350        if np.any(he < self.zTop):
     351            error('SMBgemb consistency check error: zTop should be smaller than local ice thickness')
     352
     353        md = checkfield(md, 'fieldname', 'smb.requested_outputs', 'stringrow', 1)
     354        return md
     355    # }}}
     356
     357    def marshall(self, prefix, md, fid):  # {{{
     358        yts = md.constants.yts
     359
     360        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 8, 'format', 'Integer')
     361
     362        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isgraingrowth', 'format', 'Boolean')
     363        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isalbedo', 'format', 'Boolean')
     364        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isshortwave', 'format', 'Boolean')
     365        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isthermal', 'format', 'Boolean')
     366        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isaccumulation', 'format', 'Boolean')
     367        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ismelt', 'format', 'Boolean')
     368        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isdensification', 'format', 'Boolean')
     369        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isturbulentflux', 'format', 'Boolean')
     370        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isclimatology', 'format', 'Boolean')
     371
     372        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Ta', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
     373        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'V', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
     374        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'dswrf', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
     375        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'dlwrf', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
     376        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'P', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
     377        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'eAir', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
     378        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'pAir', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
     379
     380        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tmean', 'format', 'DoubleMat', 'mattype', 2)
     381        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'C', 'format', 'DoubleMat', 'mattype', 2)
     382        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Vmean', 'format', 'DoubleMat', 'mattype', 2)
     383        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tz', 'format', 'DoubleMat', 'mattype', 2)
     384        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Vz', 'format', 'DoubleMat', 'mattype', 2)
     385        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'zTop', 'format', 'DoubleMat', 'mattype', 2)
     386        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'dzTop', 'format', 'DoubleMat', 'mattype', 2)
     387        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'dzMin', 'format', 'DoubleMat', 'mattype', 2)
     388        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'zY', 'format', 'DoubleMat', 'mattype', 2)
     389        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'zMax', 'format', 'DoubleMat', 'mattype', 2)
     390        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'zMin', 'format', 'DoubleMat', 'mattype', 2)
     391
     392        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'aIdx', 'format', 'Integer')
     393        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'swIdx', 'format', 'Integer')
     394        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'denIdx', 'format', 'Integer')
     395        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'dsnowIdx', 'format', 'Integer')
     396        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'InitDensityScaling', 'format', 'Double')
     397        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ThermoDeltaTScaling', 'format', 'Double')
     398        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'outputFreq', 'format', 'Double')
     399        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'aSnow', 'format', 'Double')
     400        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'aIce', 'format', 'Double')
     401        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'cldFrac', 'format', 'Double')
     402        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 't0wet', 'format', 'Double')
     403        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 't0dry', 'format', 'Double')
     404        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'K', 'format', 'Double')
     405        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'adThresh', 'format', 'Double')
     406
     407        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'aValue', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
     408        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'teValue', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
     409
     410    #snow properties init
     411        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Dzini', 'format', 'DoubleMat', 'mattype', 3)
     412        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Dini', 'format', 'DoubleMat', 'mattype', 3)
     413        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Reini', 'format', 'DoubleMat', 'mattype', 3)
     414        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Gdnini', 'format', 'DoubleMat', 'mattype', 3)
     415        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Gspini', 'format', 'DoubleMat', 'mattype', 3)
     416        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ECini', 'format', 'DoubleMat', 'mattype', 2)
     417        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Wini', 'format', 'DoubleMat', 'mattype', 3)
     418        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Aini', 'format', 'DoubleMat', 'mattype', 3)
     419        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tini', 'format', 'DoubleMat', 'mattype', 3)
     420        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Sizeini', 'format', 'IntMat', 'mattype', 2)
     421
     422    #figure out dt from forcings:
     423        time = self.Ta[-1]  #assume all forcings are on the same time step
     424        dtime = np.diff(time, n=1, axis=0)
     425        dt = min(dtime) / yts
     426
     427        WriteData(fid, prefix, 'data', dt, 'name', 'md.smb.dt', 'format', 'Double', 'scale', yts)
     428
     429    # Check if smb_dt goes evenly into transient core time step
     430        if (md.timestepping.time_step % dt >= 1e-10):
     431            error('smb_dt/dt =  #f. The number of SMB time steps in one transient core time step has to be an an integer', md.timestepping.time_step / dt)
     432
     433    #process requested outputs
     434        outputs = self.requested_outputs
     435        indices = [i for i, x in enumerate(outputs) if x == 'default']
     436        if len(indices) > 0:
     437            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     438            outputs = outputscopy
     439
     440        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
     441    # }}}
  • issm/trunk-jpl/src/m/classes/SMBgradients.py

    r21049 r24213  
    22from checkfield import checkfield
    33from WriteData import WriteData
    4 from project3d import project3d
     4
    55
    66class SMBgradients(object):
    7         """
    8         SMBgradients Class definition
     7    """
     8    SMBgradients Class definition
    99
    10            Usage:
    11               SMBgradients=SMBgradients();
    12         """
     10       Usage:
     11          SMBgradients = SMBgradients()
     12    """
    1313
    14         def __init__(self): # {{{
    15                 self.href    = float('NaN')
    16                 self.smbref  = float('NaN')
    17                 self.b_pos   = float('NaN')
    18                 self.b_neg   = float('NaN')
    19                 self.requested_outputs      = []
    20                 #}}}
    21         def __repr__(self): # {{{
    22                 string="   surface forcings parameters:"
     14    def __init__(self):  # {{{
     15        self.href = float('NaN')
     16        self.smbref = float('NaN')
     17        self.b_pos = float('NaN')
     18        self.b_neg = float('NaN')
     19        self.requested_outputs = []
     20    #}}}
    2321
    24                 string="%s\n%s"%(string,fielddisplay(self,'issmbgradients','is smb gradients method activated (0 or 1, default is 0)'))
    25                 string="%s\n%s"%(string,fielddisplay(self,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method'))
    26                 string="%s\n%s"%(string,fielddisplay(self,'smbref',' reference smb from which deviation is calculated in smb gradients method'))
    27                 string="%s\n%s"%(string,fielddisplay(self,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated'))
    28                 string="%s\n%s"%(string,fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated'))
    29                 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
     22    def __repr__(self):  # {{{
     23        string = "   surface forcings parameters:"
    3024
    31                 return string
    32                 #}}}
    33         def extrude(self,md): # {{{
     25        string = "%s\n%s" % (string, fielddisplay(self, 'issmbgradients', 'is smb gradients method activated (0 or 1, default is 0)'))
     26        string = "%s\n%s" % (string, fielddisplay(self, 'href', ' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method'))
     27        string = "%s\n%s" % (string, fielddisplay(self, 'smbref', ' reference smb from which deviation is calculated in smb gradients method'))
     28        string = "%s\n%s" % (string, fielddisplay(self, 'b_pos', ' slope of hs - smb regression line for accumulation regime required if smb gradients is activated'))
     29        string = "%s\n%s" % (string, fielddisplay(self, 'b_neg', ' slope of hs - smb regression line for ablation regime required if smb gradients is activated'))
     30        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
    3431
    35                 #Nothing for now
    36                 return self
    37         #}}}
    38         def defaultoutputs(self,md): # {{{
    39                 return []
    40         #}}}
    41         def initialize(self,md): # {{{
     32        return string
     33    #}}}
    4234
    43                 #Nothing for now
     35    def extrude(self, md):  # {{{
     36        #Nothing for now
     37        return self
     38    #}}}
    4439
    45                 return self
    46         #}}}
    47         def checkconsistency(self,md,solution,analyses):    # {{{
     40    def defaultoutputs(self, md):  # {{{
     41        return []
     42    #}}}
    4843
    49                 if 'MasstransportAnalysis' in analyses:
    50                         md = checkfield(md,'fieldname','smb.href','timeseries',1,'NaN',1,'Inf',1)
    51                         md = checkfield(md,'fieldname','smb.smbref','timeseries',1,'NaN',1,'Inf',1)
    52                         md = checkfield(md,'fieldname','smb.b_pos','timeseries',1,'NaN',1,'Inf',1)
    53                         md = checkfield(md,'fieldname','smb.b_neg','timeseries',1,'NaN',1,'Inf',1)
     44    def initialize(self, md):  # {{{
     45        #Nothing for now
     46        return self
     47    #}}}
    5448
    55                 md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
    56                 return md
    57         # }}}
    58         def marshall(self,prefix,md,fid):    # {{{
     49    def checkconsistency(self, md, solution, analyses):  # {{{
     50        if 'MasstransportAnalysis' in analyses:
     51            md = checkfield(md, 'fieldname', 'smb.href', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     52            md = checkfield(md, 'fieldname', 'smb.smbref', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     53            md = checkfield(md, 'fieldname', 'smb.b_pos', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     54            md = checkfield(md, 'fieldname', 'smb.b_neg', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    5955
    60                 yts=md.constants.yts
     56        md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
     57        return md
     58    # }}}
    6159
    62                 WriteData(fid,prefix,'name','md.smb.model','data',6,'format','Integer');
    63                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    64                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    65                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    66                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    67                
    68                 #process requested outputs
    69                 outputs = self.requested_outputs
    70                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    71                 if len(indices) > 0:
    72                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    73                         outputs    =outputscopy
    74                 WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
     60    def marshall(self, prefix, md, fid):  # {{{
     61        yts = md.constants.yts
    7562
    76         # }}}
     63        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 6, 'format', 'Integer')
     64        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'href', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     65        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'smbref', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     66        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'b_pos', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     67        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'b_neg', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     68
     69    #process requested outputs
     70        outputs = self.requested_outputs
     71        indices = [i for i, x in enumerate(outputs) if x == 'default']
     72        if len(indices) > 0:
     73            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     74            outputs = outputscopy
     75        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
     76
     77    # }}}
  • issm/trunk-jpl/src/m/classes/SMBgradientscomponents.py

    r23365 r24213  
    22from checkfield import checkfield
    33from WriteData import WriteData
    4 from project3d import project3d
     4
    55
    66class SMBgradientscomponents(object):
    7         """
    8         SMBgradients Class definition
     7    """
     8    SMBgradients Class definition
    99
    10            Usage:
    11               SMBgradients=SMBgradientscomponents();
    12         For now it has accumulation, runoff ans retention which could be aither refreezing and/or evaporation
    13         """
     10       Usage:
     11          SMBgradients = SMBgradientscomponents()
     12    For now it has accumulation, runoff ans retention which could be aither refreezing and / or evaporation
     13    """
    1414
    15         def __init__(self): # {{{
    16                 self.accuref                                     = float('NaN')
    17                 self.accualti                                    = float('NaN')
    18                 self.accugrad                                    = float('NaN')
    19                 self.runoffref                           = float('NaN')
    20                 self.runoffalti                          = float('NaN')
    21                 self.runoffgrad                          = float('NaN')
    22                 self.requested_outputs = ['default']
    23                 #}}}
    24         def __repr__(self): # {{{
    25                 string="   surface forcings parameters:"
    26                 string="%s\n%s"%(string,fielddisplay(self,'accuref',' reference value of the accumulation'))
    27                 string="%s\n%s"%(string,fielddisplay(self,'accualti',' Altitude at which the accumulation is equal to the reference value'))
    28                 string="%s\n%s"%(string,fielddisplay(self,'accugrad',' Gradient of the variation of the accumulation (0 for uniform accumulation)'))
    29                 string="%s\n%s"%(string,fielddisplay(self,'runoffref',' reference value of the runoff m w.e. y-1 (temperature times ddf)'))
    30                 string="%s\n%s"%(string,fielddisplay(self,'runoffalti',' Altitude at which the runoff is equal to the reference value'))
    31                 string="%s\n%s"%(string,fielddisplay(self,'runoffgrad',' Gradient of the variation of the runoff (0 for uniform runoff) m w.e. m-1 y-1 (lpase rate times ddf)'))
    32                 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
     15    def __init__(self):  # {{{
     16        self.accuref = float('NaN')
     17        self.accualti = float('NaN')
     18        self.accugrad = float('NaN')
     19        self.runoffref = float('NaN')
     20        self.runoffalti = float('NaN')
     21        self.runoffgrad = float('NaN')
     22        self.requested_outputs = ['default']
     23    #}}}
    3324
    34                 return string
    35                 #}}}
    36         def extrude(self,md): # {{{
    37                 #Nothing for now
    38                 return self
    39         #}}}
    40         def defaultoutputs(self,md): # {{{
    41                 return ['SmbMassBalance','SmbRunoff']
    42         #}}}
    43         def initialize(self,md): # {{{
    44                 #Nothing for now
    45                 return self
    46         #}}}
    47         def checkconsistency(self,md,solution,analyses):    # {{{
    48                 if 'MasstransportAnalysis' in analyses:
    49                         md = checkfield(md,'fieldname','smb.accuref','singletimeseries',1,'NaN',1,'Inf',1)
    50                         md = checkfield(md,'fieldname','smb.accualti','numel',[1],'NaN',1,'Inf',1)
    51                         md = checkfield(md,'fieldname','smb.accugrad','numel',[1],'NaN',1,'Inf',1)
    52                         md = checkfield(md,'fieldname','smb.runoffref','singletimeseries',1,'NaN',1,'Inf',1)
    53                         md = checkfield(md,'fieldname','smb.runoffalti','numel',[1],'NaN',1,'Inf',1)
    54                         md = checkfield(md,'fieldname','smb.runoffgrad','numel',[1],'NaN',1,'Inf',1)
    55                 md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
    56                 return md
    57         # }}}
    58         def marshall(self,prefix,md,fid):    # {{{
     25    def __repr__(self):  # {{{
     26        string = "   surface forcings parameters:"
     27        string = "%s\n%s" % (string, fielddisplay(self, 'accuref', ' reference value of the accumulation'))
     28        string = "%s\n%s" % (string, fielddisplay(self, 'accualti', ' Altitude at which the accumulation is equal to the reference value'))
     29        string = "%s\n%s" % (string, fielddisplay(self, 'accugrad', ' Gradient of the variation of the accumulation (0 for uniform accumulation)'))
     30        string = "%s\n%s" % (string, fielddisplay(self, 'runoffref', ' reference value of the runoff m w.e. y - 1 (temperature times ddf)'))
     31        string = "%s\n%s" % (string, fielddisplay(self, 'runoffalti', ' Altitude at which the runoff is equal to the reference value'))
     32        string = "%s\n%s" % (string, fielddisplay(self, 'runoffgrad', ' Gradient of the variation of the runoff (0 for uniform runoff) m w.e. m - 1 y - 1 (lpase rate times ddf)'))
     33        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
    5934
    60                 yts=md.constants.yts
     35        return string
     36    #}}}
    6137
    62                 WriteData(fid,prefix,'name','md.smb.model','data',11,'format','Integer')
    63                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','accuref','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts)
    64                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','accualti','format','Double')
    65                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','accugrad','format','Double','scale',1./md.constants.yts)
    66                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffref','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts)
    67                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffalti','format','Double')
    68                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffgrad','format','Double','scale',1./md.constants.yts)
     38    def extrude(self, md):  # {{{
     39        #Nothing for now
     40        return self
     41    #}}}
    6942
    70                 #process requested outputs
    71                 outputs = self.requested_outputs
    72                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    73                 if len(indices) > 0:
    74                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    75                         outputs    =outputscopy
    76                 WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
     43    def defaultoutputs(self, md):  # {{{
     44        return ['SmbMassBalance', 'SmbRunoff']
     45    #}}}
    7746
    78         # }}}
     47    def initialize(self, md):  # {{{
     48        #Nothing for now
     49        return self
     50    #}}}
     51
     52    def checkconsistency(self, md, solution, analyses):  # {{{
     53        if 'MasstransportAnalysis' in analyses:
     54            md = checkfield(md, 'fieldname', 'smb.accuref', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1)
     55            md = checkfield(md, 'fieldname', 'smb.accualti', 'numel', [1], 'NaN', 1, 'Inf', 1)
     56            md = checkfield(md, 'fieldname', 'smb.accugrad', 'numel', [1], 'NaN', 1, 'Inf', 1)
     57            md = checkfield(md, 'fieldname', 'smb.runoffref', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1)
     58            md = checkfield(md, 'fieldname', 'smb.runoffalti', 'numel', [1], 'NaN', 1, 'Inf', 1)
     59            md = checkfield(md, 'fieldname', 'smb.runoffgrad', 'numel', [1], 'NaN', 1, 'Inf', 1)
     60        md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
     61        return md
     62    # }}}
     63
     64    def marshall(self, prefix, md, fid):  # {{{
     65        yts = md.constants.yts
     66        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 11, 'format', 'Integer')
     67        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accuref', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts, 'scale', 1. / yts)
     68        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accualti', 'format', 'Double')
     69        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accugrad', 'format', 'Double', 'scale', 1. / yts)
     70        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffref', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts, 'scale', 1. / yts)
     71        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffalti', 'format', 'Double')
     72        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffgrad', 'format', 'Double', 'scale', 1. / yts)
     73
     74    #process requested outputs
     75        outputs = self.requested_outputs
     76        indices = [i for i, x in enumerate(outputs) if x == 'default']
     77        if len(indices) > 0:
     78            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     79            outputs = outputscopy
     80        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
     81
     82    # }}}
  • issm/trunk-jpl/src/m/classes/SMBgradientsela.py

    r22267 r24213  
    22from checkfield import checkfield
    33from WriteData import WriteData
    4 from project3d import project3d
     4
    55
    66class SMBgradientsela(object):
    7         """
    8         SMBgradientsela Class definition
     7    """
     8    SMBgradientsela Class definition
    99
    10            Usage:
    11               SMBgradientsela=SMBgradientsela()
    12         """
     10       Usage:
     11          SMBgradientsela = SMBgradientsela()
     12    """
    1313
    14         def __init__(self): # {{{
    15                 self.ela     = float('NaN')
    16                 self.b_pos   = float('NaN')
    17                 self.b_neg   = float('NaN')
    18                 self.b_max   = float('NaN')
    19                 self.b_min   = float('NaN')
    20                 self.requested_outputs      = []
    21                 self.setdefaultparameters()
    22                 #}}}
    23         def __repr__(self): # {{{
    24                 string = "   surface forcings parameters:"
    25                 string+= '\n   SMB gradients ela parameters:'
     14    def __init__(self):  # {{{
     15        self.ela = float('NaN')
     16        self.b_pos = float('NaN')
     17        self.b_neg = float('NaN')
     18        self.b_max = float('NaN')
     19        self.b_min = float('NaN')
     20        self.requested_outputs = []
     21        self.setdefaultparameters()
     22    #}}}
    2623
    27                 string="%s\n%s"%(string,fielddisplay(self,'ela',' equilibrium line altitude from which deviation is used to calculate smb using the smb gradients ela method [m a.s.l.]'))
    28                 string="%s\n%s"%(string,fielddisplay(self,'b_pos',' vertical smb gradient (dB/dz) above ela'))
    29                 string="%s\n%s"%(string,fielddisplay(self,'b_neg',' vertical smb gradient (dB/dz) below ela'))
    30                 string="%s\n%s"%(string,fielddisplay(self,'b_max',' upper cap on smb rate, default: 9999 (no cap) [m ice eq./yr]'))
    31                 string="%s\n%s"%(string,fielddisplay(self,'b_min',' lower cap on smb rate, default: -9999 (no cap) [m ice eq./yr]'))
    32                 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
     24    def __repr__(self):  # {{{
     25        string = "   surface forcings parameters:"
     26        string += '\n   SMB gradients ela parameters:'
    3327
    34                 return string
    35                 #}}}
    36         def extrude(self,md): # {{{
     28        string = "%s\n%s" % (string, fielddisplay(self, 'ela', ' equilibrium line altitude from which deviation is used to calculate smb using the smb gradients ela method [m a.s.l.]'))
     29        string = "%s\n%s" % (string, fielddisplay(self, 'b_pos', ' vertical smb gradient (dB / dz) above ela'))
     30        string = "%s\n%s" % (string, fielddisplay(self, 'b_neg', ' vertical smb gradient (dB / dz) below ela'))
     31        string = "%s\n%s" % (string, fielddisplay(self, 'b_max', ' upper cap on smb rate, default: 9999 (no cap) [m ice eq. / yr]'))
     32        string = "%s\n%s" % (string, fielddisplay(self, 'b_min', ' lower cap on smb rate, default: - 9999 (no cap) [m ice eq. / yr]'))
     33        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
    3734
    38                 #Nothing for now
    39                 return self
    40         #}}}
    41         def defaultoutputs(self,md): # {{{
    42                 return []
    43         #}}}
    44         def initialize(self,md): # {{{
     35        return string
     36    #}}}
    4537
    46                 #Nothing for now
     38    def extrude(self, md):  # {{{
     39        #Nothing for now
     40        return self
     41    #}}}
    4742
    48                 return self
    49         #}}}
    50         def setdefaultparameters(self): # {{{
    51                 self.b_max=9999.
    52                 self.b_min=-9999.
    53                 return self
    54         #}}}
    55         def checkconsistency(self,md,solution,analyses):    # {{{
     43    def defaultoutputs(self, md):  # {{{
     44        return []
     45    #}}}
    5646
    57                 if 'MasstransportAnalysis' in analyses:
    58                         md = checkfield(md,'fieldname','smb.ela','timeseries',1,'NaN',1,'Inf',1)
    59                         md = checkfield(md,'fieldname','smb.b_pos','timeseries',1,'NaN',1,'Inf',1)
    60                         md = checkfield(md,'fieldname','smb.b_neg','timeseries',1,'NaN',1,'Inf',1)
    61                         md = checkfield(md,'fieldname','smb.b_max','timeseries',1,'NaN',1,'Inf',1)
    62                         md = checkfield(md,'fieldname','smb.b_min','timeseries',1,'NaN',1,'Inf',1)
     47    def initialize(self, md):  # {{{
     48        #Nothing for now
     49        return self
     50    #}}}
    6351
    64                 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1)
    65                 return md
    66         # }}}
    67         def marshall(self,prefix,md,fid):    # {{{
     52    def setdefaultparameters(self):  # {{{
     53        self.b_max = 9999.
     54        self.b_min = -9999.
     55        return self
     56    #}}}
    6857
    69                 yts=md.constants.yts
     58    def checkconsistency(self, md, solution, analyses):  # {{{
     59        if 'MasstransportAnalysis' in analyses:
     60            md = checkfield(md, 'fieldname', 'smb.ela', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     61            md = checkfield(md, 'fieldname', 'smb.b_pos', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     62            md = checkfield(md, 'fieldname', 'smb.b_neg', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     63            md = checkfield(md, 'fieldname', 'smb.b_max', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     64            md = checkfield(md, 'fieldname', 'smb.b_min', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    7065
    71                 WriteData(fid,prefix,'name','md.smb.model','data',9,'format','Integer');
    72                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','ela','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    73                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    74                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    75                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_max','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    76                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_min','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    77                
    78                 #process requested outputs
    79                 outputs = self.requested_outputs
    80                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    81                 if len(indices) > 0:
    82                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    83                         outputs    =outputscopy
    84                 WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
     66        md = checkfield(md, 'fieldname', 'smb.requested_outputs', 'stringrow', 1)
     67        return md
     68    # }}}
    8569
    86         # }}}
     70    def marshall(self, prefix, md, fid):  # {{{
     71        yts = md.constants.yts
     72
     73        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 9, 'format', 'Integer')
     74        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ela', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     75        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'b_pos', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     76        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'b_neg', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     77        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'b_max', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     78        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'b_min', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     79
     80    #process requested outputs
     81        outputs = self.requested_outputs
     82        indices = [i for i, x in enumerate(outputs) if x == 'default']
     83        if len(indices) > 0:
     84            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     85            outputs = outputscopy
     86        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
     87
     88    # }}}
  • issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py

    r23833 r24213  
    33from project3d import *
    44from WriteData import *
     5
    56
    67class SMBmeltcomponents(object):
     
    910
    1011       Usage:
    11           SMBmeltcomponents=SMBmeltcomponents();
     12          SMBmeltcomponents = SMBmeltcomponents()
    1213    """
    1314
    14     def __init__(self): # {{{
     15    def __init__(self):  # {{{
    1516        self.accumulation = float('NaN')
    1617        self.runoff = float('NaN')
    1718        self.evaporation = float('NaN')
    1819        self.isclimatology = 0
    19         self.requested_outputs      = []
    20         #}}}
    21     def __repr__(self): # {{{
    22         string="   surface forcings parameters with melt (SMB=accumulation-evaporation-melt+refreeze) :"
    23         string="%s\n%s"%(string,fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]'))
    24         string="%s\n%s"%(string,fielddisplay(self,'evaporation','mount of ice lost to evaporative processes [m/yr ice eq]'))
    25         string="%s\n%s"%(string,fielddisplay(self,'melt','amount of ice melt in the ice column [m/yr ice eq]'))
    26         string="%s\n%s"%(string,fielddisplay(self,'refreeze','amount of ice melt refrozen in the ice column [m/yr ice eq]'))
    27         string="%s\n%s"%(string,fielddisplay(self,'isclimatology','repeat all forcings when past last forcing time (default false)'))
    28         string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
     20        self.requested_outputs = []
     21    #}}}
     22
     23    def __repr__(self):  # {{{
     24        string = "   surface forcings parameters with melt (SMB = accumulation - evaporation - melt + refreeze) :"
     25        string = "%s\n%s" % (string, fielddisplay(self, 'accumulation', 'accumulated snow [m / yr ice eq]'))
     26        string = "%s\n%s" % (string, fielddisplay(self, 'evaporation', 'mount of ice lost to evaporative processes [m / yr ice eq]'))
     27        string = "%s\n%s" % (string, fielddisplay(self, 'melt', 'amount of ice melt in the ice column [m / yr ice eq]'))
     28        string = "%s\n%s" % (string, fielddisplay(self, 'refreeze', 'amount of ice melt refrozen in the ice column [m / yr ice eq]'))
     29        string = "%s\n%s" % (string, fielddisplay(self, 'isclimatology', 'repeat all forcings when past last forcing time (default false)'))
     30        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
    2931        return string
    30         #}}}
    31     def extrude(self,md): # {{{
     32    #}}}
    3233
    33         self.accumulation=project3d(md,'vector',self.accumulation,'type','node');
    34         self.evaporation=project3d(md,'vector',self.evaporation,'type','node');
    35         self.melt=project3d(md,'vector',self.melt,'type','node');
    36         self.refreeze=project3d(md,'vector',self.refreeze,'type','node');
     34    def extrude(self, md):  # {{{
     35        self.accumulation = project3d(md, 'vector', self.accumulation, 'type', 'node')
     36        self.evaporation = project3d(md, 'vector', self.evaporation, 'type', 'node')
     37        self.melt = project3d(md, 'vector', self.melt, 'type', 'node')
     38        self.refreeze = project3d(md, 'vector', self.refreeze, 'type', 'node')
    3739        return self
    3840    #}}}
    39     def defaultoutputs(self,md): # {{{
     41
     42    def defaultoutputs(self, md):  # {{{
    4043        return []
    4144    #}}}
    42     def initialize(self,md): # {{{
    4345
     46    def initialize(self, md):  # {{{
    4447        if np.all(np.isnan(self.accumulation)):
    45             self.accumulation=np.zeros((md.mesh.numberofvertices))
     48            self.accumulation = np.zeros((md.mesh.numberofvertices))
    4649            print("      no SMB.accumulation specified: values set as zero")
    4750
    4851        if np.all(np.isnan(self.evaporation)):
    49             self.evaporation=np.zeros((md.mesh.numberofvertices))
     52            self.evaporation = np.zeros((md.mesh.numberofvertices))
    5053            print("      no SMB.evaporation specified: values set as zero")
    5154
    5255        if np.all(np.isnan(self.melt)):
    53             self.melt=np.zeros((md.mesh.numberofvertices))
     56            self.melt = np.zeros((md.mesh.numberofvertices))
    5457            print("      no SMB.melt specified: values set as zero")
    5558
    5659        if np.all(np.isnan(self.refreeze)):
    57             self.refreeze=np.zeros((md.mesh.numberofvertices))
     60            self.refreeze = np.zeros((md.mesh.numberofvertices))
    5861            print("      no SMB.refreeze specified: values set as zero")
    5962
    6063        return self
    6164    #}}}
    62     def checkconsistency(self,md,solution,analyses):    # {{{
     65
     66    def checkconsistency(self, md, solution, analyses):  # {{{
     67        if 'MasstransportAnalysis' in analyses:
     68            md = checkfield(md, 'fieldname', 'smb.accumulation', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     69
     70        if 'BalancethicknessAnalysis' in analyses:
     71            md = checkfield(md, 'fieldname', 'smb.accumulation', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
    6372
    6473        if 'MasstransportAnalysis' in analyses:
    65             md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1)
     74            md = checkfield(md, 'fieldname', 'smb.melt', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    6675
    6776        if 'BalancethicknessAnalysis' in analyses:
    68             md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
     77            md = checkfield(md, 'fieldname', 'smb.melt', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
    6978
    7079        if 'MasstransportAnalysis' in analyses:
    71             md = checkfield(md,'fieldname','smb.melt','timeseries',1,'NaN',1,'Inf',1)
     80            md = checkfield(md, 'fieldname', 'smb.refreeze', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    7281
    7382        if 'BalancethicknessAnalysis' in analyses:
    74             md = checkfield(md,'fieldname','smb.melt','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
     83            md = checkfield(md, 'fieldname', 'smb.refreeze', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
    7584
    7685        if 'MasstransportAnalysis' in analyses:
    77             md = checkfield(md,'fieldname','smb.refreeze','timeseries',1,'NaN',1,'Inf',1)
     86            md = checkfield(md, 'fieldname', 'smb.evaporation', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    7887
    7988        if 'BalancethicknessAnalysis' in analyses:
    80             md = checkfield(md,'fieldname','smb.refreeze','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
     89            md = checkfield(md, 'fieldname', 'smb.evaporation', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
    8190
    82         if 'MasstransportAnalysis' in analyses:
    83             md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1)
    84 
    85         if 'BalancethicknessAnalysis' in analyses:
    86             md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    87 
    88         md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
    89         md = checkfield(md,'fieldname','smb.isclimatology','values',[0,1])
     91        md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
     92        md = checkfield(md, 'fieldname', 'smb.isclimatology', 'values', [0, 1])
    9093        return md
    9194    # }}}
    92     def marshall(self,prefix,md,fid):    # {{{
    9395
    94         yts=md.constants.yts
     96    def marshall(self, prefix, md, fid):  # {{{
     97        yts = md.constants.yts
    9598
    96         WriteData(fid,prefix,'name','md.smb.model','data',3,'format','Integer');
    97         WriteData(fid,prefix,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    98         WriteData(fid,prefix,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    99         WriteData(fid,prefix,'object',self,'class','smb','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    100         WriteData(fid,prefix,'object',self,'class','smb','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
     99        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 3, 'format', 'Integer')
     100        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accumulation', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     101        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'evaporation', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     102        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'melt', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     103        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'refreeze', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
    101104
    102         #process requested outputs
     105    #process requested outputs
    103106        outputs = self.requested_outputs
    104107        indices = [i for i, x in enumerate(outputs) if x == 'default']
    105108        if len(indices) > 0:
    106             outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    107             outputs    =outputscopy
    108         WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
    109         WriteData(fid,prefix,'object',self,'class','smb','fieldname','isclimatology','format','Boolean')
    110         if (self.isclimatology>0):
    111             md = checkfield(md,'fieldname', 'smb.accumulation', 'size',[md.mesh.numberofvertices+1],'message','accumulation must have md.mesh.numberofvertices+1 rows in order to force a climatology')
    112             md = checkfield(md,'fieldname', 'smb.melt', 'size',[md.mesh.numberofvertices+1],'message','melt must have md.mesh.numberofvertices+1 rows in order to force a climatology')
    113             md = checkfield(md,'fieldname', 'smb.refreeze', 'size',[md.mesh.numberofvertices+1],'message','refreeze must have md.mesh.numberofvertices+1 rows in order to force a climatology')
    114             md = checkfield(md,'fieldname', 'smb.evaporation', 'size',[md.mesh.numberofvertices+1],'message','evaporation must have md.mesh.numberofvertices+1 rows in order to force a climatology')
     109            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     110            outputs = outputscopy
     111        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
     112        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isclimatology', 'format', 'Boolean')
     113        if (self.isclimatology > 0):
     114            md = checkfield(md, 'fieldname', 'smb.accumulation', 'size', [md.mesh.numberofvertices + 1], 'message', 'accumulation must have md.mesh.numberofvertices + 1 rows in order to force a climatology')
     115            md = checkfield(md, 'fieldname', 'smb.melt', 'size', [md.mesh.numberofvertices + 1], 'message', 'melt must have md.mesh.numberofvertices + 1 rows in order to force a climatology')
     116            md = checkfield(md, 'fieldname', 'smb.refreeze', 'size', [md.mesh.numberofvertices + 1], 'message', 'refreeze must have md.mesh.numberofvertices + 1 rows in order to force a climatology')
     117            md = checkfield(md, 'fieldname', 'smb.evaporation', 'size', [md.mesh.numberofvertices + 1], 'message', 'evaporation must have md.mesh.numberofvertices + 1 rows in order to force a climatology')
    115118
    116119    # }}}
  • issm/trunk-jpl/src/m/classes/SMBpdd.py

    r23716 r24213  
    55from project3d import project3d
    66
     7
    78class SMBpdd(object):
    8         """
    9         SMBpdd Class definition
    10 
    11            Usage:
    12               SMBpdd=SMBpdd();
    13         """
    14 
    15         def __init__(self): # {{{
    16                 self.precipitation             = float('NaN')
    17                 self.monthlytemperatures       = float('NaN')
    18                 self.desfac                    = 0.
    19                 self.s0p                       = float('NaN')
    20                 self.s0t                       = float('NaN')
    21                 self.rlaps                     = 0.
    22                 self.rlapslgm                  = 0.
    23                 self.Pfac                      = float('NaN')
    24                 self.Tdiff                     = float('NaN')
    25                 self.sealev                    = float('NaN')
    26                 self.isdelta18o                = 0
    27                 self.ismungsm                  = 0
    28                 self.issetpddfac               = 0
    29                 self.delta18o                  = float('NaN')
    30                 self.delta18o_surface          = float('NaN')
    31                 self.temperatures_presentday   = float('NaN')
    32                 self.temperatures_lgm          = float('NaN')
    33                 self.precipitations_presentday = float('NaN')
    34                 self.precipitations_lgm        = float('NaN')
    35 
    36                 #set defaults
    37                 self.setdefaultparameters()
    38                 self.requested_outputs      = []
    39                 #}}}
    40         def __repr__(self): # {{{
    41                 string="   surface forcings parameters:"
    42 
    43                 string="%s\n%s"%(string,fielddisplay(self,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)'))
    44                 string="%s\n%s"%(string,fielddisplay(self,'ismungsm','is temperature and precipitation mungsm parametrisation activated (0 or 1, default is 0)'))
    45                 string="%s\n%s"%(string,fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
    46                 string="%s\n%s"%(string,fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
    47                 string="%s\n%s"%(string,fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
    48                 string="%s\n%s"%(string,fielddisplay(self,'rlaps','present day lapse rate [degree/km]'))
    49                 string="%s\n%s"%(string,fielddisplay(self,'rlapslgm','LGM lapse rate [degree/km]'))
    50                 if not (self.isdelta18o and self.ismungsm):
    51                         string="%s\n%s"%(string,fielddisplay(self,'monthlytemperatures',['monthly surface temperatures [K], required if pdd is activated and delta18o not activated']))
    52                         string="%s\n%s"%(string,fielddisplay(self,'precipitation',['monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o or mungsm not activated']))
    53                         if self.isdelta18o:
    54                                 string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated'))
    55                                 string="%s\n%s"%(string,fielddisplay(self,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated'))
    56                                 string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
    57                                 string="%s\n%s"%(string,fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated'))
    58                                 string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
    59                                 string="%s\n%s"%(string,fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
    60                                 string="%s\n%s"%(string,fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
    61                                 string="%s\n%s"%(string,fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated'))
    62                         if self.ismungsm:
    63                                 string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
    64                                 string="%s\n%s"%(string,fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated'))
    65                                 string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
    66                                 string="%s\n%s"%(string,fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
    67                                 string="%s\n%s"%(string,fielddisplay(self,'Pfac','time interpolation parameter for precipitation, 1D(year), required if mungsm is activated'))
    68                                 string="%s\n%s"%(string,fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
    69                                 string="%s\n%s"%(string,fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated'))
    70                 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
    71                                
    72                 return string
    73         # }}}
    74         def extrude(self,md): # {{{
    75 
    76                 if not (self.isdelta18o and self.ismungsm):
    77                         self.precipitation=project3d(md,'vector',self.precipitation,'type','node')
    78                         self.monthlytemperatures=project3d(md,'vector',self.monthlytemperatures,'type','node')
    79                 if self.isdelta18o: self.temperatures_lgm=project3d(md,'vector',self.temperatures_lgm,'type','node')
    80                 if self.isdelta18o: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node')
    81                 if self.isdelta18o: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
    82                 if self.isdelta18o: self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node')
    83                 if self.ismungsm: self.temperatures_lgm=project3d(md,'vector',self.temperatures_lgm,'type','node')
    84                 if self.ismungsm: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node')
    85                 if self.ismungsm: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
    86                 if self.ismungsm: self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node')
    87                 self.s0p=project3d(md,'vector',self.s0p,'type','node')
    88                 self.s0t=project3d(md,'vector',self.s0t,'type','node')
    89 
    90                 return self
    91         #}}}
    92         def defaultoutputs(self,md): # {{{
    93                 return []
    94         #}}}
    95         def initialize(self,md): # {{{
    96 
    97                 if np.all(np.isnan(self.s0p)):
    98                         self.s0p=np.zeros((md.mesh.numberofvertices))
    99                         print("      no SMBpdd.s0p specified: values set as zero")
    100 
    101                 if np.all(np.isnan(self.s0t)):
    102                         self.s0t=np.zeros((md.mesh.numberofvertices))
    103                         print("      no SMBpdd.s0t specified: values set as zero")
    104 
    105                 return self
    106         #}}}
    107         def setdefaultparameters(self): # {{{
    108 
    109                 #pdd method not used in default mode
    110                 self.isdelta18o = 0
    111                 self.ismungsm   = 0
    112                 self.desfac     = 0.5
    113                 self.rlaps      = 6.5
    114                 self.rlapslgm   = 6.5
    115 
    116                 return self
    117         #}}}
    118         def checkconsistency(self,md,solution,analyses):    # {{{
    119 
    120                 if 'MasstransportAnalysis' in analyses:
    121                         md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',[1])
    122                         md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    123                         md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    124                         md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',[1])
    125                         md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])
    126 
    127                         if (self.isdelta18o==0 and self.ismungsm==0):
    128                                 md = checkfield(md,'fieldname','smb.monthlytemperatures','NaN',1,'Inf',1,'timeseries',1)
    129                                 md = checkfield(md,'fieldname','smb.precipitation','NaN',1,'Inf',1,'timeseries',1)
    130                         elif self.isdelta18o:
    131                                 md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,np.nan],'singletimeseries',1)
    132                                 md = checkfield(md,'fieldname','smb.delta18o_surface','NaN',1,'Inf',1,'size',[2,np.nan],'singletimeseries',1)
    133                                 md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
    134                                 md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
    135                                 md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
    136                                 md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)                                       
    137                                 md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,np.nan],'singletimeseries',1)
    138                                 md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,np.nan],'singletimeseries',1)
    139                         elif self.ismungsm:
    140                                 md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
    141                                 md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
    142                                 md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
    143                                 md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)                                       
    144                                 md = checkfield(md,'fieldname','smb.Pfac','NaN',1,'Inf',1,'size',[2,np.nan],'singletimeseries',1)
    145                                 md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,np.nan],'singletimeseries',1)
    146                                 md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,np.nan],'singletimeseries',1)
    147 
    148                 md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
    149                 return md
    150         #}}}
    151         def marshall(self,prefix,md,fid):    # {{{
    152 
    153                 yts=md.constants.yts
    154 
    155                 WriteData(fid,prefix,'name','md.smb.model','data',4,'format','Integer')
    156 
    157                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isdelta18o','format','Boolean')
    158                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismungsm','format','Boolean')
    159                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','issetpddfac','format','Boolean');
    160                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double')
    161                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
    162                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
    163                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlaps','format','Double')
    164                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlapslgm','format','Double')
    165 
    166                 if (self.isdelta18o==0 and self.ismungsm==0):
    167                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    168                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    169                 elif self.isdelta18o:
    170                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    171                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    172                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    173                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    174                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o_surface','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
    175                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
    176                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
    177                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)                     
    178                 elif self.ismungsm:
    179                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    180                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    181                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    182                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    183                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','Pfac','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
    184                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
    185                         WriteData(fid,prefix,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
    186                        
    187                 #process requested outputs
    188                 outputs = self.requested_outputs
    189                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    190                 if len(indices) > 0:
    191                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    192                         outputs    =outputscopy
    193                 WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
    194 
    195         # }}}
     9    """
     10    SMBpdd Class definition
     11
     12       Usage:
     13          SMBpdd = SMBpdd()
     14    """
     15
     16    def __init__(self):  # {{{
     17        self.precipitation = float('NaN')
     18        self.monthlytemperatures = float('NaN')
     19        self.desfac = 0.
     20        self.s0p = float('NaN')
     21        self.s0t = float('NaN')
     22        self.rlaps = 0.
     23        self.rlapslgm = 0.
     24        self.Pfac = float('NaN')
     25        self.Tdiff = float('NaN')
     26        self.sealev = float('NaN')
     27        self.isdelta18o = 0
     28        self.ismungsm = 0
     29        self.issetpddfac = 0
     30        self.delta18o = float('NaN')
     31        self.delta18o_surface = float('NaN')
     32        self.temperatures_presentday = float('NaN')
     33        self.temperatures_lgm = float('NaN')
     34        self.precipitations_presentday = float('NaN')
     35        self.precipitations_lgm = float('NaN')
     36
     37    #set defaults
     38        self.setdefaultparameters()
     39        self.requested_outputs = []
     40    #}}}
     41
     42    def __repr__(self):  # {{{
     43        string = "   surface forcings parameters:"
     44
     45        string = "%s\n%s" % (string, fielddisplay(self, 'isdelta18o', 'is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)'))
     46        string = "%s\n%s" % (string, fielddisplay(self, 'ismungsm', 'is temperature and precipitation mungsm parametrisation activated (0 or 1, default is 0)'))
     47        string = "%s\n%s" % (string, fielddisplay(self, 'desfac', 'desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
     48        string = "%s\n%s" % (string, fielddisplay(self, 's0p', 'should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
     49        string = "%s\n%s" % (string, fielddisplay(self, 's0t', 'should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
     50        string = "%s\n%s" % (string, fielddisplay(self, 'rlaps', 'present day lapse rate [degree / km]'))
     51        string = "%s\n%s" % (string, fielddisplay(self, 'rlapslgm', 'LGM lapse rate [degree / km]'))
     52        if not (self.isdelta18o and self.ismungsm):
     53            string = "%s\n%s" % (string, fielddisplay(self, 'monthlytemperatures', ['monthly surface temperatures [K], required if pdd is activated and delta18o not activated']))
     54            string = "%s\n%s" % (string, fielddisplay(self, 'precipitation', ['monthly surface precipitation [m / yr water eq], required if pdd is activated and delta18o or mungsm not activated']))
     55            if self.isdelta18o:
     56                string = "%s\n%s" % (string, fielddisplay(self, 'delta18o', 'delta18o [per mil], required if pdd is activated and delta18o activated'))
     57                string = "%s\n%s" % (string, fielddisplay(self, 'delta18o_surface', 'surface elevation of the delta18o site, required if pdd is activated and delta18o activated'))
     58                string = "%s\n%s" % (string, fielddisplay(self, 'temperatures_presentday', 'monthly present day surface temperatures [K], required if delta18o / mungsm is activated'))
     59                string = "%s\n%s" % (string, fielddisplay(self, 'temperatures_lgm', 'monthly LGM surface temperatures [K], required if delta18o or mungsm is activated'))
     60                string = "%s\n%s" % (string, fielddisplay(self, 'precipitations_presentday', 'monthly surface precipitation [m / yr water eq], required if delta18o or mungsm is activated'))
     61                string = "%s\n%s" % (string, fielddisplay(self, 'precipitations_lgm', 'monthly surface precipitation [m / yr water eq], required if delta18o or mungsm is activated'))
     62                string = "%s\n%s" % (string, fielddisplay(self, 'Tdiff', 'time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
     63                string = "%s\n%s" % (string, fielddisplay(self, 'sealev', 'sea level [m], 1D(year), required if mungsm is activated'))
     64            if self.ismungsm:
     65                string = "%s\n%s" % (string, fielddisplay(self, 'temperatures_presentday', 'monthly present day surface temperatures [K], required if delta18o / mungsm is activated'))
     66                string = "%s\n%s" % (string, fielddisplay(self, 'temperatures_lgm', 'monthly LGM surface temperatures [K], required if delta18o or mungsm is activated'))
     67                string = "%s\n%s" % (string, fielddisplay(self, 'precipitations_presentday', 'monthly surface precipitation [m / yr water eq], required if delta18o or mungsm is activated'))
     68                string = "%s\n%s" % (string, fielddisplay(self, 'precipitations_lgm', 'monthly surface precipitation [m / yr water eq], required if delta18o or mungsm is activated'))
     69                string = "%s\n%s" % (string, fielddisplay(self, 'Pfac', 'time interpolation parameter for precipitation, 1D(year), required if mungsm is activated'))
     70                string = "%s\n%s" % (string, fielddisplay(self, 'Tdiff', 'time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
     71                string = "%s\n%s" % (string, fielddisplay(self, 'sealev', 'sea level [m], 1D(year), required if mungsm is activated'))
     72        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
     73
     74        return string
     75    # }}}
     76
     77    def extrude(self, md):  # {{{
     78        if not (self.isdelta18o and self.ismungsm):
     79            self.precipitation = project3d(md, 'vector', self.precipitation, 'type', 'node')
     80            self.monthlytemperatures = project3d(md, 'vector', self.monthlytemperatures, 'type', 'node')
     81        if self.isdelta18o:
     82            self.temperatures_lgm = project3d(md, 'vector', self.temperatures_lgm, 'type', 'node')
     83        if self.isdelta18o:
     84            self.temperatures_presentday = project3d(md, 'vector', self.temperatures_presentday, 'type', 'node')
     85        if self.isdelta18o:
     86            self.precipitations_presentday = project3d(md, 'vector', self.precipitations_presentday, 'type', 'node')
     87        if self.isdelta18o:
     88            self.precipitations_lgm = project3d(md, 'vector', self.precipitations_lgm, 'type', 'node')
     89        if self.ismungsm:
     90            self.temperatures_lgm = project3d(md, 'vector', self.temperatures_lgm, 'type', 'node')
     91        if self.ismungsm:
     92            self.temperatures_presentday = project3d(md, 'vector', self.temperatures_presentday, 'type', 'node')
     93        if self.ismungsm:
     94            self.precipitations_presentday = project3d(md, 'vector', self.precipitations_presentday, 'type', 'node')
     95        if self.ismungsm:
     96            self.precipitations_lgm = project3d(md, 'vector', self.precipitations_lgm, 'type', 'node')
     97        self.s0p = project3d(md, 'vector', self.s0p, 'type', 'node')
     98        self.s0t = project3d(md, 'vector', self.s0t, 'type', 'node')
     99
     100        return self
     101    #}}}
     102
     103    def defaultoutputs(self, md):  # {{{
     104        return []
     105    #}}}
     106
     107    def initialize(self, md):  # {{{
     108        if np.all(np.isnan(self.s0p)):
     109            self.s0p = np.zeros((md.mesh.numberofvertices))
     110            print("      no SMBpdd.s0p specified: values set as zero")
     111
     112        if np.all(np.isnan(self.s0t)):
     113            self.s0t = np.zeros((md.mesh.numberofvertices))
     114            print("      no SMBpdd.s0t specified: values set as zero")
     115
     116        return self
     117    #}}}
     118
     119    def setdefaultparameters(self):  # {{{
     120        #pdd method not used in default mode
     121        self.isdelta18o = 0
     122        self.ismungsm = 0
     123        self.desfac = 0.5
     124        self.rlaps = 6.5
     125        self.rlapslgm = 6.5
     126
     127        return self
     128    #}}}
     129
     130    def checkconsistency(self, md, solution, analyses):  # {{{
     131        if 'MasstransportAnalysis' in analyses:
     132            md = checkfield(md, 'fieldname', 'smb.desfac', '<=', 1, 'numel', [1])
     133            md = checkfield(md, 'fieldname', 'smb.s0p', '>=', 0, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     134            md = checkfield(md, 'fieldname', 'smb.s0t', '>=', 0, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     135            md = checkfield(md, 'fieldname', 'smb.rlaps', '>=', 0, 'numel', [1])
     136            md = checkfield(md, 'fieldname', 'smb.rlapslgm', '>=', 0, 'numel', [1])
     137
     138            if (self.isdelta18o == 0 and self.ismungsm == 0):
     139                md = checkfield(md, 'fieldname', 'smb.monthlytemperatures', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     140                md = checkfield(md, 'fieldname', 'smb.precipitation', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     141            elif self.isdelta18o:
     142                md = checkfield(md, 'fieldname', 'smb.delta18o', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
     143                md = checkfield(md, 'fieldname', 'smb.delta18o_surface', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
     144                md = checkfield(md, 'fieldname', 'smb.temperatures_presentday', 'size', [md.mesh.numberofvertices + 1, 12], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     145                md = checkfield(md, 'fieldname', 'smb.temperatures_lgm', 'size', [md.mesh.numberofvertices + 1, 12], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     146                md = checkfield(md, 'fieldname', 'smb.precipitations_presentday', 'size', [md.mesh.numberofvertices + 1, 12], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     147                md = checkfield(md, 'fieldname', 'smb.precipitations_lgm', 'size', [md.mesh.numberofvertices + 1, 12], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     148                md = checkfield(md, 'fieldname', 'smb.Tdiff', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
     149                md = checkfield(md, 'fieldname', 'smb.sealev', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
     150            elif self.ismungsm:
     151                md = checkfield(md, 'fieldname', 'smb.temperatures_presentday', 'size', [md.mesh.numberofvertices + 1, 12], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     152                md = checkfield(md, 'fieldname', 'smb.temperatures_lgm', 'size', [md.mesh.numberofvertices + 1, 12], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     153                md = checkfield(md, 'fieldname', 'smb.precipitations_presentday', 'size', [md.mesh.numberofvertices + 1, 12], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     154                md = checkfield(md, 'fieldname', 'smb.precipitations_lgm', 'size', [md.mesh.numberofvertices + 1, 12], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     155                md = checkfield(md, 'fieldname', 'smb.Pfac', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
     156                md = checkfield(md, 'fieldname', 'smb.Tdiff', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
     157                md = checkfield(md, 'fieldname', 'smb.sealev', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
     158
     159        md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
     160        return md
     161    #}}}
     162
     163    def marshall(self, prefix, md, fid):  # {{{
     164        yts = md.constants.yts
     165
     166        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 4, 'format', 'Integer')
     167        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isdelta18o', 'format', 'Boolean')
     168        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ismungsm', 'format', 'Boolean')
     169        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'issetpddfac', 'format', 'Boolean')
     170        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'desfac', 'format', 'Double')
     171        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 's0p', 'format', 'DoubleMat', 'mattype', 1)
     172        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 's0t', 'format', 'DoubleMat', 'mattype', 1)
     173        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'rlaps', 'format', 'Double')
     174        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'rlapslgm', 'format', 'Double')
     175
     176        if (self.isdelta18o == 0 and self.ismungsm == 0):
     177            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'monthlytemperatures', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     178            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitation', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     179        elif self.isdelta18o:
     180            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'temperatures_presentday', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     181            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'temperatures_lgm', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     182            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitations_presentday', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     183            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitations_lgm', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     184            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'delta18o_surface', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts)
     185            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'delta18o', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts)
     186            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tdiff', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts)
     187            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'sealev', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts)
     188        elif self.ismungsm:
     189            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'temperatures_presentday', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     190            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'temperatures_lgm', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     191            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitations_presentday', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     192            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitations_lgm', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     193            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Pfac', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts)
     194            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tdiff', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts)
     195            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'sealev', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts)
     196
     197    #process requested outputs
     198        outputs = self.requested_outputs
     199        indices = [i for i, x in enumerate(outputs) if x == 'default']
     200        if len(indices) > 0:
     201            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     202            outputs = outputscopy
     203        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
     204
     205    # }}}
  • issm/trunk-jpl/src/m/classes/SMBpddSicopolis.py

    r23716 r24213  
    77from helpers import *
    88
     9
    910class SMBpddSicopolis(object):
    10         """
    11         SMBpddSicopolis Class definition
     11    """
     12    SMBpddSicopolis Class definition
    1213
    13         Usage:
    14                 SMBpddSicopolis=SMBpddSicopolis()
     14    Usage:
     15        SMBpddSicopolis = SMBpddSicopolis()
    1516"""
    1617
    17         def __init__(self): # {{{
    18                 self.precipitation                      = float('NaN')
    19                 self.monthlytemperatures                = float('NaN')
    20                 self.temperature_anomaly                = float('NaN')
    21                 self.precipitation_anomaly              = float('NaN')
    22                 self.smb_corr                           = float('NaN')
    23                 self.desfac                             = 0
    24                 self.s0p                                = float('NaN')
    25                 self.s0t                                = float('NaN')
    26                 self.rlaps                              = 0
    27                 self.isfirnwarming                      = 0
    28                 self.requested_outputs                  = []
    29                
    30                 self.setdefaultparameters()
    31         # }}}
    32        
    33         @staticmethod
    34         def SMBpddSicopolis(*args): # {{{
    35                 nargin = len(args)
     18    def __init__(self):  # {{{
     19        self.precipitation = float('NaN')
     20        self.monthlytemperatures = float('NaN')
     21        self.temperature_anomaly = float('NaN')
     22        self.precipitation_anomaly = float('NaN')
     23        self.smb_corr = float('NaN')
     24        self.desfac = 0
     25        self.s0p = float('NaN')
     26        self.s0t = float('NaN')
     27        self.rlaps = 0
     28        self.isfirnwarming = 0
     29        self.requested_outputs = []
    3630
    37                 if nargin == 0:
    38                         return SMBpddSicopolis()
    39                 else:
    40                         raise RuntimeError('SMBpddSicopolis: constructor not supported')
    41         # }}}
     31        self.setdefaultparameters()
     32    # }}}
    4233
    43         def extrude(self,md): # {{{
    44                 self.precipitation = project3d(md,'vector',self.precipitation,'type','node')
    45                 self.monthlytemperatures = project3d(md,'vector',self.monthlytemperatures,'type','node')
    46                 self.temperature_anomaly = project3d(md,'vector',self.temperature_anomaly,'type','node')
    47                 self.precipitation_anomaly = project3d(md,'vector',self.precipitation_anomaly,'type','node')
    48                 self.smb_corr = project3d(md,'vector',self.smb_corr,'type','node')
    49                 self.s0p = project3d(md,'vector',self.s0p,'type','node')
    50                 self.s0t = project3d(md,'vector',self.s0t,'type','node')
    51         # }}}
     34    @staticmethod
     35    def SMBpddSicopolis(*args):  # {{{
     36        nargin = len(args)
    5237
    53         def defaultoutputs(self,md): # {{{
    54                 l = ['']
    55                 return l
    56         # }}}
     38        if nargin == 0:
     39            return SMBpddSicopolis()
     40        else:
     41            raise RuntimeError('SMBpddSicopolis: constructor not supported')
     42    # }}}
    5743
    58         def initialize(self,md): # {{{
    59            
    60                 if np.isnan(self.s0p):
    61                         self.s0p = np.zeros((md.mesh.numberofvertices,))
    62                         print('      no SMBpddSicopolis.s0p specified: values set as zero')
    63                
    64                 if np.isnan(self.s0t):
    65                         self.s0t = np.zeros((md.mesh.numberofvertices,))
    66                         print('      no SMBpddSicopolis.s0t specified: values set as zero')
    67                
    68                 if np.isnan(self.temperature_anomaly):
    69                         self.temperature_anomaly = np.zeros((md.mesh.numberofvertices,))
    70                         print('      no SMBpddSicopolis.temperature_anomaly specified: values set as zero')
    71                
    72                 if np.isnan(self.precipitation_anomaly):
    73                         self.precipitation_anomaly = np.ones((md.mesh.numberofvertices,))
    74                         print('      no SMBpddSicopolis.precipitation_anomaly specified: values set as ones')
    75                
    76                 if np.isnan(self.smb_corr):
    77                         self.smb_corr = np.zeros((md.mesh.numberofvertices,))
    78                         print('      no SMBpddSicopolis.smb_corr specified: values set as zero')
    79         # }}}
     44    def extrude(self, md):  # {{{
     45        self.precipitation = project3d(md, 'vector', self.precipitation, 'type', 'node')
     46        self.monthlytemperatures = project3d(md, 'vector', self.monthlytemperatures, 'type', 'node')
     47        self.temperature_anomaly = project3d(md, 'vector', self.temperature_anomaly, 'type', 'node')
     48        self.precipitation_anomaly = project3d(md, 'vector', self.precipitation_anomaly, 'type', 'node')
     49        self.smb_corr = project3d(md, 'vector', self.smb_corr, 'type', 'node')
     50        self.s0p = project3d(md, 'vector', self.s0p, 'type', 'node')
     51        self.s0t = project3d(md, 'vector', self.s0t, 'type', 'node')
     52    # }}}
    8053
    81         def setdefaultparameters(self): # {{{
     54    def defaultoutputs(self, md):  # {{{
     55        listing = ['']
     56        return listing
     57    # }}}
    8258
    83           self.isfirnwarming    = 1
    84           self.desfac           = -np.log(2.0)/1000
    85           self.rlaps            = 7.4
    86          
    87         # }}}
     59    def initialize(self, md):  # {{{
    8860
    89         def checkconsistency(self,md,solution,analyses): # {{{
     61        if np.isnan(self.s0p):
     62            self.s0p = np.zeros((md.mesh.numberofvertices, ))
     63            print('      no SMBpddSicopolis.s0p specified: values set as zero')
    9064
    91                 if (strcmp(solution,'TransientSolution') and md.transient.issmb == 0):
    92                         return
     65        if np.isnan(self.s0t):
     66            self.s0t = np.zeros((md.mesh.numberofvertices, ))
     67            print('      no SMBpddSicopolis.s0t specified: values set as zero')
    9368
    94                 if 'MasstransportAnalysis' in analyses:
    95                         md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',1)
    96                         md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
    97                         md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
    98                         md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',1)
    99                         md = checkfield(md,'fieldname','smb.monthlytemperatures','timeseries',1,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices+1,12])
    100                         md = checkfield(md,'fieldname','smb.precipitation','timeseries',1,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices+1,12])
    101                
    102                 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1)
    103                
    104                 return md
    105         # }}}
     69        if np.isnan(self.temperature_anomaly):
     70            self.temperature_anomaly = np.zeros((md.mesh.numberofvertices, ))
     71            print('      no SMBpddSicopolis.temperature_anomaly specified: values set as zero')
    10672
    107         def __repr__(self): # {{{
    108                 string = '   surface forcings parameters:'
    109                 string += '\n   SICOPOLIS PDD scheme (Calov & Greve, 2005) :'
     73        if np.isnan(self.precipitation_anomaly):
     74            self.precipitation_anomaly = np.ones((md.mesh.numberofvertices, ))
     75            print('      no SMBpddSicopolis.precipitation_anomaly specified: values set as ones')
    11076
    111                 string = "%s\n%s"%(string,fielddisplay(self,'monthlytemperatures','monthly surface temperatures [K]'))
    112                 string = "%s\n%s"%(string,fielddisplay(self,'precipitation','monthly surface precipitation [m/yr water eq]'))
    113                 string = "%s\n%s"%(string,fielddisplay(self,'temperature_anomaly','anomaly to monthly reference temperature (additive [K])'))
    114                 string = "%s\n%s"%(string,fielddisplay(self,'precipitation_anomaly','anomaly to monthly precipitation (multiplicative, e.g. q=q0*exp(0.070458*DeltaT) after Huybrechts (2002)) [no unit])'))
    115                 string = "%s\n%s"%(string,fielddisplay(self,'smb_corr','correction of smb after PDD call [m/a]'))
    116                 string = "%s\n%s"%(string,fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
    117                 string = "%s\n%s"%(string,fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
    118                 string = "%s\n%s"%(string,fielddisplay(self,'rlaps','present day lapse rate (default is 7.4 degree/km)'))
    119                 string = "%s\n%s"%(string,fielddisplay(self,'desfac','desertification elevation factor (default is -log(2.0)/1000)'))
    120                 string = "%s\n%s"%(string,fielddisplay(self,'isfirnwarming','is firnwarming (Reeh 1991) activated (0 or 1, default is 1)'))
    121                 string = "%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested (TemperaturePDD, SmbAccumulation, SmbMelt)'))
    122         # }}}
     77        if np.isnan(self.smb_corr):
     78            self.smb_corr = np.zeros((md.mesh.numberofvertices, ))
     79            print('      no SMBpddSicopolis.smb_corr specified: values set as zero')
     80    # }}}
    12381
    124         def marshall(self,prefix,md,fid): # {{{
     82    def setdefaultparameters(self):  # {{{
     83        self.isfirnwarming = 1
     84        self.desfac = - np.log(2.0) / 1000
     85        self.rlaps = 7.4
    12586
    126                 yts=md.constants.yts
     87    # }}}
    12788
    128                 WriteData(fid,prefix,'name','md.smb.model','data',10,'format','Integer')
     89    def checkconsistency(self, md, solution, analyses):  # {{{
     90        if (strcmp(solution, 'TransientSolution') and md.transient.issmb == 0):
     91            return
    12992
    130                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isfirnwarming','format','Boolean')
    131                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double')
    132                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1)
    133                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1)
    134                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlaps','format','Double')
     93        if 'MasstransportAnalysis' in analyses:
     94            md = checkfield(md, 'fieldname', 'smb.desfac', '<=', 1, 'numel', 1)
     95            md = checkfield(md, 'fieldname', 'smb.s0p', '>=', 0, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 1])
     96            md = checkfield(md, 'fieldname', 'smb.s0t', '>=', 0, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 1])
     97            md = checkfield(md, 'fieldname', 'smb.rlaps', '>=', 0, 'numel', 1)
     98            md = checkfield(md, 'fieldname', 'smb.monthlytemperatures', 'timeseries', 1, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices + 1, 12])
     99            md = checkfield(md, 'fieldname', 'smb.precipitation', 'timeseries', 1, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices + 1, 12])
    135100
    136                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    137                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    138                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperature_anomaly','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    139                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitation_anomaly','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    140                 WriteData(fid,prefix,'object',self,'class','smb','fieldname','smb_corr','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
     101        md = checkfield(md, 'fieldname', 'smb.requested_outputs', 'stringrow', 1)
    141102
    142                 #process requested outputs
    143                 outputs = self.requested_outputs
    144                 pos  = np.where('default' in outputs)
    145                 if not isempty(pos):
    146                         outputs[pos] = []                         #remove 'default' from outputs
    147                         outputs      = [outputs,defaultoutputs(self,md)] #add defaults
    148                
    149                 WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
     103        return md
     104    # }}}
    150105
    151         # }}}
    152        
     106    def __repr__(self):  # {{{
     107        string = '   surface forcings parameters:'
     108        string += '\n   SICOPOLIS PDD scheme (Calov & Greve, 2005) :'
    153109
     110        string = "%s\n%s" % (string, fielddisplay(self, 'monthlytemperatures', 'monthly surface temperatures [K]'))
     111        string = "%s\n%s" % (string, fielddisplay(self, 'precipitation', 'monthly surface precipitation [m / yr water eq]'))
     112        string = "%s\n%s" % (string, fielddisplay(self, 'temperature_anomaly', 'anomaly to monthly reference temperature (additive [K])'))
     113        string = "%s\n%s" % (string, fielddisplay(self, 'precipitation_anomaly', 'anomaly to monthly precipitation (multiplicative, e.g. q = q0 * exp(0.070458 * DeltaT) after Huybrechts (2002)) [no unit])'))
     114        string = "%s\n%s" % (string, fielddisplay(self, 'smb_corr', 'correction of smb after PDD call [m / a]'))
     115        string = "%s\n%s" % (string, fielddisplay(self, 's0p', 'should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
     116        string = "%s\n%s" % (string, fielddisplay(self, 's0t', 'should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
     117        string = "%s\n%s" % (string, fielddisplay(self, 'rlaps', 'present day lapse rate (default is 7.4 degree / km)'))
     118        string = "%s\n%s" % (string, fielddisplay(self, 'desfac', 'desertification elevation factor (default is - log(2.0) / 1000)'))
     119        string = "%s\n%s" % (string, fielddisplay(self, 'isfirnwarming', 'is firnwarming (Reeh 1991) activated (0 or 1, default is 1)'))
     120        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested (TemperaturePDD, SmbAccumulation, SmbMelt)'))
     121    # }}}
     122
     123    def marshall(self, prefix, md, fid):  # {{{
     124        yts = md.constants.yts
     125
     126        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 10, 'format', 'Integer')
     127
     128        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isfirnwarming', 'format', 'Boolean')
     129        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'desfac', 'format', 'Double')
     130        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 's0p', 'format', 'DoubleMat', 'mattype', 1)
     131        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 's0t', 'format', 'DoubleMat', 'mattype', 1)
     132        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'rlaps', 'format', 'Double')
     133
     134        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'monthlytemperatures', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     135        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitation', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     136        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'temperature_anomaly', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     137        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitation_anomaly', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     138        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'smb_corr', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     139
     140    #process requested outputs
     141        outputs = self.requested_outputs
     142        pos = np.where('default' in outputs)
     143        if not isempty(pos):
     144            outputs[pos] = []  #remove 'default' from outputs
     145            outputs = [outputs, defaultoutputs(self, md)]  #add defaults
     146
     147        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
     148
     149    # }}}
  • issm/trunk-jpl/src/m/classes/amr.py

    r22295 r24213  
    22from checkfield import checkfield
    33from WriteData import WriteData
     4
    45
    56class amr(object):
     
    89
    910    Usage:
    10         amr=amr();
     11        amr = amr()
    1112    """
    1213
    13     def __init__(self): # {{{
    14         self.hmin                                                                               = 0.
    15         self.hmax                                                                               = 0.
    16         self.fieldname                                                          =''
    17         self.err                                                                                = 0.
    18         self.keepmetric                                                         = 0.
    19         self.gradation                                                          = 0.
    20         self.groundingline_resolution                   = 0.
    21         self.groundingline_distance                     = 0.
    22         self.icefront_resolution                                = 0.
    23         self.icefront_distance                                  = 0.
    24         self.thicknesserror_resolution          = 0.
    25         self.thicknesserror_threshold                   = 0.
    26         self.thicknesserror_groupthreshold      = 0.
    27         self.thicknesserror_maximum                             = 0.
    28         self.deviatoricerror_resolution         = 0.
    29         self.deviatoricerror_threshold                  = 0.
    30         self.deviatoricerror_groupthreshold     = 0.
    31         self.deviatoricerror_maximum                    = 0.
    32         self.restart                         = 0.
    33         #set defaults
     14    def __init__(self):  # {{{
     15        self.hmin = 0.
     16        self.hmax = 0.
     17        self.fieldname = ''
     18        self.err = 0.
     19        self.keepmetric = 0.
     20        self.gradation = 0.
     21        self.groundingline_resolution = 0.
     22        self.groundingline_distance = 0.
     23        self.icefront_resolution = 0.
     24        self.icefront_distance = 0.
     25        self.thicknesserror_resolution = 0.
     26        self.thicknesserror_threshold = 0.
     27        self.thicknesserror_groupthreshold = 0.
     28        self.thicknesserror_maximum = 0.
     29        self.deviatoricerror_resolution = 0.
     30        self.deviatoricerror_threshold = 0.
     31        self.deviatoricerror_groupthreshold = 0.
     32        self.deviatoricerror_maximum = 0.
     33        self.restart = 0.
     34    #set defaults
    3435        self.setdefaultparameters()
    3536    #}}}
    36     def __repr__(self): # {{{
    37         string="   amr parameters:"
    38         string="%s\n%s"%(string,fielddisplay(self,"hmin","minimum element length"))
    39         string="%s\n%s"%(string,fielddisplay(self,"hmax","maximum element length"))
    40         string="%s\n%s"%(string,fielddisplay(self,"fieldname","name of input that will be used to compute the metric (should be an input of FemModel)"))
    41         string="%s\n%s"%(string,fielddisplay(self,"keepmetric","indicates whether the metric should be kept every remeshing time"))
    42         string="%s\n%s"%(string,fielddisplay(self,"gradation","maximum ratio between two adjacent edges"))
    43         string="%s\n%s"%(string,fielddisplay(self,"groundingline_resolution","element length near the grounding line"))
    44         string="%s\n%s"%(string,fielddisplay(self,"groundingline_distance","distance around the grounding line which elements will be refined"))
    45         string="%s\n%s"%(string,fielddisplay(self,"icefront_resolution","element length near the ice front"))
    46         string="%s\n%s"%(string,fielddisplay(self,"icefront_distance","distance around the ice front which elements will be refined"))
    47         string="%s\n%s"%(string,fielddisplay(self,"thicknesserror_resolution","element length when thickness error estimator is used"))
    48         string="%s\n%s"%(string,fielddisplay(self,"thicknesserror_threshold","maximum threshold thickness error permitted"))
    49         string="%s\n%s"%(string,fielddisplay(self,"thicknesserror_groupthreshold","maximum group threshold thickness error permitted"))
    50         string="%s\n%s"%(string,fielddisplay(self,"thicknesserror_maximum","maximum thickness error permitted"))
    51         string="%s\n%s"%(string,fielddisplay(self,"deviatoricerror_resolution","element length when deviatoric stress error estimator is used"))
    52         string="%s\n%s"%(string,fielddisplay(self,"deviatoricerror_threshold","maximum threshold deviatoricstress error permitted"))
    53         string="%s\n%s"%(string,fielddisplay(self,"deviatoricerror_groupthreshold","maximum group threshold deviatoric stress error permitted"))
    54         string="%s\n%s"%(string,fielddisplay(self,"deviatoricerror_maximum","maximum deviatoricstress error permitted"))
    55         string="%s\n%s"%(string,fielddisplay(self,"restart","indicates if ReMesh() will call before first time step"))
     37
     38    def __repr__(self):  # {{{
     39        string = "   amr parameters:"
     40        string = "%s\n%s" % (string, fielddisplay(self, "hmin", "minimum element length"))
     41        string = "%s\n%s" % (string, fielddisplay(self, "hmax", "maximum element length"))
     42        string = "%s\n%s" % (string, fielddisplay(self, "fieldname", "name of input that will be used to compute the metric (should be an input of FemModel)"))
     43        string = "%s\n%s" % (string, fielddisplay(self, "keepmetric", "indicates whether the metric should be kept every remeshing time"))
     44        string = "%s\n%s" % (string, fielddisplay(self, "gradation", "maximum ratio between two adjacent edges"))
     45        string = "%s\n%s" % (string, fielddisplay(self, "groundingline_resolution", "element length near the grounding line"))
     46        string = "%s\n%s" % (string, fielddisplay(self, "groundingline_distance", "distance around the grounding line which elements will be refined"))
     47        string = "%s\n%s" % (string, fielddisplay(self, "icefront_resolution", "element length near the ice front"))
     48        string = "%s\n%s" % (string, fielddisplay(self, "icefront_distance", "distance around the ice front which elements will be refined"))
     49        string = "%s\n%s" % (string, fielddisplay(self, "thicknesserror_resolution", "element length when thickness error estimator is used"))
     50        string = "%s\n%s" % (string, fielddisplay(self, "thicknesserror_threshold", "maximum threshold thickness error permitted"))
     51        string = "%s\n%s" % (string, fielddisplay(self, "thicknesserror_groupthreshold", "maximum group threshold thickness error permitted"))
     52        string = "%s\n%s" % (string, fielddisplay(self, "thicknesserror_maximum", "maximum thickness error permitted"))
     53        string = "%s\n%s" % (string, fielddisplay(self, "deviatoricerror_resolution", "element length when deviatoric stress error estimator is used"))
     54        string = "%s\n%s" % (string, fielddisplay(self, "deviatoricerror_threshold", "maximum threshold deviatoricstress error permitted"))
     55        string = "%s\n%s" % (string, fielddisplay(self, "deviatoricerror_groupthreshold", "maximum group threshold deviatoric stress error permitted"))
     56        string = "%s\n%s" % (string, fielddisplay(self, "deviatoricerror_maximum", "maximum deviatoricstress error permitted"))
     57        string = "%s\n%s" % (string, fielddisplay(self, "restart", "indicates if ReMesh() will call before first time step"))
    5658        return string
    5759    #}}}
    58     def setdefaultparameters(self): # {{{
    59         self.hmin                                                                               = 100.
    60         self.hmax                                                                               = 100.e3
    61         self.fieldname                                                          = 'Vel'
    62         self.err                                                                                = 3.
    63         self.keepmetric                                                         = 1
    64         self.gradation                                                          = 1.5
    65         self.groundingline_resolution                   = 500.
    66         self.groundingline_distance                     = 0
    67         self.icefront_resolution                                = 500.
    68         self.icefront_distance                                  = 0
    69         self.thicknesserror_resolution          = 500.
    70         self.thicknesserror_threshold                   = 0
    71         self.thicknesserror_groupthreshold      = 0
    72         self.thicknesserror_maximum                             = 0
    73         self.deviatoricerror_resolution         = 500.
    74         self.deviatoricerror_threshold                  = 0
    75         self.deviatoricerror_groupthreshold     = 0
    76         self.deviatoricerror_maximum                    = 0
    77         self.restart                                                                    = 0.
     60
     61    def setdefaultparameters(self):  # {{{
     62        self.hmin = 100.
     63        self.hmax = 100.e3
     64        self.fieldname = 'Vel'
     65        self.err = 3.
     66        self.keepmetric = 1
     67        self.gradation = 1.5
     68        self.groundingline_resolution = 500.
     69        self.groundingline_distance = 0
     70        self.icefront_resolution = 500.
     71        self.icefront_distance = 0
     72        self.thicknesserror_resolution = 500.
     73        self.thicknesserror_threshold = 0
     74        self.thicknesserror_groupthreshold = 0
     75        self.thicknesserror_maximum = 0
     76        self.deviatoricerror_resolution = 500.
     77        self.deviatoricerror_threshold = 0
     78        self.deviatoricerror_groupthreshold = 0
     79        self.deviatoricerror_maximum = 0
     80        self.restart = 0.
    7881        return self
    7982    #}}}
    80     def checkconsistency(self,md,solution,analyses):    # {{{
    81         md = checkfield(md,'fieldname','amr.hmax','numel',[1],'>',0,'NaN',1)
    82         md = checkfield(md,'fieldname','amr.hmin','numel',[1],'>',0,'<',self.hmax,'NaN',1)
    83         md = checkfield(md,'fieldname','amr.keepmetric','numel',[1],'>=',0,'<=',1,'NaN',1);
    84         md = checkfield(md,'fieldname','amr.gradation','numel',[1],'>=',1.1,'<=',5,'NaN',1);
    85         md = checkfield(md,'fieldname','amr.groundingline_resolution','numel',[1],'>',0,'<',self.hmax,'NaN',1);
    86         md = checkfield(md,'fieldname','amr.groundingline_distance','numel',[1],'>=',0,'NaN',1,'Inf',1);
    87         md = checkfield(md,'fieldname','amr.icefront_resolution','numel',[1],'>',0,'<',self.hmax,'NaN',1);
    88         md = checkfield(md,'fieldname','amr.icefront_distance','numel',[1],'>=',0,'NaN',1,'Inf',1);
    89         md = checkfield(md,'fieldname','amr.thicknesserror_resolution','numel',[1],'>',0,'<',self.hmax,'NaN',1);
    90         md = checkfield(md,'fieldname','amr.thicknesserror_threshold','numel',[1],'>=',0,'<=',1,'NaN',1);
    91         md = checkfield(md,'fieldname','amr.thicknesserror_groupthreshold','numel',[1],'>=',0,'<=',1,'NaN',1);
    92         md = checkfield(md,'fieldname','amr.thicknesserror_maximum','numel',[1],'>=',0,'NaN',1,'Inf',1);
    93         md = checkfield(md,'fieldname','amr.deviatoricerror_resolution','numel',[1],'>',0,'<',self.hmax,'NaN',1);
    94         md = checkfield(md,'fieldname','amr.deviatoricerror_threshold','numel',[1],'>=',0,'<=',1,'NaN',1);       
    95         md = checkfield(md,'fieldname','amr.deviatoricerror_groupthreshold','numel',[1],'>=',0,'<=',1,'NaN',1);       
    96         md = checkfield(md,'fieldname','amr.deviatoricerror_maximum','numel',[1],'>=',0,'NaN',1,'Inf',1);
    97         md = checkfield(md,'fieldname','amr.restart','numel',[1],'>=',0,'<=',1,'NaN',1)
     83
     84    def checkconsistency(self, md, solution, analyses):  # {{{
     85        md = checkfield(md, 'fieldname', 'amr.hmax', 'numel', [1], '>', 0, 'NaN', 1)
     86        md = checkfield(md, 'fieldname', 'amr.hmin', 'numel', [1], '>', 0, '<', self.hmax, 'NaN', 1)
     87        md = checkfield(md, 'fieldname', 'amr.keepmetric', 'numel', [1], '>=', 0, '<=', 1, 'NaN', 1)
     88        md = checkfield(md, 'fieldname', 'amr.gradation', 'numel', [1], '>=', 1.1, '<=', 5, 'NaN', 1)
     89        md = checkfield(md, 'fieldname', 'amr.groundingline_resolution', 'numel', [1], '>', 0, '<', self.hmax, 'NaN', 1)
     90        md = checkfield(md, 'fieldname', 'amr.groundingline_distance', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
     91        md = checkfield(md, 'fieldname', 'amr.icefront_resolution', 'numel', [1], '>', 0, '<', self.hmax, 'NaN', 1)
     92        md = checkfield(md, 'fieldname', 'amr.icefront_distance', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
     93        md = checkfield(md, 'fieldname', 'amr.thicknesserror_resolution', 'numel', [1], '>', 0, '<', self.hmax, 'NaN', 1)
     94        md = checkfield(md, 'fieldname', 'amr.thicknesserror_threshold', 'numel', [1], '>=', 0, '<=', 1, 'NaN', 1)
     95        md = checkfield(md, 'fieldname', 'amr.thicknesserror_groupthreshold', 'numel', [1], '>=', 0, '<=', 1, 'NaN', 1)
     96        md = checkfield(md, 'fieldname', 'amr.thicknesserror_maximum', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
     97        md = checkfield(md, 'fieldname', 'amr.deviatoricerror_resolution', 'numel', [1], '>', 0, '<', self.hmax, 'NaN', 1)
     98        md = checkfield(md, 'fieldname', 'amr.deviatoricerror_threshold', 'numel', [1], '>=', 0, '<=', 1, 'NaN', 1)
     99        md = checkfield(md, 'fieldname', 'amr.deviatoricerror_groupthreshold', 'numel', [1], '>=', 0, '<=', 1, 'NaN', 1)
     100        md = checkfield(md, 'fieldname', 'amr.deviatoricerror_maximum', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
     101        md = checkfield(md, 'fieldname', 'amr.restart', 'numel', [1], '>=', 0, '<=', 1, 'NaN', 1)
    98102        return md
    99103    # }}}
    100     def marshall(self,prefix,md,fid):    # {{{
    101         WriteData(fid,prefix,'name','md.amr.type','data',1,'format','Integer')
    102         WriteData(fid,prefix,'object',self,'fieldname','hmin','format','Double');
    103         WriteData(fid,prefix,'object',self,'fieldname','hmax','format','Double');
    104         WriteData(fid,prefix,'object',self,'fieldname','fieldname','format','String');
    105         WriteData(fid,prefix,'object',self,'fieldname','err','format','Double');
    106         WriteData(fid,prefix,'object',self,'fieldname','keepmetric','format','Integer');
    107         WriteData(fid,prefix,'object',self,'fieldname','gradation','format','Double');
    108         WriteData(fid,prefix,'object',self,'fieldname','groundingline_resolution','format','Double');
    109         WriteData(fid,prefix,'object',self,'fieldname','groundingline_distance','format','Double');
    110         WriteData(fid,prefix,'object',self,'fieldname','icefront_resolution','format','Double');
    111         WriteData(fid,prefix,'object',self,'fieldname','icefront_distance','format','Double');
    112         WriteData(fid,prefix,'object',self,'fieldname','thicknesserror_resolution','format','Double');
    113         WriteData(fid,prefix,'object',self,'fieldname','thicknesserror_threshold','format','Double');
    114         WriteData(fid,prefix,'object',self,'fieldname','thicknesserror_groupthreshold','format','Double');
    115         WriteData(fid,prefix,'object',self,'fieldname','thicknesserror_maximum','format','Double');
    116         WriteData(fid,prefix,'object',self,'fieldname','deviatoricerror_resolution','format','Double');
    117         WriteData(fid,prefix,'object',self,'fieldname','deviatoricerror_threshold','format','Double');
    118         WriteData(fid,prefix,'object',self,'fieldname','deviatoricerror_groupthreshold','format','Double');
    119         WriteData(fid,prefix,'object',self,'fieldname','deviatoricerror_maximum','format','Double');
    120         WriteData(fid,prefix,'object',self,'class','amr','fieldname','restart','format','Integer')
     104
     105    def marshall(self, prefix, md, fid):  # {{{
     106        WriteData(fid, prefix, 'name', 'md.amr.type', 'data', 1, 'format', 'Integer')
     107        WriteData(fid, prefix, 'object', self, 'fieldname', 'hmin', 'format', 'Double')
     108        WriteData(fid, prefix, 'object', self, 'fieldname', 'hmax', 'format', 'Double')
     109        WriteData(fid, prefix, 'object', self, 'fieldname', 'fieldname', 'format', 'String')
     110        WriteData(fid, prefix, 'object', self, 'fieldname', 'err', 'format', 'Double')
     111        WriteData(fid, prefix, 'object', self, 'fieldname', 'keepmetric', 'format', 'Integer')
     112        WriteData(fid, prefix, 'object', self, 'fieldname', 'gradation', 'format', 'Double')
     113        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundingline_resolution', 'format', 'Double')
     114        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundingline_distance', 'format', 'Double')
     115        WriteData(fid, prefix, 'object', self, 'fieldname', 'icefront_resolution', 'format', 'Double')
     116        WriteData(fid, prefix, 'object', self, 'fieldname', 'icefront_distance', 'format', 'Double')
     117        WriteData(fid, prefix, 'object', self, 'fieldname', 'thicknesserror_resolution', 'format', 'Double')
     118        WriteData(fid, prefix, 'object', self, 'fieldname', 'thicknesserror_threshold', 'format', 'Double')
     119        WriteData(fid, prefix, 'object', self, 'fieldname', 'thicknesserror_groupthreshold', 'format', 'Double')
     120        WriteData(fid, prefix, 'object', self, 'fieldname', 'thicknesserror_maximum', 'format', 'Double')
     121        WriteData(fid, prefix, 'object', self, 'fieldname', 'deviatoricerror_resolution', 'format', 'Double')
     122        WriteData(fid, prefix, 'object', self, 'fieldname', 'deviatoricerror_threshold', 'format', 'Double')
     123        WriteData(fid, prefix, 'object', self, 'fieldname', 'deviatoricerror_groupthreshold', 'format', 'Double')
     124        WriteData(fid, prefix, 'object', self, 'fieldname', 'deviatoricerror_maximum', 'format', 'Double')
     125        WriteData(fid, prefix, 'object', self, 'class', 'amr', 'fieldname', 'restart', 'format', 'Integer')
    121126    # }}}
  • issm/trunk-jpl/src/m/classes/autodiff.py

    r23737 r24213  
    77from MatlabArray import *
    88
     9
    910class autodiff(object):
    10         """
    11         AUTODIFF class definition
    12 
    13            Usage:
    14               autodiff=autodiff();
    15         """
    16         def __init__(self,*args):    # {{{
    17                 self.isautodiff                         = False
    18                 self.dependents                         = []
    19                 self.independents                       = []
    20                 self.driver                                             = 'fos_forward'
    21                 self.obufsize                                   = float('NaN')
    22                 self.lbufsize                                   = float('NaN')
    23                 self.cbufsize                                   = float('NaN')
    24                 self.tbufsize                                   = float('NaN')
    25                 self.gcTriggerMaxSize = float('NaN')
    26                 self.gcTriggerRatio   = float('NaN')
    27                 self.tapeAlloc                          = float('NaN')
    28                 if not len(args):
    29                         self.setdefaultparameters()
    30                 else:
    31                         raise RuntimeError("constructor not supported")
    32         # }}}
    33 
    34         def __repr__(self):    # {{{
    35                 s ="      automatic differentiation parameters:\n"
    36                 s+="%s\n" % fielddisplay(self,'isautodiff',"indicates if the automatic differentiation is activated")
    37                 s+="%s\n" % fielddisplay(self,'dependents',"list of dependent variables")
    38                 s+="%s\n" % fielddisplay(self,'independents',"list of independent variables")
    39                 s+="%s\n" % fielddisplay(self,'driver',"ADOLC driver ('fos_forward' or 'fov_forward')")
    40                 s+="%s\n" % fielddisplay(self,'obufsize',"Number of operations per buffer (==OBUFSIZE in usrparms.h)")
    41                 s+="%s\n" % fielddisplay(self,'lbufsize',"Number of locations per buffer (==LBUFSIZE in usrparms.h)")
    42                 s+="%s\n" % fielddisplay(self,'cbufsize',"Number of values per buffer (==CBUFSIZE in usrparms.h)")
    43                 s+="%s\n" % fielddisplay(self,'tbufsize',"Number of taylors per buffer (<=TBUFSIZE in usrparms.h)")
    44                 s+="%s\n" % fielddisplay(self,'gcTriggerRatio',"free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio")
    45                 s+="%s\n" % fielddisplay(self,'gcTriggerMaxSize',"free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize)")
    46                 s+="%s\n" % fielddisplay(self,'tapeAlloc','Iteration count of a priori memory allocation of the AD tape');
    47 
    48                 return s
    49         # }}}
    50 
    51         def setdefaultparameters(self):    # {{{
    52                 self.obufsize                                   = 524288
    53                 self.lbufsize                                   = 524288
    54                 self.cbufsize                                   = 524288
    55                 self.tbufsize                                   = 524288
    56                 self.gcTriggerRatio             =       2.0
    57                 self.gcTriggerMaxSize   =       65536
    58                 self.tapeAlloc                          = 15000000;
    59                 return self
    60         # }}}
    61 
    62         def checkconsistency(self,md,solution,analyses):    # {{{
    63                 #Early return
    64                 if not self.isautodiff:
    65                         return md
    66 
    67                 md = checkfield(md,'fieldname','autodiff.obufsize','>=',524288)
    68                 md = checkfield(md,'fieldname','autodiff.lbufsize','>=',524288)
    69                 md = checkfield(md,'fieldname','autodiff.cbufsize','>=',524288)
    70                 md = checkfield(md,'fieldname','autodiff.tbufsize','>=',524288)
    71                 md = checkfield(md,'fieldname','autodiff.gcTriggerRatio','>=',2.0)
    72                 md = checkfield(md,'fieldname','autodiff.gcTriggerMaxSize','>=',65536)
    73                 md = checkfield(md,'fieldname','autodiff.tapeAlloc','>=',0);
    74 
    75                 #Driver value:
    76                 md = checkfield(md,'fieldname','autodiff.driver','values',['fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all'])
    77 
    78                 #go through our dependents and independents and check consistency:
    79                 for dep in self.dependents:
    80                         dep.checkconsistency(md,solution,analyses)
    81                 for i,indep in enumerate(self.independents):
    82                         indep.checkconsistency(md,i,solution,analyses,self.driver)
    83 
    84                 return md
    85         # }}}
    86 
    87         def marshall(self,prefix,md,fid):    # {{{
    88                 WriteData(fid,prefix,'object',self,'fieldname','isautodiff','format','Boolean')
    89                 WriteData(fid,prefix,'object',self,'fieldname','driver','format','String')
    90 
    91                 #early return
    92                 if not self.isautodiff:
    93                         WriteData(fid,prefix,'data',False,'name','md.autodiff.mass_flux_segments_present','format','Boolean')
    94                         WriteData(fid,prefix,'data',False,'name','md.autodiff.keep','format','Boolean')
    95                         return
    96 
    97                 #buffer sizes {{{
    98                 WriteData(fid,prefix,'object',self,'fieldname','obufsize','format','Double');
    99                 WriteData(fid,prefix,'object',self,'fieldname','lbufsize','format','Double');
    100                 WriteData(fid,prefix,'object',self,'fieldname','cbufsize','format','Double');
    101                 WriteData(fid,prefix,'object',self,'fieldname','tbufsize','format','Double');
    102                 WriteData(fid,prefix,'object',self,'fieldname','gcTriggerRatio','format','Double');
    103                 WriteData(fid,prefix,'object',self,'fieldname','gcTriggerMaxSize','format','Double');
    104                 WriteData(fid,prefix,'object',self,'fieldname','tapeAlloc','format','Integer');
    105                 #}}}
    106                 #process dependent variables {{{
    107                 num_dependent_objects=len(self.dependents)
    108                 WriteData(fid,prefix,'data',num_dependent_objects,'name','md.autodiff.num_dependent_objects','format','Integer')
    109 
    110                 if num_dependent_objects:
    111                         names=[]
    112                         types=np.zeros(num_dependent_objects)
    113                         indices=np.zeros(num_dependent_objects)
    114 
    115                         for i,dep in enumerate(self.dependents):
    116                                 names.append(dep.name)
    117                                 types[i]=dep.typetoscalar()
    118                                 indices[i]=dep.index
    119 
    120                         WriteData(fid,prefix,'data',names,'name','md.autodiff.dependent_object_names','format','StringArray')
    121                         WriteData(fid,prefix,'data',types,'name','md.autodiff.dependent_object_types','format','IntMat','mattype',3)
    122                         WriteData(fid,prefix,'data',indices,'name','md.autodiff.dependent_object_indices','format','IntMat','mattype',3)
    123                 #}}}
    124                 #process independent variables {{{
    125                 num_independent_objects=len(self.independents)
    126                 WriteData(fid,prefix,'data',num_independent_objects,'name','md.autodiff.num_independent_objects','format','Integer')
    127 
    128                 if num_independent_objects:
    129                         names=[None] * num_independent_objects
    130                         types=np.zeros(num_independent_objects)
    131 
    132                         for i,indep in enumerate(self.independents):
    133                                 names[i]=indep.name
    134                                 types[i]=indep.typetoscalar()
    135 
    136                         WriteData(fid,prefix,'data',names,'name','md.autodiff.independent_object_names','format','StringArray')
    137                         WriteData(fid,prefix,'data',types,'name','md.autodiff.independent_object_types','format','IntMat','mattype',3)
    138                 #}}}
    139                 #if driver is fos_forward, build index:  {{{
    140                 if strcmpi(self.driver,'fos_forward'):
    141                         index=0
    142 
    143                         for indep in self.independents:
    144                                 if not np.isnan(indep.fos_forward_index):
    145                                         index+=indep.fos_forward_index
    146                                         break
    147                                 else:
    148                                         if strcmpi(indep.type,'scalar'):
    149                                                 index+=1
    150                                         else:
    151                                                 index+=indep.nods
    152 
    153                         index-=1    #get c-index numbering going
    154                         WriteData(fid,prefix,'data',index,'name','md.autodiff.fos_forward_index','format','Integer')
    155                 #}}}
    156                 #if driver is fos_reverse, build index:  {{{
    157                 if strcmpi(self.driver,'fos_reverse'):
    158                         index=0
    159 
    160                         for dep in self.dependents:
    161                                 if not np.isnan(dep.fos_reverse_index):
    162                                         index+=dep.fos_reverse_index
    163                                         break
    164                                 else:
    165                                         if strcmpi(dep.type,'scalar'):
    166                                                 index+=1
    167                                         else:
    168                                                 index+=dep.nods
    169 
    170                         index-=1    #get c-index numbering going
    171                         WriteData(fid,prefix,'data',index,'name','md.autodiff.fos_reverse_index','format','Integer')
    172                 #}}}
    173                 #if driver is fov_forward, build indices:  {{{
    174                 if strcmpi(self.driver,'fov_forward'):
    175                         indices=0
    176 
    177                         for indep in self.independents:
    178                                 if indep.fos_forward_index:
    179                                         indices+=indep.fov_forward_indices
    180                                         break
    181                                 else:
    182                                         if strcmpi(indep.type,'scalar'):
    183                                                 indices+=1
    184                                         else:
    185                                                 indices+=indep.nods
    186 
    187                         indices-=1    #get c-indices numbering going
    188                         WriteData(fid,prefix,'data',indices,'name','md.autodiff.fov_forward_indices','format','IntMat','mattype',3)
    189                 #}}}
    190                 #deal with mass fluxes:  {{{
    191                 mass_flux_segments=[dep.segments for dep in self.dependents if strcmpi(dep.name,'MassFlux')]
    192 
    193                 if mass_flux_segments:
    194                         WriteData(fid,prefix,'data',mass_flux_segments,'name','md.autodiff.mass_flux_segments','format','MatArray')
    195                         flag=True
    196                 else:
    197                         flag=False
    198                 WriteData(fid,prefix,'data',flag,'name','md.autodiff.mass_flux_segments_present','format','Boolean')
    199                 #}}}
    200                 #deal with trace keep on: {{{
    201                 keep=False
    202 
    203                 #From ADOLC userdoc:
    204                 # The optional integer argument keep of trace on determines whether the numerical values of all active variables are
    205                 # recorded in a buffered temporary array or file called the taylor stack. This option takes effect if keep = 1 and
    206                 # prepares the scene for an immediately following gradient evaluation by a call to a routine implementing the reverse
    207                 # mode as described in the Section 4 and Section 5.
    208                 #
    209 
    210                 if len(self.driver)<=3:
    211                         keep=False    #there is no "_reverse" string within the driver string:
    212                 else:
    213                         if strncmpi(self.driver[3:],'_reverse',8):
    214                                 keep=True
    215                         else:
    216                                 keep=False
    217                 WriteData(fid,prefix,'data',keep,'name','md.autodiff.keep','format','Boolean')
    218                 #}}}
    219 
    220                 return
    221         # }}}
     11    """
     12    AUTODIFF class definition
     13
     14       Usage:
     15          autodiff = autodiff()
     16    """
     17    def __init__(self, *args):  # {{{
     18        self.isautodiff = False
     19        self.dependents = []
     20        self.independents = []
     21        self.driver = 'fos_forward'
     22        self.obufsize = float('NaN')
     23        self.lbufsize = float('NaN')
     24        self.cbufsize = float('NaN')
     25        self.tbufsize = float('NaN')
     26        self.gcTriggerMaxSize = float('NaN')
     27        self.gcTriggerRatio = float('NaN')
     28        self.tapeAlloc = float('NaN')
     29        if not len(args):
     30            self.setdefaultparameters()
     31        else:
     32            raise RuntimeError("constructor not supported")
     33    # }}}
     34
     35    def __repr__(self):  # {{{
     36        s = "      automatic differentiation parameters:\n"
     37        s += "%s\n" % fielddisplay(self, 'isautodiff', "indicates if the automatic differentiation is activated")
     38        s += "%s\n" % fielddisplay(self, 'dependents', "list of dependent variables")
     39        s += "%s\n" % fielddisplay(self, 'independents', "list of independent variables")
     40        s += "%s\n" % fielddisplay(self, 'driver', "ADOLC driver ('fos_forward' or 'fov_forward')")
     41        s += "%s\n" % fielddisplay(self, 'obufsize', "Number of operations per buffer (== OBUFSIZE in usrparms.h)")
     42        s += "%s\n" % fielddisplay(self, 'lbufsize', "Number of locations per buffer (== LBUFSIZE in usrparms.h)")
     43        s += "%s\n" % fielddisplay(self, 'cbufsize', "Number of values per buffer (== CBUFSIZE in usrparms.h)")
     44        s += "%s\n" % fielddisplay(self, 'tbufsize', "Number of taylors per buffer (<=TBUFSIZE in usrparms.h)")
     45        s += "%s\n" % fielddisplay(self, 'gcTriggerRatio', "free location block sorting / consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio")
     46        s += "%s\n" % fielddisplay(self, 'gcTriggerMaxSize', "free location block sorting / consolidation triggered if the allocated locations exceed gcTriggerMaxSize)")
     47        s += "%s\n" % fielddisplay(self, 'tapeAlloc', 'Iteration count of a priori memory allocation of the AD tape')
     48
     49        return s
     50    # }}}
     51
     52    def setdefaultparameters(self):  # {{{
     53        self.obufsize = 524288
     54        self.lbufsize = 524288
     55        self.cbufsize = 524288
     56        self.tbufsize = 524288
     57        self.gcTriggerRatio = 2.0
     58        self.gcTriggerMaxSize = 65536
     59        self.tapeAlloc = 15000000
     60        return self
     61    # }}}
     62
     63    def checkconsistency(self, md, solution, analyses):  # {{{
     64        #Early return
     65        if not self.isautodiff:
     66            return md
     67
     68        md = checkfield(md, 'fieldname', 'autodiff.obufsize', '>=', 524288)
     69        md = checkfield(md, 'fieldname', 'autodiff.lbufsize', '>=', 524288)
     70        md = checkfield(md, 'fieldname', 'autodiff.cbufsize', '>=', 524288)
     71        md = checkfield(md, 'fieldname', 'autodiff.tbufsize', '>=', 524288)
     72        md = checkfield(md, 'fieldname', 'autodiff.gcTriggerRatio', '>=', 2.0)
     73        md = checkfield(md, 'fieldname', 'autodiff.gcTriggerMaxSize', '>=', 65536)
     74        md = checkfield(md, 'fieldname', 'autodiff.tapeAlloc', '>=', 0)
     75
     76    #Driver value:
     77        md = checkfield(md, 'fieldname', 'autodiff.driver', 'values', ['fos_forward', 'fov_forward', 'fov_forward_all', 'fos_reverse', 'fov_reverse', 'fov_reverse_all'])
     78
     79    #go through our dependents and independents and check consistency:
     80        for dep in self.dependents:
     81            dep.checkconsistency(md, solution, analyses)
     82        for i, indep in enumerate(self.independents):
     83            indep.checkconsistency(md, i, solution, analyses, self.driver)
     84
     85        return md
     86    # }}}
     87
     88    def marshall(self, prefix, md, fid):  # {{{
     89        WriteData(fid, prefix, 'object', self, 'fieldname', 'isautodiff', 'format', 'Boolean')
     90        WriteData(fid, prefix, 'object', self, 'fieldname', 'driver', 'format', 'String')
     91
     92        #early return
     93        if not self.isautodiff:
     94            WriteData(fid, prefix, 'data', False, 'name', 'md.autodiff.mass_flux_segments_present', 'format', 'Boolean')
     95            WriteData(fid, prefix, 'data', False, 'name', 'md.autodiff.keep', 'format', 'Boolean')
     96            return
     97
     98        #buffer sizes {{{
     99        WriteData(fid, prefix, 'object', self, 'fieldname', 'obufsize', 'format', 'Double')
     100        WriteData(fid, prefix, 'object', self, 'fieldname', 'lbufsize', 'format', 'Double')
     101        WriteData(fid, prefix, 'object', self, 'fieldname', 'cbufsize', 'format', 'Double')
     102        WriteData(fid, prefix, 'object', self, 'fieldname', 'tbufsize', 'format', 'Double')
     103        WriteData(fid, prefix, 'object', self, 'fieldname', 'gcTriggerRatio', 'format', 'Double')
     104        WriteData(fid, prefix, 'object', self, 'fieldname', 'gcTriggerMaxSize', 'format', 'Double')
     105        WriteData(fid, prefix, 'object', self, 'fieldname', 'tapeAlloc', 'format', 'Integer')
     106        #}}}
     107        #process dependent variables {{{
     108        num_dependent_objects = len(self.dependents)
     109        WriteData(fid, prefix, 'data', num_dependent_objects, 'name', 'md.autodiff.num_dependent_objects', 'format', 'Integer')
     110
     111        if num_dependent_objects:
     112            names = []
     113            types = np.zeros(num_dependent_objects)
     114            indices = np.zeros(num_dependent_objects)
     115
     116            for i, dep in enumerate(self.dependents):
     117                names.append(dep.name)
     118                types[i] = dep.typetoscalar()
     119                indices[i] = dep.index
     120
     121            WriteData(fid, prefix, 'data', names, 'name', 'md.autodiff.dependent_object_names', 'format', 'StringArray')
     122            WriteData(fid, prefix, 'data', types, 'name', 'md.autodiff.dependent_object_types', 'format', 'IntMat', 'mattype', 3)
     123            WriteData(fid, prefix, 'data', indices, 'name', 'md.autodiff.dependent_object_indices', 'format', 'IntMat', 'mattype', 3)
     124            #}}}
     125        #process independent variables {{{
     126        num_independent_objects = len(self.independents)
     127        WriteData(fid, prefix, 'data', num_independent_objects, 'name', 'md.autodiff.num_independent_objects', 'format', 'Integer')
     128
     129        if num_independent_objects:
     130            names = [None] * num_independent_objects
     131            types = np.zeros(num_independent_objects)
     132
     133            for i, indep in enumerate(self.independents):
     134                names[i] = indep.name
     135                types[i] = indep.typetoscalar()
     136
     137            WriteData(fid, prefix, 'data', names, 'name', 'md.autodiff.independent_object_names', 'format', 'StringArray')
     138            WriteData(fid, prefix, 'data', types, 'name', 'md.autodiff.independent_object_types', 'format', 'IntMat', 'mattype', 3)
     139            #}}}
     140        #if driver is fos_forward, build index:  {{{
     141        if strcmpi(self.driver, 'fos_forward'):
     142            index = 0
     143
     144            for indep in self.independents:
     145                if not np.isnan(indep.fos_forward_index):
     146                    index += indep.fos_forward_index
     147                    break
     148                else:
     149                    if strcmpi(indep.type, 'scalar'):
     150                        index += 1
     151                    else:
     152                        index += indep.nods
     153
     154            index -= 1  #get c - index numbering going
     155            WriteData(fid, prefix, 'data', index, 'name', 'md.autodiff.fos_forward_index', 'format', 'Integer')
     156            #}}}
     157        #if driver is fos_reverse, build index:  {{{
     158        if strcmpi(self.driver, 'fos_reverse'):
     159            index = 0
     160
     161            for dep in self.dependents:
     162                if not np.isnan(dep.fos_reverse_index):
     163                    index += dep.fos_reverse_index
     164                    break
     165                else:
     166                    if strcmpi(dep.type, 'scalar'):
     167                        index += 1
     168                    else:
     169                        index += dep.nods
     170
     171            index -= 1  #get c - index numbering going
     172            WriteData(fid, prefix, 'data', index, 'name', 'md.autodiff.fos_reverse_index', 'format', 'Integer')
     173            #}}}
     174        #if driver is fov_forward, build indices:  {{{
     175        if strcmpi(self.driver, 'fov_forward'):
     176            indices = 0
     177
     178            for indep in self.independents:
     179                if indep.fos_forward_index:
     180                    indices += indep.fov_forward_indices
     181                    break
     182                else:
     183                    if strcmpi(indep.type, 'scalar'):
     184                        indices += 1
     185                    else:
     186                        indices += indep.nods
     187
     188            indices -= 1  #get c - indices numbering going
     189            WriteData(fid, prefix, 'data', indices, 'name', 'md.autodiff.fov_forward_indices', 'format', 'IntMat', 'mattype', 3)
     190            #}}}
     191        #deal with mass fluxes:  {{{
     192        mass_flux_segments = [dep.segments for dep in self.dependents if strcmpi(dep.name, 'MassFlux')]
     193
     194        if mass_flux_segments:
     195            WriteData(fid, prefix, 'data', mass_flux_segments, 'name', 'md.autodiff.mass_flux_segments', 'format', 'MatArray')
     196            flag = True
     197        else:
     198            flag = False
     199        WriteData(fid, prefix, 'data', flag, 'name', 'md.autodiff.mass_flux_segments_present', 'format', 'Boolean')
     200        #}}}
     201        #deal with trace keep on: {{{
     202        keep = False
     203
     204        #From ADOLC userdoc:
     205        # The optional integer argument keep of trace on determines whether the numerical values of all active variables are
     206        # recorded in a buffered temporary array or file called the taylor stack. This option takes effect if keep = 1 and
     207        # prepares the scene for an immediately following gradient evaluation by a call to a routine implementing the reverse
     208        # mode as described in the Section 4 and Section 5.
     209        #
     210        if len(self.driver) <= 3:
     211            keep = False  #there is no "_reverse" string within the driver string:
     212        else:
     213            if strncmpi(self.driver[3:], '_reverse', 8):
     214                keep = True
     215            else:
     216                keep = False
     217        WriteData(fid, prefix, 'data', keep, 'name', 'md.autodiff.keep', 'format', 'Boolean')
     218    #}}}
     219
     220        return
     221    # }}}
  • issm/trunk-jpl/src/m/classes/balancethickness.py

    r23095 r24213  
    33from WriteData import WriteData
    44
     5
    56class balancethickness(object):
    6         """
    7         BALANCETHICKNESS class definition
     7    """
     8    BALANCETHICKNESS class definition
    89
    9            Usage:
    10               balancethickness=balancethickness();
    11         """
     10       Usage:
     11          balancethickness = balancethickness()
     12    """
    1213
    13         def __init__(self): # {{{
    14                 self.spcthickness      = float('NaN')
    15                 self.thickening_rate   = float('NaN')
    16                 self.stabilization     = 0
    17                
    18                 self.omega             = float('NaN')
    19                 self.slopex            = float('NaN')
    20                 self.slopey            = float('NaN')
     14    def __init__(self):  # {{{
     15        self.spcthickness = float('NaN')
     16        self.thickening_rate = float('NaN')
     17        self.stabilization = 0
     18        self.omega = float('NaN')
     19        self.slopex = float('NaN')
     20        self.slopey = float('NaN')
    2121
    22                 #set defaults
    23                 self.setdefaultparameters()
     22    #set defaults
     23        self.setdefaultparameters()
    2424
    25                 #}}}
    26         def __repr__(self): # {{{
    27                
    28                 string='   balance thickness solution parameters:'
    29                
    30                 string="%s\n%s"%(string,fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]'))
    31                 string="%s\n%s"%(string,fielddisplay(self,'thickening_rate','ice thickening rate used in the mass conservation (dh/dt) [m/yr]'))
    32                 string="%s\n%s"%(string,fielddisplay(self,'stabilization',"0: None, 1: SU, 2: SSA's artificial diffusivity, 3:DG"))
    33                 return string
    34                 #}}}
    35         def setdefaultparameters(self): # {{{
    36                
    37                 #Type of stabilization used
    38                 self.stabilization=1
     25    #}}}
    3926
    40                 return self
    41         #}}}
    42         def checkconsistency(self,md,solution,analyses):    # {{{
    43                 #Early return
    44                 if not solution=='BalancethicknessSolution':
    45                         return md
     27    def __repr__(self):  # {{{
     28        string = '   balance thickness solution parameters:'
    4629
    47                 md = checkfield(md,'fieldname','balancethickness.spcthickness')
    48                 md = checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    49                 md = checkfield(md,'fieldname','balancethickness.stabilization','size',[1],'values',[0,1,2,3])
    50                 #md = checkfield(md,'fieldname','balancethickness.omega','size', [md.mesh.numberofvertices],'NaN',1,'Inf',1,'>=',0);
    51                 return md
    52         # }}}
    53         def marshall(self,prefix,md,fid):    # {{{
     30        string = "%s\n%s" % (string, fielddisplay(self, 'spcthickness', 'thickness constraints (NaN means no constraint) [m]'))
     31        string = "%s\n%s" % (string, fielddisplay(self, 'thickening_rate', 'ice thickening rate used in the mass conservation (dh / dt) [m / yr]'))
     32        string = "%s\n%s" % (string, fielddisplay(self, 'stabilization', "0: None, 1: SU, 2: SSA's artificial diffusivity, 3:DG"))
     33        return string
     34    #}}}
    5435
    55                 yts=md.constants.yts
     36    def setdefaultparameters(self):  # {{{
     37        #Type of stabilization used
     38        self.stabilization = 1
     39        return self
     40    #}}}
    5641
    57                 WriteData(fid,prefix,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1)
    58                 WriteData(fid,prefix,'object',self,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1./yts)
    59                 WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer')
    60                 WriteData(fid,prefix,'object',self,'fieldname','slopex','format','DoubleMat','mattype',1)
    61                 WriteData(fid,prefix,'object',self,'fieldname','slopey','format','DoubleMat','mattype',1)
    62                 WriteData(fid,prefix,'object',self,'fieldname','omega','format','DoubleMat','mattype',1)
    63         # }}}
     42    def checkconsistency(self, md, solution, analyses):  # {{{
     43        #Early return
     44        if not solution == 'BalancethicknessSolution':
     45            return md
     46
     47        md = checkfield(md, 'fieldname', 'balancethickness.spcthickness')
     48        md = checkfield(md, 'fieldname', 'balancethickness.thickening_rate', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
     49        md = checkfield(md, 'fieldname', 'balancethickness.stabilization', 'size', [1], 'values', [0, 1, 2, 3])
     50    #md = checkfield(md, 'fieldname', 'balancethickness.omega', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1, '>=', 0)
     51        return md
     52    # }}}
     53
     54    def marshall(self, prefix, md, fid):  # {{{
     55        yts = md.constants.yts
     56        WriteData(fid, prefix, 'object', self, 'fieldname', 'spcthickness', 'format', 'DoubleMat', 'mattype', 1)
     57        WriteData(fid, prefix, 'object', self, 'fieldname', 'thickening_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
     58        WriteData(fid, prefix, 'object', self, 'fieldname', 'stabilization', 'format', 'Integer')
     59        WriteData(fid, prefix, 'object', self, 'fieldname', 'slopex', 'format', 'DoubleMat', 'mattype', 1)
     60        WriteData(fid, prefix, 'object', self, 'fieldname', 'slopey', 'format', 'DoubleMat', 'mattype', 1)
     61        WriteData(fid, prefix, 'object', self, 'fieldname', 'omega', 'format', 'DoubleMat', 'mattype', 1)
     62    # }}}
  • issm/trunk-jpl/src/m/classes/bamggeom.py

    r23716 r24213  
    11import numpy as np
    22
     3
    34class bamggeom(object):
    4         """
    5         BAMGGEOM class definition
     5    """
     6    BAMGGEOM class definition
    67
    7            Usage:
    8               bamggeom(varargin)
    9         """
     8       Usage:
     9          bamggeom(varargin)
     10    """
    1011
    11         def __init__(self,*args):    # {{{
    12                 self.Vertices=np.empty((0,3))
    13                 self.Edges=np.empty((0,3))
    14                 self.TangentAtEdges=np.empty((0,4))
    15                 self.Corners=np.empty((0,1))
    16                 self.RequiredVertices=np.empty((0,1))
    17                 self.RequiredEdges=np.empty((0,1))
    18                 self.CrackedEdges=np.empty((0,0))
    19                 self.SubDomains=np.empty((0,4))
     12    def __init__(self, *args):  # {{{
     13        self.Vertices = np.empty((0, 3))
     14        self.Edges = np.empty((0, 3))
     15        self.TangentAtEdges = np.empty((0, 4))
     16        self.Corners = np.empty((0, 1))
     17        self.RequiredVertices = np.empty((0, 1))
     18        self.RequiredEdges = np.empty((0, 1))
     19        self.CrackedEdges = np.empty((0, 0))
     20        self.SubDomains = np.empty((0, 4))
    2021
    21                 if not len(args):
    22                         # if no input arguments, create a default object
    23                         pass
     22        if not len(args):
     23            # if no input arguments, create a default object
     24            pass
    2425
    25                 elif len(args) == 1:
    26                         object=args[0]
    27                         for field in list(object.keys()):
    28                                 if field in vars(self):
    29                                         setattr(self,field,object[field])
     26        elif len(args) == 1:
     27            object = args[0]
     28            for field in list(object.keys()):
     29                if field in vars(self):
     30                    setattr(self, field, object[field])
    3031
    31                 else:
    32                         raise TypeError("bamggeom constructor error message: unknown type of constructor call")
    33         # }}}
    34         def __repr__(self):    # {{{
    35                 s ="class '%s' object '%s' = \n" % (type(self),'self')
    36                 s+="    Vertices: %s\n" % str(self.Vertices)
    37                 s+="    Edges: %s\n" % str(self.Edges)
    38                 s+="    TangentAtEdges: %s\n" % str(self.TangentAtEdges)
    39                 s+="    Corners: %s\n" % str(self.Corners)
    40                 s+="    RequiredVertices: %s\n" % str(self.RequiredVertices)
    41                 s+="    RequiredEdges: %s\n" % str(self.RequiredEdges)
    42                 s+="    CrackedEdges: %s\n" % str(self.CrackedEdges)
    43                 s+="    SubDomains: %s\n" % str(self.SubDomains)
    44                 return s
    45         # }}}
     32        else:
     33            raise TypeError("bamggeom constructor error message: unknown type of constructor call")
     34    # }}}
     35
     36    def __repr__(self):  # {{{
     37        s = "class '%s' object '%s'=\n" % (type(self), 'self')
     38        s += "    Vertices: %s\n" % str(self.Vertices)
     39        s += "    Edges: %s\n" % str(self.Edges)
     40        s += "    TangentAtEdges: %s\n" % str(self.TangentAtEdges)
     41        s += "    Corners: %s\n" % str(self.Corners)
     42        s += "    RequiredVertices: %s\n" % str(self.RequiredVertices)
     43        s += "    RequiredEdges: %s\n" % str(self.RequiredEdges)
     44        s += "    CrackedEdges: %s\n" % str(self.CrackedEdges)
     45        s += "    SubDomains: %s\n" % str(self.SubDomains)
     46        return s
     47    # }}}
  • issm/trunk-jpl/src/m/classes/bamgmesh.py

    r23716 r24213  
    11import numpy as np
    22
     3
    34class bamgmesh(object):
    4         """
    5         BAMGMESH class definition
     5    """
     6    BAMGMESH class definition
    67
    7            Usage:
    8               bamgmesh(varargin)
    9         """
     8       Usage:
     9          bamgmesh(varargin)
     10    """
    1011
    11         def __init__(self,*args):    # {{{
    12                 self.Vertices=np.empty((0,3))
    13                 self.Edges=np.empty((0,3))
    14                 self.Triangles=np.empty((0,0))
    15                 self.IssmEdges=np.empty((0,0))
    16                 self.IssmSegments=np.empty((0,0))
    17                 self.VerticesOnGeomVertex=np.empty((0,0))
    18                 self.VerticesOnGeomEdge=np.empty((0,0))
    19                 self.EdgesOnGeomEdge=np.empty((0,0))
    20                 self.SubDomains=np.empty((0,4))
    21                 self.SubDomainsFromGeom=np.empty((0,0))
    22                 self.ElementConnectivity=np.empty((0,0))
    23                 self.NodalConnectivity=np.empty((0,0))
    24                 self.NodalElementConnectivity=np.empty((0,0))
    25                 self.CrackedVertices=np.empty((0,0))
    26                 self.CrackedEdges=np.empty((0,0))
     12    def __init__(self, *args):  # {{{
     13        self.Vertices = np.empty((0, 3))
     14        self.Edges = np.empty((0, 3))
     15        self.Triangles = np.empty((0, 0))
     16        self.IssmEdges = np.empty((0, 0))
     17        self.IssmSegments = np.empty((0, 0))
     18        self.VerticesOnGeomVertex = np.empty((0, 0))
     19        self.VerticesOnGeomEdge = np.empty((0, 0))
     20        self.EdgesOnGeomEdge = np.empty((0, 0))
     21        self.SubDomains = np.empty((0, 4))
     22        self.SubDomainsFromGeom = np.empty((0, 0))
     23        self.ElementConnectivity = np.empty((0, 0))
     24        self.NodalConnectivity = np.empty((0, 0))
     25        self.NodalElementConnectivity = np.empty((0, 0))
     26        self.CrackedVertices = np.empty((0, 0))
     27        self.CrackedEdges = np.empty((0, 0))
    2728
    28                 if not len(args):
    29                         # if no input arguments, create a default object
    30                         pass
     29        if not len(args):
     30            # if no input arguments, create a default object
     31            pass
    3132
    32                 elif len(args) == 1:
    33                         object=args[0]
    34                         for field in list(object.keys()):
    35                                 if field in vars(self):
    36                                         setattr(self,field,object[field])
     33        elif len(args) == 1:
     34            object = args[0]
     35            for field in list(object.keys()):
     36                if field in vars(self):
     37                    setattr(self, field, object[field])
    3738
    38                 else:
    39                         raise TypeError("bamgmesh constructor error message: unknown type of constructor call")
    40         # }}}
    41         def __repr__(self):    # {{{
    42                 s ="class '%s' object '%s' = \n" % (type(self),'self')
    43                 s+="    Vertices: %s\n" % str(self.Vertices)
    44                 s+="    Edges: %s\n" % str(self.Edges)
    45                 s+="    Triangles: %s\n" % str(self.Triangles)
    46                 s+="    IssmEdges: %s\n" % str(self.IssmEdges)
    47                 s+="    IssmSegments: %s\n" % str(self.IssmSegments)
    48                 s+="    VerticesOnGeomVertex: %s\n" % str(self.VerticesOnGeomVertex)
    49                 s+="    VerticesOnGeomEdge: %s\n" % str(self.VerticesOnGeomEdge)
    50                 s+="    EdgesOnGeomEdge: %s\n" % str(self.EdgesOnGeomEdge)
    51                 s+="    SubDomains: %s\n" % str(self.SubDomains)
    52                 s+="    SubDomainsFromGeom: %s\n" % str(self.SubDomainsFromGeom)
    53                 s+="    ElementConnectivity: %s\n" % str(self.ElementConnectivity)
    54                 s+="    NodalConnectivity: %s\n" % str(self.NodalConnectivity)
    55                 s+="    NodalElementConnectivity: %s\n" % str(self.NodalElementConnectivity)
    56                 s+="    CrackedVertices: %s\n" % str(self.CrackedVertices)
    57                 s+="    CrackedEdges: %s\n" % str(self.CrackedEdges)
    58                 return s
    59         # }}}
     39        else:
     40            raise TypeError("bamgmesh constructor error message: unknown type of constructor call")
     41    # }}}
     42
     43    def __repr__(self):  # {{{
     44        s = "class '%s' object '%s' = \n" % (type(self), 'self')
     45        s += "    Vertices: %s\n" % str(self.Vertices)
     46        s += "    Edges: %s\n" % str(self.Edges)
     47        s += "    Triangles: %s\n" % str(self.Triangles)
     48        s += "    IssmEdges: %s\n" % str(self.IssmEdges)
     49        s += "    IssmSegments: %s\n" % str(self.IssmSegments)
     50        s += "    VerticesOnGeomVertex: %s\n" % str(self.VerticesOnGeomVertex)
     51        s += "    VerticesOnGeomEdge: %s\n" % str(self.VerticesOnGeomEdge)
     52        s += "    EdgesOnGeomEdge: %s\n" % str(self.EdgesOnGeomEdge)
     53        s += "    SubDomains: %s\n" % str(self.SubDomains)
     54        s += "    SubDomainsFromGeom: %s\n" % str(self.SubDomainsFromGeom)
     55        s += "    ElementConnectivity: %s\n" % str(self.ElementConnectivity)
     56        s += "    NodalConnectivity: %s\n" % str(self.NodalConnectivity)
     57        s += "    NodalElementConnectivity: %s\n" % str(self.NodalElementConnectivity)
     58        s += "    CrackedVertices: %s\n" % str(self.CrackedVertices)
     59        s += "    CrackedEdges: %s\n" % str(self.CrackedEdges)
     60        return s
     61    # }}}
  • issm/trunk-jpl/src/m/classes/basalforcings.py

    r23716 r24213  
    55import numpy as np
    66
     7
    78class basalforcings(object):
    8         """
    9         BASAL FORCINGS class definition
     9    """
     10    BASAL FORCINGS class definition
    1011
    11            Usage:
    12               basalforcings=basalforcings();
    13         """
     12       Usage:
     13          basalforcings = basalforcings()
     14    """
    1415
    15         def __init__(self): # {{{
    16                 self.groundedice_melting_rate = float('NaN')
    17                 self.floatingice_melting_rate = float('NaN')
    18                 self.geothermalflux            = float('NaN')
     16    def __init__(self): # {{{
     17        self.groundedice_melting_rate = float('NaN')
     18        self.floatingice_melting_rate = float('NaN')
     19        self.geothermalflux = float('NaN')
    1920
    20                 #set defaults
    21                 self.setdefaultparameters()
     21    #set defaults
     22        self.setdefaultparameters()
    2223
    23                 #}}}
    24         def __repr__(self): # {{{
    25                 string="   basal forcings parameters:"
     24    #}}}
    2625
    27                 string="%s\n%s"%(string,fielddisplay(self,"groundedice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
    28                 string="%s\n%s"%(string,fielddisplay(self,"floatingice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
    29                 string="%s\n%s"%(string,fielddisplay(self,"geothermalflux","geothermal heat flux [W/m^2]"))
    30                 return string
    31                 #}}}
    32         def extrude(self,md): # {{{
    33                 self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1)
    34                 self.floatingice_melting_rate=project3d(md,'vector',self.floatingice_melting_rate,'type','node','layer',1)
    35                 self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1)    #bedrock only gets geothermal flux
    36                 return self
    37         #}}}
    38         def initialize(self,md): # {{{
     26    def __repr__(self):  # {{{
     27        string = "   basal forcings parameters:"
    3928
    40                 if np.all(np.isnan(self.groundedice_melting_rate)):
    41                         self.groundedice_melting_rate=np.zeros((md.mesh.numberofvertices))
    42                         print("      no basalforcings.groundedice_melting_rate specified: values set as zero")
     29        string = "%s\n%s" % (string, fielddisplay(self, "groundedice_melting_rate", "basal melting rate (positive if melting) [m / yr]"))
     30        string = "%s\n%s" % (string, fielddisplay(self, "floatingice_melting_rate", "basal melting rate (positive if melting) [m / yr]"))
     31        string = "%s\n%s" % (string, fielddisplay(self, "geothermalflux", "geothermal heat flux [W / m^2]"))
     32        return string
     33    #}}}
    4334
    44                 if np.all(np.isnan(self.floatingice_melting_rate)):
    45                         self.floatingice_melting_rate=np.zeros((md.mesh.numberofvertices))
    46                         print("      no basalforcings.floatingice_melting_rate specified: values set as zero")
    47                 #if np.all(np.isnan(self.geothermalflux)):
    48                         #self.geothermalflux=np.zeros((md.mesh.numberofvertices))
    49                         #print "      no basalforcings.geothermalflux specified: values set as zero"
     35    def extrude(self, md):  # {{{
     36        self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1)
     37        self.floatingice_melting_rate = project3d(md, 'vector', self.floatingice_melting_rate, 'type', 'node', 'layer', 1)
     38        self.geothermalflux = project3d(md, 'vector', self.geothermalflux, 'type', 'node', 'layer', 1)  #bedrock only gets geothermal flux
     39        return self
     40    #}}}
    5041
    51                 return self
    52         #}}}
    53         def setdefaultparameters(self): # {{{
    54                 return self
    55         #}}}
    56         def checkconsistency(self,md,solution,analyses):    # {{{
     42    def initialize(self, md):  # {{{
     43        if np.all(np.isnan(self.groundedice_melting_rate)):
     44            self.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
     45            print("      no basalforcings.groundedice_melting_rate specified: values set as zero")
    5746
    58                 if 'MasstransportAnalysis' in analyses and not (solution=='TransientSolution' and not md.transient.ismasstransport):
    59                         md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
    60                         md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
     47        if np.all(np.isnan(self.floatingice_melting_rate)):
     48            self.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices))
     49            print("      no basalforcings.floatingice_melting_rate specified: values set as zero")
     50    #if np.all(np.isnan(self.geothermalflux)):
     51    #self.geothermalflux = np.zeros((md.mesh.numberofvertices))
     52    #print "      no basalforcings.geothermalflux specified: values set as zero"
    6153
    62                 if 'BalancethicknessAnalysis' in analyses:
    63                         md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    64                         md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
     54        return self
     55    #}}}
    6556
    66                 if 'ThermalAnalysis' in analyses and not (solution=='TransientSolution' and not md.transient.isthermal):
    67                         md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
    68                         md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
    69                         md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
     57    def setdefaultparameters(self):  # {{{
     58        return self
     59    #}}}
    7060
    71                 return md
    72         # }}}
    73         def marshall(self,prefix,md,fid):    # {{{
     61    def checkconsistency(self, md, solution, analyses):  # {{{
    7462
    75                 yts=md.constants.yts
     63        if 'MasstransportAnalysis' in analyses and not (solution == 'TransientSolution' and not md.transient.ismasstransport):
     64            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     65            md = checkfield(md, 'fieldname', 'basalforcings.floatingice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
    7666
    77                 WriteData(fid,prefix,'name','md.basalforcings.model','data',1,'format','Integer');
    78                 WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    79                 WriteData(fid,prefix,'object',self,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    80                 WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    81         # }}}
     67        if 'BalancethicknessAnalysis' in analyses:
     68            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     69            md = checkfield(md, 'fieldname', 'basalforcings.floatingice_melting_rate', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     70
     71        if 'ThermalAnalysis' in analyses and not (solution == 'TransientSolution' and not md.transient.isthermal):
     72            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     73            md = checkfield(md, 'fieldname', 'basalforcings.floatingice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     74            md = checkfield(md, 'fieldname', 'basalforcings.geothermalflux', 'NaN', 1, 'Inf', 1, 'timeseries', 1, '>=', 0)
     75
     76        return md
     77    # }}}
     78
     79    def marshall(self, prefix, md, fid):  # {{{
     80
     81        yts = md.constants.yts
     82
     83        WriteData(fid, prefix, 'name', 'md.basalforcings.model', 'data', 1, 'format', 'Integer')
     84        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundedice_melting_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     85        WriteData(fid, prefix, 'object', self, 'fieldname', 'floatingice_melting_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     86        WriteData(fid, prefix, 'object', self, 'fieldname', 'geothermalflux', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     87    # }}}
  • issm/trunk-jpl/src/m/classes/calving.py

    r23658 r24213  
    44from WriteData import WriteData
    55
     6
    67class calving(object):
    7         """
    8         CALVING class definition
     8    """
     9    CALVING class definition
    910
    10            Usage:
    11               calving=calving();
    12         """
     11       Usage:
     12          calving = calving()
     13    """
    1314
    14         def __init__(self): # {{{
     15    def __init__(self): # {{{
    1516
    16                 self.calvingrate  = float('NaN')
    17                 self.meltingrate  = float('NaN')
     17        self.calvingrate = float('NaN')
     18        self.meltingrate = float('NaN')
    1819
    19                 #set defaults
    20                 self.setdefaultparameters()
     20    #set defaults
     21        self.setdefaultparameters()
    2122
    22                 #}}}
    23         def __repr__(self): # {{{
    24                 string='   Calving parameters:'
    25                 string="%s\n%s"%(string,fielddisplay(self,'calvingrate','calving rate at given location [m/a]'))
     23    #}}}
    2624
    27                 return string
    28                 #}}}
    29         def extrude(self,md): # {{{
    30                 self.calvingrate=project3d(md,'vector',self.calvingrate,'type','node')
    31                 return self
    32         #}}}
    33         def setdefaultparameters(self): # {{{
     25    def __repr__(self):  # {{{
     26        string = '   Calving parameters:'
     27        string = "%s\n%s" % (string, fielddisplay(self, 'calvingrate', 'calving rate at given location [m / a]'))
    3428
    35                 return self
    36         #}}}
    37         def checkconsistency(self,md,solution,analyses):    # {{{
     29        return string
     30    #}}}
    3831
    39                 #Early return
    40                 if (solution!='TransientSolution') or (not md.transient.ismovingfront):
    41                         return md
     32    def extrude(self, md):  # {{{
     33        self.calvingrate = project3d(md, 'vector', self.calvingrate, 'type', 'node')
     34        return self
     35    #}}}
    4236
    43                 md = checkfield(md,'fieldname','calving.calvingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
     37    def setdefaultparameters(self):  # {{{
     38        return self
     39    #}}}
    4440
    45                 return md
    46         # }}}
    47         def marshall(self,prefix,md,fid):    # {{{
     41    def checkconsistency(self, md, solution, analyses):  # {{{
     42        #Early return
     43        if (solution != 'TransientSolution') or (not md.transient.ismovingfront):
     44            return md
    4845
    49                 yts=md.constants.yts
     46        md = checkfield(md, 'fieldname', 'calving.calvingrate', '>=', 0, 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    5047
    51                 WriteData(fid,prefix,'name','md.calving.law','data',1,'format','Integer');
    52                 WriteData(fid,prefix,'object',self,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts)
    53         # }}}
     48        return md
     49    # }}}
     50
     51    def marshall(self, prefix, md, fid):  # {{{
     52        yts = md.constants.yts
     53
     54        WriteData(fid, prefix, 'name', 'md.calving.law', 'data', 1, 'format', 'Integer')
     55        WriteData(fid, prefix, 'object', self, 'fieldname', 'calvingrate', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts, 'scale', 1. / yts)
     56    # }}}
  • issm/trunk-jpl/src/m/classes/calvingdev.py

    r22267 r24213  
    44from WriteData import WriteData
    55
     6
    67class calvingdev(object):
    7         """
    8         CALVINGDEV class definition
     8    """
     9    CALVINGDEV class definition
    910
    10            Usage:
    11               calvingdev=calvingdev();
    12         """
     11       Usage:
     12          calvingdev = calvingdev()
     13    """
    1314
    14         def __init__(self): # {{{
     15    def __init__(self): # {{{
    1516
    16                 self.stress_threshold_groundedice = 0.
    17                 self.stress_threshold_floatingice = 0.
    18                 self.meltingrate  = float('NaN')
     17        self.stress_threshold_groundedice = 0.
     18        self.stress_threshold_floatingice = 0.
     19        self.meltingrate = float('NaN')
    1920
    20                 #set defaults
    21                 self.setdefaultparameters()
     21    #set defaults
     22        self.setdefaultparameters()
    2223
    23         #}}}
    24         def __repr__(self): # {{{
    25                 string='   Calving Pi parameters:'
    26                 string="%s\n%s"%(string,fielddisplay(self,'stress_threshold_groundedice','sigma_max applied to grounded ice only [Pa]'))
    27                 string="%s\n%s"%(string,fielddisplay(self,'stress_threshold_floatingice','sigma_max applied to floating ice only [Pa]'))
     24    #}}}
    2825
    29                 string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
    30                 return string
    31         #}}}
    32         def extrude(self,md): # {{{
    33                 self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
    34                 return self
    35         #}}}
    36         def setdefaultparameters(self): # {{{
    37                 #Default sigma max
    38                 self.stress_threshold_groundedice = 1e6
    39                 self.stress_threshold_floatingice = 150e3
    40                 return self
    41         #}}}
    42         def checkconsistency(self,md,solution,analyses):    # {{{
    43                 #Early return
    44                 if solution == 'TransientSolution' or md.transient.ismovingfront == 0:
    45                         return
     26    def __repr__(self):  # {{{
     27        string = '   Calving Pi parameters:'
     28        string = "%s\n%s" % (string, fielddisplay(self, 'stress_threshold_groundedice', 'sigma_max applied to grounded ice only [Pa]'))
     29        string = "%s\n%s" % (string, fielddisplay(self, 'stress_threshold_floatingice', 'sigma_max applied to floating ice only [Pa]'))
    4630
    47                 md = checkfield(md,'fieldname','calving.stress_threshold_groundedice','>',0,'nan',1,'Inf',1)
    48                 md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'nan',1,'Inf',1)
    49                 md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0)
     31        string = "%s\n%s" % (string, fielddisplay(self, 'meltingrate', 'melting rate at given location [m / a]'))
     32        return string
     33    #}}}
    5034
    51                 return md
    52         # }}}
    53         def marshall(self,prefix,md,fid):    # {{{
    54                 yts=md.constants.yts
     35    def extrude(self, md):  # {{{
     36        self.meltingrate = project3d(md, 'vector', self.meltingrate, 'type', 'node')
     37        return self
     38    #}}}
    5539
    56                 WriteData(fid,prefix,'name','md.calving.law','data',2,'format','Integer')
    57                 WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','DoubleMat','mattype',1)
    58                 WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat','mattype',1)
    59                 WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts)
    60         # }}}
     40    def setdefaultparameters(self):  # {{{
     41        #Default sigma max
     42        self.stress_threshold_groundedice = 1e6
     43        self.stress_threshold_floatingice = 150e3
     44        return self
     45    #}}}
     46
     47    def checkconsistency(self, md, solution, analyses):  # {{{
     48        #Early return
     49        if solution == 'TransientSolution' or md.transient.ismovingfront == 0:
     50            return
     51
     52        md = checkfield(md, 'fieldname', 'calving.stress_threshold_groundedice', '>', 0, 'nan', 1, 'Inf', 1)
     53        md = checkfield(md, 'fieldname', 'calving.stress_threshold_floatingice', '>', 0, 'nan', 1, 'Inf', 1)
     54        md = checkfield(md, 'fieldname', 'calving.meltingrate', 'NaN', 1, 'Inf', 1, 'timeseries', 1, '>=', 0)
     55
     56        return md
     57    # }}}
     58
     59    def marshall(self, prefix, md, fid):  # {{{
     60        yts = md.constants.yts
     61
     62        WriteData(fid, prefix, 'name', 'md.calving.law', 'data', 2, 'format', 'Integer')
     63        WriteData(fid, prefix, 'object', self, 'fieldname', 'stress_threshold_groundedice', 'format', 'DoubleMat', 'mattype', 1)
     64        WriteData(fid, prefix, 'object', self, 'fieldname', 'stress_threshold_floatingice', 'format', 'DoubleMat', 'mattype', 1)
     65        WriteData(fid, prefix, 'object', self, 'fieldname', 'meltingrate', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts, 'scale', 1. / yts)
     66    # }}}
  • issm/trunk-jpl/src/m/classes/calvinglevermann.py

    r23658 r24213  
    22from checkfield import checkfield
    33from WriteData import WriteData
     4from project3d import project3d
     5
    46
    57class calvinglevermann(object):
    6         """
    7         CALVINGLEVERMANN class definition
     8    """
     9    CALVINGLEVERMANN class definition
    810
    9            Usage:
    10               calvinglevermann=calvinglevermann();
    11         """
     11       Usage:
     12          calvinglevermann = calvinglevermann()
     13    """
    1214
    13         def __init__(self): # {{{
     15    def __init__(self): # {{{
    1416
    15                 self.coeff        = float('NaN')
    16                 self.meltingrate  = float('NaN')
     17        self.coeff = float('NaN')
     18        self.meltingrate = float('NaN')
    1719
    18                 #set defaults
    19                 self.setdefaultparameters()
     20    #set defaults
     21        self.setdefaultparameters()
    2022
    21                 #}}}
    22         def __repr__(self): # {{{
    23                 string='   Calving Levermann parameters:'
    24                 string="%s\n%s"%(string,fielddisplay(self,'coeff','proportionality coefficient in Levermann model'))
     23    #}}}
    2524
    26                 return string
    27                 #}}}
    28         def extrude(self,md): # {{{
    29                 self.coeff=project3d(md,'vector',self.coeff,'type','node')
    30                 return self
    31         #}}}
    32         def setdefaultparameters(self): # {{{
     25    def __repr__(self):  # {{{
     26        string = '   Calving Levermann parameters:'
     27        string = "%s\n%s" % (string, fielddisplay(self, 'coeff', 'proportionality coefficient in Levermann model'))
    3328
    34                 #Proportionality coefficient in Levermann model
    35                 self.coeff=2e13;
    36         #}}}
    37         def checkconsistency(self,md,solution,analyses):    # {{{
     29        return string
     30    #}}}
    3831
    39                 #Early return
    40                 if (solution!='TransientSolution') or (not md.transient.ismovingfront):
    41                         return md
     32    def extrude(self, md):  # {{{
     33        self.coeff = project3d(md, 'vector', self.coeff, 'type', 'node')
     34        return self
     35    #}}}
    4236
    43                 md = checkfield(md,'fieldname','calving.coeff','size',[md.mesh.numberofvertices],'>',0)
    44                 return md
    45         # }}}
    46         def marshall(self,prefix,md,fid):    # {{{
    47                 yts=md.constants.yts
    48                 WriteData(fid,prefix,'name','md.calving.law','data',3,'format','Integer');
    49                 WriteData(fid,prefix,'object',self,'fieldname','coeff','format','DoubleMat','mattype',1)
    50         # }}}
     37    def setdefaultparameters(self):  # {{{
     38        #Proportionality coefficient in Levermann model
     39        self.coeff = 2e13
     40    #}}}
     41
     42    def checkconsistency(self, md, solution, analyses):  # {{{
     43        #Early return
     44        if (solution != 'TransientSolution') or (not md.transient.ismovingfront):
     45            return md
     46
     47        md = checkfield(md, 'fieldname', 'calving.coeff', 'size', [md.mesh.numberofvertices], '>', 0)
     48        return md
     49    # }}}
     50
     51    def marshall(self, prefix, md, fid):  # {{{
     52        WriteData(fid, prefix, 'name', 'md.calving.law', 'data', 3, 'format', 'Integer')
     53        WriteData(fid, prefix, 'object', self, 'fieldname', 'coeff', 'format', 'DoubleMat', 'mattype', 1)
     54    # }}}
  • issm/trunk-jpl/src/m/classes/calvingminthickness.py

    r23658 r24213  
    33from WriteData import WriteData
    44
     5
    56class calvingminthickness(object):
    6         """
    7         CALVINGMINTHICKNESS class definition
     7    """
     8    CALVINGMINTHICKNESS class definition
    89
    9            Usage:
    10               calvingminthickness=calvingminthickness()
    11         """
     10       Usage:
     11          calvingminthickness = calvingminthickness()
     12    """
    1213
    13         def __init__(self): # {{{
     14    def __init__(self): # {{{
    1415
    15                 self.min_thickness = 0.
    16                 self.meltingrate  = float('NaN')
     16        self.min_thickness = 0.
     17        self.meltingrate = float('NaN')
    1718
    18                 #set defaults
    19                 self.setdefaultparameters()
     19    #set defaults
     20        self.setdefaultparameters()
    2021
    21         #}}}
    22         def __repr__(self): # {{{
    23                 string='   Calving Minimum thickness:'
    24                 string="%s\n%s"%(string,fielddisplay(self,'min_thickness','minimum thickness below which no ice is allowed'))
    25                 return string
    26         #}}}
    27         def extrude(self,md): # {{{
    28                 return self
    29         #}}}
    30         def setdefaultparameters(self): # {{{
     22    #}}}
    3123
    32                 #minimum thickness is 100 m by default
    33                 self.min_thickness = 100.
    34         #}}}
    35         def checkconsistency(self,md,solution,analyses):    # {{{
     24    def __repr__(self):  # {{{
     25        string = '   Calving Minimum thickness:'
     26        string = "%s\n%s" % (string, fielddisplay(self, 'min_thickness', 'minimum thickness below which no ice is allowed'))
     27        return string
     28    #}}}
    3629
    37                 #Early return
    38                 if solution == 'TransientSolution' or md.transient.ismovingfront == 0:
    39                         return
     30    def extrude(self, md):  # {{{
     31        return self
     32    #}}}
    4033
    41                 md = checkfield(md,'fieldname','calving.min_thickness','>',0,'NaN',1,'Inf',1)
    42                 return md
    43         # }}}
    44         def marshall(self,prefix,md,fid):    # {{{
    45                 yts=md.constants.yts
    46                 WriteData(fid,prefix,'name','md.calving.law','data',4,'format','Integer')
    47                 WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double')
    48         # }}}
     34    def setdefaultparameters(self):  # {{{
     35        #minimum thickness is 100 m by default
     36        self.min_thickness = 100.
     37    #}}}
     38
     39    def checkconsistency(self, md, solution, analyses):  # {{{
     40        #Early return
     41        if solution == 'TransientSolution' or md.transient.ismovingfront == 0:
     42            return
     43
     44        md = checkfield(md, 'fieldname', 'calving.min_thickness', '>', 0, 'NaN', 1, 'Inf', 1)
     45        return md
     46    # }}}
     47
     48    def marshall(self, prefix, md, fid):  # {{{
     49        WriteData(fid, prefix, 'name', 'md.calving.law', 'data', 4, 'format', 'Integer')
     50        WriteData(fid, prefix, 'object', self, 'fieldname', 'min_thickness', 'format', 'Double')
     51    # }}}
  • issm/trunk-jpl/src/m/classes/calvingvonmises.py

    r23838 r24213  
    11from fielddisplay import fielddisplay
    2 from project3d import project3d
    32from checkfield import checkfield
    43from WriteData import WriteData
     4
    55
    66class calvingvonmises(object):
     
    99
    1010       Usage:
    11           calvingvonmises=calvingvonmises()
     11          calvingvonmises = calvingvonmises()
    1212    """
    1313
    14     def __init__(self): # {{{
     14    def __init__(self):  # {{{
    1515
    1616        self.stress_threshold_groundedice = 0.
    1717        self.stress_threshold_floatingice = 0.
    18         self.meltingrate   = float('NaN')
     18        self.meltingrate = float('NaN')
    1919        self.min_thickness = 0.
    2020
    21         #set defaults
     21    #set defaults
    2222        self.setdefaultparameters()
    2323
    2424    #}}}
    25     def __repr__(self): # {{{
    26         string='   Calving VonMises parameters:'
    27         string="%s\n%s"%(string,fielddisplay(self,'stress_threshold_groundedice','sigma_max applied to grounded ice only [Pa]'))
    28         string="%s\n%s"%(string,fielddisplay(self,'stress_threshold_floatingice','sigma_max applied to floating ice only [Pa]'))
    29         string="%s\n%s"%(string,fielddisplay(self,'min_thickness','minimum thickness below which no ice is allowed [m]'))
     25
     26    def __repr__(self):  # {{{
     27        string = '   Calving VonMises parameters:'
     28        string = "%s\n%s" % (string, fielddisplay(self, 'stress_threshold_groundedice', 'sigma_max applied to grounded ice only [Pa]'))
     29        string = "%s\n%s" % (string, fielddisplay(self, 'stress_threshold_floatingice', 'sigma_max applied to floating ice only [Pa]'))
     30        string = "%s\n%s" % (string, fielddisplay(self, 'min_thickness', 'minimum thickness below which no ice is allowed [m]'))
    3031
    3132        return string
    3233    #}}}
    33     def extrude(self,md): # {{{
     34
     35    def extrude(self, md):  # {{{
    3436        return self
    3537    #}}}
    36     def setdefaultparameters(self): # {{{
     38
     39    def setdefaultparameters(self):  # {{{
    3740        #Default sigma max
    3841        self.stress_threshold_groundedice = 1e6
     
    4043
    4144        #turn off min_thickness by default.
    42         self.min_thickness=0.
     45        self.min_thickness = 0.
    4346        return self
    4447    #}}}
    45     def checkconsistency(self,md,solution,analyses):    # {{{
     48
     49    def checkconsistency(self, md, solution, analyses):  # {{{
    4650        #Early return
    4751        if solution == 'TransientSolution' or md.transient.ismovingfront == 0:
    4852            return
    4953
    50         md = checkfield(md,'fieldname','calving.stress_threshold_groundedice','>',0,'nan',1,'Inf',1)
    51         md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'nan',1,'Inf',1)
    52         md = checkfield(md,'fieldname','calving.min_thickness','>=',0,'NaN',1,'Inf',1,'numel',[1]);
     54        md = checkfield(md, 'fieldname', 'calving.stress_threshold_groundedice', '>', 0, 'nan', 1, 'Inf', 1)
     55        md = checkfield(md, 'fieldname', 'calving.stress_threshold_floatingice', '>', 0, 'nan', 1, 'Inf', 1)
     56        md = checkfield(md, 'fieldname', 'calving.min_thickness', '>=', 0, 'NaN', 1, 'Inf', 1, 'numel', [1])
    5357
    5458        return md
    5559    # }}}
    56     def marshall(self,prefix,md,fid):    # {{{
    57         yts=md.constants.yts
    5860
    59         WriteData(fid,prefix,'name','md.calving.law','data',2,'format','Integer')
    60         WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','DoubleMat','mattype',1)
    61         WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat','mattype',1)
    62         WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double');
     61    def marshall(self, prefix, md, fid):  # {{{
     62        WriteData(fid, prefix, 'name', 'md.calving.law', 'data', 2, 'format', 'Integer')
     63        WriteData(fid, prefix, 'object', self, 'fieldname', 'stress_threshold_groundedice', 'format', 'DoubleMat', 'mattype', 1)
     64        WriteData(fid, prefix, 'object', self, 'fieldname', 'stress_threshold_floatingice', 'format', 'DoubleMat', 'mattype', 1)
     65        WriteData(fid, prefix, 'object', self, 'fieldname', 'min_thickness', 'format', 'Double')
    6366    # }}}
  • issm/trunk-jpl/src/m/classes/clusters/cyclone.py

    r23716 r24213  
    55from issmscpin import issmscpin
    66from issmscpout import issmscpout
    7 from QueueRequirements import QueueRequirements
    8 import datetime
    97try:
    10         from cyclone_settings import cyclone_settings
     8    from cyclone_settings import cyclone_settings
    119except ImportError:
    12         print('You need cyclone_settings.py to proceed, check presence and sys.path')
    13        
     10    print('You need cyclone_settings.py to proceed, check presence and sys.path')
     11
     12
    1413class cyclone(object):
    15         """
    16         Be aware that this is not a cluster as we usually know them. There is no scheduling and ressources are pretty low.
    17         The Computer have 20 cpus and 512Gb of memory used by a number of person so be respectful with your usage.
    18         I putted some restrictive upper limits to avoid over-use. (Basile)
    19  
    20            Usage:
    21               cluster=cyclone();
    22         """
     14    """
     15    Be aware that this is not a cluster as we usually know them. There is no scheduling and ressources are pretty low.
     16    The Computer have 20 cpus and 512Gb of memory used by a number of person so be respectful with your usage.
     17    I putted some restrictive upper limits to avoid over - use. (Basile)
    2318
    24         def __init__(self,*args):
    25                 # {{{
    26                 self.name           = 'cyclone'
    27                 self.login          = ''
    28                 self.np             = 2
    29                 self.time           = 100
    30                 self.codepath       = ''
    31                 self.executionpath  = ''
    32                 self.port           = ''
    33                 self.interactive    = 0
     19       Usage:
     20          cluster = cyclone()
     21    """
    3422
    35                 #use provided options to change fields
    36                 options=pairoptions(*args)
     23    def __init__(self, *args):    # {{{
     24        self.name = 'cyclone'
     25        self.login = ''
     26        self.np = 2
     27        self.time = 100
     28        self.codepath = ''
     29        self.executionpath = ''
     30        self.port = ''
     31        self.interactive = 0
    3732
    38                 #initialize cluster using user settings if provided
    39                 self=cyclone_settings(self)
    40                 #OK get other fields
    41                 self=options.AssignObjectFields(self)
    42                
    43                 # }}}
     33    #use provided options to change fields
     34        options = pairoptions(*args)
    4435
    45         def __repr__(self):
    46         # {{{
    47                 #  display the object
    48                 s = "class cyclone object:"
    49                 s = "%s\n%s"%(s,fielddisplay(self,'name','name of the cluster'))
    50                 s = "%s\n%s"%(s,fielddisplay(self,'login','login'))
    51                 s = "%s\n%s"%(s,fielddisplay(self,'np','number of processes'))
    52                 s = "%s\n%s"%(s,fielddisplay(self,'time','walltime requested in minutes'))
    53                 s = "%s\n%s"%(s,fielddisplay(self,'codepath','code path on the cluster'))
    54                 s = "%s\n%s"%(s,fielddisplay(self,'executionpath','execution path on the cluster'))
    55                 return s
    56         # }}}
     36    #initialize cluster using user settings if provided
     37        self = cyclone_settings(self)
     38    #OK get other fields
     39        self = options.AssignObjectFields(self)
    5740
    58         def checkconsistency(self,md,solution,analyses):
    59                 # {{{
    60                 #Miscelaneous
    61                 if not self.login:
    62                         md = md.checkmessage('login empty')
    63                 if not self.codepath:
    64                         md = md.checkmessage('codepath empty')
    65                 if not self.executionpath:
    66                         md = md.checkmessage('executionpath empty')
    67                 if self.time>72:
    68                         md = md.checkmessage('walltime exceeds 72h for niceness this is not allowed, if you need more time consider shifting to one of the Notur systems')
    69                 if self.np >10:
    70                         md = md.checkmessage('number of process excess 10, if you need more processing power consider shifting to one of the Notur systems')
     41    # }}}
    7142
    72                 return self
    73                 # }}}
    74         def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling):
    75                 # {{{
     43    def __repr__(self):    # {{{
     44        #  display the object
     45        s = "class cyclone object:"
     46        s = "%s\n%s" % (s, fielddisplay(self, 'name', 'name of the cluster'))
     47        s = "%s\n%s" % (s, fielddisplay(self, 'login', 'login'))
     48        s = "%s\n%s" % (s, fielddisplay(self, 'np', 'number of processes'))
     49        s = "%s\n%s" % (s, fielddisplay(self, 'time', 'walltime requested in minutes'))
     50        s = "%s\n%s" % (s, fielddisplay(self, 'codepath', 'code path on the cluster'))
     51        s = "%s\n%s" % (s, fielddisplay(self, 'executionpath', 'execution path on the cluster'))
     52        return s
     53    # }}}
    7654
    77                 executable='issm.exe'
    78                
    79                 #write queuing script
    80                 shortname=modelname[0:min(12,len(modelname))]
    81                 fid=open(modelname+'.queue','w')
    82                 fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
    83                 fid.write('source $ISSM_DIR/etc/environment.sh\n')
    84                 fid.write('INTELLIBS="/opt/intel/intelcompiler-12.04/composerxe-2011.4.191/compiler/lib/intel64"\n')
    85                 fid.write('export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/:$INTELLIBS\n')
    86                 fid.write('export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/x86_64-linux-gnu/c++/4.8\n')
    87                 fid.write('cd %s/%s/\n\n' % (self.executionpath,dirname))
    88                 rundir=self.executionpath+'/'+dirname
    89                 runfile=self.executionpath+'/'+dirname+'/'+modelname
    90                 fid.write('mpiexec -np %i %s/%s %s %s %s >%s.outlog 2>%s.errlog\n' % (self.np,self.codepath,executable,str(solution),rundir,modelname,runfile,runfile))
    91                 fid.close()
     55    def checkconsistency(self, md, solution, analyses):    # {{{
     56        #Miscelaneous
     57        if not self.login:
     58            md = md.checkmessage('login empty')
     59        if not self.codepath:
     60            md = md.checkmessage('codepath empty')
     61        if not self.executionpath:
     62            md = md.checkmessage('executionpath empty')
     63        if self.time > 72:
     64            md = md.checkmessage('walltime exceeds 72h for niceness this is not allowed, if you need more time consider shifting to one of the Notur systems')
     65        if self.np > 10:
     66            md = md.checkmessage('number of process excess 10, if you need more processing power consider shifting to one of the Notur systems')
    9267
    93                 # }}}
    94         def UploadQueueJob(self,modelname,dirname,filelist):
    95                 # {{{
     68        return self
     69    # }}}
    9670
    97                 #compress the files into one zip.
    98                 compressstring='tar -zcf %s.tar.gz ' % dirname
    99                 for file in filelist:
    100                         compressstring += ' %s' % file
    101                 subprocess.call(compressstring,shell=True)
     71    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):    # {{{
     72        executable = 'issm.exe'
     73        #write queuing script
     74        fid = open(modelname + '.queue', 'w')
     75        fid.write('export ISSM_DIR = "%s/../ "\n' % self.codepath)
     76        fid.write('source $ISSM_DIR/etc/environment.sh\n')
     77        fid.write('INTELLIBS = "/opt/intel/intelcompiler-12.04/composerxe-2011.4.191/compiler/lib/intel64"\n')
     78        fid.write('export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/:$INTELLIBS\n')
     79        fid.write('export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/x86_64-linux-gnu/c++/4.8\n')
     80        fid.write('cd %s/%s/ \n\n' % (self.executionpath, dirname))
     81        rundir = self.executionpath + '/' + dirname
     82        runfile = self.executionpath + '/' + dirname + '/' + modelname
     83        fid.write('mpiexec -np %i %s/%s %s %s %s>%s.outlog 2>%s.errlog\n' % (self.np, self.codepath, executable, str(solution), rundir, modelname, runfile, runfile))
     84        fid.close()
    10285
    103                 print('uploading input file and queueing script')
    104                 issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
     86    # }}}
     87    def UploadQueueJob(self, modelname, dirname, filelist):    # {{{
     88        #compress the files into one zip.
     89        compressstring = 'tar -zcf %s.tar.gz ' % dirname
     90        for file in filelist:
     91            compressstring += ' %s' % file
     92        subprocess.call(compressstring, shell=True)
    10593
    106                 # }}}
    107         def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):
    108                 # {{{
     94        print('uploading input file and queueing script')
     95        issmscpout(self.name, self.executionpath, self.login, self.port, [dirname + '.tar.gz'])
    10996
    110                 print('launching solution sequence on remote cluster')
    111                 if restart:
    112                         launchcommand='cd %s && cd %s && qsub %s.queue' % (self.executionpath,dirname,modelname)
    113                 else:
    114                         launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && chmod +x ./%s.queue && ./%s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname,modelname)
    115                 issmssh(self.name,self.login,self.port,launchcommand)
     97    # }}}
     98    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):    # {{{
     99        print('launching solution sequence on remote cluster')
     100        if restart:
     101            launchcommand = 'cd %s && cd %s && qsub %s.queue' % (self.executionpath, dirname, modelname)
     102        else:
     103            launchcommand = 'cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && chmod +x ./%s.queue && ./%s.queue' % (self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname, modelname)
     104        issmssh(self.name, self.login, self.port, launchcommand)
    116105
    117                 # }}}
    118         def Download(self,dirname,filelist):
    119                 # {{{
    120 
    121                 #copy files from cluster to current directory
    122                 directory='%s/%s/' % (self.executionpath,dirname)
    123                 issmscpin(self.name,self.login,self.port,directory,filelist)
    124                 # }}}
     106    # }}}
     107    def Download(self, dirname, filelist):    # {{{
     108        #copy files from cluster to current directory
     109        directory = '%s/%s/' % (self.executionpath, dirname)
     110        issmscpin(self.name, self.login, self.port, directory, filelist)
     111    # }}}
  • issm/trunk-jpl/src/m/classes/clusters/fram.py

    r23716 r24213  
    77from issmscpout import issmscpout
    88from QueueRequirements import QueueRequirements
    9 import datetime
     9from IssmConfig import IssmConfig
    1010try:
    11         from fram_settings import fram_settings
     11    from fram_settings import fram_settings
    1212except ImportError:
    13         print('You need fram_settings.py to proceed, check presence and sys.path')
    14        
     13    print('You need fram_settings.py to proceed, check presence and sys.path')
     14
     15
    1516class fram(object):
    16         """
    17         Fram cluster class definition
    18         This is a SLURM queue
    19         The priorities are based on a point system, reservation when reaching 20000 and earning 1 point per min.
    20           -Devel queue starts at 19990
    21           -Normal starts at 19940
    22           -Normal unpri atarts at 19400
     17    """
     18    Fram cluster class definition
     19    This is a SLURM queue
     20    The priorities are based on a point system, reservation when reaching 20000 and earning 1 point per min.
     21     - Devel queue starts at 19990
     22     - Normal starts at 19940
     23     - Normal unpri atarts at 19400
    2324
    24         Jobs can be:
    25           -normal (4 to 30 nodes, more if asked, 48h max walltime, 60Gb per nodes)
    26           -bigmem for big memory nodes (8 512Gb nodes and 2 6Tb nodes, shared nodes, 14days max walltime
     25    Jobs can be:
     26     - normal (4 to 30 nodes, more if asked, 48h max walltime, 60Gb per nodes)
     27     - bigmem for big memory nodes (8 512Gb nodes and 2 6Tb nodes, shared nodes, 14days max walltime
    2728
    28            Usage:
    29               cluster=stallo();
    30         """
     29       Usage:
     30          cluster = stallo()
     31    """
    3132
    32         def __init__(self,*args):
    33         # {{{
    34                 self.name           = 'fram'
    35                 self.login          = ''
    36                 self.numnodes       = 2
    37                 self.cpuspernode    = 20
    38                 self.mem            = 1.6
    39                 self.queue          = 'normal'
    40                 self.time           = 2*60
    41                 self.codepath       = ''
    42                 self.executionpath  = ''
    43                 self.interactive    = 0
    44                 self.port           = []
    45                 self.accountname    = ''
    46                 self.profiling      = 0
    47                 #use provided options to change fields
    48                 options=pairoptions(*args)
     33    def __init__(self, *args):    # {{{
     34        self.name = 'fram'
     35        self.login = ''
     36        self.numnodes = 2
     37        self.cpuspernode = 20
     38        self.mem = 1.6
     39        self.queue = 'normal'
     40        self.time = 2 * 60
     41        self.codepath = ''
     42        self.executionpath = ''
     43        self.interactive = 0
     44        self.port = []
     45        self.accountname = ''
     46        self.profiling = 0
     47    #use provided options to change fields
     48        options = pairoptions(*args)
    4949
    50                 #initialize cluster using user settings if provided
    51                 self=stallo_settings(self)
    52                 #OK get other fields
    53                 self=options.AssignObjectFields(self)
    54                 self.np=self.numnodes*self.cpuspernode         
    55         # }}}
    56        
    57         def __repr__(self):
    58         # {{{
    59                 #  display the object
    60                 s = "class vilje object:"
    61                 s = "%s\n%s"%(s,fielddisplay(self,'name','name of the cluster'))
    62                 s = "%s\n%s"%(s,fielddisplay(self,'login','login'))
    63                 s = "%s\n%s"%(s,fielddisplay(self,'numnodes','number of nodes'))
    64                 s = "%s\n%s"%(s,fielddisplay(self,'cpuspernode','number of nodes per CPUs'))
    65                 s = "%s\n%s"%(s,fielddisplay(self,'mem','memory per CPU'))
    66                 s = "%s\n%s"%(s,fielddisplay(self,'queue','name of the queue (normal (D), short,singlenode,multinode,devel)'))
    67                 s = "%s\n%s"%(s,fielddisplay(self,'time','walltime requested in minutes'))
    68                 s = "%s\n%s"%(s,fielddisplay(self,'codepath','code path on the cluster'))
    69                 s = "%s\n%s"%(s,fielddisplay(self,'executionpath','execution path on the cluster'))
    70                 s = "%s\n%s"%(s,fielddisplay(self,'interactive',''))
    71                 s = "%s\n%s"%(s,fielddisplay(self,'accountname','your cluster account'))
    72                 s = "%s\n%s"%(s,fielddisplay(self,'profiling','enable profiling if 1 default is 0'))
    73                 return s
    74         # }}}
    75         def checkconsistency(self,md,solution,analyses):
    76         # {{{
    77                 #Queue dictionarry  gives queue name as key and max walltime and cpus as var
    78                 queuedict = {'normal':[2*24*60,2048],
    79                                                                  'devel':[4*60,2048]}
    80                 QueueRequirements(queuedict,self.queue,self.np,self.time)
     50    #initialize cluster using user settings if provided
     51        self = fram_settings(self)
     52    #OK get other fields
     53        self = options.AssignObjectFields(self)
     54        self.np = self.numnodes * self.cpuspernode
     55    # }}}
    8156
    82                 #Miscelaneous
    83                 if not self.login:
    84                         md = md.checkmessage('login empty')
    85                 if not self.codepath:
    86                         md = md.checkmessage('codepath empty')
    87                 if not self.executionpath:
    88                         md = md.checkmessage('executionpath empty')
    89                 if self.interactive==1:
    90                         md = md.checkmessage('interactive mode not implemented')
    91                 return self
    92                 # }}}
    93         def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling):
    94                 # {{{
     57    def __repr__(self):    # {{{
     58        #  display the object
     59        s = "class vilje object:"
     60        s = "%s\n%s" % (s, fielddisplay(self, 'name', 'name of the cluster'))
     61        s = "%s\n%s" % (s, fielddisplay(self, 'login', 'login'))
     62        s = "%s\n%s" % (s, fielddisplay(self, 'numnodes', 'number of nodes'))
     63        s = "%s\n%s" % (s, fielddisplay(self, 'cpuspernode', 'number of nodes per CPUs'))
     64        s = "%s\n%s" % (s, fielddisplay(self, 'mem', 'memory per CPU'))
     65        s = "%s\n%s" % (s, fielddisplay(self, 'queue', 'name of the queue (normal (D), short, singlenode, multinode, devel)'))
     66        s = "%s\n%s" % (s, fielddisplay(self, 'time', 'walltime requested in minutes'))
     67        s = "%s\n%s" % (s, fielddisplay(self, 'codepath', 'code path on the cluster'))
     68        s = "%s\n%s" % (s, fielddisplay(self, 'executionpath', 'execution path on the cluster'))
     69        s = "%s\n%s" % (s, fielddisplay(self, 'interactive', ''))
     70        s = "%s\n%s" % (s, fielddisplay(self, 'accountname', 'your cluster account'))
     71        s = "%s\n%s" % (s, fielddisplay(self, 'profiling', 'enable profiling if 1 default is 0'))
     72        return s
     73    # }}}
    9574
    96                 executable='issm.exe'
    97                 if isdakota:
    98                         version=IssmConfig('_DAKOTA_VERSION_')[0:2]
    99                         version=float(version)
    100                         if version>=6:
    101                                 executable='issm_dakota.exe'
    102                 if isoceancoupling:
    103                         executable='issm_ocean.exe'
    104                 #write queuing script
    105                 shortname=modelname[0:min(12,len(modelname))]
    106                 fid=open(modelname+'.queue','w')
    107                                                                        
    108                 fid.write('#!/bin/bash -l\n')
    109                 fid.write('#SBATCH --job-name=%s \n' % shortname)
    110                 fid.write('#SBATCH --partition %s \n' % self.queue)
    111                 fid.write('#SBATCH --nodes=%i' % self.numnodes)
    112                 fid.write('#SBATCH --ntasks-per-nodes==%i \n' % self.cpuspernode)                                                                       
    113                 fid.write('#SBATCH --time=%s\n' % self.time) #walltime is minutes
    114                 fid.write('#SBATCH --mem-per-cpu=%iGB\n' % self.mem)# mem is in GB
    115                 if (np.mod(self.np,16)+np.mod(self.np,20))==0:
    116                         fid.write('#SBATCH --ntask=%i\n' % self.np)
    117                 fid.write('#SBATCH --account=%s\n' % self.accountname)
    118                 fid.write('#SBATCH --output %s/%s/%s.outlog \n' % (self.executionpath,dirname,modelname))
    119                 fid.write('#SBATCH --error %s/%s/%s.errlog \n\n' % (self.executionpath,dirname,modelname))
     75    def checkconsistency(self, md, solution, analyses):  # {{{
     76        #Queue dictionarry  gives queue name as key and max walltime and cpus as var
     77        queuedict = {'normal': [2 * 24 * 60, 2048],
     78                     'devel': [4 * 60, 2048]}
     79        QueueRequirements(queuedict, self.queue, self.np, self.time)
    12080
    121                 fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
    122                 fid.write('module restore system\n')
    123                 fid.write('module load load Automake/1.15.1-GCCcore-6.3.0\n')
    124                 fid.write('module load libtool/2.4.6-GCCcore-6.3.0\n')
    125                 fid.write('module load CMake/3.9.1\n')
    126                 fid.write('module load PETSc/3.8.0-intel-2017a-Python-2.7.13\n')
    127                 fid.write('module load ParMETIS/4.0.3-intel-2017a\n')
    128                 fid.write('cd %s/%s/\n\n' % (self.executionpath,dirname))
    129                 if self.profiling==1:
    130                         fid.write('module load perf-report\n')
    131                         fid.write('perf-report mpirun -np %i %s/%s %s %s/%s %s\n' % (self.np,self.codepath,executable,str(solution),self.executionpath,dirname,modelname))
    132                 else:
    133                         fid.write('mpirun -np %i %s/%s %s %s/%s %s\n' % (self.np,self.codepath,executable,str(solution),self.executionpath,dirname,modelname))
    134                 fid.close()
     81    #Miscelaneous
     82        if not self.login:
     83            md = md.checkmessage('login empty')
     84        if not self.codepath:
     85            md = md.checkmessage('codepath empty')
     86        if not self.executionpath:
     87            md = md.checkmessage('executionpath empty')
     88        if self.interactive == 1:
     89            md = md.checkmessage('interactive mode not implemented')
     90        return self
     91    # }}}
    13592
    136                 # }}}
    137         def UploadQueueJob(self,modelname,dirname,filelist):
    138                 # {{{
    139                 #compress the files into one zip.
    140                 compressstring='tar -zcf %s.tar.gz ' % dirname
    141                 for file in filelist:
    142                         compressstring += ' %s' % file
    143                 subprocess.call(compressstring,shell=True)
     93    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):    # {{{
     94        executable = 'issm.exe'
     95        if isdakota:
     96            version = IssmConfig('_DAKOTA_VERSION_')[0:2]
     97            version = float(version)
     98            if version >= 6:
     99                executable = 'issm_dakota.exe'
     100        if isoceancoupling:
     101            executable = 'issm_ocean.exe'
     102    #write queuing script
     103        shortname = modelname[0:min(12, len(modelname))]
     104        fid = open(modelname + '.queue', 'w')
    144105
    145                 print('uploading input file and queueing script')
    146                 issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
     106        fid.write('#!/bin/bash -l\n')
     107        fid.write('#SBATCH --job-name=%s \n' % shortname)
     108        fid.write('#SBATCH --partition %s \n' % self.queue)
     109        fid.write('#SBATCH --nodes=%i' % self.numnodes)
     110        fid.write('#SBATCH --ntasks-per-nodes==%i \n' % self.cpuspernode)
     111        fid.write('#SBATCH --time=%s\n' % self.time)  #walltime is minutes
     112        fid.write('#SBATCH --mem-per-cpu=%iGB\n' % self.mem)  # mem is in GB
     113        if (np.mod(self.np, 16) + np.mod(self.np, 20)) == 0:
     114            fid.write('#SBATCH --ntask=%i\n' % self.np)
     115        fid.write('#SBATCH --account=%s\n' % self.accountname)
     116        fid.write('#SBATCH --output %s/%s /%s.outlog \n' % (self.executionpath, dirname, modelname))
     117        fid.write('#SBATCH --error %s/%s /%s.errlog \n\n' % (self.executionpath, dirname, modelname))
    147118
    148                 # }}}
    149         def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):
    150                 # {{{
     119        fid.write('export ISSM_DIR="%s/../ "\n' % self.codepath)
     120        fid.write('module restore system\n')
     121        fid.write('module load load Automake/1.15.1-GCCcore-6.3.0\n')
     122        fid.write('module load libtool/2.4.6-GCCcore-6.3.0\n')
     123        fid.write('module load CMake/3.9.1\n')
     124        fid.write('module load PETSc/3.8.0-intel-2017a-Python-2.7.13\n')
     125        fid.write('module load ParMETIS/4.0.3-intel-2017a\n')
     126        fid.write('cd %s/%s/ \n\n' % (self.executionpath, dirname))
     127        if self.profiling == 1:
     128            fid.write('module load perf-report\n')
     129            fid.write('perf-report mpirun -np %i %s/%s %s %s/%s %s\n' % (self.np, self.codepath, executable, str(solution), self.executionpath, dirname, modelname))
     130        else:
     131            fid.write('mpirun -np %i %s/%s %s %s/%s %s\n' % (self.np, self.codepath, executable, str(solution), self.executionpath, dirname, modelname))
     132        fid.close()
    151133
    152                 print('launching solution sequence on remote cluster')
    153                 if restart:
    154                         launchcommand='cd %s && cd %s && sbatch %s.queue' % (self.executionpath,dirname,modelname)
    155                 else:
    156                         launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && sbatch %s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname)
    157                 issmssh(self.name,self.login,self.port,launchcommand)
     134    # }}}
    158135
    159                 # }}}
    160         def Download(self,dirname,filelist):
    161                 # {{{
     136    def UploadQueueJob(self, modelname, dirname, filelist):    # {{{
     137        #compress the files into one zip.
     138        compressstring = 'tar -zcf %s.tar.gz ' % dirname
     139        for file in filelist:
     140            compressstring += ' %s' % file
     141        subprocess.call(compressstring, shell=True)
    162142
    163                 #copy files from cluster to current directory
    164                 directory='%s/%s/' % (self.executionpath,dirname)
    165                 issmscpin(self.name,self.login,self.port,directory,filelist)
    166                 # }}}
     143        print('uploading input file and queueing script')
     144        issmscpout(self.name, self.executionpath, self.login, self.port, [dirname + '.tar.gz'])
     145
     146    # }}}
     147    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):    # {{{
     148        print('launching solution sequence on remote cluster')
     149        if restart:
     150            launchcommand = 'cd %s && cd %s && sbatch %s.queue' % (self.executionpath, dirname, modelname)
     151        else:
     152            launchcommand = 'cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && sbatch %s.queue' % (self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname)
     153        issmssh(self.name, self.login, self.port, launchcommand)
     154
     155    # }}}
     156    def Download(self, dirname, filelist):    # {{{
     157        #copy files from cluster to current directory
     158        directory = '%s/%s/' % (self.executionpath, dirname)
     159        issmscpin(self.name, self.login, self.port, directory, filelist)
     160    # }}}
  • issm/trunk-jpl/src/m/classes/clusters/generic.py

    r24115 r24213  
    1111import MatlabFuncs as m
    1212
     13
    1314class generic(object):
    1415    """
     
    1617
    1718       Usage:
    18           cluster=generic('name','astrid','np',3);
    19           cluster=generic('name',gethostname(),'np',3,'login','username');
     19          cluster = generic('name', 'astrid', 'np', 3)
     20          cluster = generic('name', gethostname(), 'np', 3, 'login', 'username')
    2021    """
    2122
    22     def __init__(self,*args):    # {{{
    23 
    24             self.name=''
    25             self.login=''
    26             self.np=1
    27             self.port=0
    28             self.interactive=1
    29             self.codepath=IssmConfig('ISSM_PREFIX')[0]+'/bin'
    30             self.executionpath=issmdir()+'/execution'
    31             self.valgrind=issmdir()+'/externalpackages/valgrind/install/bin/valgrind'
    32             self.valgrindlib=issmdir()+'/externalpackages/valgrind/install/lib/libmpidebug.so'
    33             self.valgrindsup=issmdir()+'/externalpackages/valgrind/issm.supp'
    34 
    35             #use provided options to change fields
    36             options=pairoptions(*args)
    37 
    38             #get name
    39             self.name=socket.gethostname()
    40 
    41             #initialize cluster using user settings if provided
    42             if os.path.exists(self.name+'_settings.py'):
    43                     exec(compile(open(self.name+'_settings.py').read(), self.name+'_settings.py', 'exec'),globals())
    44 
    45             #OK get other fields
    46             self=options.AssignObjectFields(self)
    47     # }}}
    48     def __repr__(self):    # {{{
    49             #  display the object
    50             s ="class '%s' object '%s' = \n" % (type(self),'self')
    51             s+="    name: %s\n" % self.name
    52             s+="    login: %s\n" % self.login
    53             s+="    np: %i\n" % self.np
    54             s+="    port: %i\n" % self.port
    55             s+="    codepath: %s\n" % self.codepath
    56             s+="    executionpath: %s\n" % self.executionpath
    57             s+="    valgrind: %s\n" % self.valgrind
    58             s+="    valgrindlib: %s\n" % self.valgrindlib
    59             s+="    valgrindsup: %s\n" % self.valgrindsup
    60             return s
    61     # }}}
    62     def checkconsistency(self,md,solution,analyses):    # {{{
    63             if self.np<1:
    64                     md = checkmessage(md,'number of processors should be at least 1')
    65             if math.isnan(self.np):
    66                     md = checkmessage(md,'number of processors should not be NaN!')
    67 
    68             return md
    69     # }}}
    70     def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling):    # {{{
    71 
    72             executable='issm.exe';
    73             if isdakota:
    74                     version=IssmConfig('_DAKOTA_VERSION_')
    75                     version=float(version[0])
    76                     if version>=6:
    77                             executable='issm_dakota.exe'
    78             if isoceancoupling:
    79                     executable='issm_ocean.exe'
    80 
    81             #write queuing script
    82             if not m.ispc():
    83 
    84                     fid=open(modelname+'.queue','w')
    85                     fid.write('#!/bin/sh\n')
    86                     if not isvalgrind:
    87                             if self.interactive:
    88                                     if IssmConfig('_HAVE_MPI_')[0]:
    89                                             fid.write('mpiexec -np %i %s/%s %s %s/%s %s ' % (self.np,self.codepath,executable,solution,self.executionpath,dirname,modelname))
    90                                     else:
    91                                             fid.write('%s/%s %s %s/%s %s ' % (self.codepath,executable,solution,self.executionpath,dirname,modelname))
    92                             else:
    93                                     if IssmConfig('_HAVE_MPI_')[0]:
    94                                             fid.write('mpiexec -np %i %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % (self.np,self.codepath,executable,solution,self.executionpath,dirname,modelname,modelname,modelname))
    95                                     else:
    96                                             fid.write('%s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % (self.codepath,executable,solution,self.executionpath,dirname,modelname,modelname,modelname))
    97                     elif isgprof:
    98                             fid.write('\n gprof %s/%s gmon.out > %s.performance' % (self.codepath,executable,modelname))
     23    def __init__(self, *args):  # {{{
     24
     25        self.name = ''
     26        self.login = ''
     27        self.np = 1
     28        self.port = 0
     29        self.interactive = 1
     30        self.codepath = IssmConfig('ISSM_PREFIX')[0] + '/bin'
     31        self.executionpath = issmdir() + '/execution'
     32        self.valgrind = issmdir() + '/externalpackages/valgrind/install/bin/valgrind'
     33        self.valgrindlib = issmdir() + '/externalpackages/valgrind/install/lib/libmpidebug.so'
     34        self.valgrindsup = issmdir() + '/externalpackages/valgrind/issm.supp'
     35
     36        #use provided options to change fields
     37        options = pairoptions(*args)
     38
     39        #get name
     40        self.name = socket.gethostname()
     41
     42        #initialize cluster using user settings if provided
     43        if os.path.exists(self.name + '_settings.py'):
     44            exec(compile(open(self.name + '_settings.py').read(), self.name + '_settings.py', 'exec'), globals())
     45
     46        #OK get other fields
     47        self = options.AssignObjectFields(self)
     48    # }}}
     49
     50    def __repr__(self):  # {{{
     51        #  display the object
     52        s = "class '%s' object '%s' = \n" % (type(self), 'self')
     53        s += "    name: %s\n" % self.name
     54        s += "    login: %s\n" % self.login
     55        s += "    np: %i\n" % self.np
     56        s += "    port: %i\n" % self.port
     57        s += "    codepath: %s\n" % self.codepath
     58        s += "    executionpath: %s\n" % self.executionpath
     59        s += "    valgrind: %s\n" % self.valgrind
     60        s += "    valgrindlib: %s\n" % self.valgrindlib
     61        s += "    valgrindsup: %s\n" % self.valgrindsup
     62        return s
     63    # }}}
     64
     65    def checkconsistency(self, md, solution, analyses):  # {{{
     66        if self.np < 1:
     67            md = checkmessage(md, 'number of processors should be at least 1')
     68        if math.isnan(self.np):
     69            md = checkmessage(md, 'number of processors should not be NaN!')
     70
     71        return md
     72    # }}}
     73    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):  # {{{
     74
     75        executable = 'issm.exe'
     76        if isdakota:
     77            version = IssmConfig('_DAKOTA_VERSION_')
     78            version = float(version[0])
     79            if version >= 6:
     80                executable = 'issm_dakota.exe'
     81        if isoceancoupling:
     82            executable = 'issm_ocean.exe'
     83
     84        #write queuing script
     85        if not m.ispc():
     86            fid = open(modelname + '.queue', 'w')
     87            fid.write('#!/bin/sh\n')
     88            if not isvalgrind:
     89                if self.interactive:
     90                    if IssmConfig('_HAVE_MPI_')[0]:
     91                        fid.write('mpiexec -np {} {}/{} {} {}/{} {}'.format(self.np, self.codepath, executable, solution, self.executionpath, dirname, modelname))
    9992                    else:
    100                             #Add --gen-suppressions=all to get suppression lines
    101                             fid.write('LD_PRELOAD=%s \\\n' % self.valgrindlib)
    102                             if IssmConfig('_HAVE_MPI_')[0]:
    103                                     fid.write('mpiexec -np %i %s --leak-check=full --suppressions=%s %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % \
    104                                                     (self.np,self.valgrind,self.valgrindsup,self.codepath,executable,solution,self.executionpath,dirname,modelname,modelname,modelname))
    105                             else:
    106                                     fid.write('%s --leak-check=full --suppressions=%s %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % \
    107                                                     (self.valgrind,self.valgrindsup,self.codepath,executable,solution,self.executionpath,dirname,modelname,modelname,modelname))
    108 
    109                     if not io_gather:    #concatenate the output files:
    110                             fid.write('\ncat %s.outbin.* > %s.outbin' % (modelname,modelname))
    111                     fid.close()
    112 
    113             else:    # Windows
    114 
    115                     fid=open(modelname+'.bat','w')
    116                     fid.write('@echo off\n')
    117                     if self.interactive:
    118                             fid.write('"%s/%s" %s "%s/%s" %s ' % (self.codepath,executable,solution,self.executionpath,dirname,modelname))
     93                        fid.write('{}/{} {} {}/{} {} '.format(self.codepath, executable, solution, self.executionpath, dirname, modelname))
     94                else:
     95                    if IssmConfig('_HAVE_MPI_')[0]:
     96                        fid.write('mpiexec -np {} {}/{} {} {}/{} {} 2>{}.errlog>{}.outlog'.
     97                                  format(self.np, self.codepath, executable, solution, self.executionpath, dirname, modelname, modelname, modelname))
    11998                    else:
    120                             fid.write('"%s/%s" %s "%s/%s" %s 2> %s.errlog >%s.outlog' % \
    121                                     (self.codepath,executable,solution,self.executionpath,dirname,modelname,modelname,modelname))
    122                     fid.close()
     99                        fid.write('{}/{} {} {}/{} {} 2>{}.errlog>{}.outlog '.
     100                                  format(self.codepath, executable, solution, self.executionpath, dirname, modelname, modelname, modelname))
     101            elif isgprof:
     102                fid.write('\n gprof {}/{} gmon.out > {}.performance'.format(self.codepath, executable, modelname))
     103            else:
     104                #Add --gen -suppressions = all to get suppression lines
     105                fid.write('LD_PRELOAD={} \\\n'.format(self.valgrindlib))
     106                if IssmConfig('_HAVE_MPI_')[0]:
     107                    fid.write('mpiexec -np {} {} --leak-check=full --suppressions={} {}/{} {} {}/{} {} 2>{}.errlog>{}.outlog '.
     108                              format(self.np, self.valgrind, self.valgrindsup, self.codepath, executable, solution, self.executionpath, dirname, modelname, modelname, modelname))
     109                else:
     110                    fid.write('{} --leak-check=full --suppressions={} {}/{} {} {}/{} {} 2>{}.errlog>{}.outlog '.
     111                              format(self.valgrind, self.valgrindsup, self.codepath, executable, solution, self.executionpath, dirname, modelname, modelname, modelname))
     112
     113            if not io_gather:  #concatenate the output files:
     114                fid.write('\ncat {}.outbin .*>{}.outbin'.format(modelname, modelname))
     115            fid.close()
     116
     117        else:  # Windows
     118
     119            fid = open(modelname + '.bat', 'w')
     120            fid.write('@echo off\n')
     121            if self.interactive:
     122                fid.write('"{}/{}" {} "{}/{}" {} '.format(self.codepath, executable, solution, self.executionpath, dirname, modelname))
     123            else:
     124                fid.write('"{}/{}" {} "{}/{}" {} 2>{}.errlog>{}.outlog'.
     125                          format(self.codepath, executable, solution, self.executionpath, dirname, modelname, modelname, modelname))
     126            fid.close()
    123127
    124128            #in interactive mode, create a run file, and errlog and outlog file
     129        if self.interactive:
     130            fid = open(modelname + '.errlog', 'w')
     131            fid.close()
     132            fid = open(modelname + '.outlog', 'w')
     133            fid.close()
     134    # }}}
     135
     136    def BuildKrigingQueueScript(self, modelname, solution, io_gather, isvalgrind, isgprof):  # {{{
     137        #write queuing script
     138        if not m.ispc():
     139            fid = open(modelname + '.queue', 'w')
     140            fid.write('#!/bin/sh\n')
     141            if not isvalgrind:
     142                if self.interactive:
     143                    fid.write('mpiexec -np {} {}/kriging.exe {}/{} {} '.format(self.np, self.codepath, self.executionpath, modelname, modelname))
     144                else:
     145                    fid.write('mpiexec -np {} {}/kriging.exe {}/{} {} 2>{}.errlog>{}.outlog '.format(self.np, self.codepath, self.executionpath, modelname, modelname, modelname, modelname))
     146            elif isgprof:
     147                fid.write('\n gprof {}/kriging.exe gmon.out>{}.performance'.format(self.codepath, modelname))
     148            else:
     149                #Add - -    gen - suppressions = all to get suppression lines
     150                #fid.write('LD_PRELOAD={} \\\n'.format(self.valgrindlib))
     151                fid.write('mpiexec - np {} {} --leak -check=full --suppressions={} {}/kriging.exe {}/{} {} 2 > {}.errlog > {}.outlog ' .format
     152                          (self.np, self.valgrind, self.valgrindsup, self.codepath, self.executionpath, modelname, modelname, modelname, modelname))
     153            if not io_gather:    #concatenate the output files:
     154                fid.write('\ncat {}.outbin. *>{}.outbin'.format(modelname, modelname))
     155            fid.close()
     156
     157        else:    # Windows
     158
     159            fid = open(modelname + '.bat', 'w')
     160            fid.write('@echo off\n')
    125161            if self.interactive:
    126                     fid=open(modelname+'.errlog','w')
    127                     fid.close()
    128                     fid=open(modelname+'.outlog','w')
    129                     fid.close()
    130     # }}}
    131     def BuildKrigingQueueScript(self,modelname,solution,io_gather,isvalgrind,isgprof):    # {{{
    132 
    133             #write queuing script
    134             if not m.ispc():
    135 
    136                     fid=open(modelname+'.queue','w')
    137                     fid.write('#!/bin/sh\n')
    138                     if not isvalgrind:
    139                             if self.interactive:
    140                                     fid.write('mpiexec -np %i %s/kriging.exe %s/%s %s ' % (self.np,self.codepath,self.executionpath,modelname,modelname))
    141                             else:
    142                                     fid.write('mpiexec -np %i %s/kriging.exe %s/%s %s 2> %s.errlog >%s.outlog ' % (self.np,self.codepath,self.executionpath,modelname,modelname,modelname,modelname))
    143                     elif isgprof:
    144                             fid.write('\n gprof %s/kriging.exe gmon.out > %s.performance' & (self.codepath,modelname))
    145                     else:
    146                             #Add --gen-suppressions=all to get suppression lines
    147                             fid.write('LD_PRELOAD=%s \\\n' % self.valgrindlib)
    148                             fid.write('mpiexec -np %i %s --leak-check=full --suppressions=%s %s/kriging.exe %s/%s %s 2> %s.errlog >%s.outlog ' % \
    149                                     (self.np,self.valgrind,self.valgrindsup,self.codepath,self.executionpath,modelname,modelname,modelname,modelname))
    150                     if not io_gather:    #concatenate the output files:
    151                             fid.write('\ncat %s.outbin.* > %s.outbin' % (modelname,modelname))
    152                     fid.close()
    153 
    154             else:    # Windows
    155 
    156                     fid=open(modelname+'.bat','w')
    157                     fid.write('@echo off\n')
    158                     if self.interactive:
    159                             fid.write('"%s/issm.exe" %s "%s/%s" %s ' % (self.codepath,solution,self.executionpath,modelname,modelname))
    160                     else:
    161                             fid.write('"%s/issm.exe" %s "%s/%s" %s 2> %s.errlog >%s.outlog' % \
    162                                     (self.codepath,solution,self.executionpath,modelname,modelname,modelname,modelname))
    163                     fid.close()
    164 
    165             #in interactive mode, create a run file, and errlog and outlog file
    166             if self.interactive:
    167                     fid=open(modelname+'.errlog','w')
    168                     fid.close()
    169                     fid=open(modelname+'.outlog','w')
    170                     fid.close()
    171     # }}}
    172     def UploadQueueJob(self,modelname,dirname,filelist):    # {{{
    173 
     162                fid.write('"{}/issm.exe" {} "{}/{}" {} '.format(self.codepath, solution, self.executionpath, modelname, modelname))
     163            else:
     164                fid.write('"{}/issm.exe" {} "{}/{}" {} 2>{}.errlog>{}.outlog'.format
     165                          (self.codepath, solution, self.executionpath, modelname, modelname, modelname, modelname))
     166            fid.close()
     167
     168        #in interactive mode, create a run file, and errlog and outlog file
     169        if self.interactive:
     170            fid = open(modelname + '.errlog', 'w')
     171            fid.close()
     172            fid = open(modelname + '.outlog', 'w')
     173            fid.close()
     174    # }}}
     175
     176    def UploadQueueJob(self, modelname, dirname, filelist):  # {{{
    174177        #compress the files into one zip.
    175         compressstring='tar -zcf %s.tar.gz ' % dirname
     178        compressstring = 'tar -zcf {}.tar.gz '.format(dirname)
    176179        for file in filelist:
    177             compressstring += ' %s' % file
     180            compressstring += ' {}'.format(file)
    178181        if self.interactive:
    179             compressstring += ' %s.errlog %s.outlog ' % (modelname,modelname)
    180         subprocess.call(compressstring,shell=True)
     182            compressstring += ' {}.errlog {}.outlog '.format(modelname, modelname)
     183        subprocess.call(compressstring, shell=True)
    181184
    182185        print('uploading input file and queueing script')
    183         issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
    184 
    185     # }}}
    186     def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):    # {{{
    187 
     186        issmscpout(self.name, self.executionpath, self.login, self.port, [dirname + '.tar.gz'])
     187
     188    # }}}
     189
     190    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):  # {{{
    188191        print('launching solution sequence on remote cluster')
    189192        if restart:
    190             launchcommand='cd %s && cd %s chmod 777 %s.queue && ./%s.queue' % (self.executionpath,dirname,modelname,modelname)
     193            launchcommand = 'cd {} && cd {} chmod 777 {}.queue && ./{}.queue'.format(self.executionpath, dirname, modelname, modelname)
    191194        else:
    192195            if batch:
    193                 launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz' % \
    194                                (self.executionpath,dirname,dirname,dirname,dirname,dirname)
    195             else:
    196                 launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && chmod 777 %s.queue && ./%s.queue' % \
    197                                (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname,modelname)
    198         issmssh(self.name,self.login,self.port,launchcommand)
    199     # }}}
    200     def Download(self,dirname,filelist):     # {{{
    201 
     196                launchcommand = 'cd {} && rm -rf ./{} && mkdir {} && cd {} && mv ../{}.tar.gz ./&& tar -zxf {}.tar.gz'.format(self.executionpath, dirname, dirname, dirname, dirname, dirname)
     197            else:
     198                launchcommand = 'cd {} && rm -rf ./{} && mkdir {} && cd {} && mv ../{}.tar.gz ./&& tar -zxf {}.tar.gz  && chmod 777 {}.queue && ./{}.queue'.format(self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname, modelname)
     199        issmssh(self.name, self.login, self.port, launchcommand)
     200    # }}}
     201
     202    def Download(self, dirname, filelist):  # {{{
    202203        if m.ispc():
    203204            #do nothing
    204205            return
    205 
    206206        #copy files from cluster to current directory
    207         directory='%s/%s/' % (self.executionpath,dirname)
    208         issmscpin(self.name,self.login,self.port,directory,filelist)
    209     # }}}
     207        directory = '{}/{}/'.format(self.executionpath, dirname)
     208        issmscpin(self.name, self.login, self.port, directory, filelist)
     209    # }}}
  • issm/trunk-jpl/src/m/classes/clusters/hexagon.py

    r23716 r24213  
    55from issmscpin import issmscpin
    66from issmscpout import issmscpout
    7 from QueueRequirements import QueueRequirements
     7from IssmConfig import IssmConfig
    88import datetime
    99try:
    10         from hexagon_settings import hexagon_settings
     10    from hexagon_settings import hexagon_settings
    1111except ImportError:
    12         print('You need hexagon_settings.py to proceed, check presence and sys.path')
     12    print('You need hexagon_settings.py to proceed, check presence and sys.path')
     13
    1314
    1415class hexagon(object):
    15         """
    16         Hexagon cluster class definition
    17         Hexagon have nodes built of 2*16 CPUs. Nodes are dedicated to one job so the best usage is to use 32 procs per nodes (16 per cores) as it is what is billed anyway.
    18         You can reduce this number if you run out of memory as the total node memory is divided by the number of procs
    19            Usage:
    20               cluster=hexagon();
    21         """
     16    """
     17    Hexagon cluster class definition
     18    Hexagon have nodes built of 2 * 16 CPUs. Nodes are dedicated to one job so the best usage is to use 32 procs per nodes (16 per cores) as it is what is billed anyway.
     19    You can reduce this number if you run out of memory as the total node memory is divided by the number of procs
     20       Usage:
     21          cluster = hexagon()
     22    """
    2223
    23         def __init__(self,*args):
    24                 # {{{
    25                 self.name           = 'hexagon'
    26                 self.login          = ''
    27                 self.numnodes       = 2
    28                 self.procspernodes  = 32
    29                 self.mem            = 32000
    30                 self.queue          = 'batch'
    31                 self.time           = 2*60
    32                 self.codepath       = ''
    33                 self.executionpath  = ''
    34                 self.interactive    = 0
    35                 self.port           = []
    36                 self.accountname    = ''
     24    def __init__(self, *args):  # {{{
     25        self.name = 'hexagon'
     26        self.login = ''
     27        self.numnodes = 2
     28        self.procspernodes = 32
     29        self.mem = 32000
     30        self.queue = 'batch'
     31        self.time = 2 * 60
     32        self.codepath = ''
     33        self.executionpath = ''
     34        self.interactive = 0
     35        self.port = []
     36        self.accountname = ''
    3737
    38                 #use provided options to change fields
    39                 options=pairoptions(*args)
     38    #use provided options to change fields
     39        options = pairoptions(*args)
    4040
    41                 #initialize cluster using user settings if provided
    42                 self=hexagon_settings(self)
     41    #initialize cluster using user settings if provided
     42        self = hexagon_settings(self)
    4343
    44                 #OK get other fields
    45                 self=options.AssignObjectFields(self)
    46                 self.np=self.numnodes*self.procspernodes
    47                 # }}}
     44    #OK get other fields
     45        self = options.AssignObjectFields(self)
     46        self.np = self.numnodes * self.procspernodes
     47    # }}}
    4848
    49         def __repr__(self):
    50                 # {{{
    51                 #  display the object
    52                 s = "class hexagon object:"
    53                 s = "%s\n%s"%(s,fielddisplay(self,'name','name of the cluster'))
    54                 s = "%s\n%s"%(s,fielddisplay(self,'login','login'))
    55                 s = "%s\n%s"%(s,fielddisplay(self,'numnodes','number of nodes'))
    56                 s = "%s\n%s"%(s,fielddisplay(self,'procspernodes','number of mpi procs per nodes  default and optimal is 32'))
    57                 s = "%s\n%s"%(s,fielddisplay(self,'mem','Total node memory'))
    58                 s = "%s\n%s"%(s,fielddisplay(self,'queue','name of the queue'))
    59                 s = "%s\n%s"%(s,fielddisplay(self,'time','walltime requested in minutes'))
    60                 s = "%s\n%s"%(s,fielddisplay(self,'codepath','code path on the cluster'))
    61                 s = "%s\n%s"%(s,fielddisplay(self,'executionpath','execution path on the cluster'))
    62                 s = "%s\n%s"%(s,fielddisplay(self,'interactive',''))
    63                 s = "%s\n%s"%(s,fielddisplay(self,'accountname','your cluster account'))
    64                 return s
    65         # }}}
     49    def __repr__(self):      # {{{
     50        #  display the object
     51        s = "class hexagon object:"
     52        s = "%s\n%s" % (s, fielddisplay(self, 'name', 'name of the cluster'))
     53        s = "%s\n%s" % (s, fielddisplay(self, 'login', 'login'))
     54        s = "%s\n%s" % (s, fielddisplay(self, 'numnodes', 'number of nodes'))
     55        s = "%s\n%s" % (s, fielddisplay(self, 'procspernodes', 'number of mpi procs per nodes  default and optimal is 32'))
     56        s = "%s\n%s" % (s, fielddisplay(self, 'mem', 'Total node memory'))
     57        s = "%s\n%s" % (s, fielddisplay(self, 'queue', 'name of the queue'))
     58        s = "%s\n%s" % (s, fielddisplay(self, 'time', 'walltime requested in minutes'))
     59        s = "%s\n%s" % (s, fielddisplay(self, 'codepath', 'code path on the cluster'))
     60        s = "%s\n%s" % (s, fielddisplay(self, 'executionpath', 'execution path on the cluster'))
     61        s = "%s\n%s" % (s, fielddisplay(self, 'interactive', ''))
     62        s = "%s\n%s" % (s, fielddisplay(self, 'accountname', 'your cluster account'))
     63        return s
     64    # }}}
    6665
    67         def checkconsistency(self,md,solution,analyses):
    68                 # {{{
    69                 #mem should not be over 32000mb
    70                 #numprocs should not be over 4096
    71                 #we have cpupernodes*numberofcpus=mppwidth and mppnppn=cpupernodes,
    72                 #Miscelaneous
    73                 if not self.login:
    74                         md = md.checkmessage('login empty')
    75                 if not self.codepath:
    76                         md = md.checkmessage('codepath empty')
    77                 if not self.executionpath:
    78                         md = md.checkmessage('executionpath empty')
    79                 if self.interactive==1:
    80                         md = md.checkmessage('interactive mode not implemented')
    81                 if self.mem>32000:
    82                         md = md.checkmessage('asking too much memory max is 32000 per node')
    83                 return self
    84         # }}}
     66    def checkconsistency(self, md, solution, analyses):      # {{{
     67        #mem should not be over 32000mb
     68        #numprocs should not be over 4096
     69        #we have cpupernodes * numberofcpus = mppwidth and mppnppn = cpupernodes,
     70        #Miscelaneous
     71        if not self.login:
     72            md = md.checkmessage('login empty')
     73        if not self.codepath:
     74            md = md.checkmessage('codepath empty')
     75        if not self.executionpath:
     76            md = md.checkmessage('executionpath empty')
     77        if self.interactive == 1:
     78            md = md.checkmessage('interactive mode not implemented')
     79        if self.mem > 32000:
     80            md = md.checkmessage('asking too much memory max is 32000 per node')
     81        return self
     82    # }}}
    8583
    86         def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling):
    87                 # {{{
    88                 executable='issm.exe'
    89                 if isdakota:
    90                         version=IssmConfig('_DAKOTA_VERSION_')[0:2]
    91                         version=float(version)
    92                         if version>=6:
    93                                 executable='issm_dakota.exe'
    94                 if isoceancoupling:
    95                         executable='issm_ocean.exe'
     84    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):    # {{{
     85        executable = 'issm.exe'
     86        if isdakota:
     87            version = IssmConfig('_DAKOTA_VERSION_')[0:2]
     88            version = float(version)
     89            if version >= 6:
     90                executable = 'issm_dakota.exe'
     91        if isoceancoupling:
     92            executable = 'issm_ocean.exe'
    9693
    97                 #write queuing script
    98                 shortname=modelname[0:min(12,len(modelname))]
    99                 fid=open(modelname+'.queue','w')
    100                 fid.write('#!/bin/bash\n')
    101                 fid.write('#PBS -N %s \n' % shortname)
    102                 fid.write('#PBS -l mppwidth=%i,mppnppn=%i\n' % (self.np,self.procspernodes))
    103                 timeobj=datetime.timedelta(minutes=self.time)
    104                 m,s=divmod(timeobj.total_seconds(), 60)
    105                 h,m=divmod(m, 60)
    106                 timestring="%02d:%02d:%02d" % (h, m, s)
    107                 fid.write('#PBS -l walltime=%s\n' % timestring) #walltime is hh:mm:ss
    108                 fid.write('#PBS -l mppmem=%imb\n' % int(self.mem/self.procspernodes))
    109                 fid.write('#PBS -A %s\n' % self.accountname)
    110                 fid.write('#PBS -o %s/%s/%s.outlog \n' % (self.executionpath,dirname,modelname))
    111                 fid.write('#PBS -e %s/%s/%s.errlog \n\n' % (self.executionpath,dirname,modelname))
    112                 fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
    113                 fid.write('export CRAY_ROOTFS=DSL\n')
    114                 fid.write('module swap PrgEnv-cray/5.2.40 PrgEnv-gnu\n')
    115                 fid.write('module load cray-petsc\n')
    116                 fid.write('module load cray-tpsl\n')
    117                 fid.write('module load cray-mpich\n')
    118                 fid.write('module load gsl\n')
    119                 fid.write('cd %s/%s/\n\n' % (self.executionpath,dirname))
    120                 fid.write('aprun -B %s/%s %s %s/%s %s\n' % (self.codepath,executable,str(solution),self.executionpath,dirname,modelname))
    121                 fid.close()
    122                 # }}}
     94    #write queuing script
     95        shortname = modelname[0:min(12, len(modelname))]
     96        fid = open(modelname + '.queue', 'w')
     97        fid.write('  #!/bin/bash\n')
     98        fid.write('  #PBS - N %s \n' % shortname)
     99        fid.write('  #PBS - l mppwidth=%i, mppnppn=%i\n' % (self.np, self.procspernodes))
     100        timeobj = datetime.timedelta(minutes=self.time)
     101        m, s = divmod(timeobj.total_seconds(), 60)
     102        h, m = divmod(m, 60)
     103        timestring = "%02d:%02d:%02d" % (h, m, s)
     104        fid.write('#PBS -l walltime=%s\n' % timestring) #walltime is hh:mm:ss
     105        fid.write('#PBS -l mppmem=%imb\n' % int(self.mem / self.procspernodes))
     106        fid.write('#PBS -A %s\n' % self.accountname)
     107        fid.write('#PBS -o %s/%s/%s.outlog \n' % (self.executionpath, dirname, modelname))
     108        fid.write('#PBS -e %s/%s/%s.errlog \n\n' % (self.executionpath, dirname, modelname))
     109        fid.write('export ISSM_DIR = "%s/../"\n' % self.codepath)
     110        fid.write('export CRAY_ROOTFS = DSL\n')
     111        fid.write('module swap PrgEnv-cray / 5.2.40 PrgEnv - gnu\n')
     112        fid.write('module load cray-petsc\n')
     113        fid.write('module load cray-tpsl\n')
     114        fid.write('module load cray-mpich\n')
     115        fid.write('module load gsl\n')
     116        fid.write('cd %s/%s/\n\n' % (self.executionpath, dirname))
     117        fid.write('aprun -B %s/%s %s %s/%s %s\n' % (self.codepath, executable, str(solution), self.executionpath, dirname, modelname))
     118        fid.close()
     119    # }}}
    123120
    124         def UploadQueueJob(self,modelname,dirname,filelist):
    125                 # {{{
    126                 #compress the files into one zip.
    127                 compressstring='tar -zcf %s.tar.gz ' % dirname
    128                 for file in filelist:
    129                         compressstring += ' %s' % file
    130                 subprocess.call(compressstring,shell=True)
     121    def UploadQueueJob(self, modelname, dirname, filelist):    # {{{
     122        #compress the files into one zip.
     123        compressstring = 'tar -zcf %s.tar.gz ' % dirname
     124        for file in filelist:
     125            compressstring += ' %s' % file
     126        subprocess.call(compressstring, shell=True)
    131127
    132                 print('uploading input file and queueing script')
    133                 issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
    134                 # }}}
     128        print('uploading input file and queueing script')
     129        issmscpout(self.name, self.executionpath, self.login, self.port, [dirname + '.tar.gz'])
     130    # }}}
    135131
    136         def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):
    137                 # {{{
    138                 print('launching solution sequence on remote cluster')
    139                 if restart:
    140                         launchcommand='cd %s && cd %s && qsub %s.queue' % (self.executionpath,dirname,modelname)
    141                 else:
    142                         launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname)
    143                 issmssh(self.name,self.login,self.port,launchcommand)
    144                 # }}}
     132    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):    # {{{
     133        print('launching solution sequence on remote cluster')
     134        if restart:
     135            launchcommand = 'cd %s && cd %s && qsub %s.queue' % (self.executionpath, dirname, modelname)
     136        else:
     137            launchcommand = 'cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname)
     138        issmssh(self.name, self.login, self.port, launchcommand)
     139    # }}}
    145140
    146         def Download(self,dirname,filelist):
    147                 # {{{
    148                 #copy files from cluster to current directory
    149                 directory='%s/%s/' % (self.executionpath,dirname)
    150                 issmscpin(self.name,self.login,self.port,directory,filelist)
    151                 # }}}
     141    def Download(self, dirname, filelist):    # {{{
     142        #copy files from cluster to current directory
     143        directory = '%s/%s/' % (self.executionpath, dirname)
     144        issmscpin(self.name, self.login, self.port, directory, filelist)
     145    # }}}
  • issm/trunk-jpl/src/m/classes/clusters/pfe.py

    r23716 r24213  
    1 # import socket
    2 # import os
    3 # import math
    41import subprocess
    52from fielddisplay import fielddisplay
     
    96from issmscpout import issmscpout
    107from QueueRequirements import QueueRequirements
     8from IssmConfig import IssmConfig
    119try:
    12         from pfe_settings import pfe_settings
     10    from pfe_settings import pfe_settings
    1311except ImportError:
    14         print('You need pfe_settings.py to proceed, check presence and sys.path')
    15        
    16 class pfe(object):
    17         """
    18         PFE cluster class definition
    19  
    20            Usage:
    21               cluster=pfe();
    22               cluster=pfe('np',3);
    23               cluster=pfe('np',3,'login','username');
    24         """
    25 
    26         def __init__(self,*args):
    27                 # {{{
    28 
    29                 self.name           = 'pfe'
    30                 self.login          = ''
    31                 self.numnodes       = 20
    32                 self.cpuspernode    = 8
    33                 self.port           = 1025
    34                 self.queue          = 'long'
    35                 self.time           = 12*60
    36                 self.processor      = 'wes'
    37                 self.codepath       = ''
    38                 self.executionpath  = ''
    39                 self.grouplist      = 's1010'
    40                 self.interactive    = 0
    41                 self.bbftp          = 0
    42                 self.numstreams     = 8
    43                 self.hyperthreading = 0
    44 
    45                 #use provided options to change fields
    46                 options=pairoptions(*args)
    47 
    48                 #initialize cluster using user settings if provided
    49                 self=pfe_settings(self)
    50                 self.np=self.nprocs()
    51                 #OK get other fields
    52                 self=options.AssignObjectFields(self)
    53                
    54                 # }}}
    55 
    56         def __repr__(self):
    57                 # {{{
    58                 #  display the object
    59                 s = "class pfe object:"
    60                 s       = "%s\n%s"%(s,fielddisplay(self,'name','name of the cluster'))
    61                 s       = "%s\n%s"%(s,fielddisplay(self,'login','login'))
    62                 s = "%s\n%s"%(s,fielddisplay(self,'numnodes','number of nodes'))
    63                 s = "%s\n%s"%(s,fielddisplay(self,'cpuspernode','number of nodes per CPUs'))
    64                 s = "%s\n%s"%(s,fielddisplay(self,'np','number of CPUs'))
    65                 s = "%s\n%s"%(s,fielddisplay(self,'port','machine access port'))
    66                 s = "%s\n%s"%(s,fielddisplay(self,'codepath','code path on the cluster'))
    67                 s = "%s\n%s"%(s,fielddisplay(self,'executionpath','execution path on the cluster'))
    68                 s = "%s\n%s"%(s,fielddisplay(self,'queue','name of the queue'))
    69                 s = "%s\n%s"%(s,fielddisplay(self,'time','walltime requested'))
    70                 s = "%s\n%s"%(s,fielddisplay(self,'processor','type of processor'))
    71                 s = "%s\n%s"%(s,fielddisplay(self,'grouplist','name of the group'))
    72                 s = "%s\n%s"%(s,fielddisplay(self,'interactive',''))
    73                 s = "%s\n%s"%(s,fielddisplay(self,'bbftp',''))
    74                 s = "%s\n%s"%(s,fielddisplay(self,'numstreams',''))
    75                 s = "%s\n%s"%(s,fielddisplay(self,'hyperthreading',''))
    76                 return s
    77         # }}}
    78 
    79         def nprocs(self):
    80                 # {{{
    81                 self.np=self.numnodes*self.cpuspernode
    82                 return self.np
    83                 # }}}
    84         def checkconsistency(self,md,solution,analyses):
    85                 # {{{
     12    print('You need pfe_settings.py to proceed, check presence and sys.path')
    8613
    8714
    88                 queuedict = {'long': [5*24*60, 2048],
    89                                                                  'normal': [8*60, 2048],
    90                                                                  'debug':[2*60,150],
    91                                                                  'devel':[2*60,150]}
    92                 QueueRequirements(queuedict,self.queue,self.nprocs(),self.time)
     15class pfe(object):
     16    """
     17    PFE cluster class definition
    9318
    94                 #now, check cluster.cpuspernode according to processor type
    95                 if self.processor=='har' or self.processor=='neh':
    96                         if self.hyperthreading:
    97                                 if not 0<self.cpuspernode<17:
    98                                         md = md.checkmessage('cpuspernode should be between 1 and 16 for ''neh'' and ''har'' processors in hyperthreading mode')
    99                         else:
    100                                 if not 0<self.cpuspernode<9:
    101                                         md = md.checkmessage('cpuspernode should be between 1 and 8 for ''neh'' and ''har'' processors')
     19       Usage:
     20          cluster = pfe()
     21          cluster = pfe('np', 3)
     22          cluster = pfe('np', 3, 'login', 'username')
     23    """
    10224
    103                 elif self.processor=='wes':
    104                         if self.hyperthreading:
    105                                 if not 0<self.cpuspernode<25:
    106                                         md = md.checkmessage('cpuspernode should be between 1 and 24 for ''wes'' processors in hyperthreading mode')
    107                         else:
    108                                 if not 0<self.cpuspernode<13:
    109                                         md = md.checkmessage('cpuspernode should be between 1 and 12 for ''wes'' processors')
     25    def __init__(self, *args):    # {{{
     26        self.name = 'pfe'
     27        self.login = ''
     28        self.numnodes = 20
     29        self.cpuspernode = 8
     30        self.port = 1025
     31        self.queue = 'long'
     32        self.time = 12 * 60
     33        self.processor = 'wes'
     34        self.codepath = ''
     35        self.executionpath = ''
     36        self.grouplist = 's1010'
     37        self.interactive = 0
     38        self.bbftp = 0
     39        self.numstreams = 8
     40        self.hyperthreading = 0
    11041
    111                 elif self.processor=='ivy':
    112                         if self.hyperthreading:
    113                                 if not 0<self.cpuspernode<41:
    114                                         md = md.checkmessage('cpuspernode should be between 1 and 40 for ''ivy'' processors in hyperthreading mode')
    115                         else:
    116                                 if not 0<self.cpuspernode<21:
    117                                         md = md.checkmessage('cpuspernode should be between 1 and 20 for ''ivy'' processors')
    118                 else:
    119                         md = md.checkmessage('unknown processor type, should be ''neh'',''wes'' or ''har'' or ''ivy''')
    120        
    121                 #Miscelaneous
    122                 if not self.login:
    123                         md = md.checkmessage('login empty')
    124                 if not self.codepath:
    125                         md = md.checkmessage('codepath empty')
    126                 if not self.executionpath:
    127                         md = md.checkmessage('executionpath empty')
    128                 if not self.grouplist:
    129                         md = md.checkmessage('grouplist empty')
    130                 if self.interactive==1:
    131                         md = md.checkmessage('interactive mode not implemented')
    132                        
    133                 return self
    134         # }}}
    135         def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling):
    136                 # {{{
     42        #use provided options to change fields
     43        options = pairoptions(*args)
    13744
    138                 executable='issm.exe'
    139                 if isdakota:
    140                         version=IssmConfig('_DAKOTA_VERSION_')[0:2]
    141                         version=float(version)
    142                         if version>=6:
    143                                 executable='issm_dakota.exe'
    144                 if isoceancoupling:
    145                         executable='issm_ocean.exe'
     45        #initialize cluster using user settings if provided
     46        self = pfe_settings(self)
     47        self.np = self.nprocs()
     48        #OK get other fields
     49        self = options.AssignObjectFields(self)
    14650
    147                 #write queuing script
    148                 fid=open(modelname+'.queue','w')
    149                 fid.write('#PBS -S /bin/bash\n')
    150                 fid.write('#PBS -l select=%i:ncpus=%i:model=%s\n' % (self.numnodes,self.cpuspernode,self.processor))
    151                 fid.write('#PBS -l walltime=%i\n' % (self.time*60))
    152                 fid.write('#PBS -q %s \n' % self.queue)
    153                 fid.write('#PBS -W group_list=%s\n' % self.grouplist)
    154                 fid.write('#PBS -m e\n')
    155                 fid.write('#PBS -o %s/%s/%s.outlog \n' % (self.executionpath,dirname,modelname))
    156                 fid.write('#PBS -e %s/%s/%s.errlog \n\n' % (self.executionpath,dirname,modelname))
    157                 fid.write('. /usr/share/modules/init/bash\n\n')
    158                 fid.write('module load comp-intel/2015.0.090\n')
    159                 fid.write('module load mpi-sgi/mpt.2.11r13\n')
    160                 fid.write('export PATH="$PATH:."\n\n')
    161                 fid.write('export MPI_GROUP_MAX=64\n\n')
    162                 fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
    163                 fid.write('source $ISSM_DIR/etc/environment.sh\n')
    164                 fid.write('cd %s/%s/\n\n' % (self.executionpath,dirname))
    165                 fid.write('mpiexec -np %i %s/%s %s %s/%s %s\n' % (self.nprocs(),self.codepath,executable,str(solution),self.executionpath,dirname,modelname))
    166                
    167                 fid.close()
     51    # }}}
    16852
    169         # }}}
    170         def UploadQueueJob(self,modelname,dirname,filelist):
    171                         # {{{
     53    def __repr__(self):    # {{{
     54        #  display the object
     55        s = "class pfe object:"
     56        s = "%s\n%s" % (s, fielddisplay(self, 'name', 'name of the cluster'))
     57        s = "%s\n%s" % (s, fielddisplay(self, 'login', 'login'))
     58        s = "%s\n%s" % (s, fielddisplay(self, 'numnodes', 'number of nodes'))
     59        s = "%s\n%s" % (s, fielddisplay(self, 'cpuspernode', 'number of nodes per CPUs'))
     60        s = "%s\n%s" % (s, fielddisplay(self, 'np', 'number of CPUs'))
     61        s = "%s\n%s" % (s, fielddisplay(self, 'port', 'machine access port'))
     62        s = "%s\n%s" % (s, fielddisplay(self, 'codepath', 'code path on the cluster'))
     63        s = "%s\n%s" % (s, fielddisplay(self, 'executionpath', 'execution path on the cluster'))
     64        s = "%s\n%s" % (s, fielddisplay(self, 'queue', 'name of the queue'))
     65        s = "%s\n%s" % (s, fielddisplay(self, 'time', 'walltime requested'))
     66        s = "%s\n%s" % (s, fielddisplay(self, 'processor', 'type of processor'))
     67        s = "%s\n%s" % (s, fielddisplay(self, 'grouplist', 'name of the group'))
     68        s = "%s\n%s" % (s, fielddisplay(self, 'interactive', ''))
     69        s = "%s\n%s" % (s, fielddisplay(self, 'bbftp', ''))
     70        s = "%s\n%s" % (s, fielddisplay(self, 'numstreams', ''))
     71        s = "%s\n%s" % (s, fielddisplay(self, 'hyperthreading', ''))
     72        return s
     73    # }}}
    17274
    173                 #compress the files into one zip.
    174                 compressstring='tar -zcf %s.tar.gz ' % dirname
    175                 for file in filelist:
    176                         compressstring += ' %s' % file
    177                 subprocess.call(compressstring,shell=True)
     75    def nprocs(self):    # {{{
     76        self.np = self.numnodes * self.cpuspernode
     77        return self.np
     78    # }}}
    17879
    179                 print('uploading input file and queueing script')
    180                 issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
     80    def checkconsistency(self, md, solution, analyses):    # {{{
     81        queuedict = {'long': [5 * 24 * 60, 2048],
     82                     'normal': [8 * 60, 2048],
     83                     'debug': [2 * 60, 150],
     84                     'devel': [2 * 60, 150]}
     85        QueueRequirements(queuedict, self.queue, self.nprocs(), self.time)
    18186
    182                 # }}}
    183         def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):
    184                         # {{{
     87        #now, check cluster.cpuspernode according to processor type
     88        if self.processor == 'har' or self.processor == 'neh':
     89            if self.hyperthreading:
     90                if not 0 < self.cpuspernode < 17:
     91                    md = md.checkmessage('cpuspernode should be between 1 and 16 for ''neh'' and ''har'' processors in hyperthreading mode')
     92            else:
     93                if not 0 < self.cpuspernode < 9:
     94                    md = md.checkmessage('cpuspernode should be between 1 and 8 for ''neh'' and ''har'' processors')
    18595
    186                 print('launching solution sequence on remote cluster')
    187                 if restart:
    188                         launchcommand='cd %s && cd %s && qsub %s.queue' % (self.executionpath,dirname,modelname)
    189                 else:
    190                         launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname)
    191                 issmssh(self.name,self.login,self.port,launchcommand)
     96        elif self.processor == 'wes':
     97            if self.hyperthreading:
     98                if not 0 < self.cpuspernode < 25:
     99                    md = md.checkmessage('cpuspernode should be between 1 and 24 for ''wes'' processors in hyperthreading mode')
     100            else:
     101                if not 0 < self.cpuspernode < 13:
     102                    md = md.checkmessage('cpuspernode should be between 1 and 12 for ''wes'' processors')
    192103
    193                 # }}}
    194         def Download(self,dirname,filelist):
    195                 # {{{
     104        elif self.processor == 'ivy':
     105            if self.hyperthreading:
     106                if not 0 < self.cpuspernode < 41:
     107                    md = md.checkmessage('cpuspernode should be between 1 and 40 for ''ivy'' processors in hyperthreading mode')
     108            else:
     109                if not 0 < self.cpuspernode < 21:
     110                    md = md.checkmessage('cpuspernode should be between 1 and 20 for ''ivy'' processors')
     111        else:
     112            md = md.checkmessage('unknown processor type, should be ''neh'', ''wes'' or ''har'' or ''ivy''')
    196113
    197                 #copy files from cluster to current directory
    198                 directory='%s/%s/' % (self.executionpath,dirname)
    199                 issmscpin(self.name,self.login,self.port,directory,filelist)
    200         # }}}
     114    #Miscelaneous
     115        if not self.login:
     116            md = md.checkmessage('login empty')
     117        if not self.codepath:
     118            md = md.checkmessage('codepath empty')
     119        if not self.executionpath:
     120            md = md.checkmessage('executionpath empty')
     121        if not self.grouplist:
     122            md = md.checkmessage('grouplist empty')
     123        if self.interactive == 1:
     124            md = md.checkmessage('interactive mode not implemented')
     125
     126        return self
     127    # }}}
     128
     129    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):    # {{{
     130        executable = 'issm.exe'
     131        if isdakota:
     132            version = IssmConfig('_DAKOTA_VERSION_')[0:2]
     133            version = float(version)
     134            if version >= 6:
     135                executable = 'issm_dakota.exe'
     136        if isoceancoupling:
     137            executable = 'issm_ocean.exe'
     138
     139    #write queuing script
     140        fid = open(modelname + '.queue', 'w')
     141        fid.write('#PBS -S / bin / bash\n')
     142        fid.write('#PBS -l select=%i:ncpus=%i:model=%s\n' % (self.numnodes, self.cpuspernode, self.processor))
     143        fid.write('#PBS -l walltime=%i\n' % (self.time * 60))
     144        fid.write('#PBS -q %s \n' % self.queue)
     145        fid.write('#PBS -W group_list=%s\n' % self.grouplist)
     146        fid.write('#PBS -m e\n')
     147        fid.write('#PBS -o %s/%s/%s.outlog \n' % (self.executionpath, dirname, modelname))
     148        fid.write('#PBS -e %s/%s/%s.errlog \n\n' % (self.executionpath, dirname, modelname))
     149        fid.write('./usr/share/modules/init/bash\n\n')
     150        fid.write('module load comp-intel/2015.0.090\n')
     151        fid.write('module load mpi-sgi/mpt.2.11r13\n')
     152        fid.write('export PATH = "$PATH:."\n\n')
     153        fid.write('export MPI_GROUP_MAX = 64\n\n')
     154        fid.write('export ISSM_DIR = "%s/../ "\n' % self.codepath)
     155        fid.write('source $ISSM_DIR/etc/environment.sh\n')
     156        fid.write('cd %s/%s/ \n\n' % (self.executionpath, dirname))
     157        fid.write('mpiexec - np %i %s/%s %s %s/%s %s\n' % (self.nprocs(), self.codepath, executable, str(solution), self.executionpath, dirname, modelname))
     158
     159        fid.close()
     160
     161    # }}}
     162
     163    def UploadQueueJob(self, modelname, dirname, filelist):    # {{{
     164        #compress the files into one zip.
     165        compressstring = 'tar -zcf %s.tar.gz ' % dirname
     166        for file in filelist:
     167            compressstring += ' %s' % file
     168        subprocess.call(compressstring, shell=True)
     169
     170        print('uploading input file and queueing script')
     171        issmscpout(self.name, self.executionpath, self.login, self.port, [dirname + '.tar.gz'])
     172
     173    # }}}
     174    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):    # {{{
     175        print('launching solution sequence on remote cluster')
     176        if restart:
     177            launchcommand = 'cd %s && cd %s && qsub %s.queue' % (self.executionpath, dirname, modelname)
     178        else:
     179            launchcommand = 'cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname)
     180        issmssh(self.name, self.login, self.port, launchcommand)
     181
     182    # }}}
     183    def Download(self, dirname, filelist):    # {{{
     184        #copy files from cluster to current directory
     185        directory = '%s/%s/' % (self.executionpath, dirname)
     186        issmscpin(self.name, self.login, self.port, directory, filelist)
     187    # }}}
  • issm/trunk-jpl/src/m/classes/clusters/stallo.py

    r23716 r24213  
    77from issmscpout import issmscpout
    88from QueueRequirements import QueueRequirements
     9from IssmConfig import IssmConfig
    910import datetime
    1011try:
    11         from stallo_settings import stallo_settings
     12    from stallo_settings import stallo_settings
    1213except ImportError:
    13         print('You need stallo_settings.py to proceed, check presence and sys.path')
     14    print('You need stallo_settings.py to proceed, check presence and sys.path')
     15
    1416
    1517class stallo(object):
    16         """
    17         Stallo cluster class definition
    18         This is a SLURM queue
    19         The priorities are given to:
    20           - Large jobs
    21           - Short jobs
    22           - small number of job per user
     18    """
     19    Stallo cluster class definition
     20    This is a SLURM queue
     21    The priorities are given to:
     22 - Large jobs
     23 - Short jobs
     24 - small number of job per user
    2325
    24         There are some 20cpu nodes and 16cpu nodes, with 32GB (a few with 128GB) mem per node, you can ask for part of a node if you need more memory.(1 node, 2 CPUS and 10GB per cpu for example)
     26    There are some 20cpu nodes and 16cpu nodes, with 32GB (a few with 128GB) mem per node, you can ask for part of a node if you need more memory.(1 node, 2 CPUS and 10GB per cpu for example)
    2527
    2628
    27            Usage:
    28               cluster=stallo();
    29         """
     29       Usage:
     30          cluster = stallo()
     31    """
    3032
    31         def __init__(self,*args):
    32         # {{{
    33                 self.name           = 'stallo'
    34                 self.login          = ''
    35                 self.numnodes       = 2
    36                 self.cpuspernode    = 20
    37                 self.mem            = 1.6
    38                 self.queue          = 'normal'
    39                 self.time           = 2*60
    40                 self.codepath       = ''
    41                 self.executionpath  = ''
    42                 self.interactive    = 0
    43                 self.port           = []
    44                 self.accountname    = ''
    45                 self.profiling      = 0
    46                 #use provided options to change fields
    47                 options=pairoptions(*args)
     33    def __init__(self, *args):  # {{{
     34        self.name = 'stallo'
     35        self.login = ''
     36        self.numnodes = 2
     37        self.cpuspernode = 20
     38        self.mem = 1.6
     39        self.queue = 'normal'
     40        self.time = 2 * 60
     41        self.codepath = ''
     42        self.executionpath = ''
     43        self.interactive = 0
     44        self.port = []
     45        self.accountname = ''
     46        self.profiling = 0
     47    #use provided options to change fields
     48        options = pairoptions(*args)
    4849
    49                 #initialize cluster using user settings if provided
    50                 self=stallo_settings(self)
    51                 #OK get other fields
    52                 self=options.AssignObjectFields(self)
    53                 self.np=self.numnodes*self.cpuspernode
    54         # }}}
     50    #initialize cluster using user settings if provided
     51        self = stallo_settings(self)
     52    #OK get other fields
     53        self = options.AssignObjectFields(self)
     54        self.np = self.numnodes * self.cpuspernode
     55    # }}}
    5556
    56         def __repr__(self):
    57         # {{{
    58                 #  display the object
    59                 s = "class vilje object:"
    60                 s = "%s\n%s"%(s,fielddisplay(self,'name','name of the cluster'))
    61                 s = "%s\n%s"%(s,fielddisplay(self,'login','login'))
    62                 s = "%s\n%s"%(s,fielddisplay(self,'numnodes','number of nodes'))
    63                 s = "%s\n%s"%(s,fielddisplay(self,'cpuspernode','number of CPUs per nodes'))
    64                 s = "%s\n%s"%(s,fielddisplay(self,'mem','memory per CPU'))
    65                 s = "%s\n%s"%(s,fielddisplay(self,'queue','name of the queue (normal (D), short,singlenode,multinode,devel)'))
    66                 s = "%s\n%s"%(s,fielddisplay(self,'time','walltime requested in minutes'))
    67                 s = "%s\n%s"%(s,fielddisplay(self,'codepath','code path on the cluster'))
    68                 s = "%s\n%s"%(s,fielddisplay(self,'executionpath','execution path on the cluster'))
    69                 s = "%s\n%s"%(s,fielddisplay(self,'interactive',''))
    70                 s = "%s\n%s"%(s,fielddisplay(self,'accountname','your cluster account'))
    71                 s = "%s\n%s"%(s,fielddisplay(self,'profiling','enable profiling if 1 default is 0'))
    72                 return s
    73         # }}}
    74         def checkconsistency(self,md,solution,analyses):
    75         # {{{
    76                 #Queue dictionarry  gives queue name as key and max walltime and cpus as var
    77                 queuedict = {'short':[60, 2048],
    78                                                                  'normal':[2*24*60,2048],
    79                                                                  'singlenode':[28*24*60,20],
    80                                                                  'multinode':[28*24*60,2048],
    81                                                                  'devel':[4*60,2048]}
    82                 QueueRequirements(queuedict,self.queue,self.np,self.time)
     57    def __repr__(self):  # {{{
     58        #  display the object
     59        s = "class vilje object:"
     60        s = "%s\n%s" % (s, fielddisplay(self, 'name', 'name of the cluster'))
     61        s = "%s\n%s" % (s, fielddisplay(self, 'login', 'login'))
     62        s = "%s\n%s" % (s, fielddisplay(self, 'numnodes', 'number of nodes'))
     63        s = "%s\n%s" % (s, fielddisplay(self, 'cpuspernode', 'number of CPUs per nodes'))
     64        s = "%s\n%s" % (s, fielddisplay(self, 'mem', 'memory per CPU'))
     65        s = "%s\n%s" % (s, fielddisplay(self, 'queue', 'name of the queue (normal (D), short, singlenode, multinode, devel)'))
     66        s = "%s\n%s" % (s, fielddisplay(self, 'time', 'walltime requested in minutes'))
     67        s = "%s\n%s" % (s, fielddisplay(self, 'codepath', 'code path on the cluster'))
     68        s = "%s\n%s" % (s, fielddisplay(self, 'executionpath', 'execution path on the cluster'))
     69        s = "%s\n%s" % (s, fielddisplay(self, 'interactive', ''))
     70        s = "%s\n%s" % (s, fielddisplay(self, 'accountname', 'your cluster account'))
     71        s = "%s\n%s" % (s, fielddisplay(self, 'profiling', 'enable profiling if 1 default is 0'))
     72        return s
     73    # }}}
    8374
    84                 #Miscelaneous
    85                 if not self.login:
    86                         md = md.checkmessage('login empty')
    87                 if not self.codepath:
    88                         md = md.checkmessage('codepath empty')
    89                 if not self.executionpath:
    90                         md = md.checkmessage('executionpath empty')
    91                 if self.interactive==1:
    92                         md = md.checkmessage('interactive mode not implemented')
    93                 return self
    94                 # }}}
    95         def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling):
    96                 # {{{
     75    def checkconsistency(self, md, solution, analyses):  # {{{
     76        #Queue dictionarry  gives queue name as key and max walltime and cpus as var
     77        queuedict = {'short': [60, 2048],
     78                     'normal': [2 * 24 * 60, 2048],
     79                     'singlenode': [28 * 24 * 60, 20],
     80                     'multinode': [28 * 24 * 60, 2048],
     81                     'devel': [4 * 60, 2048]}
     82        QueueRequirements(queuedict, self.queue, self.np, self.time)
    9783
    98                 executable='issm.exe'
    99                 if isdakota:
    100                         version=IssmConfig('_DAKOTA_VERSION_')[0:2]
    101                         version=float(version)
    102                         if version>=6:
    103                                 executable='issm_dakota.exe'
    104                 if isoceancoupling:
    105                         executable='issm_ocean.exe'
    106                 #write queuing script
    107                 shortname=modelname[0:min(12,len(modelname))]
    108                 timeobj=datetime.timedelta(minutes=self.time)
    109                 m,s=divmod(timeobj.total_seconds(), 60)
    110                 h,m=divmod(m, 60)
    111                 d,h=divmod(h, 60)
    112                 timestring="%02d-%02d:%02d:%02d" % (d, h, m, s)
     84    #Miscelaneous
     85        if not self.login:
     86            md = md.checkmessage('login empty')
     87        if not self.codepath:
     88            md = md.checkmessage('codepath empty')
     89        if not self.executionpath:
     90            md = md.checkmessage('executionpath empty')
     91        if self.interactive == 1:
     92            md = md.checkmessage('interactive mode not implemented')
     93        return self
     94    # }}}
    11395
    114                 fid=open(modelname+'.queue','w')
    115                 fid.write('#!/bin/bash -l\n')
    116                 fid.write('#SBATCH --job-name=%s \n' % shortname)
    117                 fid.write('#SBATCH --qos=%s \n' % self.queue)
    118                 fid.write('#SBATCH --nodes=%i \n' % self.numnodes)
    119                 fid.write('#SBATCH --ntasks-per-node=%i \n' % self.cpuspernode)
    120                 fid.write('#SBATCH --time={}\n'.format(timestring)) #walltime is minutes
    121                 fid.write('#SBATCH --mem-per-cpu={}MB\n'.format(int(1000*self.mem)))# mem is in MB
    122                 if (np.mod(self.np,16)+np.mod(self.np,20))==0:
    123                         fid.write('#SBATCH --ntask=%i\n' % self.np)
    124                 fid.write('#SBATCH --account=%s\n' % self.accountname)
    125                 fid.write('#SBATCH --output %s/%s/%s.outlog \n' % (self.executionpath,dirname,modelname))
    126                 fid.write('#SBATCH --error %s/%s/%s.errlog \n\n' % (self.executionpath,dirname,modelname))
     96    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):  # {{{
    12797
    128                 fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
    129                 fid.write('module purge\n')
    130                 fid.write('module load CMake/3.8.0-GCCcore-6.3.0\n')
    131                 fid.write('module load Automake/1.15.1-GCCcore-6.3.0\n')
    132                 fid.write('module load libtool/2.4.6\n')
    133                 fid.write('module load OpenSSL/1.1.0e-intel-2017a\n')
    134                 fid.write('module load PETSc/3.7.5-intel-2017a-downloaded-deps\n')
     98        executable = 'issm.exe'
     99        if isdakota:
     100            version = IssmConfig('_DAKOTA_VERSION_')[0:2]
     101            version = float(version)
     102            if version >= 6:
     103                executable = 'issm_dakota.exe'
     104        if isoceancoupling:
     105            executable = 'issm_ocean.exe'
     106    #write queuing script
     107        shortname = modelname[0:min(12, len(modelname))]
     108        timeobj = datetime.timedelta(minutes=self.time)
     109        m, s = divmod(timeobj.total_seconds(), 60)
     110        h, m = divmod(m, 60)
     111        d, h = divmod(h, 60)
     112        timestring = "%02d-%02d:%02d:%02d" % (d, h, m, s)
    135113
    136                 fid.write('cd %s/%s/\n\n' % (self.executionpath,dirname))
    137                 if self.profiling==1:
    138                         fid.write('module load perf-report\n')
    139                         fid.write('perf-report mpirun -np %i %s/%s %s %s/%s %s\n' % (self.np,self.codepath,executable,str(solution),self.executionpath,dirname,modelname))
    140                 else:
    141                         fid.write('mpirun -np %i %s/%s %s %s/%s %s\n' % (self.np,self.codepath,executable,str(solution),self.executionpath,dirname,modelname))
    142                 fid.close()
     114        fid = open(modelname + '.queue', 'w')
     115        fid.write('#!/bin/bash -l\n')
     116        fid.write('#SBATCH --job - name=%s \n' % shortname)
     117        fid.write('#SBATCH --qos=%s \n' % self.queue)
     118        fid.write('#SBATCH --nodes=%i \n' % self.numnodes)
     119        fid.write('#SBATCH --ntasks - per - node=%i \n' % self.cpuspernode)
     120        fid.write('#SBATCH --time={}\n'.format(timestring))  #walltime is minutes
     121        fid.write('#SBATCH --mem-per-cpu={}MB\n'.format(int(1000 * self.mem)))  # mem is in MB
     122        if (np.mod(self.np, 16) + np.mod(self.np, 20)) == 0:
     123            fid.write('  #SBATCH --ntask=%i\n' % self.np)
     124        fid.write('#SBATCH --account=%s\n' % self.accountname)
     125        fid.write('#SBATCH --output %s/%s/%s.outlog \n' % (self.executionpath, dirname, modelname))
     126        fid.write('#SBATCH --error %s/%s/%s.errlog \n\n' % (self.executionpath, dirname, modelname))
    143127
    144                 # }}}
    145         def UploadQueueJob(self,modelname,dirname,filelist):
    146                 # {{{
    147                 #compress the files into one zip.
    148                 compressstring='tar -zcf %s.tar.gz ' % dirname
    149                 for file in filelist:
    150                         compressstring += ' %s' % file
    151                 subprocess.call(compressstring,shell=True)
     128        fid.write('export ISSM_DIR = "%s/../"\n' % self.codepath)
     129        fid.write('module purge\n')
     130        fid.write('module load CMake/3.8.0-GCCcore-6.3.0\n')
     131        fid.write('module load Automake/1.15.1-GCCcore-6.3.0\n')
     132        fid.write('module load libtool/2.4.6\n')
     133        fid.write('module load OpenSSL/1.1.0e-intel-2017a\n')
     134        fid.write('module load PETSc/3.7.5-intel-2017a-downloaded-deps\n')
    152135
    153                 print('uploading input file and queueing script')
    154                 issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
     136        fid.write('cd %s/%s/ \n\n' % (self.executionpath, dirname))
     137        if self.profiling == 1:
     138            fid.write('module load perf-report\n')
     139            fid.write('perf-report mpirun -np %i %s/%s %s %s/%s %s\n' % (self.np, self.codepath, executable, str(solution), self.executionpath, dirname, modelname))
     140        else:
     141            fid.write('mpirun -np %i %s/%s %s %s/%s %s\n' % (self.np, self.codepath, executable, str(solution), self.executionpath, dirname, modelname))
     142        fid.close()
    155143
    156                 # }}}
    157         def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):
    158                 # {{{
     144    # }}}
     145    def UploadQueueJob(self, modelname, dirname, filelist):  # {{{
     146        #compress the files into one zip.
     147        compressstring = 'tar -zcf %s.tar.gz ' % dirname
     148        for file in filelist:
     149            compressstring += ' %s' % file
     150        subprocess.call(compressstring, shell=True)
    159151
    160                 print('launching solution sequence on remote cluster')
    161                 if restart:
    162                         launchcommand='cd %s && cd %s && sbatch %s.queue' % (self.executionpath,dirname,modelname)
    163                 else:
    164                         launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && sbatch %s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname)
    165                 issmssh(self.name,self.login,self.port,launchcommand)
     152        print('uploading input file and queueing script')
     153        issmscpout(self.name, self.executionpath, self.login, self.port, [dirname + '.tar.gz'])
    166154
    167                 # }}}
    168         def Download(self,dirname,filelist):
    169                 # {{{
     155    # }}}
    170156
    171                 #copy files from cluster to current directory
    172                 directory='%s/%s/' % (self.executionpath,dirname)
    173                 issmscpin(self.name,self.login,self.port,directory,filelist)
    174                 # }}}
     157    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):  # {{{
     158
     159        print('launching solution sequence on remote cluster')
     160        if restart:
     161            launchcommand = 'cd %s && cd %s && sbatch %s.queue' % (self.executionpath, dirname, modelname)
     162        else:
     163            launchcommand = 'cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && sbatch %s.queue' % (self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname)
     164        issmssh(self.name, self.login, self.port, launchcommand)
     165
     166    # }}}
     167
     168    def Download(self, dirname, filelist):  # {{{
     169        #copy files from cluster to current directory
     170        directory = '%s/%s/' % (self.executionpath, dirname)
     171        issmscpin(self.name, self.login, self.port, directory, filelist)
     172    # }}}
  • issm/trunk-jpl/src/m/classes/clusters/vilje.py

    r23716 r24213  
    66from issmscpout import issmscpout
    77from QueueRequirements import QueueRequirements
     8from IssmConfig import IssmConfig
    89import datetime
    910try:
    10         from vilje_settings import vilje_settings
     11    from vilje_settings import vilje_settings
    1112except ImportError:
    12         print('You need vilje_settings.py to proceed, check presence and sys.path')
     13    print('You need vilje_settings.py to proceed, check presence and sys.path')
     14
    1315
    1416class vilje(object):
    15         """
    16         Vilje cluster class definition
     17    """
     18    Vilje cluster class definition
    1719
    18            Usage:
    19               cluster=vilje();
    20         """
     20       Usage:
     21          cluster = vilje()
     22    """
    2123
    22         def __init__(self,*args):
    23                 # {{{
    24                 self.name           = 'vilje'
    25                 self.login          = ''
    26                 self.numnodes       = 2
    27                 self.cpuspernode    = 32
    28                 self.procspernodes  = 16
    29                 self.mem            = 28
    30                 self.queue          = 'workq'
    31                 self.time           = 2*60
    32                 self.codepath       = ''
    33                 self.executionpath  = ''
    34                 self.interactive    = 0
    35                 self.port           = []
    36                 self.accountname    = ''
     24    def __init__(self, *args):    # {{{
     25        self.name = 'vilje'
     26        self.login = ''
     27        self.numnodes = 2
     28        self.cpuspernode = 32
     29        self.procspernodes = 16
     30        self.mem = 28
     31        self.queue = 'workq'
     32        self.time = 2 * 60
     33        self.codepath = ''
     34        self.executionpath = ''
     35        self.interactive = 0
     36        self.port = []
     37        self.accountname = ''
    3738
    38                 #use provided options to change fields
    39                 options=pairoptions(*args)
     39    #use provided options to change fields
     40        options = pairoptions(*args)
    4041
    41                 #initialize cluster using user settings if provided
    42                 self=vilje_settings(self)
    43                 #OK get other fields
    44                 self=options.AssignObjectFields(self)
    45                 self.np=self.numnodes*self.procspernodes
    46         # }}}
     42    #initialize cluster using user settings if provided
     43        self = vilje_settings(self)
     44    #OK get other fields
     45        self = options.AssignObjectFields(self)
     46        self.np = self.numnodes * self.procspernodes
     47    # }}}
    4748
    48         def __repr__(self):
    49                 # {{{
    50                 #  display the object
    51                 s = "class vilje object:"
    52                 s = "%s\n%s"%(s,fielddisplay(self,'name','name of the cluster'))
    53                 s = "%s\n%s"%(s,fielddisplay(self,'login','login'))
    54                 s = "%s\n%s"%(s,fielddisplay(self,'numnodes','number of nodes'))
    55                 s = "%s\n%s"%(s,fielddisplay(self,'cpuspernode','number of nodes per CPUs (32)'))
    56                 s = "%s\n%s"%(s,fielddisplay(self,'procspernodes','number of mpi procs per nodes'))
    57                 s = "%s\n%s"%(s,fielddisplay(self,'mem','node memory'))
    58                 s = "%s\n%s"%(s,fielddisplay(self,'queue','name of the queue (test is an option, workq the default)'))
    59                 s = "%s\n%s"%(s,fielddisplay(self,'time','walltime requested in minutes'))
    60                 s = "%s\n%s"%(s,fielddisplay(self,'codepath','code path on the cluster'))
    61                 s = "%s\n%s"%(s,fielddisplay(self,'executionpath','execution path on the cluster'))
    62                 s = "%s\n%s"%(s,fielddisplay(self,'interactive',''))
    63                 s = "%s\n%s"%(s,fielddisplay(self,'accountname','your cluster account'))
    64                 return s
    65         # }}}
     49    def __repr__(self):    # {{{
     50        #  display the object
     51        s = "class vilje object:"
     52        s = "%s\n%s" % (s, fielddisplay(self, 'name', 'name of the cluster'))
     53        s = "%s\n%s" % (s, fielddisplay(self, 'login', 'login'))
     54        s = "%s\n%s" % (s, fielddisplay(self, 'numnodes', 'number of nodes'))
     55        s = "%s\n%s" % (s, fielddisplay(self, 'cpuspernode', 'number of nodes per CPUs (32)'))
     56        s = "%s\n%s" % (s, fielddisplay(self, 'procspernodes', 'number of mpi procs per nodes'))
     57        s = "%s\n%s" % (s, fielddisplay(self, 'mem', 'node memory'))
     58        s = "%s\n%s" % (s, fielddisplay(self, 'queue', 'name of the queue (test is an option, workq the default)'))
     59        s = "%s\n%s" % (s, fielddisplay(self, 'time', 'walltime requested in minutes'))
     60        s = "%s\n%s" % (s, fielddisplay(self, 'codepath', 'code path on the cluster'))
     61        s = "%s\n%s" % (s, fielddisplay(self, 'executionpath', 'execution path on the cluster'))
     62        s = "%s\n%s" % (s, fielddisplay(self, 'interactive', ''))
     63        s = "%s\n%s" % (s, fielddisplay(self, 'accountname', 'your cluster account'))
     64        return s
     65    # }}}
    6666
    67         def checkconsistency(self,md,solution,analyses):
    68                 # {{{
    69                 #Queue dictionarry  gives queu name as key and max walltime and cpus as var
    70                 queuedict = {'workq':[5*24*60, 30],
    71                                                                  'test':[30,4]}
    72                 QueueRequirements(queuedict,self.queue,self.np,self.time)
     67    def checkconsistency(self, md, solution, analyses):    # {{{
     68        #Queue dictionarry  gives queu name as key and max walltime and cpus as var
     69        queuedict = {'workq': [5 * 24 * 60, 30],
     70                     'test': [30, 4]}
     71        QueueRequirements(queuedict, self.queue, self.np, self.time)
    7372
    74                 #Miscelaneous
    75                 if not self.login:
    76                         md = md.checkmessage('login empty')
    77                 if not self.codepath:
    78                         md = md.checkmessage('codepath empty')
    79                 if not self.executionpath:
    80                         md = md.checkmessage('executionpath empty')
    81                 if self.interactive==1:
    82                         md = md.checkmessage('interactive mode not implemented')
    83                 return self
    84         # }}}
     73    #Miscelaneous
     74        if not self.login:
     75            md = md.checkmessage('login empty')
     76        if not self.codepath:
     77            md = md.checkmessage('codepath empty')
     78        if not self.executionpath:
     79            md = md.checkmessage('executionpath empty')
     80        if self.interactive == 1:
     81            md = md.checkmessage('interactive mode not implemented')
     82        return self
     83    # }}}
    8584
    86         def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling):
    87                 # {{{
    88                 executable='issm.exe'
    89                 if isdakota:
    90                         version=IssmConfig('_DAKOTA_VERSION_')[0:2]
    91                         version=float(version)
    92                         if version>=6:
    93                                 executable='issm_dakota.exe'
    94                 if isoceancoupling:
    95                         executable='issm_ocean.exe'
     85    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):    # {{{
     86        executable = 'issm.exe'
     87        if isdakota:
     88            version = IssmConfig('_DAKOTA_VERSION_')[0:2]
     89            version = float(version)
     90            if version >= 6:
     91                executable = 'issm_dakota.exe'
     92        if isoceancoupling:
     93            executable = 'issm_ocean.exe'
    9694
    97                 #write queuing script
    98                 shortname=modelname[0:min(12,len(modelname))]
    99                 fid=open(modelname+'.queue','w')
    100                 fid.write('#PBS -S /bin/bash\n')
    101                 fid.write('#PBS -N %s \n' % shortname)
    102                 fid.write('#PBS -q %s \n' % self.queue)
    103                 fid.write('#PBS -l select=%i:ncpus=%i:mpiprocs=%s\n' % (self.numnodes,self.cpuspernode,self.procspernodes))
    104                 timeobj=datetime.timedelta(minutes=self.time)
    105                 m,s=divmod(timeobj.total_seconds(), 60)
    106                 h,m=divmod(m, 60)
    107                 timestring="%02d:%02d:%02d" % (h, m, s)
    108                 fid.write('#PBS -l walltime=%s\n' % timestring) #walltime is hh:mm:ss
    109                 #fid.write('#PBS -l mem=%igb\n' % self.mem)
    110                 fid.write('#PBS -A %s\n' % self.accountname)
    111                 fid.write('#PBS -o %s/%s/%s.outlog \n' % (self.executionpath,dirname,modelname))
    112                 fid.write('#PBS -e %s/%s/%s.errlog \n\n' % (self.executionpath,dirname,modelname))
    113                 fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
    114                 fid.write('module load intelcomp/17.0.0\n')
    115                 fid.write('module load mpt/2.14\n')
    116                 fid.write('module load petsc/3.7.4d\n')
    117                 fid.write('module load parmetis/4.0.3\n')
    118                 fid.write('module load mumps/5.0.2\n')
    119                 fid.write('cd %s/%s/\n\n' % (self.executionpath,dirname))
    120                 fid.write('mpiexec_mpt -np %i %s/%s %s %s/%s %s\n' % (self.np,self.codepath,executable,str(solution),self.executionpath,dirname,modelname))
    121                 fid.close()
    122                 # }}}
     95    #write queuing script
     96        shortname = modelname[0:min(12, len(modelname))]
     97        fid = open(modelname + '.queue', 'w')
     98        fid.write('#PBS -S / bin / bash\n')
     99        fid.write('#PBS -N %s \n' % shortname)
     100        fid.write('#PBS -q %s \n' % self.queue)
     101        fid.write('#PBS -l select=%i:ncpus=%i:mpiprocs=%s\n' % (self.numnodes, self.cpuspernode, self.procspernodes))
     102        timeobj = datetime.timedelta(minutes=self.time)
     103        m, s = divmod(timeobj.total_seconds(), 60)
     104        h, m = divmod(m, 60)
     105        timestring = "%02d:%02d:%02d" % (h, m, s)
     106        fid.write('#PBS -l walltime=%s\n' % timestring)  #walltime is hh:mm:ss
     107        fid.write('#PBS -A %s\n' % self.accountname)
     108        fid.write('#PBS -o %s/%s/%s.outlog \n' % (self.executionpath, dirname, modelname))
     109        fid.write('#PBS -e %s/%s/%s.errlog \n\n' % (self.executionpath, dirname, modelname))
     110        fid.write('export ISSM_DIR = "%s/../ "\n' % self.codepath)
     111        fid.write('module load intelcomp/17.0.0\n')
     112        fid.write('module load mpt/2.14\n')
     113        fid.write('module load petsc/3.7.4d\n')
     114        fid.write('module load parmetis/4.0.3\n')
     115        fid.write('module load mumps/5.0.2\n')
     116        fid.write('cd %s/%s/\n\n' % (self.executionpath, dirname))
     117        fid.write('mpiexec_mpt -np %i %s/%s %s %s/%s %s\n' % (self.np, self.codepath, executable, str(solution), self.executionpath, dirname, modelname))
     118        fid.close()
     119    # }}}
    123120
    124         def UploadQueueJob(self,modelname,dirname,filelist):
    125                 # {{{
    126                 #compress the files into one zip.
    127                 compressstring='tar -zcf %s.tar.gz ' % dirname
    128                 for file in filelist:
    129                         compressstring += ' %s' % file
    130                 subprocess.call(compressstring,shell=True)
     121    def UploadQueueJob(self, modelname, dirname, filelist):    # {{{
     122        #compress the files into one zip.
     123        compressstring = 'tar -zcf %s.tar.gz ' % dirname
     124        for file in filelist:
     125            compressstring += ' %s' % file
     126        subprocess.call(compressstring, shell=True)
    131127
    132                 print('uploading input file and queueing script')
    133                 issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
    134                 # }}}
     128        print('uploading input file and queueing script')
     129        issmscpout(self.name, self.executionpath, self.login, self.port, [dirname + '.tar.gz'])
     130    # }}}
    135131
    136         def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):
    137                 # {{{
    138                 print('launching solution sequence on remote cluster')
    139                 if restart:
    140                         launchcommand='cd %s && cd %s && qsub %s.queue' % (self.executionpath,dirname,modelname)
    141                 else:
    142                         launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname)
    143                 issmssh(self.name,self.login,self.port,launchcommand)
    144                 # }}}
     132    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):    # {{{
     133        print('launching solution sequence on remote cluster')
     134        if restart:
     135            launchcommand = 'cd %s && cd %s && qsub %s.queue' % (self.executionpath, dirname, modelname)
     136        else:
     137            launchcommand = 'cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname)
     138        issmssh(self.name, self.login, self.port, launchcommand)
     139    # }}}
    145140
    146         def Download(self,dirname,filelist):
    147                 # {{{
    148                 #copy files from cluster to current directory
    149                 directory='%s/%s/' % (self.executionpath,dirname)
    150                 issmscpin(self.name,self.login,self.port,directory,filelist)
    151                 # }}}
     141    def Download(self, dirname, filelist):    # {{{
     142        #copy files from cluster to current directory
     143        directory = '%s/%s/' % (self.executionpath, dirname)
     144        issmscpin(self.name, self.login, self.port, directory, filelist)
     145    # }}}
  • issm/trunk-jpl/src/m/classes/constants.py

    r23783 r24213  
    33from WriteData import WriteData
    44
     5
    56class constants(object):
    6         """
    7         CONSTANTS class definition
     7    """
     8    CONSTANTS class definition
    89
    9            Usage:
    10               constants=constants();
    11         """
     10       Usage:
     11          constants = constants()
     12    """
    1213
    13         def __init__(self): # {{{
    14                 self.g                    = 0.
    15                 self.omega                = 0.
    16                 self.yts                  = 0.
    17                 self.referencetemperature = 0.
    18                
    19                 #set defaults
    20                 self.setdefaultparameters()
     14    def __init__(self):  # {{{
     15        self.g = 0.
     16        self.omega = 0.
     17        self.yts = 0.
     18        self.referencetemperature = 0.
    2119
    22                 #}}}
    23         def __repr__(self): # {{{
    24                 string="   constants parameters:"
     20    #set defaults
     21        self.setdefaultparameters()
    2522
    26                 string="%s\n%s"%(string,fielddisplay(self,"g","gravitational acceleration [m/s^2]"))
    27                 string="%s\n%s"%(string,fielddisplay(self,"omega","angular velocity of Earth [rad/s]"))
    28                 string="%s\n%s"%(string,fielddisplay(self,"yts","number of seconds in a year [s/yr]"))
    29                 string="%s\n%s"%(string,fielddisplay(self,"referencetemperature","reference temperature used in the enthalpy model [K]"))
     23    #}}}
     24    def __repr__(self):  # {{{
     25        string = "   constants parameters:"
    3026
    31                 return string
    32                 #}}}
    33         def setdefaultparameters(self): # {{{
    34                
    35                 #acceleration due to gravity (m/s^2)
    36                 self.g=9.81
     27        string = "%s\n%s" % (string, fielddisplay(self, "g", "gravitational acceleration [m / s^2]"))
     28        string = "%s\n%s" % (string, fielddisplay(self, "omega", "angular velocity of Earth [rad / s]"))
     29        string = "%s\n%s" % (string, fielddisplay(self, "yts", "number of seconds in a year [s / yr]"))
     30        string = "%s\n%s" % (string, fielddisplay(self, "referencetemperature", "reference temperature used in the enthalpy model [K]"))
    3731
    38                 #Earth's rotation speed
    39                 self.omega = 7.292*1e-5;
     32        return string
     33    #}}}
    4034
    41                 #converstion from year to seconds
    42                 self.yts=365.*24.*3600.
     35    def setdefaultparameters(self):  # {{{
     36        #acceleration due to gravity (m / s^2)
     37        self.g = 9.81
    4338
    44                 #the reference temperature for enthalpy model (cf Aschwanden)
    45                 self.referencetemperature=223.15
     39        #Earth's rotation speed
     40        self.omega = 7.292 * 1e-5
    4641
    47                 return self
    48         #}}}
    49         def checkconsistency(self,md,solution,analyses):    # {{{
     42        #converstion from year to seconds
     43        self.yts = 365. * 24. * 3600.
    5044
    51                 md = checkfield(md,'fieldname','constants.g','>=',0,'size',[1])
    52                 md = checkfield(md,'fieldname','constants.omega','>=',0,'size',[1])
    53                 md = checkfield(md,'fieldname','constants.yts','>',0,'size',[1])
    54                 md = checkfield(md,'fieldname','constants.referencetemperature','size',[1])
     45        #the reference temperature for enthalpy model (cf Aschwanden)
     46        self.referencetemperature = 223.15
    5547
    56                 return md
    57         # }}}
    58         def marshall(self,prefix,md,fid):    # {{{
    59                 WriteData(fid,prefix,'object',self,'fieldname','g','format','Double')
    60                 WriteData(fid,prefix,'object',self,'fieldname','yts','format','Double')
    61                 WriteData(fid,prefix,'object',self,'fieldname','referencetemperature','format','Double')
    62         # }}}
     48        return self
     49    #}}}
     50
     51    def checkconsistency(self, md, solution, analyses):  # {{{
     52        md = checkfield(md, 'fieldname', 'constants.g', '>=', 0, 'size', [1])
     53        md = checkfield(md, 'fieldname', 'constants.omega', '>=', 0, 'size', [1])
     54        md = checkfield(md, 'fieldname', 'constants.yts', '>', 0, 'size', [1])
     55        md = checkfield(md, 'fieldname', 'constants.referencetemperature', 'size', [1])
     56
     57        return md
     58    # }}}
     59
     60    def marshall(self, prefix, md, fid):  # {{{
     61        WriteData(fid, prefix, 'object', self, 'fieldname', 'g', 'format', 'Double')
     62        WriteData(fid, prefix, 'object', self, 'fieldname', 'yts', 'format', 'Double')
     63        WriteData(fid, prefix, 'object', self, 'fieldname', 'referencetemperature', 'format', 'Double')
     64    # }}}
  • issm/trunk-jpl/src/m/classes/damage.py

    r24146 r24213  
    44from WriteData import WriteData
    55
     6
    67class damage(object):
    7         """
    8         DAMAGE class definition
     8    """
     9    DAMAGE class definition
    910
    10            Usage:
    11               damage=damage()
    12         """
     11       Usage:
     12          damage = damage()
     13    """
    1314
    14         def __init__(self,*args):    # {{{
    15                 #damage:
    16                 self.isdamage  = 0.
    17                 self.D                                  = float('NaN')
    18                 self.law                                = float('NaN')
    19                 self.spcdamage  = float('NaN')
    20                 self.max_damage = float('NaN')
     15    def __init__(self, *args):  # {{{
     16        #damage:
     17        self.isdamage = 0.
     18        self.D = float('NaN')
     19        self.law = float('NaN')
     20        self.spcdamage = float('NaN')
     21        self.max_damage = float('NaN')
    2122
    22                 #numerical
    23                 self.stabilization = float('NaN')
    24                 self.maxiter                    = float('NaN')
    25                 self.elementinterp = ''
     23        #numerical
     24        self.stabilization = float('NaN')
     25        self.maxiter = float('NaN')
     26        self.elementinterp = ''
    2627
    27                 #general parameters for evolution law:
    28                 self.stress_threshold = float('NaN')
    29                 self.stress_ubound    = float('NaN')
    30                 self.kappa            = float('NaN')
    31                 self.c1                = float('NaN')
    32                 self.c2                = float('NaN')
    33                 self.c3                = float('NaN')
    34                 self.c4                = float('NaN')
    35                 self.healing                                    = float('NaN')
    36                 self.equiv_stress      = float('NaN')
    37                 self.requested_outputs = []
     28        #general parameters for evolution law:
     29        self.stress_threshold = float('NaN')
     30        self.stress_ubound = float('NaN')
     31        self.kappa = float('NaN')
     32        self.c1 = float('NaN')
     33        self.c2 = float('NaN')
     34        self.c3 = float('NaN')
     35        self.c4 = float('NaN')
     36        self.healing = float('NaN')
     37        self.equiv_stress = float('NaN')
     38        self.requested_outputs = []
    3839
    39                 if not len(args):
    40                         self.setdefaultparameters()
    41                 else:
    42                         raise RuntimeError("constructor not supported")
    43         # }}}
     40        if not len(args):
     41            self.setdefaultparameters()
     42        else:
     43            raise RuntimeError("constructor not supported")
     44    # }}}
    4445
    45         def __repr__(self):    # {{{
    46                 s ='   Damage:\n'
    47                 s+="%s\n" % fielddisplay(self,"isdamage","is damage mechanics being used? [0 (default) or 1]")
    48                 if self.isdamage:
    49                         s+="%s\n" % fielddisplay(self,"D","damage tensor (scalar for now)")
    50                         s+="%s\n" % fielddisplay(self,"law","damage law ['0: analytical','1: pralong']")
    51                         s+="%s\n" % fielddisplay(self,"spcdamage","damage constraints (NaN means no constraint)")
    52                         s+="%s\n" % fielddisplay(self,"max_damage","maximum possible damage (0<=max_damage<1)")
    53                         s+="%s\n" % fielddisplay(self,"stabilization","0: no, 1: artificial_diffusivity, 2: SUPG (not working), 4: Flux corrected transport")
    54                         s+="%s\n" % fielddisplay(self,"maxiter","maximum number of non linear iterations")
    55                         s+="%s\n" %     fielddisplay(self,"elementinterp","interpolation scheme for finite elements [''P1'',''P2'']")
    56                         s+="%s\n" % fielddisplay(self,"stress_threshold","stress threshold for damage initiation (Pa)")
    57                         s+="%s\n" % fielddisplay(self,"stress_ubound","stress upper bound for damage healing (Pa)")
    58                         s+="%s\n" % fielddisplay(self,"kappa","ductility parameter for stress softening and damage [>1]")
    59                         s+="%s\n" % fielddisplay(self,"c1","damage parameter 1 ")
    60                         s+="%s\n" % fielddisplay(self,"c2","damage parameter 2 ")
    61                         s+="%s\n" % fielddisplay(self,"c3","damage parameter 3 ")
    62                         s+="%s\n" % fielddisplay(self,"c4","damage parameter 4 ")
    63                         s+="%s\n" % fielddisplay(self,"healing","damage healing parameter")
    64                         s+="%s\n" % fielddisplay(self,"equiv_stress","0: von Mises, 1: max principal")
    65                         s+="%s\n" % fielddisplay(self,'requested_outputs','additional outputs requested')
     46    def __repr__(self):  # {{{
     47        s = '   Damage:\n'
     48        s += "%s\n" % fielddisplay(self, "isdamage", "is damage mechanics being used? [0 (default) or 1]")
     49        if self.isdamage:
     50            s += "%s\n" % fielddisplay(self, "D", "damage tensor (scalar for now)")
     51            s += "%s\n" % fielddisplay(self, "law", "damage law ['0: analytical', '1: pralong']")
     52            s += "%s\n" % fielddisplay(self, "spcdamage", "damage constraints (NaN means no constraint)")
     53            s += "%s\n" % fielddisplay(self, "max_damage", "maximum possible damage (0 <=max_damage < 1)")
     54            s += "%s\n" % fielddisplay(self, "stabilization", "0: no, 1: artificial_diffusivity, 2: SUPG (not working), 4: Flux corrected transport")
     55            s += "%s\n" % fielddisplay(self, "maxiter", "maximum number of non linear iterations")
     56            s += "%s\n" % fielddisplay(self, "elementinterp", "interpolation scheme for finite elements [''P1'', ''P2'']")
     57            s += "%s\n" % fielddisplay(self, "stress_threshold", "stress threshold for damage initiation (Pa)")
     58            s += "%s\n" % fielddisplay(self, "stress_ubound", "stress upper bound for damage healing (Pa)")
     59            s += "%s\n" % fielddisplay(self, "kappa", "ductility parameter for stress softening and damage [ > 1]")
     60            s += "%s\n" % fielddisplay(self, "c1", "damage parameter 1 ")
     61            s += "%s\n" % fielddisplay(self, "c2", "damage parameter 2 ")
     62            s += "%s\n" % fielddisplay(self, "c3", "damage parameter 3 ")
     63            s += "%s\n" % fielddisplay(self, "c4", "damage parameter 4 ")
     64            s += "%s\n" % fielddisplay(self, "healing", "damage healing parameter")
     65            s += "%s\n" % fielddisplay(self, "equiv_stress", "0: von Mises, 1: max principal")
     66            s += "%s\n" % fielddisplay(self, 'requested_outputs', 'additional outputs requested')
    6667
    67                 return s
    68         # }}}
     68        return s
     69    # }}}
    6970
    70         def extrude(self,md): # {{{
    71                 self.D=project3d(md,'vector',self.D,'type','node')
    72                 self.spcdamage=project3d(md,'vector',self.spcdamage,'type','node')
    73                 return self
    74         #}}}
     71    def extrude(self, md): # {{{
     72        self.D = project3d(md, 'vector', self.D, 'type', 'node')
     73        self.spcdamage = project3d(md, 'vector', self.spcdamage, 'type', 'node')
     74        return self
     75    #}}}
    7576
    76         def setdefaultparameters(self):    # {{{
    77                 #damage parameters:
    78                 self.isdamage           =       0
    79                 self.D                                  =       0
    80                 self.law                                =       0
    81                 self.max_damage =       1-1e-5 #if damage reaches 1, solve becomes singular, as viscosity becomes nil
     77    def setdefaultparameters(self):  # {{{
     78        #damage parameters:
     79        self.isdamage = 0
     80        self.D = 0
     81        self.law = 0
     82        self.max_damage = 1 - 1e-5  #if damage reaches 1, solve becomes singular, as viscosity becomes nil
     83        #Type of stabilization used
     84        self.stabilization = 4
     85        #Maximum number of iterations
     86        self.maxiter = 100
     87        #finite element interpolation
     88        self.elementinterp = 'P1'
     89        #damage evolution parameters
     90        self.stress_threshold = 1.3e5
     91        self.kappa = 2.8
     92        self.c1 = 0
     93        self.c2 = 0
     94        self.c3 = 0
     95        self.c4 = 0
     96        self.healing = 0
     97        self.equiv_stress = 0
     98        #output default:
     99        self.requested_outputs = ['default']
    82100
    83                 #Type of stabilization used
    84                 self.stabilization=4
     101        return self
     102    # }}}
    85103
    86                 #Maximum number of iterations
    87                 self.maxiter=100
     104    def defaultoutputs(self, md):  # {{{
     105        if md.mesh.domaintype().lower() == '2dhorizontal':
     106            list = ['DamageDbar']
     107        else:
     108            list = ['DamageD']
     109        return list
     110    #}}}
    88111
    89                 #finite element interpolation
    90                 self.elementinterp='P1'
     112    def checkconsistency(self, md, solution, analyses):  # {{{
     113        md = checkfield(md, 'fieldname', 'damage.isdamage', 'numel', [1], 'values', [0, 1])
     114        if self.isdamage:
     115            md = checkfield(md, 'fieldname', 'damage.D', '>=', 0, '<=', self.max_damage, 'size', [md.mesh.numberofvertices])
     116            md = checkfield(md, 'fieldname', 'damage.max_damage', '<', 1, '>=', 0)
     117            md = checkfield(md, 'fieldname', 'damage.law', 'numel', [1], 'values', [0, 1, 2, 3])
     118            md = checkfield(md, 'fieldname', 'damage.spcdamage', 'Inf', 1, 'timeseries', 1)
     119            md = checkfield(md, 'fieldname', 'damage.stabilization', 'numel', [1], 'values', [0, 1, 2, 4])
     120            md = checkfield(md, 'fieldname', 'damage.maxiter', ' >= 0', 0)
     121            md = checkfield(md, 'fieldname', 'damage.elementinterp', 'values', ['P1', 'P2'])
     122            md = checkfield(md, 'fieldname', 'damage.stress_threshold', '>=', 0)
     123            md = checkfield(md, 'fieldname', 'damage.stress_ubound', '>=', 0)
     124            md = checkfield(md, 'fieldname', 'damage.kappa', '>', 1)
     125            md = checkfield(md, 'fieldname', 'damage.healing', '>=', 0)
     126            md = checkfield(md, 'fieldname', 'damage.c1', '>=', 0)
     127            md = checkfield(md, 'fieldname', 'damage.c2', '>=', 0)
     128            md = checkfield(md, 'fieldname', 'damage.c3', '>=', 0)
     129            md = checkfield(md, 'fieldname', 'damage.c4', '>=', 0)
     130            md = checkfield(md, 'fieldname', 'damage.healing', '>=', 0)
     131            md = checkfield(md, 'fieldname', 'damage.equiv_stress', 'numel', [1], 'values', [0, 1])
     132            md = checkfield(md, 'fieldname', 'damage.requested_outputs', 'stringrow', 1)
     133        elif self.law != 0:
     134            if (solution == 'DamageEvolutionSolution'):
     135                raise RuntimeError('Invalid evolution law (md.damage.law) for a damage solution')
    91136
    92                 #damage evolution parameters
    93                 self.stress_threshold=1.3e5
    94                 self.kappa=2.8
    95                 self.c1=0
    96                 self.c2=0
    97                 self.c3=0
    98                 self.c4=0
    99                 self.healing=0
    100                 self.equiv_stress=0
     137        return md
     138    # }}}
    101139
    102                 #output default:
    103                 self.requested_outputs=['default']
     140    def marshall(self, prefix, md, fid):  # {{{
     141        WriteData(fid, prefix, 'object', self, 'fieldname', 'isdamage', 'format', 'Boolean')
     142        if self.isdamage:
     143            WriteData(fid, prefix, 'object', self, 'fieldname', 'D', 'format', 'DoubleMat', 'mattype', 1)
     144            WriteData(fid, prefix, 'object', self, 'fieldname', 'law', 'format', 'Integer')
     145            WriteData(fid, prefix, 'object', self, 'fieldname', 'spcdamage', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     146            WriteData(fid, prefix, 'object', self, 'fieldname', 'max_damage', 'format', 'Double')
     147            WriteData(fid, prefix, 'object', self, 'fieldname', 'stabilization', 'format', 'Integer')
     148            WriteData(fid, prefix, 'object', self, 'fieldname', 'maxiter', 'format', 'Integer')
     149            WriteData(fid, prefix, 'name', 'md.damage.elementinterp', 'data', self.elementinterp, 'format', 'String')
     150            WriteData(fid, prefix, 'object', self, 'fieldname', 'stress_threshold', 'format', 'Double')
     151            WriteData(fid, prefix, 'object', self, 'fieldname', 'stress_ubound', 'format', 'Double')
     152            WriteData(fid, prefix, 'object', self, 'fieldname', 'kappa', 'format', 'Double')
     153            WriteData(fid, prefix, 'object', self, 'fieldname', 'c1', 'format', 'Double')
     154            WriteData(fid, prefix, 'object', self, 'fieldname', 'c2', 'format', 'Double')
     155            WriteData(fid, prefix, 'object', self, 'fieldname', 'c3', 'format', 'Double')
     156            WriteData(fid, prefix, 'object', self, 'fieldname', 'c4', 'format', 'Double')
     157            WriteData(fid, prefix, 'object', self, 'fieldname', 'healing', 'format', 'Double')
     158            WriteData(fid, prefix, 'object', self, 'fieldname', 'equiv_stress', 'format', 'Integer')
    104159
    105                 return self
    106         # }}}
    107 
    108         def defaultoutputs(self,md): # {{{
    109                 if md.mesh.domaintype().lower()=='2dhorizontal':
    110                         list = ['DamageDbar']
    111                 else:
    112                         list = ['DamageD']
    113                 return list
    114         #}}}
    115 
    116         def checkconsistency(self,md,solution,analyses):    # {{{
    117                 md = checkfield(md,'fieldname','damage.isdamage','numel',[1],'values',[0,1])
    118                 if self.isdamage:
    119                         md = checkfield(md,'fieldname','damage.D','>=',0,'<=',self.max_damage,'size',[md.mesh.numberofvertices])
    120                         md = checkfield(md,'fieldname','damage.max_damage','<',1,'>=',0)
    121                         md = checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2,3])
    122                         md = checkfield(md,'fieldname','damage.spcdamage','Inf',1,'timeseries',1)
    123                         md = checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0,1,2,4])
    124                         md = checkfield(md,'fieldname','damage.maxiter','>=0',0)
    125                         md = checkfield(md,'fieldname','damage.elementinterp','values',['P1','P2'])
    126                         md = checkfield(md,'fieldname','damage.stress_threshold','>=',0)
    127                         md = checkfield(md,'fieldname','damage.stress_ubound','>=',0)
    128                         md = checkfield(md,'fieldname','damage.kappa','>',1)
    129                         md = checkfield(md,'fieldname','damage.healing','>=',0)
    130                         md = checkfield(md,'fieldname','damage.c1','>=',0)
    131                         md = checkfield(md,'fieldname','damage.c2','>=',0)
    132                         md = checkfield(md,'fieldname','damage.c3','>=',0)
    133                         md = checkfield(md,'fieldname','damage.c4','>=',0)
    134                         md = checkfield(md,'fieldname','damage.healing','>=',0)
    135                         md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0,1])
    136                         md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1)
    137                 elif self.law != 0:
    138                         if (solution=='DamageEvolutionSolution'):
    139                                 raise RuntimeError('Invalid evolution law (md.damage.law) for a damage solution')
    140 
    141                 return md
    142         # }}}
    143 
    144         def marshall(self,prefix,md,fid):    # {{{
    145                 WriteData(fid,prefix,'object',self,'fieldname','isdamage','format','Boolean')
    146                 if self.isdamage:
    147                         WriteData(fid,prefix,'object',self,'fieldname','D','format','DoubleMat','mattype',1)
    148                         WriteData(fid,prefix,'object',self,'fieldname','law','format','Integer')
    149                         WriteData(fid,prefix,'object',self,'fieldname','spcdamage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    150                         WriteData(fid,prefix,'object',self,'fieldname','max_damage','format','Double')
    151                         WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer')
    152                         WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer')
    153                         WriteData(fid,prefix,'name','md.damage.elementinterp','data',self.elementinterp,'format','String')
    154                         WriteData(fid,prefix,'object',self,'fieldname','stress_threshold','format','Double')
    155                         WriteData(fid,prefix,'object',self,'fieldname','stress_ubound','format','Double')
    156                         WriteData(fid,prefix,'object',self,'fieldname','kappa','format','Double')
    157                         WriteData(fid,prefix,'object',self,'fieldname','c1','format','Double')
    158                         WriteData(fid,prefix,'object',self,'fieldname','c2','format','Double')
    159                         WriteData(fid,prefix,'object',self,'fieldname','c3','format','Double')
    160                         WriteData(fid,prefix,'object',self,'fieldname','c4','format','Double')
    161                         WriteData(fid,prefix,'object',self,'fieldname','healing','format','Double')
    162                         WriteData(fid,prefix,'object',self,'fieldname','equiv_stress','format','Integer')
    163 
    164                 #process requested outputs
    165                 outputs = self.requested_outputs
    166                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    167                 if len(indices) > 0:
    168                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    169                         outputs    =outputscopy
    170                 if self.isdamage:
    171                         WriteData(fid,prefix,'data',outputs,'name','md.damage.requested_outputs','format','StringArray')
    172         # }}}
     160    #process requested outputs
     161        outputs = self.requested_outputs
     162        indices = [i for i, x in enumerate(outputs) if x == 'default']
     163        if len(indices) > 0:
     164            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     165            outputs = outputscopy
     166        if self.isdamage:
     167            WriteData(fid, prefix, 'data', outputs, 'name', 'md.damage.requested_outputs', 'format', 'StringArray')
     168    # }}}
  • issm/trunk-jpl/src/m/classes/debug.py

    r20690 r24213  
    22from WriteData import *
    33
     4
    45class debug(object):
    5         """
    6         DEBUG class definition
     6    """
     7    DEBUG class definition
    78
    8            Usage:
    9               debug=debug();
    10         """
     9       Usage:
     10          debug = debug()
     11    """
    1112
    12         def __init__(self): # {{{
    13                 self.valgrind  = False
    14                 self.gprof     = False
    15                 self.profiling = False
    16                
    17                 #set defaults
    18                 self.setdefaultparameters()
     13    def __init__(self):  # {{{
     14        self.valgrind = False
     15        self.gprof = False
     16        self.profiling = False
    1917
    20                 #}}}
    21         def __repr__(self): # {{{
    22                 string="   debug parameters:"
     18    #set defaults
     19        self.setdefaultparameters()
    2320
    24                 string="%s\n%s"%(string,fielddisplay(self,"valgrind","use Valgrind to debug (0 or 1)"))
    25                 string="%s\n%s"%(string,fielddisplay(self,"gprof","use gnu-profiler to find out where the time is spent"))
    26                 string="%s\n%s"%(string,fielddisplay(self,'profiling','enables profiling (memory, flops, time)'))
    27                 return string
    28                 #}}}
    29         def setdefaultparameters(self): # {{{
    30                 return self
    31         #}}}
    32         def marshall(self,prefix,md,fid):    # {{{
    33                 WriteData(fid,prefix,'object',self,'fieldname','profiling','format','Boolean')
    34         # }}}
     21    #}}}
     22    def __repr__(self):  # {{{
     23        string = "   debug parameters:"
     24
     25        string = "%s\n%s" % (string, fielddisplay(self, "valgrind", "use Valgrind to debug (0 or 1)"))
     26        string = "%s\n%s" % (string, fielddisplay(self, "gprof", "use gnu - profiler to find out where the time is spent"))
     27        string = "%s\n%s" % (string, fielddisplay(self, 'profiling', 'enables profiling (memory, flops, time)'))
     28        return string
     29    #}}}
     30
     31    def setdefaultparameters(self):  # {{{
     32        return self
     33    #}}}
     34
     35    def marshall(self, prefix, md, fid):  # {{{
     36        WriteData(fid, prefix, 'object', self, 'fieldname', 'profiling', 'format', 'Boolean')
     37    # }}}
  • issm/trunk-jpl/src/m/classes/dependent.py

    r21303 r24213  
    66from MeshProfileIntersection import MeshProfileIntersection
    77
     8
    89class dependent(object):
    9         """
    10         DEPENDENT class definition
     10    """
     11    DEPENDENT class definition
    1112
    12            Usage:
    13               dependent=dependent();
    14         """
     13       Usage:
     14          dependent = dependent()
     15    """
    1516
    16         def __init__(self,*args):    # {{{
    17                 self.name                = ''
    18                 self.type                = ''
    19                 self.fos_reverse_index    = float('NaN')
    20                 self.exp                  = ''
    21                 self.segments            = []
    22                 self.index                = -1
    23                 self.nods                = 0
     17    def __init__(self, *args):  # {{{
     18        self.name = ''
     19        self.type = ''
     20        self.fos_reverse_index = float('NaN')
     21        self.exp = ''
     22        self.segments = []
     23        self.index = - 1
     24        self.nods = 0
    2425
    25                 #set defaults
    26                 self.setdefaultparameters()
     26    #set defaults
     27        self.setdefaultparameters()
    2728
    28                 #use provided options to change fields
    29                 options=pairoptions(*args)
     29    #use provided options to change fields
     30        options = pairoptions(*args)
    3031
    31                 self.name=options.getfieldvalue('name','')
    32                 self.type=options.getfieldvalue('type','')
    33                 self.exp=options.getfieldvalue('exp','')
    34                 self.segments=options.getfieldvalue('segments',[])
    35                 self.index=options.getfieldvalue('index',-1)
    36                 self.nods=options.getfieldvalue('nods',0)
     32        self.name = options.getfieldvalue('name', '')
     33        self.type = options.getfieldvalue('type', '')
     34        self.exp = options.getfieldvalue('exp', '')
     35        self.segments = options.getfieldvalue('segments', [])
     36        self.index = options.getfieldvalue('index', - 1)
     37        self.nods = options.getfieldvalue('nods', 0)
    3738
    38                 #if name is mass flux:
    39                 if strcmpi(self.name,'MassFlux'):
    40                         #make sure that we supplied a file and that it exists!
    41                         if not os.path.exists(self.exp):
    42                                 raise IOError("dependent checkconsistency: specified 'exp' file does not exist!")
    43                         #process the file and retrieve segments
    44                         mesh=options.getfieldvalue('mesh')
    45                         self.segments=MeshProfileIntersection(mesh.elements,mesh.x,mesh.y,self.exp)[0]
    46         # }}}
    47         def __repr__(self):    # {{{
    48                 s ="   dependent variable:\n"
     39        #if name is mass flux:
     40        if strcmpi(self.name, 'MassFlux'):
     41            #make sure that we supplied a file and that it exists!
     42            if not os.path.exists(self.exp):
     43                raise IOError("dependent checkconsistency: specified 'exp' file does not exist!")
     44            #process the file and retrieve segments
     45            mesh = options.getfieldvalue('mesh')
     46            self.segments = MeshProfileIntersection(mesh.elements, mesh.x, mesh.y, self.exp)[0]
     47    # }}}
    4948
    50                 s+="%s\n" % fielddisplay(self,'name',"variable name (must match corresponding String)")
    51                 s+="%s\n" % fielddisplay(self,'type',"type of variable ('vertex' or 'scalar')")
     49    def __repr__(self):  # {{{
     50        s = "   dependent variable:\n"
    5251
    53                 if not np.isnan(self.fos_reverse_index):
    54                         s+="%s\n" % fielddisplay(self,'fos_reverse_index',"index for fos_reverse driver of ADOLC")
    55                 if self.exp:
    56                         s+="%s\n" % fielddisplay(self,'exp',"file needed to compute dependent variable")
    57                         s+="%s\n" % fielddisplay(self,'segments',"mass flux segments")
     52        s += "%s\n" % fielddisplay(self, 'name', "variable name (must match corresponding String)")
     53        s += "%s\n" % fielddisplay(self, 'type', "type of variable ('vertex' or 'scalar')")
    5854
    59                 return s
    60         # }}}
    61         def setdefaultparameters(self):    # {{{
    62                 #do nothing
    63                 return self
    64         # }}}
    65         def checkconsistency(self,md,solution,analyses):    # {{{
    66                 if strcmpi(self.name,'MassFlux'):
    67                         if not self.segments:
    68                                 raise RuntimeError("dependent checkconsistency error: need segments to compute this dependent response")
    69                         if self.index<0:
    70                                 raise RuntimeError("dependent checkconsistency error: index for segments should be >=0")
     55        if not np.isnan(self.fos_reverse_index):
     56            s += "%s\n" % fielddisplay(self, 'fos_reverse_index', "index for fos_reverse driver of ADOLC")
     57        if self.exp:
     58            s += "%s\n" % fielddisplay(self, 'exp', "file needed to compute dependent variable")
     59            s += "%s\n" % fielddisplay(self, 'segments', "mass flux segments")
    7160
    72                 if not np.isnan(self.fos_reverse_index):
    73                         if not strcmpi(driver,'fos_reverse'):
    74                                 raise TypeError("cannot declare a dependent with a fos_reverse_index when the driver is not fos_reverse!")
    75                         if self.nods==0:
    76                                 raise TypeError("dependent checkconsistency error: nods should be set to the size of the independent variable")
     61        return s
     62    # }}}
    7763
    78                 return md
    79         # }}}
    80         def typetoscalar(self):    # {{{
    81                 if   strcmpi(self.type,'scalar'):
    82                         scalar=0
    83                 elif strcmpi(self.type,'vertex'):
    84                         scalar=1
     64    def setdefaultparameters(self):  # {{{
     65        #do nothing
     66        return self
     67    # }}}
    8568
    86                 return scalar
    87         # }}}
     69    def checkconsistency(self, md, solution, analyses):  # {{{
     70        if strcmpi(self.name, 'MassFlux'):
     71            if not self.segments:
     72                raise RuntimeError("dependent checkconsistency error: need segments to compute this dependent response")
     73            if self.index < 0:
     74                raise RuntimeError("dependent checkconsistency error: index for segments should be >= 0")
     75
     76        if not np.isnan(self.fos_reverse_index):
     77            if not strcmpi(driver, 'fos_reverse'):
     78                raise TypeError("cannot declare a dependent with a fos_reverse_index when the driver is not fos_reverse!")
     79            if self.nods == 0:
     80                raise TypeError("dependent checkconsistency error: nods should be set to the size of the independent variable")
     81
     82        return md
     83    # }}}
     84
     85    def typetoscalar(self):  # {{{
     86        if strcmpi(self.type, 'scalar'):
     87            scalar = 0
     88        elif strcmpi(self.type, 'vertex'):
     89            scalar = 1
     90
     91        return scalar
     92    # }}}
  • issm/trunk-jpl/src/m/classes/esa.py

    r23716 r24213  
    22from MatlabFuncs import *
    33from model import *
    4 import numpy as np
    54from checkfield import checkfield
    65from WriteData import WriteData
    76
     7
    88class esa(object):
    9         """
    10         ESA class definition
     9    """
     10    ESA class definition
    1111
    12                 Usage:
    13                   esa=esa();
    14         """
     12        Usage:
     13          esa = esa();
     14    """
    1515
    16         def __init__(self): # {{{
    17                 self.deltathickness    = float('NaN')
    18                 self.love_h            = 0 #provided by PREM model()
    19                 self.love_l            = 0 #ideam
    20                 self.hemisphere        = 0
    21                 self.degacc            = 0
    22                 self.requested_outputs = []
    23                 self.transitions      = []
     16    def __init__(self): # {{{
     17        self.deltathickness = float('NaN')
     18        self.love_h = 0 #provided by PREM model()
     19        self.love_l = 0 #ideam
     20        self.hemisphere = 0
     21        self.degacc = 0
     22        self.requested_outputs = []
     23        self.transitions = []
    2424
    25                 #set defaults
    26                 self.setdefaultparameters()
    27                 #}}}
     25    #set defaults
     26        self.setdefaultparameters()
     27    #}}}
    2828
    29         def __repr__(self): # {{{
    30                         string='   esa parameters:'
    31                         string="%s\n%s"%(string,fielddisplay(self,'deltathickness','thickness change: ice height equivalent [m]'))
    32                         string="%s\n%s"%(string,fielddisplay(self,'love_h','load Love number for radial displacement'))
    33                         string="%s\n%s"%(string,fielddisplay(self,'love_l','load Love number for horizontal displaements'))
    34                         string="%s\n%s"%(string,fielddisplay(self,'hemisphere','North-south, East-west components of 2-D horiz displacement vector: -1 south, 1 north'))
    35                         string="%s\n%s"%(string,fielddisplay(self,'degacc','accuracy (default .01 deg) for numerical discretization of the Green''s functions'))
    36                         string="%s\n%s"%(string,fielddisplay(self,'transitions','indices into parts of the mesh that will be icecaps'))
    37                         string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested (default: EsaUmotion)'))
     29    def __repr__(self): # {{{
     30        string = '   esa parameters:'
     31        string = "%s\n%s" % (string, fielddisplay(self, 'deltathickness', 'thickness change: ice height equivalent [m]'))
     32        string = "%s\n%s" % (string, fielddisplay(self, 'love_h', 'load Love number for radial displacement'))
     33        string = "%s\n%s" % (string, fielddisplay(self, 'love_l', 'load Love number for horizontal displaements'))
     34        string = "%s\n%s" % (string, fielddisplay(self, 'hemisphere', 'North - south, East - west components of 2 - D horiz displacement vector: - 1 south, 1 north'))
     35        string = "%s\n%s" % (string, fielddisplay(self, 'degacc', 'accuracy (default .01 deg) for numerical discretization of the Green''s functions'))
     36        string = "%s\n%s" % (string, fielddisplay(self, 'transitions', 'indices into parts of the mesh that will be icecaps'))
     37        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested (default: EsaUmotion)'))
    3838
    39                         return string
    40                 # }}}
     39        return string
     40    # }}}
    4141
    42         def setdefaultparameters(self): # {{{
    43                 #numerical discretization accuracy
    44                 self.degacc=.01
     42    def setdefaultparameters(self):  # {{{
     43        #numerical discretization accuracy
     44        self.degacc = 0.01
     45        #computational flags:
     46        self.hemisphere = 0
     47        #output default:
     48        self.requested_outputs = ['default']
     49        #transitions should be a cell array of vectors:
     50        self.transitions = []
     51        #default output
     52        self.requested_outputs = ['default']
     53        return self
     54    #}}}
    4555
    46                 #computational flags:
    47                 self.hemisphere=0;
     56    def checkconsistency(self, md, solution, analyses):  # {{{
     57        #Early return
     58        if (solution != 'EsaAnalysis'):
     59            return md
    4860
    49                 #output default:
    50                 self.requested_outputs=['default']
     61        md = checkfield(md, 'fieldname', 'esa.deltathickness', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements, 1])
     62        md = checkfield(md, 'fieldname', 'esa.love_h', 'NaN', 1, 'Inf', 1)
     63        md = checkfield(md, 'fieldname', 'esa.love_l', 'NaN', 1, 'Inf', 1)
     64        md = checkfield(md, 'fieldname', 'esa.hemisphere', 'NaN', 1, 'Inf', 1)
     65        md = checkfield(md, 'fieldname', 'esa.degacc', 'size', [1, 1], '>=', 1e-10)
     66        md = checkfield(md, 'fieldname', 'esa.requested_outputs', 'stringrow', 1)
    5167
    52                 #transitions should be a cell array of vectors:
    53                 self.transitions=[]
     68    #check that love numbers are provided at the same level of accuracy:
     69        if (size(self.love_h, 0) != size(self.love_l, 0)):
     70            error('esa error message: love numbers should be provided at the same level of accuracy')
     71        return md
     72    # }}}
    5473
    55                 #default output
    56                 self.requested_outputs=['default']
    57                 return self
    58                 #}}}
     74    def defaultoutputs(self, md):  # {{{
     75        return ['EsaUmotion']
     76    # }}}
    5977
    60         def checkconsistency(self,md,solution,analyses):    # {{{
    61                 #Early return
    62                 if (solution!='EsaAnalysis'):
    63                         return md
     78    def marshall(self, prefix, md, fid):  # {{{
     79        WriteData(fid, prefix, 'object', self, 'fieldname', 'deltathickness', 'format', 'DoubleMat', 'mattype', 2)
     80        WriteData(fid, prefix, 'object', self, 'fieldname', 'love_h', 'format', 'DoubleMat', 'mattype', 1)
     81        WriteData(fid, prefix, 'object', self, 'fieldname', 'love_l', 'format', 'DoubleMat', 'mattype', 1)
     82        WriteData(fid, prefix, 'object', self, 'fieldname', 'hemisphere', 'format', 'Integer')
     83        WriteData(fid, prefix, 'object', self, 'fieldname', 'degacc', 'format', 'Double')
     84        WriteData(fid, prefix, 'object', self, 'fieldname', 'transitions', 'format', 'MatArray')
    6485
    65                 md = checkfield(md,'fieldname','esa.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofelements,1])
    66                 md = checkfield(md,'fieldname','esa.love_h','NaN',1,'Inf',1)
    67                 md = checkfield(md,'fieldname','esa.love_l','NaN',1,'Inf',1)
    68                 md = checkfield(md,'fieldname','esa.hemisphere','NaN',1,'Inf',1)
    69                 md = checkfield(md,'fieldname','esa.degacc','size',[1,1],'>=',1e-10)
    70                 md = checkfield(md,'fieldname','esa.requested_outputs','stringrow',1)
    71 
    72                 #check that love numbers are provided at the same level of accuracy:
    73                 if (size(self.love_h,0) != size(self.love_l,0)):
    74                         error('esa error message: love numbers should be provided at the same level of accuracy')
    75                 return md
    76         # }}}
    77 
    78         def defaultoutputs(self,md): # {{{
    79                 return ['EsaUmotion']
    80         # }}}
    81 
    82         def marshall(self,prefix,md,fid): # {{{
    83                 WriteData(fid,prefix,'object',self,'fieldname','deltathickness','format','DoubleMat','mattype',2)
    84                 WriteData(fid,prefix,'object',self,'fieldname','love_h','format','DoubleMat','mattype',1)
    85                 WriteData(fid,prefix,'object',self,'fieldname','love_l','format','DoubleMat','mattype',1)
    86                 WriteData(fid,prefix,'object',self,'fieldname','hemisphere','format','Integer')
    87                 WriteData(fid,prefix,'object',self,'fieldname','degacc','format','Double')
    88                 WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray')
    89 
    90                 #process requested outputs
    91                 outputs = self.requested_outputs
    92                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    93                 if len(indices) > 0:
    94                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    95                         outputs    =outputscopy
    96                 WriteData(fid,prefix,'data',outputs,'name','md.esa.requested_outputs','format','StringArray')
    97         # }}}
     86    #process requested outputs
     87        outputs = self.requested_outputs
     88        indices = [i for i, x in enumerate(outputs) if x == 'default']
     89        if len(indices) > 0:
     90            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     91            outputs = outputscopy
     92        WriteData(fid, prefix, 'data', outputs, 'name', 'md.esa.requested_outputs', 'format', 'StringArray')
     93    # }}}
  • issm/trunk-jpl/src/m/classes/flowequation.py

    r23716 r24213  
    11import numpy as np
    2 import copy
    32from project3d import project3d
    43from fielddisplay import fielddisplay
     
    76import MatlabFuncs as m
    87
     8
    99class flowequation(object):
    10         """
    11         FLOWEQUATION class definition
     10    """
     11    FLOWEQUATION class definition
    1212
    13            Usage:
    14               flowequation=flowequation();
    15         """
     13       Usage:
     14          flowequation = flowequation()
     15    """
    1616
    17         def __init__(self): # {{{
     17    def __init__(self): # {{{
    1818
    19                 self.isSIA                          = 0
    20                 self.isSSA                          = 0
    21                 self.isL1L2                        = 0
    22                 self.isHO                          = 0
    23                 self.isFS                          = 0
    24                 self.fe_SSA                        = ''
    25                 self.fe_HO                          = ''
    26                 self.fe_FS                          = ''
    27                 self.augmented_lagrangian_r        = 1.
    28                 self.augmented_lagrangian_rhop      = 1.
    29                 self.augmented_lagrangian_rlambda  = 1.
    30                 self.augmented_lagrangian_rholambda = 1.
    31                 self.XTH_theta                      = 0.
    32                 self.vertex_equation                = float('NaN')
    33                 self.element_equation              = float('NaN')
    34                 self.borderSSA                      = float('NaN')
    35                 self.borderHO                      = float('NaN')
    36                 self.borderFS                      = float('NaN')
     19        self.isSIA = 0
     20        self.isSSA = 0
     21        self.isL1L2 = 0
     22        self.isHO = 0
     23        self.isFS = 0
     24        self.fe_SSA = ''
     25        self.fe_HO = ''
     26        self.fe_FS = ''
     27        self.augmented_lagrangian_r = 1.
     28        self.augmented_lagrangian_rhop = 1.
     29        self.augmented_lagrangian_rlambda = 1.
     30        self.augmented_lagrangian_rholambda = 1.
     31        self.XTH_theta = 0.
     32        self.vertex_equation = float('NaN')
     33        self.element_equation = float('NaN')
     34        self.borderSSA = float('NaN')
     35        self.borderHO = float('NaN')
     36        self.borderFS = float('NaN')
    3737
    38                 #set defaults
    39                 self.setdefaultparameters()
     38    #set defaults
     39        self.setdefaultparameters()
    4040
    41                 #}}}
    42         def __repr__(self): # {{{
    43                 string='   flow equation parameters:'
     41    #}}}
    4442
    45                 string="%s\n%s"%(string,fielddisplay(self,'isSIA',"is the Shallow Ice Approximation (SIA) used ?"))
    46                 string="%s\n%s"%(string,fielddisplay(self,'isSSA',"is the Shelfy-Stream Approximation (SSA) used ?"))
    47                 string="%s\n%s"%(string,fielddisplay(self,'isL1L2',"are L1L2 equations used ?"))
    48                 string="%s\n%s"%(string,fielddisplay(self,'isHO',"is the Higher-Order (HO) approximation used ?"))
    49                 string="%s\n%s"%(string,fielddisplay(self,'isFS',"are the Full-FS (FS) equations used ?"))
    50                 string="%s\n%s"%(string,fielddisplay(self,'fe_SSA',"Finite Element for SSA: 'P1', 'P1bubble' 'P1bubblecondensed' 'P2'"))
    51                 string="%s\n%s"%(string,fielddisplay(self,'fe_HO' ,"Finite Element for HO:  'P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4'"))
    52                 string="%s\n%s"%(string,fielddisplay(self,'fe_FS' ,"Finite Element for FS:  'P1P1' (debugging only) 'P1P1GLS' 'MINIcondensed' 'MINI' 'TaylorHood' 'LATaylorHood' 'XTaylorHood'"))
    53                 string="%s\n%s"%(string,fielddisplay(self,'vertex_equation',"flow equation for each vertex"))
    54                 string="%s\n%s"%(string,fielddisplay(self,'element_equation',"flow equation for each element"))
    55                 string="%s\n%s"%(string,fielddisplay(self,'borderSSA',"vertices on SSA's border (for tiling)"))
    56                 string="%s\n%s"%(string,fielddisplay(self,'borderHO',"vertices on HO's border (for tiling)"))
    57                 string="%s\n%s"%(string,fielddisplay(self,'borderFS',"vertices on FS' border (for tiling)"))
    58                 return string
    59                 #}}}
    60         def extrude(self,md): # {{{
    61                 self.element_equation=project3d(md,'vector',self.element_equation,'type','element')
    62                 self.vertex_equation=project3d(md,'vector',self.vertex_equation,'type','node')
    63                 self.borderSSA=project3d(md,'vector',self.borderSSA,'type','node')
    64                 self.borderHO=project3d(md,'vector',self.borderHO,'type','node')
    65                 self.borderFS=project3d(md,'vector',self.borderFS,'type','node')
    66                 return self
    67         #}}}
    68         def setdefaultparameters(self): # {{{
     43    def __repr__(self):  # {{{
     44        string = '   flow equation parameters:'
    6945
    70                 #P1 for SSA
    71                 self.fe_SSA= 'P1';
     46        string = "%s\n%s" % (string, fielddisplay(self, 'isSIA', "is the Shallow Ice Approximation (SIA) used ?"))
     47        string = "%s\n%s" % (string, fielddisplay(self, 'isSSA', "is the Shelfy - Stream Approximation (SSA) used ?"))
     48        string = "%s\n%s" % (string, fielddisplay(self, 'isL1L2', "are L1L2 equations used ?"))
     49        string = "%s\n%s" % (string, fielddisplay(self, 'isHO', "is the Higher - Order (HO) approximation used ?"))
     50        string = "%s\n%s" % (string, fielddisplay(self, 'isFS', "are the Full - FS (FS) equations used ?"))
     51        string = "%s\n%s" % (string, fielddisplay(self, 'fe_SSA', "Finite Element for SSA: 'P1', 'P1bubble' 'P1bubblecondensed' 'P2'"))
     52        string = "%s\n%s" % (string, fielddisplay(self, 'fe_HO', "Finite Element for HO:  'P1', 'P1bubble', 'P1bubblecondensed', 'P1xP2', 'P2xP1', 'P2', 'P2bubble', 'P1xP3', 'P2xP4'"))
     53        string = "%s\n%s" % (string, fielddisplay(self, 'fe_FS', "Finite Element for FS:  'P1P1' (debugging only) 'P1P1GLS' 'MINIcondensed' 'MINI' 'TaylorHood' 'LATaylorHood' 'XTaylorHood'"))
     54        string = "%s\n%s" % (string, fielddisplay(self, 'vertex_equation', "flow equation for each vertex"))
     55        string = "%s\n%s" % (string, fielddisplay(self, 'element_equation', "flow equation for each element"))
     56        string = "%s\n%s" % (string, fielddisplay(self, 'borderSSA', "vertices on SSA's border (for tiling)"))
     57        string = "%s\n%s" % (string, fielddisplay(self, 'borderHO', "vertices on HO's border (for tiling)"))
     58        string = "%s\n%s" % (string, fielddisplay(self, 'borderFS', "vertices on FS' border (for tiling)"))
     59        return string
     60    #}}}
    7261
    73                 #P1 for HO
    74                 self.fe_HO= 'P1';
     62    def extrude(self, md):  # {{{
     63        self.element_equation = project3d(md, 'vector', self.element_equation, 'type', 'element')
     64        self.vertex_equation = project3d(md, 'vector', self.vertex_equation, 'type', 'node')
     65        self.borderSSA = project3d(md, 'vector', self.borderSSA, 'type', 'node')
     66        self.borderHO = project3d(md, 'vector', self.borderHO, 'type', 'node')
     67        self.borderFS = project3d(md, 'vector', self.borderFS, 'type', 'node')
     68        return self
     69    #}}}
    7570
    76                 #MINI condensed element for FS by default
    77                 self.fe_FS = 'MINIcondensed';
     71    def setdefaultparameters(self):  # {{{
     72        #P1 for SSA
     73        self.fe_SSA = 'P1'
    7874
    79                 return self
    80         #}}}
    81         def checkconsistency(self,md,solution,analyses):    # {{{
     75        #P1 for HO
     76        self.fe_HO = 'P1'
    8277
    83                 #Early return
    84                 if ('StressbalanceAnalysis' not in analyses and 'StressbalanceSIAAnalysis' not in analyses) or (solution=='TransientSolution' and not md.transient.isstressbalance):
    85                         return md
     78        #MINI condensed element for FS by default
     79        self.fe_FS = 'MINIcondensed'
    8680
    87                 md = checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0,1])
    88                 md = checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0,1])
    89                 md = checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0,1])
    90                 md = checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0,1])
    91                 md = checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0,1])
    92                 md = checkfield(md,'fieldname','flowequation.fe_SSA','values',['P1','P1bubble','P1bubblecondensed','P2','P2bubble'])
    93                 md = checkfield(md,'fieldname','flowequation.fe_HO' ,'values',['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4'])
    94                 md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','LATaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart','LACrouzeixRaviart'])
    95                 md = checkfield(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices],'values',[0,1])
    96                 md = checkfield(md,'fieldname','flowequation.borderHO','size',[md.mesh.numberofvertices],'values',[0,1])
    97                 md = checkfield(md,'fieldname','flowequation.borderFS','size',[md.mesh.numberofvertices],'values',[0,1])
    98                 md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_r','numel',[1],'>',0.)
    99                 md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rhop','numel',[1],'>',0.)
    100                 md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rlambda','numel',[1],'>',0.)
    101                 md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rholambda','numel',[1],'>',0.)
    102                 md = checkfield(md,'fieldname','flowequation.XTH_theta','numel',[1],'>=',0.,'<',.5)
    103                 if m.strcmp(md.mesh.domaintype(),'2Dhorizontal'):
    104                         md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',[1,2])
    105                         md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements],'values',[1,2])
    106                 elif m.strcmp(md.mesh.domaintype(),'2Dvertical'):
    107                         md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',[2,4,5])
    108                         md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements],'values',[2,4,5])
    109                 elif m.strcmp(md.mesh.domaintype(),'3D'):
    110                         md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',np.arange(0,8+1))
    111                         md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements],'values',np.arange(0,8+1))
    112                 else:
    113                         raise RuntimeError('mesh type not supported yet')
    114                 if not (self.isSIA or self.isSSA or self.isL1L2 or self.isHO or self.isFS):
    115                         md.checkmessage("no element types set for this model")
     81        return self
     82    #}}}
    11683
    117                 if 'StressbalanceSIAAnalysis' in analyses:
    118                         if any(self.element_equation==1):
    119                                 if np.any(np.logical_and(self.vertex_equation,md.mask.groundedice_levelset)):
    120                                         print("\n !!! Warning: SIA's model is not consistent on ice shelves !!!\n")
     84    def checkconsistency(self, md, solution, analyses):  # {{{
    12185
    122                 return md
    123         # }}}
    124         def marshall(self,prefix,md,fid):    # {{{
    125                 WriteData(fid,prefix,'object',self,'fieldname','isSIA','format','Boolean')
    126                 WriteData(fid,prefix,'object',self,'fieldname','isSSA','format','Boolean')
    127                 WriteData(fid,prefix,'object',self,'fieldname','isL1L2','format','Boolean')
    128                 WriteData(fid,prefix,'object',self,'fieldname','isHO','format','Boolean')
    129                 WriteData(fid,prefix,'object',self,'fieldname','isFS','format','Boolean')
    130                 WriteData(fid,prefix,'object',self,'fieldname','fe_SSA','data',self.fe_SSA,'format','String')
    131                 WriteData(fid,prefix,'object',self,'fieldname','fe_HO','data',self.fe_HO,'format','String')
    132                 WriteData(fid,prefix,'object',self,'fieldname','fe_FS','data',self.fe_FS ,'format','String')
    133                 WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_r','format','Double');
    134                 WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_rhop','format','Double');
    135                 WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_rlambda','format','Double');
    136                 WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_rholambda','format','Double');
    137                 WriteData(fid,prefix,'object',self,'fieldname','XTH_theta','data',self.XTH_theta ,'format','Double')
    138                 WriteData(fid,prefix,'object',self,'fieldname','borderSSA','format','DoubleMat','mattype',1)
    139                 WriteData(fid,prefix,'object',self,'fieldname','borderHO','format','DoubleMat','mattype',1)
    140                 WriteData(fid,prefix,'object',self,'fieldname','borderFS','format','DoubleMat','mattype',1)
    141                 #convert approximations to enums
    142                 WriteData(fid,prefix,'data',self.vertex_equation,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1)
    143                 WriteData(fid,prefix,'data',self.element_equation,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2)
     86        #Early return
     87        if ('StressbalanceAnalysis' not in analyses and 'StressbalanceSIAAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isstressbalance):
     88            return md
    14489
    145         # }}}
     90        md = checkfield(md, 'fieldname', 'flowequation.isSIA', 'numel', [1], 'values', [0, 1])
     91        md = checkfield(md, 'fieldname', 'flowequation.isSSA', 'numel', [1], 'values', [0, 1])
     92        md = checkfield(md, 'fieldname', 'flowequation.isL1L2', 'numel', [1], 'values', [0, 1])
     93        md = checkfield(md, 'fieldname', 'flowequation.isHO', 'numel', [1], 'values', [0, 1])
     94        md = checkfield(md, 'fieldname', 'flowequation.isFS', 'numel', [1], 'values', [0, 1])
     95        md = checkfield(md, 'fieldname', 'flowequation.fe_SSA', 'values', ['P1', 'P1bubble', 'P1bubblecondensed', 'P2', 'P2bubble'])
     96        md = checkfield(md, 'fieldname', 'flowequation.fe_HO', 'values', ['P1', 'P1bubble', 'P1bubblecondensed', 'P1xP2', 'P2xP1', 'P2', 'P2bubble', 'P1xP3', 'P2xP4'])
     97        md = checkfield(md, 'fieldname', 'flowequation.fe_FS', 'values', ['P1P1', 'P1P1GLS', 'MINIcondensed', 'MINI', 'TaylorHood', 'LATaylorHood', 'XTaylorHood', 'OneLayerP4z', 'CrouzeixRaviart', 'LACrouzeixRaviart'])
     98        md = checkfield(md, 'fieldname', 'flowequation.borderSSA', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
     99        md = checkfield(md, 'fieldname', 'flowequation.borderHO', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
     100        md = checkfield(md, 'fieldname', 'flowequation.borderFS', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
     101        md = checkfield(md, 'fieldname', 'flowequation.augmented_lagrangian_r', 'numel', [1], '>', 0.)
     102        md = checkfield(md, 'fieldname', 'flowequation.augmented_lagrangian_rhop', 'numel', [1], '>', 0.)
     103        md = checkfield(md, 'fieldname', 'flowequation.augmented_lagrangian_rlambda', 'numel', [1], '>', 0.)
     104        md = checkfield(md, 'fieldname', 'flowequation.augmented_lagrangian_rholambda', 'numel', [1], '>', 0.)
     105        md = checkfield(md, 'fieldname', 'flowequation.XTH_theta', 'numel', [1], '>=', 0., '<', .5)
     106        if m.strcmp(md.mesh.domaintype(), '2Dhorizontal'):
     107            md = checkfield(md, 'fieldname', 'flowequation.vertex_equation', 'size', [md.mesh.numberofvertices], 'values', [1, 2])
     108            md = checkfield(md, 'fieldname', 'flowequation.element_equation', 'size', [md.mesh.numberofelements], 'values', [1, 2])
     109        elif m.strcmp(md.mesh.domaintype(), '2Dvertical'):
     110            md = checkfield(md, 'fieldname', 'flowequation.vertex_equation', 'size', [md.mesh.numberofvertices], 'values', [2, 4, 5])
     111            md = checkfield(md, 'fieldname', 'flowequation.element_equation', 'size', [md.mesh.numberofelements], 'values', [2, 4, 5])
     112        elif m.strcmp(md.mesh.domaintype(), '3D'):
     113            md = checkfield(md, 'fieldname', 'flowequation.vertex_equation', 'size', [md.mesh.numberofvertices], 'values', np.arange(0, 8 + 1))
     114            md = checkfield(md, 'fieldname', 'flowequation.element_equation', 'size', [md.mesh.numberofelements], 'values', np.arange(0, 8 + 1))
     115        else:
     116            raise RuntimeError('mesh type not supported yet')
     117        if not (self.isSIA or self.isSSA or self.isL1L2 or self.isHO or self.isFS):
     118            md.checkmessage("no element types set for this model")
     119
     120        if 'StressbalanceSIAAnalysis' in analyses:
     121            if any(self.element_equation == 1):
     122                if np.any(np.logical_and(self.vertex_equation, md.mask.groundedice_levelset)):
     123                    print("\n !!! Warning: SIA's model is not consistent on ice shelves !!!\n")
     124
     125        return md
     126    # }}}
     127
     128    def marshall(self, prefix, md, fid):  # {{{
     129        WriteData(fid, prefix, 'object', self, 'fieldname', 'isSIA', 'format', 'Boolean')
     130        WriteData(fid, prefix, 'object', self, 'fieldname', 'isSSA', 'format', 'Boolean')
     131        WriteData(fid, prefix, 'object', self, 'fieldname', 'isL1L2', 'format', 'Boolean')
     132        WriteData(fid, prefix, 'object', self, 'fieldname', 'isHO', 'format', 'Boolean')
     133        WriteData(fid, prefix, 'object', self, 'fieldname', 'isFS', 'format', 'Boolean')
     134        WriteData(fid, prefix, 'object', self, 'fieldname', 'fe_SSA', 'data', self.fe_SSA, 'format', 'String')
     135        WriteData(fid, prefix, 'object', self, 'fieldname', 'fe_HO', 'data', self.fe_HO, 'format', 'String')
     136        WriteData(fid, prefix, 'object', self, 'fieldname', 'fe_FS', 'data', self.fe_FS, 'format', 'String')
     137        WriteData(fid, prefix, 'object', self, 'fieldname', 'augmented_lagrangian_r', 'format', 'Double')
     138        WriteData(fid, prefix, 'object', self, 'fieldname', 'augmented_lagrangian_rhop', 'format', 'Double')
     139        WriteData(fid, prefix, 'object', self, 'fieldname', 'augmented_lagrangian_rlambda', 'format', 'Double')
     140        WriteData(fid, prefix, 'object', self, 'fieldname', 'augmented_lagrangian_rholambda', 'format', 'Double')
     141        WriteData(fid, prefix, 'object', self, 'fieldname', 'XTH_theta', 'data', self.XTH_theta, 'format', 'Double')
     142        WriteData(fid, prefix, 'object', self, 'fieldname', 'borderSSA', 'format', 'DoubleMat', 'mattype', 1)
     143        WriteData(fid, prefix, 'object', self, 'fieldname', 'borderHO', 'format', 'DoubleMat', 'mattype', 1)
     144        WriteData(fid, prefix, 'object', self, 'fieldname', 'borderFS', 'format', 'DoubleMat', 'mattype', 1)
     145        #convert approximations to enums
     146        WriteData(fid, prefix, 'data', self.vertex_equation, 'name', 'md.flowequation.vertex_equation', 'format', 'DoubleMat', 'mattype', 1)
     147        WriteData(fid, prefix, 'data', self.element_equation, 'name', 'md.flowequation.element_equation', 'format', 'DoubleMat', 'mattype', 2)
     148
     149    # }}}
  • issm/trunk-jpl/src/m/classes/fourierlove.py

    r23716 r24213  
    33from WriteData import WriteData
    44
     5
    56class fourierlove(object):
    6         """
    7         Fourier Love Number class definition
     7    """
     8    Fourier Love Number class definition
    89
    9            Usage:
    10               fourierlove=fourierlove();
    11         """
    12         def __init__(self): # {{{
    13                 self.nfreq                = 0;
    14                 self.frequencies          = 0;
    15                 self.sh_nmax              = 0;
    16                 self.sh_nmin              = 0;
    17                 self.g0                   = 0;
    18                 self.r0                   = 0;
    19                 self.mu0                  = 0;
    20                 self.allow_layer_deletion = 0;
    21                 self.love_kernels                                       = 0;
    22                 self.forcing_type         = 0;
     10       Usage:
     11          fourierlove = fourierlove()
     12    """
     13    def __init__(self): # {{{
     14        self.nfreq = 0
     15        self.frequencies = 0
     16        self.sh_nmax = 0
     17        self.sh_nmin = 0
     18        self.g0 = 0
     19        self.r0 = 0
     20        self.mu0 = 0
     21        self.allow_layer_deletion = 0
     22        self.love_kernels = 0
     23        self.forcing_type = 0
    2324
    24                 #set defaults
    25                 self.setdefaultparameters()
    26                 #}}}
     25    #set defaults
     26        self.setdefaultparameters()
     27    #}}}
    2728
    28         def __repr__(self): # {{{
    29                 string='   Fourier Love class:'
    30                 string="%s\n%s"%(string,fielddisplay(self,'nfreq','number of frequencies sampled (default 1, elastic) [Hz]'))
    31                 string="%s\n%s"%(string,fielddisplay(self,'frequencies','frequencies sampled (convention defaults to 0 for the elastic case) [Hz]'))
    32                 string="%s\n%s"%(string,fielddisplay(self,'sh_nmax','maximum spherical harmonic degree (default 256, .35 deg, or 40 km at equator)'))
    33                 string="%s\n%s"%(string,fielddisplay(self,'sh_nmin','minimum spherical harmonic degree (default 1)'))
    34                 string="%s\n%s"%(string,fielddisplay(self,'g0','adimensioning constant for gravity (default 10) [m/s^2]'))
    35                 string="%s\n%s"%(string,fielddisplay(self,'r0','adimensioning constant for radius (default 6378*10^3) [m]'))
    36                 string="%s\n%s"%(string,fielddisplay(self,'mu0','adimensioning constant for stress (default 10^11) [Pa]'))
    37                 string="%s\n%s"%(string,fielddisplay(self,'allow_layer_deletion','allow for migration of the integration boundary with increasing spherical harmonics degree (default 1)'))
    38                 string="%s\n%s"%(string,fielddisplay(self,'love_kernels','compute love numbers at depth? (default 0)'))
    39                 string="%s\n%s"%(string,fielddisplay(self,'forcing_type','integer indicating the nature and depth of the forcing for the Love number calculation (default 11) :'))
    40                 string="%s\n%s"%(string,'                                                     1:  Inner core boundary -- Volumic Potential')
    41                 string="%s\n%s"%(string,'                                                     2:  Inner core boundary -- Pressure')
    42                 string="%s\n%s"%(string,'                                                     3:  Inner core boundary -- Loading')
    43                 string="%s\n%s"%(string,'                                                     4:  Inner core boundary -- Tangential traction')
    44                 string="%s\n%s"%(string,'                                                     5:  Core mantle boundary -- Volumic Potential')
    45                 string="%s\n%s"%(string,'                                                     6:  Core mantle boundary -- Pressure')
    46                 string="%s\n%s"%(string,'                                                     7:  Core mantle boundary -- Loading')
    47                 string="%s\n%s"%(string,'                                                     8:  Core mantle boundary -- Tangential traction')
    48                 string="%s\n%s"%(string,'                                                     9:  Surface -- Volumic Potential')
    49                 string="%s\n%s"%(string,'                                                     10: Surface -- Pressure')
    50                 string="%s\n%s"%(string,'                                                     11: Surface -- Loading')
    51                 string="%s\n%s"%(string,'                                                     12: Surface -- Tangential traction ')
     29    def __repr__(self): # {{{
     30        string = '   Fourier Love class:'
     31        string = "%s\n%s" % (string, fielddisplay(self, 'nfreq', 'number of frequencies sampled (default 1, elastic) [Hz]'))
     32        string = "%s\n%s" % (string, fielddisplay(self, 'frequencies', 'frequencies sampled (convention defaults to 0 for the elastic case) [Hz]'))
     33        string = "%s\n%s" % (string, fielddisplay(self, 'sh_nmax', 'maximum spherical harmonic degree (default 256, .35 deg, or 40 km at equator)'))
     34        string = "%s\n%s" % (string, fielddisplay(self, 'sh_nmin', 'minimum spherical harmonic degree (default 1)'))
     35        string = "%s\n%s" % (string, fielddisplay(self, 'g0', 'adimensioning constant for gravity (default 10) [m / s^2]'))
     36        string = "%s\n%s" % (string, fielddisplay(self, 'r0', 'adimensioning constant for radius (default 6378 * 10^3) [m]'))
     37        string = "%s\n%s" % (string, fielddisplay(self, 'mu0', 'adimensioning constant for stress (default 10^11) [Pa]'))
     38        string = "%s\n%s" % (string, fielddisplay(self, 'allow_layer_deletion', 'allow for migration of the integration boundary with increasing spherical harmonics degree (default 1)'))
     39        string = "%s\n%s" % (string, fielddisplay(self, 'love_kernels', 'compute love numbers at depth? (default 0)'))
     40        string = "%s\n%s" % (string, fielddisplay(self, 'forcing_type', 'integer indicating the nature and depth of the forcing for the Love number calculation (default 11) :'))
     41        string = "%s\n%s" % (string, '                                                     1:  Inner core boundary -- Volumic Potential')
     42        string = "%s\n%s" % (string, '                                                     2:  Inner core boundary -- Pressure')
     43        string = "%s\n%s" % (string, '                                                     3:  Inner core boundary -- Loading')
     44        string = "%s\n%s" % (string, '                                                     4:  Inner core boundary -- Tangential traction')
     45        string = "%s\n%s" % (string, '                                                     5:  Core mantle boundary -- Volumic Potential')
     46        string = "%s\n%s" % (string, '                                                     6:  Core mantle boundary -- Pressure')
     47        string = "%s\n%s" % (string, '                                                     7:  Core mantle boundary -- Loading')
     48        string = "%s\n%s" % (string, '                                                     8:  Core mantle boundary -- Tangential traction')
     49        string = "%s\n%s" % (string, '                                                     9:  Surface-- Volumic Potential')
     50        string = "%s\n%s" % (string, '                                                     10: Surface-- Pressure')
     51        string = "%s\n%s" % (string, '                                                     11: Surface-- Loading')
     52        string = "%s\n%s" % (string, '                                                     12: Surface-- Tangential traction ')
    5253
    53                 return string;
    54                 #}}}
     54        return string
     55    #}}}
    5556
    56         def extrude(self,md): # {{{
    57                 return self
    58         #}}}
     57    def extrude(self, md): # {{{
     58        return self
     59    #}}}
    5960
    60         def setdefaultparameters(self): # {{{
    61                 #we setup an elastic love number computation by default.
    62                 self.nfreq=1
    63                 self.frequencies=[0]; #Hz
    64                 self.sh_nmax=256 # .35 degree, 40 km at the equator.
    65                 self.sh_nmin=1
    66                 self.g0=10 # m/s^2
    67                 self.r0=6378*1e3 #m
    68                 self.mu0=1e11 # Pa
    69                 self.allow_layer_deletion=1
    70                 self.love_kernels=0
    71                 self.forcing_type = 11
     61    def setdefaultparameters(self): # {{{
     62        #we setup an elastic love number computation by default.
     63        self.nfreq = 1
     64        self.frequencies = [0] #Hz
     65        self.sh_nmax = 256 # .35 degree, 40 km at the equator.
     66        self.sh_nmin = 1
     67        self.g0 = 10  # m / s^2
     68        self.r0 = 6378 * 1e3 #m
     69        self.mu0 = 1e11 # Pa
     70        self.allow_layer_deletion = 1
     71        self.love_kernels = 0
     72        self.forcing_type = 11
    7273
    73                 return self
    74         #}}}
     74        return self
     75    #}}}
    7576
    76         def checkconsistency(self,md,solution,analyses):    # {{{
    77                 md = checkfield(md,'fieldname','love.nfreq','NaN',1,'Inf',1,'numel',[1],'>',0);
    78                 md = checkfield(md,'fieldname','love.frequencies','NaN',1,'Inf',1,'numel',[md.love.nfreq]);
    79                 md = checkfield(md,'fieldname','love.sh_nmax','NaN',1,'Inf',1,'numel',[1],'>',0);
    80                 md = checkfield(md,'fieldname','love.sh_nmin','NaN',1,'Inf',1,'numel',[1],'>',0);
    81                 md = checkfield(md,'fieldname','love.g0','NaN',1,'Inf',1,'numel',[1],'>',0);
    82                 md = checkfield(md,'fieldname','love.r0','NaN',1,'Inf',1,'numel',[1],'>',0);
    83                 md = checkfield(md,'fieldname','love.mu0','NaN',1,'Inf',1,'numel',[1],'>',0);
    84                 md = checkfield(md,'fieldname','love.allow_layer_deletion','values',[0,1]);
    85                 md = checkfield(md,'fieldname','love.love_kernels','values',[0,1]);
    86                 md = checkfield(md,'fieldname','love.forcing_type','NaN',1,'Inf',1,'numel',[1],'>',0, '<=', 12);
    87                 if md.love.sh_nmin<=1 and md.love.forcing_type==9:
    88                         raise RuntimeError("Degree 1 not supported for Volumetric Potential forcing. Use sh_min>=2 for this kind of calculation.")
     77    def checkconsistency(self, md, solution, analyses):  # {{{
     78        md = checkfield(md, 'fieldname', 'love.nfreq', 'NaN', 1, 'Inf', 1, 'numel', [1], '>', 0)
     79        md = checkfield(md, 'fieldname', 'love.frequencies', 'NaN', 1, 'Inf', 1, 'numel', [md.love.nfreq])
     80        md = checkfield(md, 'fieldname', 'love.sh_nmax', 'NaN', 1, 'Inf', 1, 'numel', [1], '>', 0)
     81        md = checkfield(md, 'fieldname', 'love.sh_nmin', 'NaN', 1, 'Inf', 1, 'numel', [1], '>', 0)
     82        md = checkfield(md, 'fieldname', 'love.g0', 'NaN', 1, 'Inf', 1, 'numel', [1], '>', 0)
     83        md = checkfield(md, 'fieldname', 'love.r0', 'NaN', 1, 'Inf', 1, 'numel', [1], '>', 0)
     84        md = checkfield(md, 'fieldname', 'love.mu0', 'NaN', 1, 'Inf', 1, 'numel', [1], '>', 0)
     85        md = checkfield(md, 'fieldname', 'love.allow_layer_deletion', 'values', [0, 1])
     86        md = checkfield(md, 'fieldname', 'love.love_kernels', 'values', [0, 1])
     87        md = checkfield(md, 'fieldname', 'love.forcing_type', 'NaN', 1, 'Inf', 1, 'numel', [1], '>', 0, '<=', 12)
     88        if md.love.sh_nmin <= 1 and md.love.forcing_type == 9:
     89            raise RuntimeError("Degree 1 not supported for Volumetric Potential forcing. Use sh_min >= 2 for this kind of calculation.")
    8990
    90                 return md
    91         # }}}
     91        return md
     92    # }}}
    9293
    93         def marshall(self,prefix,md,fid):    # {{{
    94                 WriteData(fid,prefix,'object',self,'fieldname','nfreq','format','Integer');
    95                 WriteData(fid,prefix,'object',self,'fieldname','frequencies','format','DoubleMat','mattype',3);
    96                 WriteData(fid,prefix,'object',self,'fieldname','sh_nmax','format','Integer');
    97                 WriteData(fid,prefix,'object',self,'fieldname','sh_nmin','format','Integer');
    98                 WriteData(fid,prefix,'object',self,'fieldname','g0','format','Double');
    99                 WriteData(fid,prefix,'object',self,'fieldname','r0','format','Double');
    100                 WriteData(fid,prefix,'object',self,'fieldname','mu0','format','Double');
    101                 WriteData(fid,prefix,'object',self,'fieldname','allow_layer_deletion','format','Boolean');
    102                 WriteData(fid,prefix,'object',self,'fieldname','love_kernels','format','Boolean');
    103                 WriteData(fid,prefix,'object',self,'fieldname','forcing_type','format','Integer');
    104         # }}}
     94    def marshall(self, prefix, md, fid):  # {{{
     95        WriteData(fid, prefix, 'object', self, 'fieldname', 'nfreq', 'format', 'Integer')
     96        WriteData(fid, prefix, 'object', self, 'fieldname', 'frequencies', 'format', 'DoubleMat', 'mattype', 3)
     97        WriteData(fid, prefix, 'object', self, 'fieldname', 'sh_nmax', 'format', 'Integer')
     98        WriteData(fid, prefix, 'object', self, 'fieldname', 'sh_nmin', 'format', 'Integer')
     99        WriteData(fid, prefix, 'object', self, 'fieldname', 'g0', 'format', 'Double')
     100        WriteData(fid, prefix, 'object', self, 'fieldname', 'r0', 'format', 'Double')
     101        WriteData(fid, prefix, 'object', self, 'fieldname', 'mu0', 'format', 'Double')
     102        WriteData(fid, prefix, 'object', self, 'fieldname', 'allow_layer_deletion', 'format', 'Boolean')
     103        WriteData(fid, prefix, 'object', self, 'fieldname', 'love_kernels', 'format', 'Boolean')
     104        WriteData(fid, prefix, 'object', self, 'fieldname', 'forcing_type', 'format', 'Integer')
     105    # }}}
  • issm/trunk-jpl/src/m/classes/friction.py

    r23870 r24213  
    1010
    1111       Usage:
    12           friction=friction()
     12          friction = friction()
    1313    """
    1414
     
    1919        self.coupling = 0
    2020        self.effective_pressure = float('NaN')
    21         #set defaults
     21    #set defaults
    2222        self.setdefaultparameters()
     23        self.requested_outputs = []
    2324    #}}}
    2425
    2526    def __repr__(self):  # {{{
    26         string = "Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b,\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*base, r=q/p and s=1/p)"
     27        string = "Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s - 1) * u_b, \n(effective stress Neff = rho_ice * g * thickness + rho_water * g * base, r = q / p and s = 1 / p)"
    2728
    2829        string = "%s\n%s" % (string, fielddisplay(self, "coefficient", "friction coefficient [SI]"))
     
    3132        string = "%s\n%s" % (string, fielddisplay(self, 'coupling', 'Coupling flag 0: uniform sheet (negative pressure ok, default), 1: ice pressure only, 2: water pressure assuming uniform sheet (no negative pressure), 3: use provided effective_pressure, 4: used coupled model (not implemented yet)'))
    3233        string = "%s\n%s" % (string, fielddisplay(self, 'effective_pressure', 'Effective Pressure for the forcing if not coupled [Pa]'))
     34        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
    3335        return string
    3436    #}}}
     
    3840        self.p = project3d(md, 'vector', self.p, 'type', 'element')
    3941        self.q = project3d(md, 'vector', self.q, 'type', 'element')
    40         #if self.coupling==0: #doesnt work with empty loop, so just skip it?
     42    #if self.coupling == 0: #doesnt work with empty loop, so just skip it?
    4143        if self.coupling in[3, 4]:
    4244            self.effective_pressure = project3d(md, 'vector', self.effective_pressure, 'type', 'node', 'layer', 1)
     
    4749
    4850    def setdefaultparameters(self):  # {{{
     51        self.requested_outputs = ['default']
    4952        return self
     53    #}}}
     54
     55    def defaultoutputs(self, md):  # {{{
     56        list = []
     57        return list
    5058    #}}}
    5159
     
    6371            md = checkfield(md, 'fieldname', 'friction.effective_pressure', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
    6472        elif self.coupling > 4:
    65             raise ValueError('md.friction.coupling larger than 4,  not supported yet')
     73            raise ValueError('md.friction.coupling larger than 4, not supported yet')
     74        md = checkfield(md, 'fieldname', 'friction.requested_outputs', 'stringrow', 1)
    6675        return md
    6776    # }}}
     
    7382        WriteData(fid, prefix, 'object', self, 'fieldname', 'q', 'format', 'DoubleMat', 'mattype', 2)
    7483        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'coupling', 'format', 'Integer')
    75         if self.coupling in[3, 4]:
     84        if self.coupling == 3:
    7685            WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'effective_pressure', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     86        if self.coupling == 4:
     87            WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'effective_pressure', 'format', 'DoubleMat', 'mattype', 1)
    7788        elif self.coupling > 4:
    78             raise ValueError('md.friction.coupling larger than 4,  not supported yet')
     89            raise ValueError('md.friction.coupling larger than 4, not supported yet')
     90
     91    #process requested outputs
     92        outputs = self.requested_outputs
     93        indices = [i for i, x in enumerate(outputs) if x == 'default']
     94        if len(indices) > 0:
     95            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     96            outputs = outputscopy
     97        WriteData(fid, prefix, 'data', outputs, 'name', 'md.friction.requested_outputs', 'format', 'StringArray')
    7998    # }}}
  • issm/trunk-jpl/src/m/classes/frictioncoulomb.py

    r23716 r24213  
    44from WriteData import WriteData
    55
     6
    67class frictioncoulomb(object):
    7         """
    8         FRICTIONCOULOMB class definition
     8    """
     9    FRICTIONCOULOMB class definition
    910
    10         Usage:
    11         frictioncoulomb=frictioncoulomb()
    12         """
     11    Usage:
     12    frictioncoulomb = frictioncoulomb()
     13    """
    1314
    14         def __init__(self): # {{{
    15                 self.coefficient = float('NaN')
    16                 self.coefficientcoulomb = float('NaN')
    17                 self.p = float('NaN')
    18                 self.q = float('NaN')
    19                 self.coupling    = 0
    20                 self.effective_pressure = float('NaN')
    21                 #set defaults
    22                 self.setdefaultparameters()
     15    def __init__(self): # {{{
     16        self.coefficient = float('NaN')
     17        self.coefficientcoulomb = float('NaN')
     18        self.p = float('NaN')
     19        self.q = float('NaN')
     20        self.coupling = 0
     21        self.effective_pressure = float('NaN')
     22    #set defaults
     23        self.setdefaultparameters()
    2324    #}}}
    2425
    25         def __repr__(self): # {{{
    26                 string="Basal shear stress parameters: Sigma_b = min(coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b,\n coefficientcoulomb^2 * rho_i * g * (h-h_f)), (effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)."
    27                 string="%s\n%s"%(string,fielddisplay(self,"coefficient","power law (Weertman) friction coefficient [SI]"))
    28                 string="%s\n%s"%(string,fielddisplay(self,"coefficientcoulomb","Coulomb friction coefficient [SI]"))
    29                 string="%s\n%s"%(string,fielddisplay(self,"p","p exponent"))
    30                 string="%s\n%s"%(string,fielddisplay(self,"q","q exponent"))
    31                 string="%s\n%s"%(string,fielddisplay(self,'coupling','Coupling flag: 0 for default, 1 for forcing(provide md.friction.effective_pressure)  and 2 for coupled(not implemented yet)'))
    32                 string="%s\n%s"%(string,fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]'))
    33                 return string
    34         #}}}
    35         def extrude(self,md): # {{{
    36                 self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1)
    37                 self.coefficientcoulomb=project3d(md,'vector',self.coefficientcoulomb,'type','node','layer',1)
    38                 self.p=project3d(md,'vector',self.p,'type','element')
    39                 self.q=project3d(md,'vector',self.q,'type','element')
    40                 if self.coupling==1:
    41                         self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1)
    42                 elif self.coupling==2:
    43                         raise ValueError('coupling not supported yet')
    44                 elif self.coupling > 2:
    45                         raise ValueError('md.friction.coupling larger than 2, not supported yet')
    46                 return self
    47         #}}}
     26    def __repr__(self):  # {{{
     27        string = "Basal shear stress parameters: Sigma_b = min(coefficient^2 * Neff ^r * |u_b|^(s - 1) * u_b, \n coefficientcoulomb^2 * rho_i * g * (h - h_f)), (effective stress Neff = rho_ice * g * thickness + rho_water * g * bed, r = q / p and s = 1 / p)."
     28        string = "%s\n%s" % (string, fielddisplay(self, "coefficient", "power law (Weertman) friction coefficient [SI]"))
     29        string = "%s\n%s" % (string, fielddisplay(self, "coefficientcoulomb", "Coulomb friction coefficient [SI]"))
     30        string = "%s\n%s" % (string, fielddisplay(self, "p", "p exponent"))
     31        string = "%s\n%s" % (string, fielddisplay(self, "q", "q exponent"))
     32        string = "%s\n%s" % (string, fielddisplay(self, 'coupling', 'Coupling flag: 0 for default, 1 for forcing(provide md.friction.effective_pressure)  and 2 for coupled(not implemented yet)'))
     33        string = "%s\n%s" % (string, fielddisplay(self, 'effective_pressure', 'Effective Pressure for the forcing if not coupled [Pa]'))
     34        return string
     35    #}}}
    4836
    49         def setdefaultparameters(self): # {{{
    50                 return self
    51         #}}}
     37    def extrude(self, md):  # {{{
     38        self.coefficient = project3d(md, 'vector', self.coefficient, 'type', 'node', 'layer', 1)
     39        self.coefficientcoulomb = project3d(md, 'vector', self.coefficientcoulomb, 'type', 'node', 'layer', 1)
     40        self.p = project3d(md, 'vector', self.p, 'type', 'element')
     41        self.q = project3d(md, 'vector', self.q, 'type', 'element')
     42        if self.coupling == 1:
     43            self.effective_pressure = project3d(md, 'vector', self.effective_pressure, 'type', 'node', 'layer', 1)
     44        elif self.coupling == 2:
     45            raise ValueError('coupling not supported yet')
     46        elif self.coupling > 2:
     47            raise ValueError('md.friction.coupling larger than 2, not supported yet')
     48        return self
     49    #}}}
    5250
    53         def checkconsistency(self,md,solution,analyses):    # {{{
    54                 #Early return
    55                 if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
    56                         return md
     51    def setdefaultparameters(self):  # {{{
     52        return self
     53    #}}}
    5754
    58                 md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1)
    59                 md = checkfield(md,'fieldname','friction.coefficientcoulomb','timeseries',1,'NaN',1,'Inf',1)
    60                 md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
    61                 md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
    62                 if self.coupling==1:
    63                         md = checkfield(md,'fieldname','friction.effective_pressure','NaN',1,'Inf',1,'timeseries',1)
    64                 elif self.coupling==2:
    65                         raise ValueError('coupling not supported yet')
    66                 elif self.coupling > 2:
    67                         raise ValueError('md.friction.coupling larger than 2, not supported yet')
    68                 return md
     55    def checkconsistency(self, md, solution, analyses):  # {{{
     56        #Early return
     57        if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
     58            return md
     59
     60        md = checkfield(md, 'fieldname', 'friction.coefficient', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     61        md = checkfield(md, 'fieldname', 'friction.coefficientcoulomb', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     62        md = checkfield(md, 'fieldname', 'friction.q', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
     63        md = checkfield(md, 'fieldname', 'friction.p', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
     64        if self.coupling == 1:
     65            md = checkfield(md, 'fieldname', 'friction.effective_pressure', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     66        elif self.coupling == 2:
     67            raise ValueError('coupling not supported yet')
     68        elif self.coupling > 2:
     69            raise ValueError('md.friction.coupling larger than 2, not supported yet')
     70        return md
    6971    # }}}
    7072
    71         def marshall(self,prefix,md,fid):    # {{{
    72                 WriteData(fid,prefix,'name','md.friction.law','data',7,'format','Integer')
    73                 WriteData(fid,prefix,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    74                 WriteData(fid,prefix,'object',self,'fieldname','coefficientcoulomb','format','DoubleMat','mattype',1)
    75                 WriteData(fid,prefix,'object',self,'fieldname','p','format','DoubleMat','mattype',2)
    76                 WriteData(fid,prefix,'object',self,'fieldname','q','format','DoubleMat','mattype',2)
    77                 WriteData(fid,prefix,'class','friction','object',self,'fieldname','coupling','format','Integer')
    78                 if self.coupling==1:
    79                         WriteData(fid,prefix,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    80                 elif self.coupling==2:
    81                         raise ValueError('coupling not supported yet')
    82                 elif self.coupling > 2:
    83                         raise ValueError('md.friction.coupling larger than 2, not supported yet')
     73    def marshall(self, prefix, md, fid):  # {{{
     74        WriteData(fid, prefix, 'name', 'md.friction.law', 'data', 7, 'format', 'Integer')
     75        WriteData(fid, prefix, 'object', self, 'fieldname', 'coefficient', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     76        WriteData(fid, prefix, 'object', self, 'fieldname', 'coefficientcoulomb', 'format', 'DoubleMat', 'mattype', 1)
     77        WriteData(fid, prefix, 'object', self, 'fieldname', 'p', 'format', 'DoubleMat', 'mattype', 2)
     78        WriteData(fid, prefix, 'object', self, 'fieldname', 'q', 'format', 'DoubleMat', 'mattype', 2)
     79        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'coupling', 'format', 'Integer')
     80        if self.coupling == 1:
     81            WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'effective_pressure', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     82        elif self.coupling == 2:
     83            raise ValueError('coupling not supported yet')
     84        elif self.coupling > 2:
     85            raise ValueError('md.friction.coupling larger than 2, not supported yet')
    8486    # }}}
  • issm/trunk-jpl/src/m/classes/frictionhydro.py

    r23526 r24213  
    77
    88class frictionhydro(object):
    9         """
    10         friction hydro is the friction law from Schoof 2005 or Gagliardini2007
     9    """
     10    friction hydro is the friction law from Schoof 2005 or Gagliardini2007
    1111
    12         Usage:
    13                 friction=frictionhydro();
    14         """
    15         def __init__(self): # {{{
    16                 self.coupling                           = 0
    17                 self.q                                                                  = np.nan
    18                 self.C                                                                  = np.nan
    19                 self.As                                                                 = np.nan
    20                 self.effective_pressure = np.nan
    21                 #set defaults
     12    Usage:
     13        friction = frictionhydro()
     14    """
     15    def __init__(self): # {{{
     16        self.coupling = 0
     17        self.q = np.nan
     18        self.C = np.nan
     19        self.As = np.nan
     20        self.effective_pressure = np.nan
     21    #set defaults
    2222
    23                 self.setdefaultparameters()
    24         # }}}
     23        self.setdefaultparameters()
     24    # }}}
    2525
    26         def __repr__(self): # {{{
    27                 string='Effective Pressure based friction law described in Gagliardini 2007'
    28                 string="%s\n%s"%(string,fielddisplay(self,'coupling','Coupling flag 0: uniform sheet (negative pressure ok, default), 1: ice pressure only, 2: water pressure assuming uniform sheet (no negative pressure), 3: use provided effective_pressure, 4: used coupled model (not implemented yet)'))
    29                 string="%s\n%s"%(string,fielddisplay(self,'q','friction law exponent q>=1'))
    30                 string="%s\n%s"%(string,fielddisplay(self,'C','friction law max value (Iken bound)'))
    31                 string="%s\n%s"%(string,fielddisplay(self,'As','Sliding Parameter without cavitation [m Pa^-n s^-1]'))
    32                 string="%s\n%s"%(string,fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]'))
     26    def __repr__(self): # {{{
     27        string = 'Effective Pressure based friction law described in Gagliardini 2007'
     28        string = "%s\n%s" % (string, fielddisplay(self, 'coupling', 'Coupling flag 0: uniform sheet (negative pressure ok, default), 1: ice pressure only, 2: water pressure assuming uniform sheet (no negative pressure), 3: use provided effective_pressure, 4: used coupled model (not implemented yet)'))
     29        string = "%s\n%s" % (string, fielddisplay(self, 'q', 'friction law exponent q >= 1'))
     30        string = "%s\n%s" % (string, fielddisplay(self, 'C', 'friction law max value (Iken bound)'))
     31        string = "%s\n%s" % (string, fielddisplay(self, 'As', 'Sliding Parameter without cavitation [m Pa^ - n s^ - 1]'))
     32        string = "%s\n%s" % (string, fielddisplay(self, 'effective_pressure', 'Effective Pressure for the forcing if not coupled [Pa]'))
    3333
    34                 return string
    35         # }}}
     34        return string
     35    # }}}
    3636
    37         def extrude(self,md): # {{{
    38                 self.q=project3d(md,'vector',self.q,'type','element')
    39                 self.C=project3d(md,'vector',self.C,'type','element')
    40                 self.As=project3d(md,'vector',self.As,'type','element')
    41                 if self.coupling in[3,4]:
    42                         self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1)
    43                 elif self.coupling > 4:
    44                         raise ValueError('md.friction.coupling larger than 4, not supported yet')
    45                 return self
    46         # }}}
     37    def extrude(self, md): # {{{
     38        self.q = project3d(md, 'vector', self.q, 'type', 'element')
     39        self.C = project3d(md, 'vector', self.C, 'type', 'element')
     40        self.As = project3d(md, 'vector', self.As, 'type', 'element')
     41        if self.coupling in[3, 4]:
     42            self.effective_pressure = project3d(md, 'vector', self.effective_pressure, 'type', 'node', 'layer', 1)
     43        elif self.coupling > 4:
     44            raise ValueError('md.friction.coupling larger than 4, not supported yet')
     45        return self
     46    # }}}
    4747
    48         def setdefaultparameters(self): # {{{
     48    def setdefaultparameters(self):  # {{{
     49        self.coupling = 0
     50        self.effective_pressure = np.nan
    4951
    50                 self.coupling                           = 0
    51                 self.effective_pressure = np.nan
     52        return self
     53    # }}}
    5254
    53                 return self
    54         # }}}
     55    def checkconsistency(self, md, solution, analyses):  #{{{
     56        #Early return
     57        if 'StressbalanceAnalysis' in analyses and 'ThermalAnalysis' in analyses:
     58            return md
    5559
    56         def checkconsistency(self,md,solution,analyses): #{{{
     60        md = checkfield(md, 'fieldname', 'friction.coupling', 'numel', [1], 'values', [0, 1, 2, 3, 4])
     61        md = checkfield(md, 'fieldname', 'friction.q', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
     62        md = checkfield(md, 'fieldname', 'friction.C', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
     63        md = checkfield(md, 'fieldname', 'friction.As', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
     64        if self.coupling == 3:
     65            md = checkfield(md, 'fieldname', 'friction.effective_pressure', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     66        elif self.coupling > 4:
     67            raise ValueError('md.friction.coupling larger than 4, not supported yet')
     68    # }}}
    5769
    58                 #Early return
    59                 if 'StressbalanceAnalysis' in analyses and 'ThermalAnalysis' in analyses:
    60                         return md
    61 
    62                 md = checkfield(md,'fieldname','friction.coupling','numel',[1],'values',[0,1,2,3,4])
    63                 md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
    64                 md = checkfield(md,'fieldname','friction.C','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
    65                 md = checkfield(md,'fieldname','friction.As','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
    66                 if self.coupling==3:
    67                         md = checkfield(md,'fieldname','friction.effective_pressure','NaN',1,'Inf',1,'timeseries',1)
    68                 elif self.coupling > 4:
    69                         raise ValueError('md.friction.coupling larger than 4, not supported yet')
    70         # }}}
    71 
    72         def marshall(self,prefix,md,fid): #{{{
    73                 WriteData(fid,prefix,'name','md.friction.law','data',3,'format','Integer')
    74                 WriteData(fid,prefix,'class','friction','object',self,'fieldname','coupling','format','Integer')
    75                 WriteData(fid,prefix,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2)
    76                 WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',2)
    77                 WriteData(fid,prefix,'class','friction','object',self,'fieldname','As','format','DoubleMat','mattype',2)
    78                 if self.coupling in[3,4]:
    79                         WriteData(fid,prefix,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    80                 elif self.coupling > 4:
    81                         raise ValueError('md.friction.coupling larger than 4, not supported yet')
    82         #}}}
     70    def marshall(self, prefix, md, fid):  #{{{
     71        WriteData(fid, prefix, 'name', 'md.friction.law', 'data', 3, 'format', 'Integer')
     72        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'coupling', 'format', 'Integer')
     73        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'q', 'format', 'DoubleMat', 'mattype', 2)
     74        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'C', 'format', 'DoubleMat', 'mattype', 2)
     75        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'As', 'format', 'DoubleMat', 'mattype', 2)
     76        if self.coupling in[3, 4]:
     77            WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'effective_pressure', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     78        elif self.coupling > 4:
     79            raise ValueError('md.friction.coupling larger than 4, not supported yet')
     80    #}}}
  • issm/trunk-jpl/src/m/classes/frictionshakti.py

    r23716 r24213  
    44from WriteData import WriteData
    55
     6
    67class frictionshakti(object):
    7         """
    8         FRICTIONSHAKTI class definition
     8    """
     9    FRICTIONSHAKTI class definition
    910
    10         Usage:
    11         friction=frictionshakti()
    12         """
     11    Usage:
     12    friction = frictionshakti()
     13    """
    1314
    14         def __init__(self,md): # {{{
    15                 self.coefficient = md.friction.coefficient
    16                 #set defaults
    17                 self.setdefaultparameters()
    18         #}}}
     15    def __init__(self, md): # {{{
     16        self.coefficient = md.friction.coefficient
     17    #set defaults
     18        self.setdefaultparameters()
     19    #}}}
    1920
    20         def __repr__(self): # {{{
    21                 string="Basal shear stress parameters: Sigma_b = coefficient^2 * Neff * u_b\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*(head-b))"
    22                 string="%s\n%s"%(string,fielddisplay(self,"coefficient","friction coefficient [SI]"))
    23                 return string
    24         #}}}
     21    def __repr__(self): # {{{
     22        string = "Basal shear stress parameters: Sigma_b = coefficient^2 * Neff * u_b\n(effective stress Neff = rho_ice * g * thickness + rho_water * g * (head - b))"
     23        string = "%s\n%s" % (string, fielddisplay(self, "coefficient", "friction coefficient [SI]"))
     24        return string
     25    #}}}
    2526
    26         def extrude(self,md): # {{{
    27                 self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1)
    28                 return self
    29         #}}}
     27    def extrude(self, md): # {{{
     28        self.coefficient = project3d(md, 'vector', self.coefficient, 'type', 'node', 'layer', 1)
     29        return self
     30    #}}}
    3031
    31         def setdefaultparameters(self): # {{{
    32                 return self
    33         #}}}
     32    def setdefaultparameters(self): # {{{
     33        return self
     34    #}}}
    3435
    35         def checkconsistency(self,md,solution,analyses):    # {{{
    36                 #Early return
    37                 if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
    38                         return md
     36    def checkconsistency(self, md, solution, analyses):  # {{{
     37        #Early return
     38        if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
     39            return md
    3940
    40                 md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1)
    41                 return md
    42         # }}}
     41        md = checkfield(md, 'fieldname', 'friction.coefficient', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     42        return md
     43    # }}}
    4344
    44         def marshall(self,prefix,md,fid):    # {{{
    45                 yts=md.constants.yts
    46                 WriteData(fid,prefix,'name','md.friction.law','data',8,'format','Integer')
    47                 WriteData(fid,prefix,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
     45    def marshall(self, prefix, md, fid):  # {{{
     46        WriteData(fid, prefix, 'name', 'md.friction.law', 'data', 8, 'format', 'Integer')
     47        WriteData(fid, prefix, 'object', self, 'fieldname', 'coefficient', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
    4848    # }}}
  • issm/trunk-jpl/src/m/classes/frictionwaterlayer.py

    r23784 r24213  
    1 import numpy as np
    21from project3d import project3d
    32from fielddisplay import fielddisplay
     
    76
    87class frictionwaterlayer(object):
    9         """
    10         frictionwaterlayer class definition
     8    """
     9    frictionwaterlayer class definition
    1110
    12         Usage:
    13                 friction=frictionwaterlayer(md);
    14         """
    15         def __init__(self,md): # {{{
    16                 self.coefficient                        = md.friction.coefficient
    17                 self.f                                  = float('NaN')
    18                 self.p                                  = md.friction.p
    19                 self.q                                  = md.friction.q
    20                 self.water_layer                        = float('NaN')
    21         #}}}
    22                
    23         def checkconsistency(self,md,solution,analyses): #{{{
    24                 #Early return
    25                 if ('StressbalanceAnalysis' not in analyses) and ('ThermalAnalysis' not in analyses):
    26                         return
     11    Usage:
     12        friction = frictionwaterlayer(md)
     13    """
     14    def __init__(self, md):  # {{{
     15        self.coefficient = md.friction.coefficient
     16        self.f = float('NaN')
     17        self.p = md.friction.p
     18        self.q = md.friction.q
     19        self.water_layer = float('NaN')
     20    #}}}
    2721
    28                 md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1)
    29                 md = checkfield(md,'fieldname','friction.f','size',[1],'NaN',1,'Inf',1)
    30                 md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
    31                 md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
    32                 md = checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1,'>=',0.)
    33         # }}}
     22    def checkconsistency(self, md, solution, analyses):  #{{{
     23        #Early return
     24        if ('StressbalanceAnalysis' not in analyses) and ('ThermalAnalysis' not in analyses):
     25            return
    3426
    35         def extrude(self,md): # {{{
    36                 self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1)
    37                 self.p=project3d(md,'vector',self.p,'type','element')
    38                 self.q=project3d(md,'vector',self.q,'type','element')
    39                 self.water_layer=project3d(md,'vector',self.water_layer,'type','node','layer',1)
    40                 return self     
    41          # }}}
     27        md = checkfield(md, 'fieldname', 'friction.coefficient', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     28        md = checkfield(md, 'fieldname', 'friction.f', 'size', [1], 'NaN', 1, 'Inf', 1)
     29        md = checkfield(md, 'fieldname', 'friction.q', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
     30        md = checkfield(md, 'fieldname', 'friction.p', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
     31        md = checkfield(md, 'fieldname', 'thermal.spctemperature', 'Inf', 1, 'timeseries', 1, '>=', 0.)
     32    # }}}
    4233
     34    def extrude(self, md):  # {{{
     35        self.coefficient = project3d(md, 'vector', self.coefficient, 'type', 'node', 'layer', 1)
     36        self.p = project3d(md, 'vector', self.p, 'type', 'element')
     37        self.q = project3d(md, 'vector', self.q, 'type', 'element')
     38        self.water_layer = project3d(md, 'vector', self.water_layer, 'type', 'node', 'layer', 1)
     39        return self
     40    # }}}
    4341
    44         def __repr__(self): # {{{
    45                 string='Basal shear stress parameters: tau_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b * 1/f(T)\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*(bed+water_layer), r=q/p and s=1/p)'
    46                 string="%s\n%s"%(string,fielddisplay(self,'coefficient','frictiontemp coefficient [SI]'))
    47                 string="%s\n%s"%(string,fielddisplay(self,'f','f variable for effective pressure'))
    48                 string="%s\n%s"%(string,fielddisplay(self,'p','p exponent'))
    49                 string="%s\n%s"%(string,fielddisplay(self,'q','q exponent'))
    50                 string="%s\n%s"%(string,fielddisplay(self,'water_layer','water thickness at the base of the ice (m)'))
     42    def __repr__(self): # {{{
     43        string = 'Basal shear stress parameters: tau_b = coefficient^2 * Neff ^r * |u_b|^(s - 1) * u_b * 1 / f(T)\n(effective stress Neff = rho_ice * g * thickness + rho_water * g * (bed + water_layer), r = q / p and s = 1 / p)'
     44        string = "%s\n%s" % (string, fielddisplay(self, 'coefficient', 'frictiontemp coefficient [SI]'))
     45        string = "%s\n%s" % (string, fielddisplay(self, 'f', 'f variable for effective pressure'))
     46        string = "%s\n%s" % (string, fielddisplay(self, 'p', 'p exponent'))
     47        string = "%s\n%s" % (string, fielddisplay(self, 'q', 'q exponent'))
     48        string = "%s\n%s" % (string, fielddisplay(self, 'water_layer', 'water thickness at the base of the ice (m)'))
    5149
    52                 return string
    53         #}}}
     50        return string
     51    #}}}
    5452
    55 
    56         def marshall(self,prefix,md,fid): #{{{
    57                 yts=md.constants.yts
    58                
    59                 WriteData(fid,prefix,'name','md.friction.law','data',5,'format','Integer')
    60                 WriteData(fid,prefix,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    61                 WriteData(fid,prefix,'class','friction','object',self,'fieldname','f','format','Double')
    62                 WriteData(fid,prefix,'class','friction','object',self,'fieldname','p','format','DoubleMat','mattype',2)
    63                 WriteData(fid,prefix,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2)
    64                 WriteData(fid,prefix,'class','friction','object',self,'fieldname','water_layer','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    65         #}}}
    66 
    67 
     53    def marshall(self, prefix, md, fid):  #{{{
     54        yts = md.constants.yts
     55        WriteData(fid, prefix, 'name', 'md.friction.law', 'data', 5, 'format', 'Integer')
     56        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'coefficient', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     57        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'f', 'format', 'Double')
     58        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'p', 'format', 'DoubleMat', 'mattype', 2)
     59        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'q', 'format', 'DoubleMat', 'mattype', 2)
     60        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'water_layer', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     61    #}}}
  • issm/trunk-jpl/src/m/classes/frictionweertman.py

    r21049 r24213  
    11from fielddisplay import fielddisplay
    2 from project3d import project3d
    32from checkfield import checkfield
    43from WriteData import WriteData
    54
     5
    66class frictionweertman(object):
    7         """
    8         FRICTIONWEERTMAN class definition
     7    """
     8    FRICTIONWEERTMAN class definition
    99
    10            Usage:
    11               frictionweertman=frictionweertman();
    12         """
     10       Usage:
     11          frictionweertman = frictionweertman()
     12    """
    1313
    14         def __init__(self): # {{{
    15                 self.C = float('NaN')
    16                 self.m = float('NaN')
     14    def __init__(self): # {{{
     15        self.C = float('NaN')
     16        self.m = float('NaN')
    1717
    18                 #set defaults
    19                 self.setdefaultparameters()
     18    #set defaults
     19        self.setdefaultparameters()
    2020
    21                 #}}}
    22         def __repr__(self): # {{{
    23                 string="Weertman sliding law parameters: Sigma_b = C^(-1/m) * |u_b|^(1/m-1) * u_b"
     21    #}}}
    2422
    25                 string="%s\n%s"%(string,fielddisplay(self,"C","friction coefficient [SI]"))
    26                 string="%s\n%s"%(string,fielddisplay(self,"m","m exponent"))
    27                 return string
    28                 #}}}
    29         def setdefaultparameters(self): # {{{
    30                 return self
    31         #}}}
    32         def checkconsistency(self,md,solution,analyses):    # {{{
     23    def __repr__(self):  # {{{
     24        string = "Weertman sliding law parameters: Sigma_b = C^(- 1 / m) * |u_b|^(1 / m - 1) * u_b"
    3325
    34                 #Early return
    35                 if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
    36                         return md
     26        string = "%s\n%s" % (string, fielddisplay(self, "C", "friction coefficient [SI]"))
     27        string = "%s\n%s" % (string, fielddisplay(self, "m", "m exponent"))
     28        return string
     29    #}}}
    3730
    38                 md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1)
    39                 md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
     31    def setdefaultparameters(self):  # {{{
     32        return self
     33    #}}}
    4034
    41                 return md
    42         # }}}
    43         def marshall(self,prefix,md,fid):    # {{{
    44                 WriteData(fid,prefix,'name','md.friction.law','data',2,'format','Integer')
    45                 WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',1)
    46                 WriteData(fid,prefix,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2)
    47         # }}}
     35    def checkconsistency(self, md, solution, analyses):  # {{{
     36
     37        #Early return
     38        if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
     39            return md
     40
     41        md = checkfield(md, 'fieldname', 'friction.C', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     42        md = checkfield(md, 'fieldname', 'friction.m', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
     43
     44        return md
     45    # }}}
     46
     47    def marshall(self, prefix, md, fid):  # {{{
     48        WriteData(fid, prefix, 'name', 'md.friction.law', 'data', 2, 'format', 'Integer')
     49        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'C', 'format', 'DoubleMat', 'mattype', 1)
     50        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'm', 'format', 'DoubleMat', 'mattype', 2)
     51    # }}}
  • issm/trunk-jpl/src/m/classes/frontalforcings.py

    r23716 r24213  
    44from WriteData import WriteData
    55
     6
    67class frontalforcings(object):
    7         """
    8         FRONTAL FORCINGS class definition
     8    """
     9    FRONTAL FORCINGS class definition
    910
    10            Usage:
    11               frontalforcings=frontalforcings();
    12         """
     11       Usage:
     12          frontalforcings = frontalforcings()
     13    """
    1314
    14         def __init__(self): # {{{
    15                 self.meltingrate  = float('NaN')
     15    def __init__(self): # {{{
     16        self.meltingrate = float('NaN')
    1617
    17                 #set defaults
    18                 self.setdefaultparameters()
    19                 #}}}
     18    #set defaults
     19        self.setdefaultparameters()
     20    #}}}
    2021
    21         def __repr__(self): # {{{
    22                 string='   Frontalforcings parameters:'
    23                 string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
     22    def __repr__(self): # {{{
     23        string = '   Frontalforcings parameters:'
     24        string = "%s\n%s" % (string, fielddisplay(self, 'meltingrate', 'melting rate at given location [m / a]'))
    2425
    25                 return string
    26                 #}}}
     26        return string
     27    #}}}
    2728
    28         def extrude(self,md): # {{{
    29                 self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
    30                 return self
    31         #}}}
     29    def extrude(self, md): # {{{
     30        self.meltingrate = project3d(md, 'vector', self.meltingrate, 'type', 'node')
     31        return self
     32    #}}}
    3233
    33         def setdefaultparameters(self): # {{{
    34                 return self
    35         #}}}
     34    def setdefaultparameters(self): # {{{
     35        return self
     36    #}}}
    3637
    37         def checkconsistency(self,md,solution,analyses):    # {{{
    38                 #Early return
    39                 if (solution!='TransientSolution') or (not md.transient.ismovingfront):
    40                         return md
     38    def checkconsistency(self, md, solution, analyses):  # {{{
     39        #Early return
     40        if (solution != 'TransientSolution') or (not md.transient.ismovingfront):
     41            return md
    4142
    42                 md = checkfield(md,'fieldname','frontalforcings.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
    43                 return md
    44         # }}}
     43        md = checkfield(md, 'fieldname', 'frontalforcings.meltingrate', 'NaN', 1, 'Inf', 1, 'timeseries', 1, '>=', 0)
     44        return md
     45    # }}}
    4546
    46         def marshall(self,prefix,md,fid):    # {{{
    47                 yts=md.constants.yts
    48                 WriteData(fid,prefix,'name','md.frontalforcings.parameterization','data',1,'format','Integer')
    49                 WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
    50         # }}}
     47    def marshall(self, prefix, md, fid):  # {{{
     48        yts = md.constants.yts
     49        WriteData(fid, prefix, 'name', 'md.frontalforcings.parameterization', 'data', 1, 'format', 'Integer')
     50        WriteData(fid, prefix, 'object', self, 'fieldname', 'meltingrate', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts, 'scale', 1. / yts)
     51    # }}}
  • issm/trunk-jpl/src/m/classes/frontalforcingsrignot.py

    r23658 r24213  
    1 from fielddisplay import fielddisplay
    2 from project3d import project3d
    31from checkfield import checkfield
    42from WriteData import WriteData
     3from fielddisplay import fielddisplay
     4
    55
    66class frontalforcingsrignot(object):
    7         """
    8         FRONTAL FORCINGS Rignot class definition
     7    """
     8    FRONTAL FORCINGS Rignot class definition
    99
    10            Usage:
    11               frontalforcingsrignot=frontalforcingsrignot();
    12         """
     10       Usage:
     11          frontalforcingsrignot = frontalforcingsrignot()
     12    """
    1313
    14         def __init__(self): # {{{
     14    def __init__(self):  # {{{
     15        self.basin = float('NaN')
     16        self.numberofbasins = 0.
     17        self.subglacial_discharge = float('NaN')
     18        self.thermalforcing = float('NaN')
    1519
    16                 self.basin= float('NaN');
    17                 self.numberofbasins = 0.;
    18                 self.subglacial_discharge = float('NaN');
    19                 self.thermalforcing = float('NaN');
     20    #set defaults
     21        self.setdefaultparameters()
    2022
    21                 #set defaults
    22                 self.setdefaultparameters()
     23    #}}}
    2324
    24                 #}}}
    25         def __repr__(self): # {{{
    26                 string='   Frontalforcings parameters:'
    27                 string="%s\n%s"%(string,fielddisplay(self,'basin','basin ID for vertices'))
    28                 string="%s\n%s"%(string,fielddisplay(self,'numberofbasins','number of basins'))
    29                 string="%s\n%s"%(string,fielddisplay(self,'subglacial_discharge','sum of subglacial discharge for each basin [m/d]'))
    30                 string="%s\n%s"%(string,fielddisplay(self,'thermalforcing','thermal forcing [C]'))
     25    def __repr__(self):  # {{{
     26        string = '   Frontalforcings parameters:'
     27        string = "%s\n%s" % (string, fielddisplay(self, 'basin', 'basin ID for vertices'))
     28        string = "%s\n%s" % (string, fielddisplay(self, 'numberofbasins', 'number of basins'))
     29        string = "%s\n%s" % (string, fielddisplay(self, 'subglacial_discharge', 'sum of subglacial discharge for each basin [m / d]'))
     30        string = "%s\n%s" % (string, fielddisplay(self, 'thermalforcing', 'thermal forcing [C]'))
    3131
    32                 return string
    33                 #}}}
    34         def extrude(self,md): # {{{
    35                 return self
    36         #}}}
    37         def setdefaultparameters(self): # {{{
     32        return string
     33    #}}}
    3834
    39                 return self
    40         #}}}
    41         def checkconsistency(self,md,solution,analyses):    # {{{
     35    def extrude(self, md):  # {{{
     36        return self
     37    #}}}
    4238
    43                 #Early return
    44                 if (solution!='TransientSolution') or (not md.transient.ismovingfront):
    45                     return md
     39    def setdefaultparameters(self):  # {{{
    4640
    47                 md = checkfield(md,'fieldname','frontalforcings.basin','>',0,'nan',1,'Inf',1);
    48                 md = checkfield(md,'fieldname','frontalforcings.numberofbasins','numel',[1]);
    49                 md = checkfield(md,'fieldname','frontalforcings.subglacial_discharge','>=',0,'nan',1,'Inf',1,'timeseries',1);
    50                 md = checkfield(md,'fieldname','frontalforcings.thermalforcing','nan',1,'Inf',1,'timeseries',1);
     41        return self
     42    #}}}
    5143
    52                 return md
    53         # }}}
    54         def marshall(self,prefix,md,fid):    # {{{
     44    def checkconsistency(self, md, solution, analyses):  # {{{
     45        #Early return
     46        if (solution != 'TransientSolution') or (not md.transient.ismovingfront):
     47            return md
    5548
    56             yts=md.constants.yts
     49        md = checkfield(md, 'fieldname', 'frontalforcings.basin', '>', 0, 'nan', 1, 'Inf', 1)
     50        md = checkfield(md, 'fieldname', 'frontalforcings.numberofbasins', 'numel', [1])
     51        md = checkfield(md, 'fieldname', 'frontalforcings.subglacial_discharge', '>=', 0, 'nan', 1, 'Inf', 1, 'timeseries', 1)
     52        md = checkfield(md, 'fieldname', 'frontalforcings.thermalforcing', 'nan', 1, 'Inf', 1, 'timeseries', 1)
     53        return md
     54    # }}}
    5755
    58             WriteData(fid,prefix,'name','md.frontalforcings.parameterization','data',2,'format','Integer')
    59             WriteData(fid,prefix,'object',self,'fieldname','basin','format','DoubleMat','mattype',1);
    60             WriteData(fid,prefix,'object',self,'fieldname','numberofbasins','format','Integer');
    61             WriteData(fid,prefix,'object',self,'fieldname','subglacial_discharge','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    62             WriteData(fid,prefix,'object',self,'fieldname','thermalforcing','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
     56    def marshall(self, prefix, md, fid):  # {{{
     57        WriteData(fid, prefix, 'name', 'md.frontalforcings.parameterization', 'data', 2, 'format', 'Integer')
     58        WriteData(fid, prefix, 'object', self, 'fieldname', 'basin', 'format', 'DoubleMat', 'mattype', 1)
     59        WriteData(fid, prefix, 'object', self, 'fieldname', 'numberofbasins', 'format', 'Integer')
     60        WriteData(fid, prefix, 'object', self, 'fieldname', 'subglacial_discharge', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1)
     61        WriteData(fid, prefix, 'object', self, 'fieldname', 'thermalforcing', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1)
    6362
    64         # }}}
     63    # }}}
  • issm/trunk-jpl/src/m/classes/geometry.py

    r23845 r24213  
    55from WriteData import WriteData
    66
     7
    78class geometry(object):
    8         """
    9         GEOMETRY class definition
     9    """
     10    GEOMETRY class definition
    1011
    11            Usage:
    12               geometry=geometry();
    13         """
     12       Usage:
     13          geometry = geometry()
     14    """
    1415
    15         def __init__(self): # {{{
    16                 self.surface            = float('NaN')
    17                 self.thickness          = float('NaN')
    18                 self.base              = float('NaN')
    19                 self.bed                = float('NaN')
    20                 self.hydrostatic_ratio  = float('NaN')
     16    def __init__(self): # {{{
     17        self.surface = float('NaN')
     18        self.thickness = float('NaN')
     19        self.base = float('NaN')
     20        self.bed = float('NaN')
     21        self.hydrostatic_ratio = float('NaN')
    2122
    22                 #set defaults
    23                 self.setdefaultparameters()
     23    #set defaults
     24        self.setdefaultparameters()
    2425
    25                 #}}}
    26         def __repr__(self): # {{{
     26    #}}}
    2727
    28                 string="   geometry parameters:"
    29                 string="%s\n%s"%(string,fielddisplay(self,'surface','ice upper surface elevation [m]'))
    30                 string="%s\n%s"%(string,fielddisplay(self,'thickness','ice thickness [m]'))
    31                 string="%s\n%s"%(string,fielddisplay(self,'base','ice base elevation [m]'))
    32                 string="%s\n%s"%(string,fielddisplay(self,'bed','bed elevation [m]'))
    33                 return string
    34                 #}}}
    35         def extrude(self,md): # {{{
    36                 self.surface=project3d(md,'vector',self.surface,'type','node')
    37                 self.thickness=project3d(md,'vector',self.thickness,'type','node')
    38                 self.hydrostatic_ratio=project3d(md,'vector',self.hydrostatic_ratio,'type','node')
    39                 self.base=project3d(md,'vector',self.base,'type','node')
    40                 self.bed=project3d(md,'vector',self.bed,'type','node')
    41                 return self
    42         #}}}
    43         def setdefaultparameters(self): # {{{
    44                 return self
    45         #}}}
    46         def checkconsistency(self,md,solution,analyses):    # {{{
     28    def __repr__(self):  # {{{
    4729
    48                 if (solution=='TransientSolution' and md.transient.isgia) or (solution=='GiaSolution'):
    49                         md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'timeseries',1)
    50                 elif solution=='LoveSolution':
    51                         return
    52                 else:
    53                         md = checkfield(md,'fieldname','geometry.surface'  ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    54                         md = checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    55                         md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>',0,'timeseries',1)
    56                         if any(abs(self.thickness-self.surface+self.base)>10**-9):
    57                                 md.checkmessage("equality thickness=surface-base violated")
    58                         if solution=='TransientSolution' and md.transient.isgroundingline:
    59                                 md = checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    60                                 if np.any(self.bed - self.base > 10**-12):
    61                                     md.checkmessage('base<bed on one or more vertex')
    62                                 pos = np.where(md.mask.groundedice_levelset > 0)
    63                                 if np.any(np.abs(self.bed[pos]-self.base[pos])>10**-9):
    64                                     md.checkmessage('equality base=bed on grounded ice violated')
    65                                 md = checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
     30        string = "   geometry parameters:"
     31        string = "%s\n%s" % (string, fielddisplay(self, 'surface', 'ice upper surface elevation [m]'))
     32        string = "%s\n%s" % (string, fielddisplay(self, 'thickness', 'ice thickness [m]'))
     33        string = "%s\n%s" % (string, fielddisplay(self, 'base', 'ice base elevation [m]'))
     34        string = "%s\n%s" % (string, fielddisplay(self, 'bed', 'bed elevation [m]'))
     35        return string
     36    #}}}
    6637
    67                 return md
    68         # }}}
    69         def marshall(self,prefix,md,fid):    # {{{
    70                 WriteData(fid,prefix,'object',self,'fieldname','surface','format','DoubleMat','mattype',1)
    71                 WriteData(fid,prefix,'object',self,'fieldname','thickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    72                 WriteData(fid,prefix,'object',self,'fieldname','base','format','DoubleMat','mattype',1)
    73                 WriteData(fid,prefix,'object',self,'fieldname','bed','format','DoubleMat','mattype',1)
    74                 WriteData(fid,prefix,'object',self,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1)
    75         # }}}
     38    def extrude(self, md):  # {{{
     39        self.surface = project3d(md, 'vector', self.surface, 'type', 'node')
     40        self.thickness = project3d(md, 'vector', self.thickness, 'type', 'node')
     41        self.hydrostatic_ratio = project3d(md, 'vector', self.hydrostatic_ratio, 'type', 'node')
     42        self.base = project3d(md, 'vector', self.base, 'type', 'node')
     43        self.bed = project3d(md, 'vector', self.bed, 'type', 'node')
     44        return self
     45    #}}}
     46
     47    def setdefaultparameters(self):  # {{{
     48        return self
     49    #}}}
     50
     51    def checkconsistency(self, md, solution, analyses):  # {{{
     52        if (solution == 'TransientSolution' and md.transient.isgia) or (solution == 'GiaSolution'):
     53            md = checkfield(md, 'fieldname', 'geometry.thickness', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     54        elif solution == 'LoveSolution':
     55            return
     56        else:
     57            md = checkfield(md, 'fieldname', 'geometry.surface', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     58            md = checkfield(md, 'fieldname', 'geometry.base', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     59            md = checkfield(md, 'fieldname', 'geometry.thickness', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices], '>', 0, 'timeseries', 1)
     60            if any(abs(self.thickness - self.surface + self.base) > 10**- 9):
     61                md.checkmessage("equality thickness = surface-base violated")
     62            if solution == 'TransientSolution' and md.transient.isgroundingline:
     63                md = checkfield(md, 'fieldname', 'geometry.bed', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     64                if np.any(self.bed - self.base > 10**- 12):
     65                    md.checkmessage('base < bed on one or more vertex')
     66                pos = np.where(md.mask.groundedice_levelset > 0)
     67                if np.any(np.abs(self.bed[pos] - self.base[pos]) > 10**- 9):
     68                    md.checkmessage('equality base = bed on grounded ice violated')
     69                md = checkfield(md, 'fieldname', 'geometry.bed', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     70
     71        return md
     72    # }}}
     73
     74    def marshall(self, prefix, md, fid):  # {{{
     75        WriteData(fid, prefix, 'object', self, 'fieldname', 'surface', 'format', 'DoubleMat', 'mattype', 1)
     76        WriteData(fid, prefix, 'object', self, 'fieldname', 'thickness', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     77        WriteData(fid, prefix, 'object', self, 'fieldname', 'base', 'format', 'DoubleMat', 'mattype', 1)
     78        WriteData(fid, prefix, 'object', self, 'fieldname', 'bed', 'format', 'DoubleMat', 'mattype', 1)
     79        WriteData(fid, prefix, 'object', self, 'fieldname', 'hydrostatic_ratio', 'format', 'DoubleMat', 'mattype', 1)
     80    # }}}
  • issm/trunk-jpl/src/m/classes/giaivins.py

    r21584 r24213  
    44from WriteData import WriteData
    55
     6
    67class giaivins(object):
    7         """
    8         GIA class definition
     8    """
     9    GIA class definition
    910
    10            Usage:
    11               giaivins=giaivins();
    12         """
     11       Usage:
     12          giaivins = giaivins()
     13    """
    1314
    14         def __init__(self): # {{{
    15                 self.mantle_viscosity              = float('NaN');
    16                 self.lithosphere_thickness         = float('NaN');
    17                 self.cross_section_shape           = 0;
    18        
    19                 #set defaults
    20                 self.setdefaultparameters()
     15    def __init__(self):  # {{{
     16        self.mantle_viscosity = float('NaN')
     17        self.lithosphere_thickness = float('NaN')
     18        self.cross_section_shape = 0
    2119
    22                 #}}}
    23         def __repr__(self): # {{{
    24                
    25                 string='   giaivins solution parameters:'
    26                
    27                 string="%s\n%s"%(string,fielddisplay(self,'mantle_viscosity','mantle viscosity constraints (NaN means no constraint) (Pa s)'))
    28                 string="%s\n%s"%(string,fielddisplay(self,'lithosphere_thickness','lithosphere thickness constraints (NaN means no constraint) (m)'))
    29                 string="%s\n%s"%(string,fielddisplay(self,'cross_section_shape',"1: square-edged, 2: elliptical-edged surface"))
    30                 return string
    31                 #}}}
    32         def extrude(self,md): # {{{
    33                 self.mantle_viscosity=project3d(md,'vector',self.mantle_viscosity,'type','node')
    34                 self.lithosphere_thickness=project3d(md,'vector',self.lithosphere_thickness,'type','node')
    35                 return self
    36         #}}}
    37         def setdefaultparameters(self): # {{{
     20    #set defaults
     21        self.setdefaultparameters()
    3822
    39                 self.cross_section_shape=1;
     23    #}}}
    4024
    41                 return self
    42         #}}}
    43         def checkconsistency(self,md,solution,analyses):    # {{{
     25    def __repr__(self):  # {{{
     26        string = '   giaivins solution parameters:'
    4427
    45                 # Early return
    46                 if ('GiaAnalysis' not in  analyses):
    47                         return md
    48                
    49                 md = checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>',0)
    50                 md = checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>',0)
    51                 md = checkfield(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2])
     28        string = "%s\n%s" % (string, fielddisplay(self, 'mantle_viscosity', 'mantle viscosity constraints (NaN means no constraint) (Pa s)'))
     29        string = "%s\n%s" % (string, fielddisplay(self, 'lithosphere_thickness', 'lithosphere thickness constraints (NaN means no constraint) (m)'))
     30        string = "%s\n%s" % (string, fielddisplay(self, 'cross_section_shape', "1: square-edged, 2: elliptical - edged surface"))
     31        return string
     32    #}}}
    5233
    53                 #be sure that if we are running a masstransport ice flow model coupled with giaivins, that thickness forcings
    54                 #are not provided into the future.
     34    def extrude(self, md):  # {{{
     35        self.mantle_viscosity = project3d(md, 'vector', self.mantle_viscosity, 'type', 'node')
     36        self.lithosphere_thickness = project3d(md, 'vector', self.lithosphere_thickness, 'type', 'node')
     37        return self
     38    #}}}
    5539
    56                 return md
    57         # }}}
    58         def marshall(self,prefix,md,fid):    # {{{
     40    def setdefaultparameters(self):  # {{{
     41        self.cross_section_shape = 1
     42        return self
     43    #}}}
    5944
    60                 WriteData(fid,prefix,'object',self,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
    61                 WriteData(fid,prefix,'object',self,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',10.**3.);
    62                 WriteData(fid,prefix,'object',self,'fieldname','cross_section_shape','format','Integer');
    63         # }}}
     45    def checkconsistency(self, md, solution, analyses):  # {{{
     46        # Early return
     47        if ('GiaAnalysis' not in analyses):
     48            return md
     49
     50        md = checkfield(md, 'fieldname', 'gia.mantle_viscosity', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices], '>', 0)
     51        md = checkfield(md, 'fieldname', 'gia.lithosphere_thickness', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices], '>', 0)
     52        md = checkfield(md, 'fieldname', 'gia.cross_section_shape', 'numel', [1], 'values', [1, 2])
     53
     54        #be sure that if we are running a masstransport ice flow model coupled with giaivins, that thickness forcings
     55        #are not provided into the future.
     56
     57        return md
     58    # }}}
     59
     60    def marshall(self, prefix, md, fid):  # {{{
     61
     62        WriteData(fid, prefix, 'object', self, 'fieldname', 'mantle_viscosity', 'format', 'DoubleMat', 'mattype', 1)
     63        WriteData(fid, prefix, 'object', self, 'fieldname', 'lithosphere_thickness', 'format', 'DoubleMat', 'mattype', 1, 'scale', 10.**3.)
     64        WriteData(fid, prefix, 'object', self, 'fieldname', 'cross_section_shape', 'format', 'Integer')
     65    # }}}
  • issm/trunk-jpl/src/m/classes/groundingline.py

    r23355 r24213  
    55import MatlabFuncs as m
    66
     7
    78class groundingline(object):
    8         """
    9         GROUNDINGLINE class definition
     9    """
     10    GROUNDINGLINE class definition
    1011
    11            Usage:
    12               groundingline=groundingline();
    13         """
     12       Usage:
     13          groundingline = groundingline()
     14    """
    1415
    15         def __init__(self): # {{{
    16                 self.migration=''
    17                 self.friction_interpolation=''
    18                 self.melt_interpolation=''
     16    def __init__(self): # {{{
     17        self.migration = ''
     18        self.friction_interpolation = ''
     19        self.melt_interpolation = ''
    1920
    20                 #set defaults
    21                 self.setdefaultparameters()
     21    #set defaults
     22        self.setdefaultparameters()
    2223
    23                 #}}}
    24         def __repr__(self): # {{{
    25                 string='   grounding line migration parameters:'
     24    #}}}
    2625
    27                 string="%s\n%s"%(string,fielddisplay(self,'migration','type of grounding line migration: ''SoftMigration'',''SubelementMigration'',''AggressiveMigration'',''Contact'',''None'''))
    28                 string="%s\n%s"%(string,fielddisplay(self,'migration','type of friction interpolation on partially floating elements: ''SubelementFriction1'',''SubelementFriction2'',''NoFrictionOnPartiallyFloating'''))
    29                 string="%s\n%s"%(string,fielddisplay(self,'migration','type of melt interpolation on partially floating elements: ''SubelementMelt1'',''SubelementMelt2'',''NoMeltOnPartiallyFloating'',''FullMeltOnPartiallyFloating'''))
    30                 return string
    31                 #}}}   
    32         def setdefaultparameters(self): # {{{
     26    def __repr__(self):  # {{{
     27        string = '   grounding line migration parameters:'
    3328
    34                 #Type of migration
    35                 self.migration='SubelementMigration'
    36                 self.friction_interpolation='SubelementFriction1'
    37                 self.melt_interpolation='NoMeltOnPartiallyFloating'
     29        string = "%s\n%s" % (string, fielddisplay(self, 'migration', 'type of grounding line migration: ''SoftMigration'', ''SubelementMigration'', ''AggressiveMigration'', ''Contact'', ''None'''))
     30        string = "%s\n%s" % (string, fielddisplay(self, 'migration', 'type of friction interpolation on partially floating elements: ''SubelementFriction1'', ''SubelementFriction2'', ''NoFrictionOnPartiallyFloating'''))
     31        string = "%s\n%s" % (string, fielddisplay(self, 'migration', 'type of melt interpolation on partially floating elements: ''SubelementMelt1'', ''SubelementMelt2'', ''NoMeltOnPartiallyFloating'', ''FullMeltOnPartiallyFloating'''))
     32        return string
     33    #}}}
    3834
    39                 return self
    40         #}}}
    41         def checkconsistency(self,md,solution,analyses):    # {{{
     35    def setdefaultparameters(self):  # {{{
    4236
    43                 md = checkfield(md,'fieldname','groundingline.migration','values',['None','SubelementMigration','AggressiveMigration','SoftMigration','Contact','GroundingOnly'])
    44                 md = checkfield(md,'fieldname','groundingline.friction_interpolation','values',['SubelementFriction1','SubelementFriction2','NoFrictionOnPartiallyFloating'])
    45                 md = checkfield(md,'fieldname','groundingline.melt_interpolation','values',['SubelementMelt1','SubelementMelt2','NoMeltOnPartiallyFloating','FullMeltOnPartiallyFloating'])
     37        #Type of migration
     38        self.migration = 'SubelementMigration'
     39        self.friction_interpolation = 'SubelementFriction1'
     40        self.melt_interpolation = 'NoMeltOnPartiallyFloating'
    4641
    47                 if(not m.strcmp(self.migration,'None') and md.transient.isgroundingline and solution=='TransientSolution'):
    48                         if np.any(np.isnan(md.geometry.bed)):
    49                                 md.checkmessage("requesting grounding line migration, but bathymetry is absent!")
    50                         pos=np.nonzero(md.mask.groundedice_levelset>0.)[0]
    51                         if any(np.abs(md.geometry.base[pos]-md.geometry.bed[pos])>10**-10):
    52                                 md.checkmessage("base not equal to bed on grounded ice!")
    53                         if any(md.geometry.bed - md.geometry.base > 10**-9):
    54                                 md.checkmessage("bed superior to base on floating ice!")
     42        return self
     43    #}}}
    5544
    56                 return md
    57         # }}}
    58         def marshall(self,prefix,md,fid):    # {{{
    59                 WriteData(fid,prefix,'data',self.migration,'name','md.groundingline.migration','format','String')
    60                 WriteData(fid,prefix,'data',self.friction_interpolation,'name','md.groundingline.friction_interpolation','format','String')
    61                 WriteData(fid,prefix,'data',self.melt_interpolation,'name','md.groundingline.melt_interpolation','format','String')
    62         # }}}
     45    def checkconsistency(self, md, solution, analyses):  # {{{
     46
     47        md = checkfield(md, 'fieldname', 'groundingline.migration', 'values', ['None', 'SubelementMigration', 'AggressiveMigration', 'SoftMigration', 'Contact', 'GroundingOnly'])
     48        md = checkfield(md, 'fieldname', 'groundingline.friction_interpolation', 'values', ['SubelementFriction1', 'SubelementFriction2', 'NoFrictionOnPartiallyFloating'])
     49        md = checkfield(md, 'fieldname', 'groundingline.melt_interpolation', 'values', ['SubelementMelt1', 'SubelementMelt2', 'NoMeltOnPartiallyFloating', 'FullMeltOnPartiallyFloating'])
     50
     51        if(not m.strcmp(self.migration, 'None') and md.transient.isgroundingline and solution == 'TransientSolution'):
     52            if np.any(np.isnan(md.geometry.bed)):
     53                md.checkmessage("requesting grounding line migration, but bathymetry is absent!")
     54            pos = np.nonzero(md.mask.groundedice_levelset > 0.)[0]
     55            if any(np.abs(md.geometry.base[pos] - md.geometry.bed[pos]) > 10**- 10):
     56                md.checkmessage("base not equal to bed on grounded ice!")
     57            if any(md.geometry.bed - md.geometry.base > 10**- 9):
     58                md.checkmessage("bed superior to base on floating ice!")
     59
     60        return md
     61    # }}}
     62
     63    def marshall(self, prefix, md, fid):  # {{{
     64        WriteData(fid, prefix, 'data', self.migration, 'name', 'md.groundingline.migration', 'format', 'String')
     65        WriteData(fid, prefix, 'data', self.friction_interpolation, 'name', 'md.groundingline.friction_interpolation', 'format', 'String')
     66        WriteData(fid, prefix, 'data', self.melt_interpolation, 'name', 'md.groundingline.melt_interpolation', 'format', 'String')
     67    # }}}
  • issm/trunk-jpl/src/m/classes/hydrologydc.py

    r23870 r24213  
    1111
    1212    Usage:
    13             hydrologydc=hydrologydc();
     13            hydrologydc = hydrologydc()
    1414    """
    1515
     
    4848        self.eplflip_lock = 0
    4949
    50         #set defaults
     50    #set defaults
    5151        self.setdefaultparameters()
    5252    #}}}
     
    5454    def __repr__(self):  # {{{
    5555        string = '   hydrology Dual Porous Continuum Equivalent parameters:'
    56         string = '   - general parameters'
    57         string = "%s\n%s" % (string, fielddisplay(self, 'water_compressibility', 'compressibility of water [Pa^-1]'))
     56        string = ' - general parameters'
     57        string = "%s\n%s" % (string, fielddisplay(self, 'water_compressibility', 'compressibility of water [Pa^ - 1]'))
    5858        string = "%s\n%s" % (string, fielddisplay(self, 'isefficientlayer', 'do we use an efficient drainage system [1: true 0: false]'))
    5959        string = "%s\n%s" % (string, fielddisplay(self, 'penalty_factor', 'exponent of the value used in the penalisation method [dimensionless]'))
    60         string = "%s\n%s" % (string, fielddisplay(self, 'penalty_lock', 'stabilize unstable constraints that keep zigzagging after n iteration (default is 0,  no stabilization)'))
     60        string = "%s\n%s" % (string, fielddisplay(self, 'penalty_lock', 'stabilize unstable constraints that keep zigzagging after n iteration (default is 0, no stabilization)'))
    6161        string = "%s\n%s" % (string, fielddisplay(self, 'rel_tol', 'tolerance of the nonlinear iteration for the transfer between layers [dimensionless]'))
    6262        string = "%s\n%s" % (string, fielddisplay(self, 'max_iter', 'maximum number of nonlinear iteration'))
    6363        string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of hydrology steps per time step'))
    64         string = "%s\n%s" % (string, fielddisplay(self, 'basal_moulin_input', 'water flux at a given point [m3 s-1]'))
     64        string = "%s\n%s" % (string, fielddisplay(self, 'basal_moulin_input', 'water flux at a given point [m3 s - 1]'))
    6565        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
    6666        string = "%s\n%s" % (string, fielddisplay(self, 'sedimentlimit_flag', 'what kind of upper limit is applied for the inefficient layer'))
     
    8282        string = "%s\n%s" % (string, fielddisplay(self, 'unconfined_flag', 'using an unconfined scheme or not (transitory)'))
    8383        string = "%s\n\t\t%s" % (string, '0: Confined only')
    84         string = "%s\n\t\t%s" % (string, '1: Confined-Unconfined')
    85 
    86         string = "%s\n%s" % (string, '   - for the sediment layer')
     84        string = "%s\n\t\t%s" % (string, '1: Confined - Unconfined')
     85
     86        string = "%s\n%s" % (string, ' - for the sediment layer')
    8787        string = "%s\n%s" % (string, fielddisplay(self, 'spcsediment_head', 'sediment water head constraints (NaN means no constraint) [m above MSL]'))
    88         string = "%s\n%s" % (string, fielddisplay(self, 'sediment_compressibility', 'sediment compressibility [Pa^-1]'))
     88        string = "%s\n%s" % (string, fielddisplay(self, 'sediment_compressibility', 'sediment compressibility [Pa^ - 1]'))
    8989        string = "%s\n%s" % (string, fielddisplay(self, 'sediment_porosity', 'sediment [dimensionless]'))
    9090        string = "%s\n%s" % (string, fielddisplay(self, 'sediment_thickness', 'sediment thickness [m]'))
    91         string = "%s\n%s" % (string, fielddisplay(self, 'sediment_transmitivity', 'sediment transmitivity [m^2/s]'))
     91        string = "%s\n%s" % (string, fielddisplay(self, 'sediment_transmitivity', 'sediment transmitivity [m^2 / s]'))
    9292        string = "%s\n%s" % (string, fielddisplay(self, 'mask_thawed_node', 'IDS is deactivaed (0) on frozen nodes'))
    9393
    9494        if self.isefficientlayer == 1:
    95             string = "%s\n%s" % (string, '   - for the epl layer')
     95            string = "%s\n%s" % (string, ' - for the epl layer')
    9696            string = "%s\n%s" % (string, fielddisplay(self, 'spcepl_head', 'epl water head constraints (NaN means no constraint) [m above MSL]'))
    9797            string = "%s\n%s" % (string, fielddisplay(self, 'mask_eplactive_node', 'active (1) or not (0) EPL'))
    98             string = "%s\n%s" % (string, fielddisplay(self, 'epl_compressibility', 'epl compressibility [Pa^-1]'))
     98            string = "%s\n%s" % (string, fielddisplay(self, 'epl_compressibility', 'epl compressibility [Pa^ - 1]'))
    9999            string = "%s\n%s" % (string, fielddisplay(self, 'epl_porosity', 'epl [dimensionless]'))
    100100            string = "%s\n%s" % (string, fielddisplay(self, 'epl_max_thickness', 'epl maximal thickness [m]'))
     
    102102            string = "%s\n%s" % (string, fielddisplay(self, 'epl_colapse_thickness', 'epl colapsing thickness [m]'))
    103103            string = "%s\n%s" % (string, fielddisplay(self, 'epl_thick_comp', 'epl thickness computation flag'))
    104             string = "%s\n%s" % (string, fielddisplay(self, 'epl_conductivity', 'epl conductivity [m^2/s]'))
    105             string = "%s\n%s" % (string, fielddisplay(self, 'eplflip_lock', 'lock epl activity to avoid flip-floping (default is 0, no stabilization)'))
     104            string = "%s\n%s" % (string, fielddisplay(self, 'epl_conductivity', 'epl conductivity [m^2 / s]'))
     105            string = "%s\n%s" % (string, fielddisplay(self, 'eplflip_lock', 'lock epl activity to avoid flip - floping (default is 0, no stabilization)'))
    106106        return string
    107107
     
    132132        self.leakage_factor = 10.0
    133133        self.requested_outputs = ['default']
    134 
    135134        self.sediment_compressibility = 1.0e-08
    136135        self.sediment_porosity = 0.4
     
    171170
    172171    def checkconsistency(self, md, solution, analyses):  #{{{
    173 
    174172        #Early return
    175173        if 'HydrologyDCInefficientAnalysis' not in analyses and 'HydrologyDCEfficientAnalysis' not in analyses:
     
    254252            WriteData(fid, prefix, 'object', self, 'fieldname', 'eplflip_lock', 'format', 'Integer')
    255253
    256         #process requested outputs
     254    #process requested outputs
    257255        outputs = self.requested_outputs
    258256        indices = [i for i, x in enumerate(outputs) if x == 'default']
  • issm/trunk-jpl/src/m/classes/hydrologyshakti.py

    r23716 r24213  
    33from WriteData import WriteData
    44
     5
    56class hydrologyshakti(object):
    6         """
    7         HYDROLOGYSHAKTI class definition
     7    """
     8    HYDROLOGYSHAKTI class definition
    89
    9            Usage:
    10               hydrologyshakti=hydrologyshakti()
    11         """
     10       Usage:
     11          hydrologyshakti = hydrologyshakti()
     12    """
    1213
    13         def __init__(self): # {{{
    14                 self.head            = float('NaN')
    15                 self.gap_height      = float('NaN')
    16                 self.bump_spacing    = float('NaN')
    17                 self.bump_height    = float('NaN')
    18                 self.englacial_input = float('NaN')
    19                 self.moulin_input    = float('NaN')
    20                 self.reynolds        = float('NaN')
    21                 self.spchead        = float('NaN')
    22                 self.neumannflux    = float('NaN')
    23                 self.relaxation      = 0
    24                 self.storage        = 0
    25                 self.requested_outputs = []
     14    def __init__(self): # {{{
     15        self.head = float('NaN')
     16        self.gap_height = float('NaN')
     17        self.bump_spacing = float('NaN')
     18        self.bump_height = float('NaN')
     19        self.englacial_input = float('NaN')
     20        self.moulin_input = float('NaN')
     21        self.reynolds = float('NaN')
     22        self.spchead = float('NaN')
     23        self.neumannflux = float('NaN')
     24        self.relaxation = 0
     25        self.storage = 0
     26        self.requested_outputs = []
    2627
    27                 #set defaults
    28                 self.setdefaultparameters()
     28    #set defaults
     29        self.setdefaultparameters()
    2930
    30                 #}}}
    31         def __repr__(self): # {{{
    32                 string='   hydrologyshakti solution parameters:'
    33                 string="%s\n%s"%(string,fielddisplay(self,'head','subglacial hydrology water head (m)'))
    34                 string="%s\n%s"%(string,fielddisplay(self,'gap_height','height of gap separating ice to bed (m)'))
    35                 string="%s\n%s"%(string,fielddisplay(self,'bump_spacing','characteristic bedrock bump spacing (m)'))
    36                 string="%s\n%s"%(string,fielddisplay(self,'bump_height','characteristic bedrock bump height (m)'))
    37                 string="%s\n%s"%(string,fielddisplay(self,'englacial_input','liquid water input from englacial to subglacial system (m/yr)'))
    38                 string="%s\n%s"%(string,fielddisplay(self,'moulin_input','liquid water input from moulins (at the vertices) to subglacial system (m^3/s)'))
    39                 string="%s\n%s"%(string,fielddisplay(self,'reynolds','Reynolds'' number'))
    40                 string="%s\n%s"%(string,fielddisplay(self,'neumannflux','water flux applied along the model boundary (m^2/s)'))
    41                 string="%s\n%s"%(string,fielddisplay(self,'spchead','water head constraints (NaN means no constraint) (m)'))
    42                 string="%s\n%s"%(string,fielddisplay(self,'relaxation','under-relaxation coefficient for nonlinear iteration'))
    43                 string="%s\n%s"%(string,fielddisplay(self,'storage','englacial storage coefficient (void ratio)'))
    44                 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
    45                 return string
    46         #}}}
     31    #}}}
     32    def __repr__(self): # {{{
     33        string = '   hydrologyshakti solution parameters:'
     34        string = "%s\n%s" % (string, fielddisplay(self, 'head', 'subglacial hydrology water head (m)'))
     35        string = "%s\n%s" % (string, fielddisplay(self, 'gap_height', 'height of gap separating ice to bed (m)'))
     36        string = "%s\n%s" % (string, fielddisplay(self, 'bump_spacing', 'characteristic bedrock bump spacing (m)'))
     37        string = "%s\n%s" % (string, fielddisplay(self, 'bump_height', 'characteristic bedrock bump height (m)'))
     38        string = "%s\n%s" % (string, fielddisplay(self, 'englacial_input', 'liquid water input from englacial to subglacial system (m / yr)'))
     39        string = "%s\n%s" % (string, fielddisplay(self, 'moulin_input', 'liquid water input from moulins (at the vertices) to subglacial system (m^3 / s)'))
     40        string = "%s\n%s" % (string, fielddisplay(self, 'reynolds', 'Reynolds'' number'))
     41        string = "%s\n%s" % (string, fielddisplay(self, 'neumannflux', 'water flux applied along the model boundary (m^2 / s)'))
     42        string = "%s\n%s" % (string, fielddisplay(self, 'spchead', 'water head constraints (NaN means no constraint) (m)'))
     43        string = "%s\n%s" % (string, fielddisplay(self, 'relaxation', 'under - relaxation coefficient for nonlinear iteration'))
     44        string = "%s\n%s" % (string, fielddisplay(self, 'storage', 'englacial storage coefficient (void ratio)'))
     45        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
     46        return string
     47    #}}}
    4748
    48         def extrude(self,md): # {{{
    49                 return self
    50         #}}}
     49    def extrude(self, md): # {{{
     50        return self
     51    #}}}
    5152
    52         def setdefaultparameters(self): # {{{
    53                 # Set under-relaxation parameter to be 1 (no under-relaxation of nonlinear iteration)
    54                 self.relaxation=1
    55                 self.storage=0
    56                 self.requested_outputs=['default']
    57                 return self
    58         #}}}
     53    def setdefaultparameters(self): # {{{
     54        # Set under - relaxation parameter to be 1 (no under - relaxation of nonlinear iteration)
     55        self.relaxation = 1
     56        self.storage = 0
     57        self.requested_outputs = ['default']
     58        return self
     59    #}}}
    5960
    60         def defaultoutputs(self,md): # {{{
    61                 list = ['HydrologyHead','HydrologyGapHeight','EffectivePressure','HydrologyBasalFlux','DegreeOfChannelization']
    62                 return list
    63         #}}}
     61    def defaultoutputs(self, md): # {{{
     62        list = ['HydrologyHead', 'HydrologyGapHeight', 'EffectivePressure', 'HydrologyBasalFlux', 'DegreeOfChannelization']
     63        return list
     64    #}}}
    6465
    65         def checkconsistency(self,md,solution,analyses):    # {{{
    66                 #Early return
    67                 if 'HydrologyShaktiAnalysis' not in analyses:
    68                         return md
     66    def checkconsistency(self, md, solution, analyses):  # {{{
     67        #Early return
     68        if 'HydrologyShaktiAnalysis' not in analyses:
     69            return md
    6970
    70                 md = checkfield(md,'fieldname','hydrology.head','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    71                 md = checkfield(md,'fieldname','hydrology.gap_height','>=',0,'size',[md.mesh.numberofelements],'NaN',1,'Inf',1)
    72                 md = checkfield(md,'fieldname','hydrology.bump_spacing','>',0,'size',[md.mesh.numberofelements],'NaN',1,'Inf',1)
    73                 md = checkfield(md,'fieldname','hydrology.bump_height','>=',0,'size',[md.mesh.numberofelements],'NaN',1,'Inf',1)
    74                 md = checkfield(md,'fieldname','hydrology.englacial_input','>=',0,'NaN',1,'Inf',1,'timeseries',1)
    75                 md = checkfield(md,'fieldname','hydrology.moulin_input','>=',0,'NaN',1,'Inf',1,'timeseries',1)
    76                 md = checkfield(md,'fieldname','hydrology.reynolds','>',0,'size',[md.mesh.numberofelements],'NaN',1,'Inf',1)
    77                 md = checkfield(md,'fieldname','hydrology.neumannflux','timeseries',1,'NaN',1,'Inf',1)
    78                 md = checkfield(md,'fieldname','hydrology.spchead','size',[md.mesh.numberofvertices])
    79                 md = checkfield(md,'fieldname','hydrology.relaxation','>=',0)
    80                 md = checkfield(md,'fieldname','hydrology.storage','>=',0)
    81                 md = checkfield(md,'fieldname','hydrology.requested_outputs','stringrow',1)
    82                 return md
    83         # }}}
     71        md = checkfield(md, 'fieldname', 'hydrology.head', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
     72        md = checkfield(md, 'fieldname', 'hydrology.gap_height', '>=', 0, 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1)
     73        md = checkfield(md, 'fieldname', 'hydrology.bump_spacing', '>', 0, 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1)
     74        md = checkfield(md, 'fieldname', 'hydrology.bump_height', '>=', 0, 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1)
     75        md = checkfield(md, 'fieldname', 'hydrology.englacial_input', '>=', 0, 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     76        md = checkfield(md, 'fieldname', 'hydrology.moulin_input', '>=', 0, 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     77        md = checkfield(md, 'fieldname', 'hydrology.reynolds', '>', 0, 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1)
     78        md = checkfield(md, 'fieldname', 'hydrology.neumannflux', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     79        md = checkfield(md, 'fieldname', 'hydrology.spchead', 'size', [md.mesh.numberofvertices])
     80        md = checkfield(md, 'fieldname', 'hydrology.relaxation', '>=', 0)
     81        md = checkfield(md, 'fieldname', 'hydrology.storage', '>=', 0)
     82        md = checkfield(md, 'fieldname', 'hydrology.requested_outputs', 'stringrow', 1)
     83        return md
     84    # }}}
    8485
    85         def marshall(self,prefix,md,fid):    # {{{
    86                 yts=md.constants.yts
     86    def marshall(self, prefix, md, fid):  # {{{
     87        yts = md.constants.yts
    8788
    88                 WriteData(fid,prefix,'name','md.hydrology.model','data',3,'format','Integer')
    89                 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','head','format','DoubleMat','mattype',1)
    90                 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','gap_height','format','DoubleMat','mattype',2)
    91                 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','bump_spacing','format','DoubleMat','mattype',2)
    92                 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','bump_height','format','DoubleMat','mattype',2)
    93                 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','englacial_input','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    94                 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','moulin_input','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    95                 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','reynolds','format','DoubleMat','mattype',2)
    96                 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','neumannflux','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts)
    97                 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','spchead','format','DoubleMat','mattype',1)
    98                 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','relaxation','format','Double')
    99                 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','storage','format','Double')
    100                 #process requested outputs
    101                 outputs = self.requested_outputs
    102                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    103                 if len(indices) > 0:
    104                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    105                         outputs    =outputscopy
    106                 WriteData(fid,prefix,'data',outputs,'name','md.hydrology.requested_outputs','format','StringArray')
    107         # }}}
     89        WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 3, 'format', 'Integer')
     90        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'head', 'format', 'DoubleMat', 'mattype', 1)
     91        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'gap_height', 'format', 'DoubleMat', 'mattype', 2)
     92        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'bump_spacing', 'format', 'DoubleMat', 'mattype', 2)
     93        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'bump_height', 'format', 'DoubleMat', 'mattype', 2)
     94        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'englacial_input', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     95        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'moulin_input', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     96        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'reynolds', 'format', 'DoubleMat', 'mattype', 2)
     97        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'neumannflux', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
     98        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'spchead', 'format', 'DoubleMat', 'mattype', 1)
     99        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'relaxation', 'format', 'Double')
     100        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'storage', 'format', 'Double')
     101    #process requested outputs
     102        outputs = self.requested_outputs
     103        indices = [i for i, x in enumerate(outputs) if x == 'default']
     104        if len(indices) > 0:
     105            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     106            outputs = outputscopy
     107        WriteData(fid, prefix, 'data', outputs, 'name', 'md.hydrology.requested_outputs', 'format', 'StringArray')
     108    # }}}
  • issm/trunk-jpl/src/m/classes/hydrologyshreve.py

    r22283 r24213  
    33from WriteData import WriteData
    44
     5
    56class hydrologyshreve(object):
    6         """
    7         HYDROLOGYSHREVE class definition
     7    """
     8    HYDROLOGYSHREVE class definition
    89
    9            Usage:
    10               hydrologyshreve=hydrologyshreve();
    11         """
     10       Usage:
     11          hydrologyshreve = hydrologyshreve()
     12    """
    1213
    13         def __init__(self): # {{{
    14                 self.spcwatercolumn = float('NaN')
    15                 self.stabilization = 0
    16                 self.requested_outputs = []
    17                 #set defaults
    18                 self.setdefaultparameters()
     14    def __init__(self): # {{{
     15        self.spcwatercolumn = float('NaN')
     16        self.stabilization = 0
     17        self.requested_outputs = []
     18    #set defaults
     19        self.setdefaultparameters()
    1920
    20                 #}}}
    21         def __repr__(self): # {{{
    22                
    23                 string='   hydrologyshreve solution parameters:'
    24                 string="%s\n%s"%(string,fielddisplay(self,'spcwatercolumn','water thickness constraints (NaN means no constraint) [m]'))
    25                 string="%s\n%s"%(string,fielddisplay(self,'stabilization','artificial diffusivity (default is 1). can be more than 1 to increase diffusivity.'))
    26                 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
    27                 return string
    28                 #}}}
    29         def extrude(self,md): # {{{
    30                 return self
    31         #}}}
    32         def setdefaultparameters(self): # {{{
    33                
    34                 #Type of stabilization to use 0:nothing 1:artificial_diffusivity
    35                 self.stabilization=1
    36                 self.requested_outputs= ['default']
    37                 return self
    38         #}}}
    39         def defaultoutputs(self,md): # {{{
    40                 list = ['Watercolumn','HydrologyWaterVx','HydrologyWaterVy']
    41                 return list
    42         #}}}
     21    #}}}
    4322
    44         def checkconsistency(self,md,solution,analyses):    # {{{
    45                
    46                 #Early return
    47                 if 'HydrologyShreveAnalysis' not in analyses:
    48                         return md
     23    def __repr__(self):  # {{{
    4924
    50                 md = checkfield(md,'fieldname','hydrology.spcwatercolumn','Inf',1,'timeseries',1)
    51                 md = checkfield(md,'fieldname','hydrology.stabilization','>=',0)
    52                 md = checkfield(md,'fieldname','hydrology.requested_outputs','stringrow',1)
    53                 return md
    54         # }}}
    55         def marshall(self,prefix,md,fid):    # {{{
    56                 WriteData(fid,prefix,'name','md.hydrology.model','data',2,'format','Integer');
    57                 WriteData(fid,prefix,'object',self,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    58                 WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Double')
    59                 #process requested outputs
    60                 outputs = self.requested_outputs
    61                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    62                 if len(indices) > 0:
    63                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    64                         outputs    =outputscopy
    65                 WriteData(fid,prefix,'data',outputs,'name','md.hydrology.requested_outputs','format','StringArray')
     25        string = '   hydrologyshreve solution parameters:'
     26        string = "%s\n%s" % (string, fielddisplay(self, 'spcwatercolumn', 'water thickness constraints (NaN means no constraint) [m]'))
     27        string = "%s\n%s" % (string, fielddisplay(self, 'stabilization', 'artificial diffusivity (default is 1). can be more than 1 to increase diffusivity.'))
     28        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
     29        return string
     30    #}}}
    6631
    67         # }}}
     32    def extrude(self, md):  # {{{
     33        return self
     34    #}}}
     35
     36    def setdefaultparameters(self):  # {{{
     37        #Type of stabilization to use 0:nothing 1:artificial_diffusivity
     38        self.stabilization = 1
     39        self.requested_outputs = ['default']
     40        return self
     41    #}}}
     42
     43    def defaultoutputs(self, md):  # {{{
     44        list = ['Watercolumn', 'HydrologyWaterVx', 'HydrologyWaterVy']
     45        return list
     46    #}}}
     47
     48    def checkconsistency(self, md, solution, analyses):  # {{{
     49        #Early return
     50        if 'HydrologyShreveAnalysis' not in analyses:
     51            return md
     52
     53        md = checkfield(md, 'fieldname', 'hydrology.spcwatercolumn', 'Inf', 1, 'timeseries', 1)
     54        md = checkfield(md, 'fieldname', 'hydrology.stabilization', '>=', 0)
     55        md = checkfield(md, 'fieldname', 'hydrology.requested_outputs', 'stringrow', 1)
     56        return md
     57    # }}}
     58
     59    def marshall(self, prefix, md, fid):  # {{{
     60        WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 2, 'format', 'Integer')
     61        WriteData(fid, prefix, 'object', self, 'fieldname', 'spcwatercolumn', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     62        WriteData(fid, prefix, 'object', self, 'fieldname', 'stabilization', 'format', 'Double')
     63    #process requested outputs
     64        outputs = self.requested_outputs
     65        indices = [i for i, x in enumerate(outputs) if x == 'default']
     66        if len(indices) > 0:
     67            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     68            outputs = outputscopy
     69        WriteData(fid, prefix, 'data', outputs, 'name', 'md.hydrology.requested_outputs', 'format', 'StringArray')
     70
     71    # }}}
  • issm/trunk-jpl/src/m/classes/independent.py

    r21303 r24213  
    55from MatlabFuncs import *
    66
     7
    78class independent(object):
    8         """
    9         INDEPENDENT class definition
     9    """
     10    INDEPENDENT class definition
    1011
    11            Usage:
    12               independent=independent();
    13         """
     12       Usage:
     13          independent = independent()
     14    """
    1415
    15         def __init__(self,*args):    # {{{
    16                 self.name                = ''
    17                 self.type                = ''
    18                 self.fos_forward_index    = float('NaN')
    19                 self.fov_forward_indices = np.array([])
    20                 self.nods                = 0
     16    def __init__(self, *args):  # {{{
     17        self.name = ''
     18        self.type = ''
     19        self.fos_forward_index = float('NaN')
     20        self.fov_forward_indices = np.array([])
     21        self.nods = 0
    2122
    22                 #set defaults
    23                 self.setdefaultparameters()
     23    #set defaults
     24        self.setdefaultparameters()
    2425
    25                 #use provided options to change fields
    26                 options=pairoptions(*args)
     26    #use provided options to change fields
     27        options = pairoptions(*args)
    2728
    28                 #OK get other fields
    29                 self=options.AssignObjectFields(self)
    30         # }}}
    31         def __repr__(self):    # {{{
    32                 s ="   independent variable:\n"
     29    #OK get other fields
     30        self = options.AssignObjectFields(self)
     31    # }}}
    3332
    34                 s+="%s\n" % fielddisplay(self,'name',"variable name (must match corresponding String)")
    35                 s+="%s\n" % fielddisplay(self,'type',"type of variable ('vertex' or 'scalar')")
    36                 if not np.isnan(self.fos_forward_index):
    37                         s+="%s\n" % fielddisplay(self,'fos_forward_index',"index for fos_foward driver of ADOLC")
    38                 if np.any(np.logical_not(np.isnan(self.fov_forward_indices))):
    39                         s+="%s\n" % fielddisplay(self,'fov_forward_indices',"indices for fov_foward driver of ADOLC")
     33    def __repr__(self):  # {{{
     34        s = "   independent variable:\n"
    4035
    41                 return s
    42         # }}}
    43         def setdefaultparameters(self):    # {{{
    44                 #do nothing
    45                 return self
    46         # }}}
    47         def checkconsistency(self,md,i,solution,analyses,driver):    # {{{
    48                 if not np.isnan(self.fos_forward_index):
    49                         if not strcmpi(driver,'fos_forward'):
    50                                 raise TypeError("cannot declare an independent with a fos_forward_index when the driver is not fos_forward!")
    51                         if self.nods==0:
    52                                 raise TypeError("independent checkconsistency error: nods should be set to the size of the independent variable")
     36        s += "%s\n" % fielddisplay(self, 'name', "variable name (must match corresponding String)")
     37        s += "%s\n" % fielddisplay(self, 'type', "type of variable ('vertex' or 'scalar')")
     38        if not np.isnan(self.fos_forward_index):
     39            s += "%s\n" % fielddisplay(self, 'fos_forward_index', "index for fos_foward driver of ADOLC")
     40        if np.any(np.logical_not(np.isnan(self.fov_forward_indices))):
     41            s += "%s\n" % fielddisplay(self, 'fov_forward_indices', "indices for fov_foward driver of ADOLC")
    5342
    54                 if len(self.fov_forward_indices) > 0:
    55                         if not strcmpi(driver,'fov_forward'):
    56                                 raise TypeError("cannot declare an independent with fov_forward_indices when the driver is not fov_forward!")
    57                         if self.nods==0:
    58                                 raise TypeError("independent checkconsistency error: nods should be set to the size of the independent variable")
    59                         md = checkfield(md,'fieldname',"autodiff.independents[%d].fov_forward_indices" % i,'>=',1,'<=',self.nods)
     43        return s
     44    # }}}
    6045
    61                 return md
    62         # }}}
    63         def typetoscalar(self):    # {{{
    64                 if   strcmpi(self.type,'scalar'):
    65                         scalar=0
    66                 elif strcmpi(self.type,'vertex'):
    67                         scalar=1
     46    def setdefaultparameters(self):  # {{{
     47        #do nothing
     48        return self
     49    # }}}
    6850
    69                 return scalar
    70         # }}}
     51    def checkconsistency(self, md, i, solution, analyses, driver):  # {{{
     52        if not np.isnan(self.fos_forward_index):
     53            if not strcmpi(driver, 'fos_forward'):
     54                raise TypeError("cannot declare an independent with a fos_forward_index when the driver is not fos_forward!")
     55            if self.nods == 0:
     56                raise TypeError("independent checkconsistency error: nods should be set to the size of the independent variable")
     57
     58        if len(self.fov_forward_indices) > 0:
     59            if not strcmpi(driver, 'fov_forward'):
     60                raise TypeError("cannot declare an independent with fov_forward_indices when the driver is not fov_forward!")
     61            if self.nods == 0:
     62                raise TypeError("independent checkconsistency error: nods should be set to the size of the independent variable")
     63            md = checkfield(md, 'fieldname', "autodiff.independents[%d].fov_forward_indices" % i, '>=', 1, '<=', self.nods)
     64
     65        return md
     66    # }}}
     67
     68    def typetoscalar(self):  # {{{
     69        if strcmpi(self.type, 'scalar'):
     70            scalar = 0
     71        elif strcmpi(self.type, 'vertex'):
     72            scalar = 1
     73
     74        return scalar
     75    # }}}
  • issm/trunk-jpl/src/m/classes/initialization.py

    r23833 r24213  
    44from checkfield import checkfield
    55from WriteData import WriteData
    6 import MatlabFuncs as m
     6
    77
    88class initialization(object):
    99    """
    1010    INITIALIZATION class definition
    11    
     11
    1212    Usage:
    13     initialization=initialization();
     13    initialization = initialization()
    1414    """
    1515
    16     def __init__(self): # {{{
    17                    
    18         self.vx            = float('NaN')
    19         self.vy            = float('NaN')
    20         self.vz            = float('NaN')
    21         self.vel           = float('NaN')
    22         self.enthalpy      = float('NaN')
    23         self.pressure      = float('NaN')
    24         self.temperature   = float('NaN')
     16    def __init__(self):  # {{{
     17
     18        self.vx = float('NaN')
     19        self.vy = float('NaN')
     20        self.vz = float('NaN')
     21        self.vel = float('NaN')
     22        self.enthalpy = float('NaN')
     23        self.pressure = float('NaN')
     24        self.temperature = float('NaN')
    2525        self.waterfraction = float('NaN')
    26         self.watercolumn   = float('NaN')
     26        self.watercolumn = float('NaN')
    2727        self.sediment_head = float('NaN')
    28         self.epl_head      = float('NaN')
     28        self.epl_head = float('NaN')
    2929        self.epl_thickness = float('NaN')
    3030
    31         #set defaults
     31    #set defaults
    3232        self.setdefaultparameters()
    3333
    34         #}}}
    35     def __repr__(self): # {{{
    36         string='   initial field values:'
    37         string="%s\n%s"%(string,fielddisplay(self,'vx','x component of velocity [m/yr]'))
    38         string="%s\n%s"%(string,fielddisplay(self,'vy','y component of velocity [m/yr]'))
    39         string="%s\n%s"%(string,fielddisplay(self,'vz','z component of velocity [m/yr]'))
    40         string="%s\n%s"%(string,fielddisplay(self,'vel','velocity norm [m/yr]'))
    41         string="%s\n%s"%(string,fielddisplay(self,'pressure','pressure [Pa]'))
    42         string="%s\n%s"%(string,fielddisplay(self,'temperature','temperature [K]'))
    43         string="%s\n%s"%(string,fielddisplay(self,'enthalpy','enthalpy [J]'))
    44         string="%s\n%s"%(string,fielddisplay(self,'waterfraction','fraction of water in the ice'))
    45         string="%s\n%s"%(string,fielddisplay(self,'watercolumn','thickness of subglacial water [m]'))
    46         string="%s\n%s"%(string,fielddisplay(self,'sediment_head','sediment water head of subglacial system [m]'))
    47         string="%s\n%s"%(string,fielddisplay(self,'epl_head','epl water head of subglacial system [m]'))
    48         string="%s\n%s"%(string,fielddisplay(self,'epl_thickness','thickness of the epl [m]'))
     34    #}}}
     35
     36    def __repr__(self):  # {{{
     37        string = '   initial field values:'
     38        string = "%s\n%s" % (string, fielddisplay(self, 'vx', 'x component of velocity [m / yr]'))
     39        string = "%s\n%s" % (string, fielddisplay(self, 'vy', 'y component of velocity [m / yr]'))
     40        string = "%s\n%s" % (string, fielddisplay(self, 'vz', 'z component of velocity [m / yr]'))
     41        string = "%s\n%s" % (string, fielddisplay(self, 'vel', 'velocity norm [m / yr]'))
     42        string = "%s\n%s" % (string, fielddisplay(self, 'pressure', 'pressure [Pa]'))
     43        string = "%s\n%s" % (string, fielddisplay(self, 'temperature', 'temperature [K]'))
     44        string = "%s\n%s" % (string, fielddisplay(self, 'enthalpy', 'enthalpy [J]'))
     45        string = "%s\n%s" % (string, fielddisplay(self, 'waterfraction', 'fraction of water in the ice'))
     46        string = "%s\n%s" % (string, fielddisplay(self, 'watercolumn', 'thickness of subglacial water [m]'))
     47        string = "%s\n%s" % (string, fielddisplay(self, 'sediment_head', 'sediment water head of subglacial system [m]'))
     48        string = "%s\n%s" % (string, fielddisplay(self, 'epl_head', 'epl water head of subglacial system [m]'))
     49        string = "%s\n%s" % (string, fielddisplay(self, 'epl_thickness', 'thickness of the epl [m]'))
    4950
    5051        return string
    51         #}}}
    52     def extrude(self,md): # {{{
    53         self.vx=project3d(md,'vector',self.vx,'type','node')
    54         self.vy=project3d(md,'vector',self.vy,'type','node')
    55         self.vz=project3d(md,'vector',self.vz,'type','node')
    56         self.vel=project3d(md,'vector',self.vel,'type','node')
    57         self.temperature=project3d(md,'vector',self.temperature,'type','node')
    58         self.enthalpy=project3d(md,'vector',self.enthalpy,'type','node')
    59         self.waterfraction=project3d(md,'vector',self.waterfraction,'type','node')
    60         self.watercolumn=project3d(md,'vector',self.watercolumn,'type','node')
    61         self.sediment_head=project3d(md,'vector',self.sediment_head,'type','node','layer',1)
    62         self.epl_head=project3d(md,'vector',self.epl_head,'type','node','layer',1)
    63         self.epl_thickness=project3d(md,'vector',self.epl_thickness,'type','node','layer',1)
     52    #}}}
     53
     54    def extrude(self, md):  # {{{
     55        self.vx = project3d(md, 'vector', self.vx, 'type', 'node')
     56        self.vy = project3d(md, 'vector', self.vy, 'type', 'node')
     57        self.vz = project3d(md, 'vector', self.vz, 'type', 'node')
     58        self.vel = project3d(md, 'vector', self.vel, 'type', 'node')
     59        self.temperature = project3d(md, 'vector', self.temperature, 'type', 'node')
     60        self.enthalpy = project3d(md, 'vector', self.enthalpy, 'type', 'node')
     61        self.waterfraction = project3d(md, 'vector', self.waterfraction, 'type', 'node')
     62        self.watercolumn = project3d(md, 'vector', self.watercolumn, 'type', 'node')
     63        self.sediment_head = project3d(md, 'vector', self.sediment_head, 'type', 'node', 'layer', 1)
     64        self.epl_head = project3d(md, 'vector', self.epl_head, 'type', 'node', 'layer', 1)
     65        self.epl_thickness = project3d(md, 'vector', self.epl_thickness, 'type', 'node', 'layer', 1)
    6466
    6567        #Lithostatic pressure by default
    66         #        self.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface[:,0]-md.mesh.z)
    67         #self.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.z.reshape(-1,))
     68        #        self.pressure = md.constants.g * md.materials.rho_ice * (md.geometry.surface[:, 0] - md.mesh.z)
     69        #self.pressure = md.constants.g * md.materials.rho_ice * (md.geometry.surface-md.mesh.z.reshape(- 1, ))
    6870
    69         if np.ndim(md.geometry.surface)==2:
     71        if np.ndim(md.geometry.surface) == 2:
    7072            print('Reshaping md.geometry.surface for you convenience but you should fix it in you files')
    71             self.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface.reshape(-1,)-md.mesh.z)
     73            self.pressure = md.constants.g * md.materials.rho_ice * (md.geometry.surface.reshape(- 1, ) - md.mesh.z)
    7274        else:
    73             self.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.z)
     75            self.pressure = md.constants.g * md.materials.rho_ice * (md.geometry.surface - md.mesh.z)
    7476
    7577        return self
    7678    #}}}
    77     def setdefaultparameters(self): # {{{
     79
     80    def setdefaultparameters(self):  # {{{
    7881        return self
    7982    #}}}
    80     def checkconsistency(self,md,solution,analyses):    # {{{
     83
     84    def checkconsistency(self, md, solution, analyses):  # {{{
    8185        if 'StressbalanceAnalysis' in analyses:
    82             if not np.any(np.logical_or(np.isnan(md.initialization.vx),np.isnan(md.initialization.vy))):
    83                 md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    84                 md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
     86            if not np.any(np.logical_or(np.isnan(md.initialization.vx), np.isnan(md.initialization.vy))):
     87                md = checkfield(md, 'fieldname', 'initialization.vx', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     88                md = checkfield(md, 'fieldname', 'initialization.vy', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
    8589        if 'MasstransportAnalysis' in analyses:
    86             md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    87             md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
     90            md = checkfield(md, 'fieldname', 'initialization.vx', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     91            md = checkfield(md, 'fieldname', 'initialization.vy', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
    8892        if 'BalancethicknessAnalysis' in analyses:
    89             md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    90             md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
     93            md = checkfield(md, 'fieldname', 'initialization.vx', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     94            md = checkfield(md, 'fieldname', 'initialization.vy', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
    9195            #Triangle with zero velocity
    92             if np.any(np.logical_and(np.sum(np.abs(md.initialization.vx[md.mesh.elements-1]),axis=1)==0,\
    93                                            np.sum(np.abs(md.initialization.vy[md.mesh.elements-1]),axis=1)==0)):
     96            if np.any(np.logical_and(np.sum(np.abs(md.initialization.vx[md.mesh.elements - 1]), axis=1) == 0,
     97                                     np.sum(np.abs(md.initialization.vy[md.mesh.elements - 1]), axis=1) == 0)):
    9498                md.checkmessage("at least one triangle has all its vertices with a zero velocity")
    9599        if 'ThermalAnalysis' in analyses:
    96             md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    97             md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    98             md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    99             if md.mesh.dimension()==3:
    100                 md = checkfield(md,'fieldname','initialization.vz','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    101             md = checkfield(md,'fieldname','initialization.pressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
     100            md = checkfield(md, 'fieldname', 'initialization.vx', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     101            md = checkfield(md, 'fieldname', 'initialization.vy', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     102            md = checkfield(md, 'fieldname', 'initialization.temperature', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     103            if md.mesh.dimension() == 3:
     104                md = checkfield(md, 'fieldname', 'initialization.vz', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     105            md = checkfield(md, 'fieldname', 'initialization.pressure', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
    102106            if ('EnthalpyAnalysis' in analyses and md.thermal.isenthalpy):
    103                 md = checkfield(md,'fieldname','initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices])
    104                 md = checkfield(md,'fieldname','initialization.watercolumn'  ,'>=',0,'size',[md.mesh.numberofvertices])
     107                md = checkfield(md, 'fieldname', 'initialization.waterfraction', '>=', 0, 'size', [md.mesh.numberofvertices])
     108                md = checkfield(md, 'fieldname', 'initialization.watercolumn', '>=', 0, 'size', [md.mesh.numberofvertices])
    105109                pos = np.nonzero(md.initialization.waterfraction > 0.)[0]
    106110                if(pos.size):
    107                     md = checkfield(md,'fieldname', 'delta Tpmp', 'field', np.absolute(md.initialization.temperature[pos]-(md.materials.meltingpoint-md.materials.beta*md.initialization.pressure[pos])),'<',1e-11,    'message','set temperature to pressure melting point at locations with waterfraction>0');
     111                    md = checkfield(md, 'fieldname', 'delta Tpmp', 'field', np.absolute(md.initialization.temperature[pos] - (md.materials.meltingpoint - md.materials.beta * md.initialization.pressure[pos])), '<', 1e-11, 'message', 'set temperature to pressure melting point at locations with waterfraction > 0')
    108112        if 'HydrologyShreveAnalysis' in analyses:
    109             if hasattr(md.hydrology,'hydrologyshreve'):
    110                 md = checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
     113            if hasattr(md.hydrology, 'hydrologyshreve'):
     114                md = checkfield(md, 'fieldname', 'initialization.watercolumn', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
    111115        if 'HydrologyDCInefficientAnalysis' in analyses:
    112             if hasattr(md.hydrology,'hydrologydc'):
    113                 md = checkfield(md,'fieldname','initialization.sediment_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
     116            if hasattr(md.hydrology, 'hydrologydc'):
     117                md = checkfield(md, 'fieldname', 'initialization.sediment_head', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
    114118        if 'HydrologyDCEfficientAnalysis' in analyses:
    115             if hasattr(md.hydrology,'hydrologydc'):
    116                 if md.hydrology.isefficientlayer==1:
    117                     md = checkfield(md,'fieldname','initialization.epl_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    118                     md = checkfield(md,'fieldname','initialization.epl_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
     119            if hasattr(md.hydrology, 'hydrologydc'):
     120                if md.hydrology.isefficientlayer == 1:
     121                    md = checkfield(md, 'fieldname', 'initialization.epl_head', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     122                    md = checkfield(md, 'fieldname', 'initialization.epl_thickness', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
    119123
    120124        return md
    121125    # }}}
    122     def marshall(self,prefix,md,fid):    # {{{
    123126
    124         yts=md.constants.yts
     127    def marshall(self, prefix, md, fid):  # {{{
    125128
    126         WriteData(fid,prefix,'object',self,'fieldname','vx','format','DoubleMat','mattype',1,'scale',1./yts)
    127         WriteData(fid,prefix,'object',self,'fieldname','vy','format','DoubleMat','mattype',1,'scale',1./yts)
    128         WriteData(fid,prefix,'object',self,'fieldname','vz','format','DoubleMat','mattype',1,'scale',1./yts)
    129         WriteData(fid,prefix,'object',self,'fieldname','pressure','format','DoubleMat','mattype',1)
    130         WriteData(fid,prefix,'object',self,'fieldname','temperature','format','DoubleMat','mattype',1)
    131         WriteData(fid,prefix,'object',self,'fieldname','waterfraction','format','DoubleMat','mattype',1)
    132         WriteData(fid,prefix,'object',self,'fieldname','sediment_head','format','DoubleMat','mattype',1)
    133         WriteData(fid,prefix,'object',self,'fieldname','epl_head','format','DoubleMat','mattype',1)
    134         WriteData(fid,prefix,'object',self,'fieldname','epl_thickness','format','DoubleMat','mattype',1)
    135         WriteData(fid,prefix,'object',self,'fieldname','watercolumn','format','DoubleMat','mattype',1)
    136        
     129        yts = md.constants.yts
     130
     131        WriteData(fid, prefix, 'object', self, 'fieldname', 'vx', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
     132        WriteData(fid, prefix, 'object', self, 'fieldname', 'vy', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
     133        WriteData(fid, prefix, 'object', self, 'fieldname', 'vz', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
     134        WriteData(fid, prefix, 'object', self, 'fieldname', 'pressure', 'format', 'DoubleMat', 'mattype', 1)
     135        WriteData(fid, prefix, 'object', self, 'fieldname', 'temperature', 'format', 'DoubleMat', 'mattype', 1)
     136        WriteData(fid, prefix, 'object', self, 'fieldname', 'waterfraction', 'format', 'DoubleMat', 'mattype', 1)
     137        WriteData(fid, prefix, 'object', self, 'fieldname', 'sediment_head', 'format', 'DoubleMat', 'mattype', 1)
     138        WriteData(fid, prefix, 'object', self, 'fieldname', 'epl_head', 'format', 'DoubleMat', 'mattype', 1)
     139        WriteData(fid, prefix, 'object', self, 'fieldname', 'epl_thickness', 'format', 'DoubleMat', 'mattype', 1)
     140        WriteData(fid, prefix, 'object', self, 'fieldname', 'watercolumn', 'format', 'DoubleMat', 'mattype', 1)
     141
    137142        if md.thermal.isenthalpy:
    138             if (np.size(self.enthalpy)<=1):
    139                 tpmp = md.materials.meltingpoint - md.materials.beta*md.initialization.pressure;
    140                 pos  = np.nonzero(md.initialization.waterfraction > 0.)[0]
    141                 self.enthalpy      = md.materials.heatcapacity*(md.initialization.temperature-md.constants.referencetemperature);
    142                 self.enthalpy[pos] = md.materials.heatcapacity*(tpmp[pos].reshape(-1,) - md.constants.referencetemperature) + md.materials.latentheat*md.initialization.waterfraction[pos].reshape(-1,)
     143            if (np.size(self.enthalpy) <= 1):
     144                tpmp = md.materials.meltingpoint - md.materials.beta * md.initialization.pressure
     145                pos = np.nonzero(md.initialization.waterfraction > 0.)[0]
     146                self.enthalpy = md.materials.heatcapacity * (md.initialization.temperature - md.constants.referencetemperature)
     147                self.enthalpy[pos] = md.materials.heatcapacity * (tpmp[pos].reshape(- 1, ) - md.constants.referencetemperature) + md.materials.latentheat * md.initialization.waterfraction[pos].reshape(- 1, )
    143148
    144             WriteData(fid,prefix,'data',self.enthalpy,'format','DoubleMat','mattype',1,'name','md.initialization.enthalpy');
    145 
     149            WriteData(fid, prefix, 'data', self.enthalpy, 'format', 'DoubleMat', 'mattype', 1, 'name', 'md.initialization.enthalpy')
    146150    # }}}
  • issm/trunk-jpl/src/m/classes/inversion.py

    r23095 r24213  
    88from marshallcostfunctions import marshallcostfunctions
    99
     10
    1011class inversion(object):
    11         """
    12         INVERSION class definition
     12    """
     13    INVERSION class definition
    1314
    14            Usage:
    15               inversion=inversion()
    16         """
     15       Usage:
     16          inversion = inversion()
     17    """
    1718
    18         def __init__(self): # {{{
    19                 self.iscontrol                  = 0
    20                 self.incomplete_adjoint          = 0
    21                 self.control_parameters          = float('NaN')
    22                 self.nsteps                      = 0
    23                 self.maxiter_per_step            = float('NaN')
    24                 self.cost_functions              = ''
    25                 self.cost_functions_coefficients = float('NaN')
    26                 self.gradient_scaling            = float('NaN')
    27                 self.cost_function_threshold    = 0
    28                 self.min_parameters              = float('NaN')
    29                 self.max_parameters              = float('NaN')
    30                 self.step_threshold              = float('NaN')
    31                 self.vx_obs                      = float('NaN')
    32                 self.vy_obs                      = float('NaN')
    33                 self.vz_obs                      = float('NaN')
    34                 self.vel_obs                    = float('NaN')
    35                 self.thickness_obs              = float('NaN')
    36                 self.surface_obs                = float('NaN')
     19    def __init__(self): # {{{
     20        self.iscontrol = 0
     21        self.incomplete_adjoint = 0
     22        self.control_parameters = float('NaN')
     23        self.nsteps = 0
     24        self.maxiter_per_step = float('NaN')
     25        self.cost_functions = ''
     26        self.cost_functions_coefficients = float('NaN')
     27        self.gradient_scaling = float('NaN')
     28        self.cost_function_threshold = 0
     29        self.min_parameters = float('NaN')
     30        self.max_parameters = float('NaN')
     31        self.step_threshold = float('NaN')
     32        self.vx_obs = float('NaN')
     33        self.vy_obs = float('NaN')
     34        self.vz_obs = float('NaN')
     35        self.vel_obs = float('NaN')
     36        self.thickness_obs = float('NaN')
     37        self.surface_obs = float('NaN')
    3738
    38                 #set defaults
    39                 self.setdefaultparameters()
     39    #set defaults
     40        self.setdefaultparameters()
    4041
    41                 #}}}
    42         def __repr__(self): # {{{
    43                 string='   inversion parameters:'
    44                 string="%s\n%s"%(string,fielddisplay(self,'iscontrol','is inversion activated?'))
    45                 string="%s\n%s"%(string,fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity'))
    46                 string="%s\n%s"%(string,fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
    47                 string="%s\n%s"%(string,fielddisplay(self,'nsteps','number of optimization searches'))
    48                 string="%s\n%s"%(string,fielddisplay(self,'cost_functions','indicate the type of response for each optimization step'))
    49                 string="%s\n%s"%(string,fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
    50                 string="%s\n%s"%(string,fielddisplay(self,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied'))
    51                 string="%s\n%s"%(string,fielddisplay(self,'maxiter_per_step','maximum iterations during each optimization step'))
    52                 string="%s\n%s"%(string,fielddisplay(self,'gradient_scaling','scaling factor on gradient direction during optimization, for each optimization step'))
    53                 string="%s\n%s"%(string,fielddisplay(self,'step_threshold','decrease threshold for misfit, default is 30%'))
    54                 string="%s\n%s"%(string,fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
    55                 string="%s\n%s"%(string,fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
    56                 string="%s\n%s"%(string,fielddisplay(self,'vx_obs','observed velocity x component [m/yr]'))
    57                 string="%s\n%s"%(string,fielddisplay(self,'vy_obs','observed velocity y component [m/yr]'))
    58                 string="%s\n%s"%(string,fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]'))
    59                 string="%s\n%s"%(string,fielddisplay(self,'thickness_obs','observed thickness [m]'))
    60                 string="%s\n%s"%(string,fielddisplay(self,'surface_obs','observed surface elevation [m]'))
    61                 string="%s\n%s"%(string,'Available cost functions:')
    62                 string="%s\n%s"%(string,'   101: SurfaceAbsVelMisfit')
    63                 string="%s\n%s"%(string,'   102: SurfaceRelVelMisfit')
    64                 string="%s\n%s"%(string,'   103: SurfaceLogVelMisfit')
    65                 string="%s\n%s"%(string,'   104: SurfaceLogVxVyMisfit')
    66                 string="%s\n%s"%(string,'   105: SurfaceAverageVelMisfit')
    67                 string="%s\n%s"%(string,'   201: ThicknessAbsMisfit')
    68                 string="%s\n%s"%(string,'   501: DragCoefficientAbsGradient')
    69                 string="%s\n%s"%(string,'   502: RheologyBbarAbsGradient')
    70                 string="%s\n%s"%(string,'   503: ThicknessAbsGradient')
    71                 return string
    72                 #}}}
    73         def extrude(self,md): # {{{
    74                 self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node')
    75                 self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node')
    76                 self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node')
    77                 self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node')
    78                 if not np.any(np.isnan(self.cost_functions_coefficients)):
    79                         self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node')
    80                 if not np.any(np.isnan(self.min_parameters)):
    81                         self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node')
    82                 if not np.any(np.isnan(self.max_parameters)):
    83                         self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node')
    84                 return self
    85         #}}}
    86         def setdefaultparameters(self): # {{{
    87                
    88                 #default is incomplete adjoint for now
    89                 self.incomplete_adjoint=1
     42    #}}}
    9043
    91                 #parameter to be inferred by control methods (only
    92                 #drag and B are supported yet)
    93                 self.control_parameters='FrictionCoefficient'
     44    def __repr__(self):  # {{{
     45        string = '   inversion parameters:'
     46        string = "%s\n%s" % (string, fielddisplay(self, 'iscontrol', 'is inversion activated?'))
     47        string = "%s\n%s" % (string, fielddisplay(self, 'incomplete_adjoint', '1: linear viscosity, 0: non - linear viscosity'))
     48        string = "%s\n%s" % (string, fielddisplay(self, 'control_parameters', 'ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
     49        string = "%s\n%s" % (string, fielddisplay(self, 'nsteps', 'number of optimization searches'))
     50        string = "%s\n%s" % (string, fielddisplay(self, 'cost_functions', 'indicate the type of response for each optimization step'))
     51        string = "%s\n%s" % (string, fielddisplay(self, 'cost_functions_coefficients', 'cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
     52        string = "%s\n%s" % (string, fielddisplay(self, 'cost_function_threshold', 'misfit convergence criterion. Default is 1%, NaN if not applied'))
     53        string = "%s\n%s" % (string, fielddisplay(self, 'maxiter_per_step', 'maximum iterations during each optimization step'))
     54        string = "%s\n%s" % (string, fielddisplay(self, 'gradient_scaling', 'scaling factor on gradient direction during optimization, for each optimization step'))
     55        string = "%s\n%s" % (string, fielddisplay(self, 'step_threshold', 'decrease threshold for misfit, default is 30%'))
     56        string = "%s\n%s" % (string, fielddisplay(self, 'min_parameters', 'absolute minimum acceptable value of the inversed parameter on each vertex'))
     57        string = "%s\n%s" % (string, fielddisplay(self, 'max_parameters', 'absolute maximum acceptable value of the inversed parameter on each vertex'))
     58        string = "%s\n%s" % (string, fielddisplay(self, 'vx_obs', 'observed velocity x component [m / yr]'))
     59        string = "%s\n%s" % (string, fielddisplay(self, 'vy_obs', 'observed velocity y component [m / yr]'))
     60        string = "%s\n%s" % (string, fielddisplay(self, 'vel_obs', 'observed velocity magnitude [m / yr]'))
     61        string = "%s\n%s" % (string, fielddisplay(self, 'thickness_obs', 'observed thickness [m]'))
     62        string = "%s\n%s" % (string, fielddisplay(self, 'surface_obs', 'observed surface elevation [m]'))
     63        string = "%s\n%s" % (string, 'Available cost functions:')
     64        string = "%s\n%s" % (string, '   101: SurfaceAbsVelMisfit')
     65        string = "%s\n%s" % (string, '   102: SurfaceRelVelMisfit')
     66        string = "%s\n%s" % (string, '   103: SurfaceLogVelMisfit')
     67        string = "%s\n%s" % (string, '   104: SurfaceLogVxVyMisfit')
     68        string = "%s\n%s" % (string, '   105: SurfaceAverageVelMisfit')
     69        string = "%s\n%s" % (string, '   201: ThicknessAbsMisfit')
     70        string = "%s\n%s" % (string, '   501: DragCoefficientAbsGradient')
     71        string = "%s\n%s" % (string, '   502: RheologyBbarAbsGradient')
     72        string = "%s\n%s" % (string, '   503: ThicknessAbsGradient')
     73        return string
     74    #}}}
    9475
    95                 #number of steps in the control methods
    96                 self.nsteps=20
     76    def extrude(self, md):  # {{{
     77        self.vx_obs = project3d(md, 'vector', self.vx_obs, 'type', 'node')
     78        self.vy_obs = project3d(md, 'vector', self.vy_obs, 'type', 'node')
     79        self.vel_obs = project3d(md, 'vector', self.vel_obs, 'type', 'node')
     80        self.thickness_obs = project3d(md, 'vector', self.thickness_obs, 'type', 'node')
     81        if not np.any(np.isnan(self.cost_functions_coefficients)):
     82            self.cost_functions_coefficients = project3d(md, 'vector', self.cost_functions_coefficients, 'type', 'node')
     83        if not np.any(np.isnan(self.min_parameters)):
     84            self.min_parameters = project3d(md, 'vector', self.min_parameters, 'type', 'node')
     85        if not np.any(np.isnan(self.max_parameters)):
     86            self.max_parameters = project3d(md, 'vector', self.max_parameters, 'type', 'node')
     87        return self
     88    #}}}
    9789
    98                 #maximum number of iteration in the optimization algorithm for
    99                 #each step
    100                 self.maxiter_per_step=20*np.ones(self.nsteps)
     90    def setdefaultparameters(self):  # {{{
    10191
    102                 #the inversed parameter is updated as follows:
    103                 #new_par=old_par + gradient_scaling(n)*C*gradient with C in [0 1];
    104                 #usually the gradient_scaling must be of the order of magnitude of the
    105                 #inversed parameter (10^8 for B, 50 for drag) and can be decreased
    106                 #after the first iterations
    107                 self.gradient_scaling=50*np.ones((self.nsteps,1))
     92        #default is incomplete adjoint for now
     93        self.incomplete_adjoint = 1
     94        #parameter to be inferred by control methods (only
     95        #drag and B are supported yet)
     96        self.control_parameters = 'FrictionCoefficient'
     97        #number of steps in the control methods
     98        self.nsteps = 20
     99        #maximum number of iteration in the optimization algorithm for
     100        #each step
     101        self.maxiter_per_step = 20 * np.ones(self.nsteps)
     102        #the inversed parameter is updated as follows:
     103        #new_par = old_par + gradient_scaling(n) * C * gradient with C in [0 1]
     104        #usually the gradient_scaling must be of the order of magnitude of the
     105        #inversed parameter (10^8 for B, 50 for drag) and can be decreased
     106        #after the first iterations
     107        self.gradient_scaling = 50 * np.ones((self.nsteps, 1))
     108        #several responses can be used:
     109        self.cost_functions = [101, ]
     110        #step_threshold is used to speed up control method. When
     111        #misfit(1) / misfit(0) < self.step_threshold, we go directly to
     112        #the next step
     113        self.step_threshold = 0.7 * np.ones(self.nsteps)  #30 per cent decrement
     114        #cost_function_threshold is a criteria to stop the control methods.
     115        #if J[n] - J[n - 1] / J[n] < criteria, the control run stops
     116        #NaN if not applied
     117        self.cost_function_threshold = float('NaN')  #not activated
    108118
    109                 #several responses can be used:
    110                 self.cost_functions=[101,]
     119        return self
     120    #}}}
    111121
    112                 #step_threshold is used to speed up control method. When
    113                 #misfit(1)/misfit(0) < self.step_threshold, we go directly to
    114                 #the next step
    115                 self.step_threshold=.7*np.ones(self.nsteps) #30 per cent decrement
     122    def checkconsistency(self, md, solution, analyses):  # {{{
     123        #Early return
     124        if not self.iscontrol:
     125            return md
    116126
    117                 #cost_function_threshold is a criteria to stop the control methods.
    118                 #if J[n]-J[n-1]/J[n] < criteria, the control run stops
    119                 #NaN if not applied
    120                 self.cost_function_threshold=float('NaN')    #not activated
     127        num_controls = np.size(md.inversion.control_parameters)
     128        num_costfunc = np.size(md.inversion.cost_functions)
    121129
    122                 return self
    123         #}}}
    124         def checkconsistency(self,md,solution,analyses):    # {{{
     130        md = checkfield(md, 'fieldname', 'inversion.iscontrol', 'values', [0, 1])
     131        md = checkfield(md, 'fieldname', 'inversion.incomplete_adjoint', 'values', [0, 1])
     132        md = checkfield(md, 'fieldname', 'inversion.control_parameters', 'cell', 1, 'values', supportedcontrols())
     133        md = checkfield(md, 'fieldname', 'inversion.nsteps', 'numel', [1], '>=', 0)
     134        md = checkfield(md, 'fieldname', 'inversion.maxiter_per_step', 'size', [md.inversion.nsteps], '>=', 0)
     135        md = checkfield(md, 'fieldname', 'inversion.step_threshold', 'size', [md.inversion.nsteps])
     136        md = checkfield(md, 'fieldname', 'inversion.cost_functions', 'size', [num_costfunc], 'values', supportedcostfunctions())
     137        md = checkfield(md, 'fieldname', 'inversion.cost_functions_coefficients', 'size', [md.mesh.numberofvertices, num_costfunc], '>=', 0)
     138        md = checkfield(md, 'fieldname', 'inversion.gradient_scaling', 'size', [md.inversion.nsteps, num_controls])
     139        md = checkfield(md, 'fieldname', 'inversion.min_parameters', 'size', [md.mesh.numberofvertices, num_controls])
     140        md = checkfield(md, 'fieldname', 'inversion.max_parameters', 'size', [md.mesh.numberofvertices, num_controls])
    125141
    126                 #Early return
    127                 if not self.iscontrol:
    128                         return md
     142    #Only SSA, HO and FS are supported right now
     143        if solution == 'StressbalanceSolution':
     144            if not (md.flowequation.isSSA or md.flowequation.isHO or md.flowequation.isFS or md.flowequation.isL1L2):
     145                md.checkmessage("'inversion can only be performed for SSA, HO or FS ice flow models")
    129146
    130                 num_controls=np.size(md.inversion.control_parameters)
    131                 num_costfunc=np.size(md.inversion.cost_functions)
     147        if solution == 'BalancethicknessSolution':
     148            md = checkfield(md, 'fieldname', 'inversion.thickness_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
     149        else:
     150            md = checkfield(md, 'fieldname', 'inversion.vx_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
     151            md = checkfield(md, 'fieldname', 'inversion.vy_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
    132152
    133                 md = checkfield(md,'fieldname','inversion.iscontrol','values',[0,1])
    134                 md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])
    135                 md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())
    136                 md = checkfield(md,'fieldname','inversion.nsteps','numel',[1],'>=',0)
    137                 md = checkfield(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps],'>=',0)
    138                 md = checkfield(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps])
    139                 md = checkfield(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',supportedcostfunctions())
    140                 md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0)
    141                 md = checkfield(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps,num_controls])
    142                 md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices,num_controls])
    143                 md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices,num_controls])
     153        return md
     154    # }}}
    144155
    145                 #Only SSA, HO and FS are supported right now
    146                 if solution=='StressbalanceSolution':
    147                         if not (md.flowequation.isSSA or md.flowequation.isHO or md.flowequation.isFS or md.flowequation.isL1L2):
    148                                 md.checkmessage("'inversion can only be performed for SSA, HO or FS ice flow models");
     156    def marshall(self, prefix, md, fid):  # {{{
     157        yts = md.constants.yts
    149158
    150                 if solution=='BalancethicknessSolution':
    151                         md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    152                 else:
    153                         md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    154                         md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
     159        WriteData(fid, prefix, 'name', 'md.inversion.type', 'data', 0, 'format', 'Integer')
     160        WriteData(fid, prefix, 'object', self, 'fieldname', 'iscontrol', 'format', 'Boolean')
     161        WriteData(fid, prefix, 'object', self, 'fieldname', 'incomplete_adjoint', 'format', 'Boolean')
     162        WriteData(fid, prefix, 'object', self, 'fieldname', 'vel_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
     163        if not self.iscontrol:
     164            return
     165        WriteData(fid, prefix, 'object', self, 'fieldname', 'nsteps', 'format', 'Integer')
     166        WriteData(fid, prefix, 'object', self, 'fieldname', 'maxiter_per_step', 'format', 'DoubleMat', 'mattype', 3)
     167        WriteData(fid, prefix, 'object', self, 'fieldname', 'cost_functions_coefficients', 'format', 'DoubleMat', 'mattype', 1)
     168        WriteData(fid, prefix, 'object', self, 'fieldname', 'gradient_scaling', 'format', 'DoubleMat', 'mattype', 3)
     169        WriteData(fid, prefix, 'object', self, 'fieldname', 'cost_function_threshold', 'format', 'Double')
     170        WriteData(fid, prefix, 'object', self, 'fieldname', 'min_parameters', 'format', 'DoubleMat', 'mattype', 3)
     171        WriteData(fid, prefix, 'object', self, 'fieldname', 'max_parameters', 'format', 'DoubleMat', 'mattype', 3)
     172        WriteData(fid, prefix, 'object', self, 'fieldname', 'step_threshold', 'format', 'DoubleMat', 'mattype', 3)
     173        WriteData(fid, prefix, 'object', self, 'fieldname', 'vx_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
     174        WriteData(fid, prefix, 'object', self, 'fieldname', 'vy_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
     175        WriteData(fid, prefix, 'object', self, 'fieldname', 'vz_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
     176        WriteData(fid, prefix, 'object', self, 'fieldname', 'thickness_obs', 'format', 'DoubleMat', 'mattype', 1)
     177        WriteData(fid, prefix, 'object', self, 'fieldname', 'surface_obs', 'format', 'DoubleMat', 'mattype', 1)
    155178
    156                 return md
    157         # }}}
    158         def marshall(self,prefix,md,fid):    # {{{
     179    #process control parameters
     180        num_control_parameters = len(self.control_parameters)
     181        WriteData(fid, prefix, 'object', self, 'fieldname', 'control_parameters', 'format', 'StringArray')
     182        WriteData(fid, prefix, 'data', num_control_parameters, 'name', 'md.inversion.num_control_parameters', 'format', 'Integer')
    159183
    160                 yts=md.constants.yts
    161 
    162                 WriteData(fid,prefix,'name','md.inversion.type','data',0,'format','Integer')
    163                 WriteData(fid,prefix,'object',self,'fieldname','iscontrol','format','Boolean')
    164                 WriteData(fid,prefix,'object',self,'fieldname','incomplete_adjoint','format','Boolean')
    165                 WriteData(fid,prefix,'object',self,'fieldname','vel_obs','format','DoubleMat','mattype',1,'scale',1./yts)
    166                 if not self.iscontrol:
    167                         return
    168                 WriteData(fid,prefix,'object',self,'fieldname','nsteps','format','Integer')
    169                 WriteData(fid,prefix,'object',self,'fieldname','maxiter_per_step','format','DoubleMat','mattype',3)
    170                 WriteData(fid,prefix,'object',self,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1)
    171                 WriteData(fid,prefix,'object',self,'fieldname','gradient_scaling','format','DoubleMat','mattype',3)
    172                 WriteData(fid,prefix,'object',self,'fieldname','cost_function_threshold','format','Double')
    173                 WriteData(fid,prefix,'object',self,'fieldname','min_parameters','format','DoubleMat','mattype',3)
    174                 WriteData(fid,prefix,'object',self,'fieldname','max_parameters','format','DoubleMat','mattype',3)
    175                 WriteData(fid,prefix,'object',self,'fieldname','step_threshold','format','DoubleMat','mattype',3)
    176                 WriteData(fid,prefix,'object',self,'fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts)
    177                 WriteData(fid,prefix,'object',self,'fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts)
    178                 WriteData(fid,prefix,'object',self,'fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts)
    179                 WriteData(fid,prefix,'object',self,'fieldname','thickness_obs','format','DoubleMat','mattype',1)
    180                 WriteData(fid,prefix,'object',self,'fieldname','surface_obs','format','DoubleMat','mattype',1)
    181 
    182                 #process control parameters
    183                 num_control_parameters=len(self.control_parameters)
    184                 WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray')
    185                 WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer')
    186 
    187                 #process cost functions
    188                 num_cost_functions=np.size(self.cost_functions)
    189                 data=marshallcostfunctions(self.cost_functions)
    190                 WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray')
    191                 WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer')
    192         # }}}
     184    #process cost functions
     185        num_cost_functions = np.size(self.cost_functions)
     186        data = marshallcostfunctions(self.cost_functions)
     187        WriteData(fid, prefix, 'data', data, 'name', 'md.inversion.cost_functions', 'format', 'StringArray')
     188        WriteData(fid, prefix, 'data', num_cost_functions, 'name', 'md.inversion.num_cost_functions', 'format', 'Integer')
     189    # }}}
  • issm/trunk-jpl/src/m/classes/issmsettings.py

    r23772 r24213  
    99
    1010       Usage:
    11           issmsettings=issmsettings();
     11          issmsettings = issmsettings()
    1212    """
    1313
     
    2222        self.solver_residue_threshold = 0
    2323
    24         #set defaults
     24    #set defaults
    2525        self.setdefaultparameters()
    2626
    27         #}}}
     27    #}}}
     28
    2829    def __repr__(self):  # {{{
    2930        string = "   general issmsettings parameters:"
    3031
    3132        string = "%s\n%s" % (string, fielddisplay(self, "results_on_nodes", "list of output for which results will be output for all the nodes of each element, Use 'all' for all output on nodes."))
    32         string = "%s\n%s" % (string, fielddisplay(self, "io_gather", "I/O gathering strategy for result outputs (default 1)"))
     33        string = "%s\n%s" % (string, fielddisplay(self, "io_gather", "I / O gathering strategy for result outputs (default 1)"))
    3334        string = "%s\n%s" % (string, fielddisplay(self, "lowmem", "is the memory limited ? (0 or 1)"))
    3435        string = "%s\n%s" % (string, fielddisplay(self, "output_frequency", "frequency at which results are saved in all solutions with multiple time_steps"))
     
    4142
    4243    def setdefaultparameters(self):  # {{{
    43 
    4444        #are we short in memory ? (0 faster but requires more memory)
    4545        self.lowmem = 0
    46 
    47         #i/o:
     46        #i / o:
    4847        self.io_gather = 1
    49 
    5048        #results frequency by default every step
    5149        self.output_frequency = 1
    52 
    5350        #coupling frequency of the stress balance solver by default every step
    5451        self.sb_coupling_frequency = 1
    55 
    5652        #checkpoints frequency, by default never:
    5753        self.recording_frequency = 0
    58 
    5954        #this option can be activated to load automatically the results
    6055        #onto the model after a parallel run by waiting for the lock file
    6156        #N minutes that is generated once the solution has converged
    6257        #0 to deactivate
    63         self.waitonlock = 2 ** 31 - 1
    64 
     58        self.waitonlock = 2**31 - 1
    6559        #throw an error if solver residue exceeds this value
    6660        self.solver_residue_threshold = 1e-6
     
    6963    #}}}
    7064
    71     def checkconsistency(self, md, solution, analyses):    # {{{
     65    def checkconsistency(self, md, solution, analyses):  # {{{
    7266        md = checkfield(md, 'fieldname', 'settings.results_on_nodes', 'stringrow', 1)
    7367        md = checkfield(md, 'fieldname', 'settings.io_gather', 'numel', [1], 'values', [0, 1])
     
    8276    # }}}
    8377
    84     def marshall(self, prefix, md, fid):    # {{{
     78    def marshall(self, prefix, md, fid):  # {{{
    8579        WriteData(fid, prefix, 'data', self.results_on_nodes, 'name', 'md.settings.results_on_nodes', 'format', 'StringArray')
    8680        WriteData(fid, prefix, 'object', self, 'class', 'settings', 'fieldname', 'io_gather', 'format', 'Boolean')
  • issm/trunk-jpl/src/m/classes/levelset.py

    r24115 r24213  
    1010
    1111       Usage:
    12           levelset=levelset();
     12          levelset = levelset()
    1313    """
    1414
     
    2222        self.fe = 'P1'
    2323
    24         #set defaults
     24    #set defaults
    2525        self.setdefaultparameters()
    2626
    2727    #}}}
    2828    def __repr__(self):  # {{{
    29         string = '   Level-set parameters:'
     29        string = '   Level - set parameters:'
    3030        string = "%s\n%s" % (string, fielddisplay(self, 'stabilization', '0: no, 1: artificial_diffusivity, 2: streamline upwinding'))
    3131        string = "%s\n%s" % (string, fielddisplay(self, 'spclevelset', 'levelset constraints (NaN means no constraint)'))
    3232        string = "%s\n%s" % (string, fielddisplay(self, 'reinit_frequency', 'Amount of time steps after which the levelset function in re-initialized'))
    3333        string = "%s\n%s" % (string, fielddisplay(self, 'kill_icebergs', 'remove floating icebergs to prevent rigid body motions (1: true, 0: false)'))
    34         string = "%s\n%s" % (string, fielddisplay(self, 'calving_max', 'maximum allowed calving rate (m/a)'))
     34        string = "%s\n%s" % (string, fielddisplay(self, 'calving_max', 'maximum allowed calving rate (m / a)'))
    3535        string = "%s\n%s" % (string, fielddisplay(self, 'fe', 'Finite Element type: ''P1'' (default), or ''P2'''))
    3636
     
    4444
    4545    def setdefaultparameters(self):  # {{{
    46 
    4746        #stabilization = 1 by default
    4847        self.stabilization = 1
     
    5150        self.calving_max = 3000.
    5251
    53         #Linear elements by default
     52    #Linear elements by default
    5453        self.fe = 'P1'
    5554
    5655        return self
    5756    #}}}
    58     def checkconsistency(self, md, solution, analyses):    # {{{
    5957
     58    def checkconsistency(self, md, solution, analyses):  # {{{
    6059        #Early return
    6160        if (solution != 'TransientSolution') or (not md.transient.ismovingfront):
     
    7170    # }}}
    7271
    73     def marshall(self, prefix, md, fid):    # {{{
    74 
     72    def marshall(self, prefix, md, fid):  # {{{
    7573        yts = md.constants.yts
    7674
  • issm/trunk-jpl/src/m/classes/linearbasalforcings.py

    r24202 r24213  
    44import numpy as np
    55
     6
    67class linearbasalforcings(object):
    7         """
    8         LINEAR BASAL FORCINGS class definition
     8    """
     9    LINEAR BASAL FORCINGS class definition
    910
    10            Usage:
    11               basalforcings=linearbasalforcings();
    12         """
     11       Usage:
     12          basalforcings = linearbasalforcings()
     13    """
    1314
    14         def __init__(self,*args): # {{{
     15    def __init__(self, *args): # {{{
    1516
    16                 if not len(args):
    17                         print('empty init')
    18                         self.groundedice_melting_rate = float('NaN')
    19                         self.deepwater_melting_rate    = 0.
    20                         self.deepwater_elevation      = 0.
    21                         self.upperwater_melting_rate    = 0.
    22                         self.upperwater_elevation      = 0.
    23                         self.geothermalflux            = float('NaN')
     17        if not len(args):
     18            print('empty init')
     19            self.groundedice_melting_rate = float('NaN')
     20            self.deepwater_melting_rate = 0.
     21            self.deepwater_elevation = 0.
     22            self.upperwater_melting_rate = 0.
     23            self.upperwater_elevation = 0.
     24            self.geothermalflux = float('NaN')
    2425
    25                         #set defaults
    26                         self.setdefaultparameters()
    27                 elif len(args)==1 and args[0].__module__=='basalforcings':
    28                         print('converting basalforings to linearbasalforcings')
    29                         inv=args[0]
    30                         self.groundedice_melting_rate = inv.groundedice_melting_rate
    31                         self.geothermalflux            = inv.geothermalflux
    32                         self.deepwater_melting_rate    = 0.
    33                         self.deepwater_elevation      = 0.
    34                         self.upperwater_melting_rate    = 0.
    35                         self.upperwater_elevation      = 0.
     26    #set defaults
     27            self.setdefaultparameters()
     28        elif len(args) == 1 and args[0].__module__ == 'basalforcings':
     29            print('converting basalforings to linearbasalforcings')
     30            inv = args[0]
     31            self.groundedice_melting_rate = inv.groundedice_melting_rate
     32            self.geothermalflux = inv.geothermalflux
     33            self.deepwater_melting_rate = 0.
     34            self.deepwater_elevation = 0.
     35            self.upperwater_melting_rate = 0.
     36            self.upperwater_elevation = 0.
    3637
    37                         #set defaults
    38                         self.setdefaultparameters()
    39                 else:
    40                         raise Exception('constructor not supported')
     38    #set defaults
     39            self.setdefaultparameters()
     40        else:
     41            raise Exception('constructor not supported')
    4142
    42                 #}}}
    43         def __repr__(self): # {{{
    44                 string="   linear basal forcings parameters:"
     43    #}}}
     44    def __repr__(self): # {{{
     45        string = "   linear basal forcings parameters:"
    4546
    46                 string="%s\n%s"%(string,fielddisplay(self,"deepwater_melting_rate","basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]"))
    47                 string="%s\n%s"%(string,fielddisplay(self,"deepwater_elevation","elevation of ocean deepwater [m]"))
    48                 string="%s\n%s"%(string,fielddisplay(self,"upperwater_melting_rate","upper melting rate (positive if melting applied for floating ice whith base >= upperwater_elevation) [m/yr]"))
    49                 string="%s\n%s"%(string,fielddisplay(self,"upperwater_elevation","elevation of ocean upper water [m]"))
    50                 string="%s\n%s"%(string,fielddisplay(self,"groundedice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
    51                 string="%s\n%s"%(string,fielddisplay(self,"geothermalflux","geothermal heat flux [W/m^2]"))
    52                 return string
    53                 #}}}
    54         def initialize(self,md): # {{{
     47        string = "%s\n%s" % (string, fielddisplay(self, "deepwater_melting_rate", "basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]"))
     48        string = "%s\n%s" % (string, fielddisplay(self, "deepwater_elevation", "elevation of ocean deepwater [m]"))
     49        string = "%s\n%s" % (string, fielddisplay(self, "upperwater_melting_rate", "upper melting rate (positive if melting applied for floating ice whith base >= upperwater_elevation) [m/yr]"))
     50        string = "%s\n%s" % (string, fielddisplay(self, "upperwater_elevation", "elevation of ocean upper water [m]"))
     51        string = "%s\n%s" % (string, fielddisplay(self, "groundedice_melting_rate", "basal melting rate (positive if melting) [m/yr]"))
     52        string = "%s\n%s" % (string, fielddisplay(self, "geothermalflux", "geothermal heat flux [W/m^2]"))
     53        return string
     54    #}}}
     55    def initialize(self, md): # {{{
    5556
    56                 if np.all(np.isnan(self.groundedice_melting_rate)):
    57                         self.groundedice_melting_rate=np.zeros((md.mesh.numberofvertices))
    58                         print("      no basalforcings.groundedice_melting_rate specified: values set as zero")
     57        if np.all(np.isnan(self.groundedice_melting_rate)):
     58            self.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
     59            print("      no basalforcings.groundedice_melting_rate specified: values set as zero")
    5960
    60                 return self
    61         #}}}
    62         def setdefaultparameters(self): # {{{
     61        return self
     62    #}}}
     63    def setdefaultparameters(self): # {{{
    6364
    64                 self.deepwater_melting_rate = 50.0
    65                 self.deepwater_elevation     = -800.0
    66                 self.upperwater_melting_rate = 0.0
    67                 self.upperwater_elevation    = -400.0
     65        self.deepwater_melting_rate = 50.0
     66        self.deepwater_elevation = - 800.0
     67        self.upperwater_melting_rate = 0.0
     68        self.upperwater_elevation = - 400.0
    6869
    69                 return self
    70         #}}}
    71         def checkconsistency(self,md,solution,analyses):    # {{{
     70        return self
     71    #}}}
     72    def checkconsistency(self, md, solution, analyses):  # {{{
    7273
    73                 if 'MasstransportAnalysis' in analyses and not (solution=='TransientSolution' and not md.transient.ismasstransport):
    74                         md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
    75                         md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'singletimeseries',1)
    76                         md = checkfield(md,'fieldname','basalforcings.upperwater_melting_rate','>=',0,'singletimeseries',1)
    77                         md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','singletimeseries',1)
    78                         md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<=',0,'singletimeseries',1)
     74        if 'MasstransportAnalysis' in analyses and not (solution == 'TransientSolution' and not md.transient.ismasstransport):
     75            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     76            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_melting_rate', '>=', 0, 'singletimeseries', 1)
     77            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_melting_rate', '>=', 0, 'singletimeseries', 1)
     78            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_elevation', '<', 'basalforcings.upperwater_elevation', 'singletimeseries', 1)
     79            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_elevation', '<=', 0, 'singletimeseries', 1)
    7980
    80                 if 'BalancethicknessAnalysis' in analyses:
    81                         md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    82                         md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'singletimeseries',1)
    83                         md = checkfield(md,'fieldname','basalforcings.upperwater_melting_rate','>=',0,'singletimeseries',1)
    84                         md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','singletimeseries',1)
    85                         md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<=',0,'singletimeseries',1)
     81        if 'BalancethicknessAnalysis' in analyses:
     82            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     83            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_melting_rate', '>=', 0, 'singletimeseries', 1)
     84            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_melting_rate', '>=', 0, 'singletimeseries', 1)
     85            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_elevation', '<', 'basalforcings.upperwater_elevation', 'singletimeseries', 1)
     86            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_elevation', '<=', 0, 'singletimeseries', 1)
    8687
    87                 if 'ThermalAnalysis' in analyses and not (solution=='TransientSolution' and not md.transient.isthermal):
    88                         md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
    89                         md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'singletimeseries',1)
    90                         md = checkfield(md,'fieldname','basalforcings.upperwater_melting_rate','>=',0,'singletimeseries',1)
    91                         md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','singletimeseries',1)
    92                         md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<=',0,'singletimeseries',1)
    93                         md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
     88        if 'ThermalAnalysis' in analyses and not (solution == 'TransientSolution' and not md.transient.isthermal):
     89            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     90            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_melting_rate', '>=', 0, 'singletimeseries', 1)
     91            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_melting_rate', '>=', 0, 'singletimeseries', 1)
     92            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_elevation', '<', 'basalforcings.upperwater_elevation', 'singletimeseries', 1)
     93            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_elevation', '<=', 0, 'singletimeseries', 1)
     94            md = checkfield(md, 'fieldname', 'basalforcings.geothermalflux', 'NaN', 1, 'Inf', 1, 'timeseries', 1, '>=', 0)
    9495
    95                 return md
    96         # }}}
    97         def marshall(self,prefix,md,fid):    # {{{
     96        return md
     97    # }}}
     98    def marshall(self, prefix, md, fid):  # {{{
    9899
    99                 yts=md.constants.yts
     100        yts = md.constants.yts
    100101
    101                 WriteData(fid,prefix,'name','md.basalforcings.model','data',2,'format','Integer')
    102                 WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','name','md.basalforcings.groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    103                 WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    104                 WriteData(fid,prefix,'object',self,'fieldname','deepwater_melting_rate','format','DoubleMat','mattype',3,'timeserieslength',2,'name','md.basalforcings.deepwater_melting_rate','scale',1./yts,'yts',md.constants.yts)
    105                 WriteData(fid,prefix,'object',self,'fieldname','deepwater_elevation','format','DoubleMat','mattype',3,'name','md.basalforcings.deepwater_elevation','yts',md.constants.yts)
    106                 WriteData(fid,prefix,'object',self,'fieldname','upperwater_melting_rate','format','DoubleMat','mattype',3,'timeserieslength',2,'name','md.basalforcings.upperwater_melting_rate','scale',1./yts,'yts',md.constants.yts)
    107                 WriteData(fid,prefix,'object',self,'fieldname','upperwater_elevation','format','DoubleMat','mattype',3,'name','md.basalforcings.upperwater_elevation','yts',md.constants.yts)
    108         # }}}
     102        WriteData(fid, prefix, 'name', 'md.basalforcings.model', 'data', 2, 'format', 'Integer')
     103        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundedice_melting_rate', 'name', 'md.basalforcings.groundedice_melting_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     104        WriteData(fid, prefix, 'object', self, 'fieldname', 'geothermalflux', 'name', 'md.basalforcings.geothermalflux', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     105        WriteData(fid, prefix, 'object', self, 'fieldname', 'deepwater_melting_rate', 'format', 'DoubleMat', 'mattype', 3, 'timeserieslength', 2, 'name', 'md.basalforcings.deepwater_melting_rate', 'scale', 1. / yts, 'yts', yts)
     106        WriteData(fid, prefix, 'object', self, 'fieldname', 'deepwater_elevation', 'format', 'DoubleMat', 'mattype', 3, 'name', 'md.basalforcings.deepwater_elevation', 'yts', yts)
     107        WriteData(fid, prefix, 'object', self, 'fieldname', 'upperwater_melting_rate', 'format', 'DoubleMat', 'mattype', 3, 'timeserieslength', 2, 'name', 'md.basalforcings.upperwater_melting_rate', 'scale', 1. / yts, 'yts', yts)
     108        WriteData(fid, prefix, 'object', self, 'fieldname', 'upperwater_elevation', 'format', 'DoubleMat', 'mattype', 3, 'name', 'md.basalforcings.upperwater_elevation', 'yts', yts)
     109    # }}}
  • issm/trunk-jpl/src/m/classes/m1qn3inversion.py

    r23716 r24213  
    88from marshallcostfunctions import marshallcostfunctions
    99
     10
    1011class m1qn3inversion(object):
    11         '''
    12         M1QN3 class definition
     12    '''
     13    M1QN3 class definition
    1314
    1415   Usage:
    15       m1qn3inversion=m1qn3inversion()
    16         '''
     16      m1qn3inversion = m1qn3inversion()
     17    '''
    1718
    18         def __init__(self,*args): # {{{
     19    def __init__(self, *args): # {{{
    1920
    20                 if not len(args):
    21                         print('empty init')
    22                         self.iscontrol                  = 0
    23                         self.incomplete_adjoint          = 0
    24                         self.control_parameters          = float('NaN')
    25                         self.control_scaling_factors    = float('NaN')
    26                         self.maxsteps                    = 0
    27                         self.maxiter                    = 0
    28                         self.dxmin                      = 0.
    29                         self.gttol                      = 0.
    30                         self.cost_functions              = float('NaN')
    31                         self.cost_functions_coefficients = float('NaN')
    32                         self.min_parameters              = float('NaN')
    33                         self.max_parameters              = float('NaN')
    34                         self.vx_obs                      = float('NaN')
    35                         self.vy_obs                      = float('NaN')
    36                         self.vz_obs                      = float('NaN')
    37                         self.vel_obs                    = float('NaN')
    38                         self.thickness_obs              = float('NaN')
     21        if not len(args):
     22            print('empty init')
     23            self.iscontrol = 0
     24            self.incomplete_adjoint = 0
     25            self.control_parameters = float('NaN')
     26            self.control_scaling_factors = float('NaN')
     27            self.maxsteps = 0
     28            self.maxiter = 0
     29            self.dxmin = 0.
     30            self.gttol = 0.
     31            self.cost_functions = float('NaN')
     32            self.cost_functions_coefficients = float('NaN')
     33            self.min_parameters = float('NaN')
     34            self.max_parameters = float('NaN')
     35            self.vx_obs = float('NaN')
     36            self.vy_obs = float('NaN')
     37            self.vz_obs = float('NaN')
     38            self.vel_obs = float('NaN')
     39            self.thickness_obs = float('NaN')
    3940
    40                         #set defaults
    41                         self.setdefaultparameters()
    42                 elif len(args)==1 and args[0].__module__=='inversion':
    43                         print('converting inversion to m1qn3inversion')
    44                         inv=args[0]
    45                         #first call setdefaultparameters:
    46                         self.setdefaultparameters()
     41            #set defaults
     42            self.setdefaultparameters()
     43        elif len(args) == 1 and args[0].__module__ == 'inversion':
     44            print('converting inversion to m1qn3inversion')
     45            inv = args[0]
     46            #first call setdefaultparameters:
     47            self.setdefaultparameters()
    4748
    48                         #then go fish whatever is available in the inversion object provided to the constructor
    49                         self.iscontrol                   = inv.iscontrol
    50                         self.incomplete_adjoint          = inv.incomplete_adjoint
    51                         self.control_parameters          = inv.control_parameters
    52                         self.maxsteps                    = inv.nsteps
    53                         self.cost_functions              = inv.cost_functions
    54                         self.cost_functions_coefficients = inv.cost_functions_coefficients
    55                         self.min_parameters              = inv.min_parameters
    56                         self.max_parameters              = inv.max_parameters
    57                         self.vx_obs                      = inv.vx_obs
    58                         self.vy_obs                      = inv.vy_obs
    59                         self.vz_obs                      = inv.vz_obs
    60                         self.vel_obs                     = inv.vel_obs
    61                         self.thickness_obs               = inv.thickness_obs
    62                 else:
    63                         raise Exception('constructor not supported')
    64                 #}}}
    65         def __repr__(self): # {{{
    66                 string='   m1qn3inversion parameters:'
    67                 string="%s\n%s"%(string,fielddisplay(self,'iscontrol','is inversion activated?'))
    68                 string="%s\n%s"%(string,fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity'))
    69                 string="%s\n%s"%(string,fielddisplay(self,'control_parameters','ex: [''FrictionCoefficient''], or [''MaterialsRheologyBbar'']'))
    70                 string="%s\n%s"%(string,fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)'))
    71                 string="%s\n%s"%(string,fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)'))
    72                 string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)'))
    73                 string="%s\n%s"%(string,fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical'))
    74                 string="%s\n%s"%(string,fielddisplay(self,'gttol','||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
    75                 string="%s\n%s"%(string,fielddisplay(self,'cost_functions','indicate the type of response for each optimization step'))
    76                 string="%s\n%s"%(string,fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
    77                 string="%s\n%s"%(string,fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
    78                 string="%s\n%s"%(string,fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
    79                 string="%s\n%s"%(string,fielddisplay(self,'vx_obs','observed velocity x component [m/yr]'))
    80                 string="%s\n%s"%(string,fielddisplay(self,'vy_obs','observed velocity y component [m/yr]'))
    81                 string="%s\n%s"%(string,fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]'))
    82                 string="%s\n%s"%(string,fielddisplay(self,'thickness_obs','observed thickness [m]'))
    83                 string="%s\n%s"%(string,'Available cost functions:')
    84                 string="%s\n%s"%(string,'   101: SurfaceAbsVelMisfit')
    85                 string="%s\n%s"%(string,'   102: SurfaceRelVelMisfit')
    86                 string="%s\n%s"%(string,'   103: SurfaceLogVelMisfit')
    87                 string="%s\n%s"%(string,'   104: SurfaceLogVxVyMisfit')
    88                 string="%s\n%s"%(string,'   105: SurfaceAverageVelMisfit')
    89                 string="%s\n%s"%(string,'   201: ThicknessAbsMisfit')
    90                 string="%s\n%s"%(string,'   501: DragCoefficientAbsGradient')
    91                 string="%s\n%s"%(string,'   502: RheologyBbarAbsGradient')
    92                 string="%s\n%s"%(string,'   503: ThicknessAbsGradient')
    93                 return string
    94                 #}}}
    95         def extrude(self,md): # {{{
    96                 self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node')
    97                 self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node')
    98                 self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node')
    99                 self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node')
    100                 if not np.any(np.isnan(self.cost_functions_coefficients)):
    101                         self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node')
    102                 if not np.any(np.isnan(self.min_parameters)):
    103                         self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node')
    104                 if not np.any(np.isnan(self.max_parameters)):
    105                         self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node')
    106                 return self
    107         #}}}
    108         def setdefaultparameters(self): # {{{
    109                
    110                 #default is incomplete adjoint for now
    111                 self.incomplete_adjoint=1
     49            #then go fish whatever is available in the inversion object provided to the constructor
     50            self.iscontrol = inv.iscontrol
     51            self.incomplete_adjoint = inv.incomplete_adjoint
     52            self.control_parameters = inv.control_parameters
     53            self.maxsteps = inv.nsteps
     54            self.cost_functions = inv.cost_functions
     55            self.cost_functions_coefficients = inv.cost_functions_coefficients
     56            self.min_parameters = inv.min_parameters
     57            self.max_parameters = inv.max_parameters
     58            self.vx_obs = inv.vx_obs
     59            self.vy_obs = inv.vy_obs
     60            self.vz_obs = inv.vz_obs
     61            self.vel_obs = inv.vel_obs
     62            self.thickness_obs = inv.thickness_obs
     63        else:
     64            raise Exception('constructor not supported')
     65    #}}}
    11266
    113                 #parameter to be inferred by control methods (only
    114                 #drag and B are supported yet)
    115                 self.control_parameters='FrictionCoefficient'
    116                
    117                 #Scaling factor for each control
    118                 self.control_scaling_factors=1
     67    def __repr__(self):  # {{{
     68        string = '   m1qn3inversion parameters:'
     69        string = "%s\n%s" % (string, fielddisplay(self, 'iscontrol', 'is inversion activated?'))
     70        string = "%s\n%s" % (string, fielddisplay(self, 'incomplete_adjoint', '1: linear viscosity, 0: non - linear viscosity'))
     71        string = "%s\n%s" % (string, fielddisplay(self, 'control_parameters', 'ex: [''FrictionCoefficient''], or [''MaterialsRheologyBbar'']'))
     72        string = "%s\n%s" % (string, fielddisplay(self, 'control_scaling_factors', 'order of magnitude of each control (useful for multi - parameter optimization)'))
     73        string = "%s\n%s" % (string, fielddisplay(self, 'maxsteps', 'maximum number of iterations (gradient computation)'))
     74        string = "%s\n%s" % (string, fielddisplay(self, 'maxiter', 'maximum number of Function evaluation (forward run)'))
     75        string = "%s\n%s" % (string, fielddisplay(self, 'dxmin', 'convergence criterion: two points less than dxmin from eachother (sup - norm) are considered identical'))
     76        string = "%s\n%s" % (string, fielddisplay(self, 'gttol', '||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
     77        string = "%s\n%s" % (string, fielddisplay(self, 'cost_functions', 'indicate the type of response for each optimization step'))
     78        string = "%s\n%s" % (string, fielddisplay(self, 'cost_functions_coefficients', 'cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
     79        string = "%s\n%s" % (string, fielddisplay(self, 'min_parameters', 'absolute minimum acceptable value of the inversed parameter on each vertex'))
     80        string = "%s\n%s" % (string, fielddisplay(self, 'max_parameters', 'absolute maximum acceptable value of the inversed parameter on each vertex'))
     81        string = "%s\n%s" % (string, fielddisplay(self, 'vx_obs', 'observed velocity x component [m / yr]'))
     82        string = "%s\n%s" % (string, fielddisplay(self, 'vy_obs', 'observed velocity y component [m / yr]'))
     83        string = "%s\n%s" % (string, fielddisplay(self, 'vel_obs', 'observed velocity magnitude [m / yr]'))
     84        string = "%s\n%s" % (string, fielddisplay(self, 'thickness_obs', 'observed thickness [m]'))
     85        string = "%s\n%s" % (string, 'Available cost functions:')
     86        string = "%s\n%s" % (string, '   101: SurfaceAbsVelMisfit')
     87        string = "%s\n%s" % (string, '   102: SurfaceRelVelMisfit')
     88        string = "%s\n%s" % (string, '   103: SurfaceLogVelMisfit')
     89        string = "%s\n%s" % (string, '   104: SurfaceLogVxVyMisfit')
     90        string = "%s\n%s" % (string, '   105: SurfaceAverageVelMisfit')
     91        string = "%s\n%s" % (string, '   201: ThicknessAbsMisfit')
     92        string = "%s\n%s" % (string, '   501: DragCoefficientAbsGradient')
     93        string = "%s\n%s" % (string, '   502: RheologyBbarAbsGradient')
     94        string = "%s\n%s" % (string, '   503: ThicknessAbsGradient')
     95        return string
     96    #}}}
    11997
    120                 #number of iterations
    121                 self.maxsteps=20
    122                 self.maxiter=40
     98    def extrude(self, md):  # {{{
     99        self.vx_obs = project3d(md, 'vector', self.vx_obs, 'type', 'node')
     100        self.vy_obs = project3d(md, 'vector', self.vy_obs, 'type', 'node')
     101        self.vel_obs = project3d(md, 'vector', self.vel_obs, 'type', 'node')
     102        self.thickness_obs = project3d(md, 'vector', self.thickness_obs, 'type', 'node')
     103        if not np.any(np.isnan(self.cost_functions_coefficients)):
     104            self.cost_functions_coefficients = project3d(md, 'vector', self.cost_functions_coefficients, 'type', 'node')
     105        if not np.any(np.isnan(self.min_parameters)):
     106            self.min_parameters = project3d(md, 'vector', self.min_parameters, 'type', 'node')
     107        if not np.any(np.isnan(self.max_parameters)):
     108            self.max_parameters = project3d(md, 'vector', self.max_parameters, 'type', 'node')
     109        return self
     110    #}}}
    123111
    124                 #several responses can be used:
    125                 self.cost_functions=101
     112    def setdefaultparameters(self):  # {{{
     113        #default is incomplete adjoint for now
     114        self.incomplete_adjoint = 1
     115        #parameter to be inferred by control methods (only
     116        #drag and B are supported yet)
     117        self.control_parameters = 'FrictionCoefficient'
     118        #Scaling factor for each control
     119        self.control_scaling_factors = 1
     120        #number of iterations
     121        self.maxsteps = 20
     122        self.maxiter = 40
     123        #several responses can be used:
     124        self.cost_functions = 101
     125        #m1qn3 parameters
     126        self.dxmin = 0.1
     127        self.gttol = 1e-4
    126128
    127                 #m1qn3 parameters
    128                 self.dxmin  = 0.1
    129                 self.gttol = 1e-4
     129        return self
     130    #}}}
    130131
    131                 return self
    132         #}}}
    133         def checkconsistency(self,md,solution,analyses):    # {{{
     132    def checkconsistency(self, md, solution, analyses):  # {{{
     133        #Early return
     134        if not self.iscontrol:
     135            return md
    134136
    135                 #Early return
    136                 if not self.iscontrol:
    137                         return md
     137        num_controls = np.size(md.inversion.control_parameters)
     138        num_costfunc = np.size(md.inversion.cost_functions)
    138139
    139                 num_controls=np.size(md.inversion.control_parameters)
    140                 num_costfunc=np.size(md.inversion.cost_functions)
     140        md = checkfield(md, 'fieldname', 'inversion.iscontrol', 'values', [0, 1])
     141        md = checkfield(md, 'fieldname', 'inversion.incomplete_adjoint', 'values', [0, 1])
     142        md = checkfield(md, 'fieldname', 'inversion.control_parameters', 'cell', 1, 'values', supportedcontrols())
     143        md = checkfield(md, 'fieldname', 'inversion.control_scaling_factors', 'size', [num_controls], '>', 0, 'NaN', 1, 'Inf', 1)
     144        md = checkfield(md, 'fieldname', 'inversion.maxsteps', 'numel', [1], '>=', 0)
     145        md = checkfield(md, 'fieldname', 'inversion.maxiter', 'numel', [1], '>=', 0)
     146        md = checkfield(md, 'fieldname', 'inversion.dxmin', 'numel', [1], '>', 0.)
     147        md = checkfield(md, 'fieldname', 'inversion.gttol', 'numel', [1], '>', 0.)
     148        md = checkfield(md, 'fieldname', 'inversion.cost_functions', 'size', [num_costfunc], 'values', supportedcostfunctions())
     149        md = checkfield(md, 'fieldname', 'inversion.cost_functions_coefficients', 'size', [md.mesh.numberofvertices, num_costfunc], '>=', 0)
     150        md = checkfield(md, 'fieldname', 'inversion.min_parameters', 'size', [md.mesh.numberofvertices, num_controls])
     151        md = checkfield(md, 'fieldname', 'inversion.max_parameters', 'size', [md.mesh.numberofvertices, num_controls])
    141152
    142                 md = checkfield(md,'fieldname','inversion.iscontrol','values',[0,1])
    143                 md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])
    144                 md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())
    145                 md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[num_controls],'>',0,'NaN',1,'Inf',1)
    146                 md = checkfield(md,'fieldname','inversion.maxsteps','numel',[1],'>=',0)
    147                 md = checkfield(md,'fieldname','inversion.maxiter','numel',[1],'>=',0)
    148                 md = checkfield(md,'fieldname','inversion.dxmin','numel',[1],'>',0.)
    149                 md = checkfield(md,'fieldname','inversion.gttol','numel',[1],'>',0.)
    150                 md = checkfield(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',supportedcostfunctions())
    151                 md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0)
    152                 md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices,num_controls])
    153                 md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices,num_controls])
     153        if solution == 'BalancethicknessSolution':
     154            md = checkfield(md, 'fieldname', 'inversion.thickness_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
     155        else:
     156            md = checkfield(md, 'fieldname', 'inversion.vx_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
     157            md = checkfield(md, 'fieldname', 'inversion.vy_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
    154158
    155                 if solution=='BalancethicknessSolution':
    156                         md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    157                 else:
    158                         md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    159                         md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
     159        return md
     160    # }}}
    160161
    161                 return md
    162         # }}}
    163         def marshall(self,prefix,md,fid):    # {{{
     162    def marshall(self, prefix, md, fid):  # {{{
     163        yts = md.constants.yts
     164        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'iscontrol', 'format', 'Boolean')
     165        WriteData(fid, prefix, 'name', 'md.inversion.type', 'data', 2, 'format', 'Integer')
     166        if not self.iscontrol:
     167            return
     168        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'incomplete_adjoint', 'format', 'Boolean')
     169        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'control_scaling_factors', 'format', 'DoubleMat', 'mattype', 3)
     170        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'maxsteps', 'format', 'Integer')
     171        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'maxiter', 'format', 'Integer')
     172        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'dxmin', 'format', 'Double')
     173        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'gttol', 'format', 'Double')
     174        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'cost_functions_coefficients', 'format', 'DoubleMat', 'mattype', 1)
     175        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'min_parameters', 'format', 'DoubleMat', 'mattype', 3)
     176        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'max_parameters', 'format', 'DoubleMat', 'mattype', 3)
     177        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'vx_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
     178        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'vy_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
     179        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'vz_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
     180        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'thickness_obs', 'format', 'DoubleMat', 'mattype', 1)
    164181
    165                 yts=md.constants.yts
     182    #process control parameters
     183        num_control_parameters = len(self.control_parameters)
     184        WriteData(fid, prefix, 'object', self, 'fieldname', 'control_parameters', 'format', 'StringArray')
     185        WriteData(fid, prefix, 'data', num_control_parameters, 'name', 'md.inversion.num_control_parameters', 'format', 'Integer')
    166186
    167                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean')
    168                 WriteData(fid,prefix,'name','md.inversion.type','data',2,'format','Integer')
    169                 if not self.iscontrol:
    170                         return
    171                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean')
    172                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3)
    173                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxsteps','format','Integer')
    174                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxiter','format','Integer')
    175                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','dxmin','format','Double')
    176                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gttol','format','Double')
    177                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1)
    178                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3)
    179                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3)
    180                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts)
    181                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts)
    182                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts)
    183                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',1)
    184 
    185                 #process control parameters
    186                 num_control_parameters=len(self.control_parameters)
    187                 WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray')
    188                 WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer')
    189 
    190                 #process cost functions
    191                 num_cost_functions=np.size(self.cost_functions)
    192                 data=marshallcostfunctions(self.cost_functions)
    193                 WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray')
    194                 WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer')
    195         # }}}
     187    #process cost functions
     188        num_cost_functions = np.size(self.cost_functions)
     189        data = marshallcostfunctions(self.cost_functions)
     190        WriteData(fid, prefix, 'data', data, 'name', 'md.inversion.cost_functions', 'format', 'StringArray')
     191        WriteData(fid, prefix, 'data', num_cost_functions, 'name', 'md.inversion.num_cost_functions', 'format', 'Integer')
     192    # }}}
  • issm/trunk-jpl/src/m/classes/mask.py

    r22096 r24213  
    44from checkfield import checkfield
    55from WriteData import WriteData
    6 import MatlabFuncs as m
     6
    77
    88class mask(object):
    9         """
    10         MASK class definition
     9    """
     10    MASK class definition
    1111
    12            Usage:
    13               mask=mask();
    14         """
     12       Usage:
     13          mask = mask()
     14    """
    1515
    16         def __init__(self): # {{{
    17                 self.ice_levelset        = float('NaN')
    18                 self.groundedice_levelset = float('NaN')
     16    def __init__(self): # {{{
     17        self.ice_levelset = float('NaN')
     18        self.groundedice_levelset = float('NaN')
    1919
    20                 #set defaults
    21                 self.setdefaultparameters()
     20    #set defaults
     21        self.setdefaultparameters()
    2222
    23                 #}}}
    24         def __repr__(self): # {{{
    25                 string="   masks:"
     23    #}}}
    2624
    27                 string="%s\n%s"%(string,fielddisplay(self,"groundedice_levelset","is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0"))
    28                 string="%s\n%s"%(string,fielddisplay(self,"ice_levelset","presence of ice if < 0, icefront position if = 0, no ice if > 0"))
    29                 return string
    30                 #}}}
    31         def extrude(self,md): # {{{
    32                 self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node')
    33                 self.groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node')
    34                 return self
    35         #}}}
    36         def setdefaultparameters(self): # {{{
    37                 return self
    38         #}}}
    39         def checkconsistency(self,md,solution,analyses):    # {{{
    40                 if(solution=='LoveSolution'):
    41                         return
     25    def __repr__(self):  # {{{
     26        string = "   masks:"
    4227
    43                 md = checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices])
    44                 isice=np.array(md.mask.ice_levelset<=0,int)
    45                 if np.sum(isice)==0:
    46                         raise TypeError("no ice present in the domain")
     28        string = "%s\n%s" % (string, fielddisplay(self, "groundedice_levelset", "is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0"))
     29        string = "%s\n%s" % (string, fielddisplay(self, "ice_levelset", "presence of ice if < 0, icefront position if = 0, no ice if > 0"))
     30        return string
     31    #}}}
    4732
    48                 return md
    49         # }}}
    50         def marshall(self,prefix,md,fid):    # {{{
    51                 WriteData(fid,prefix,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1)
    52                 WriteData(fid,prefix,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1)
    53         # }}}
     33    def extrude(self, md):  # {{{
     34        self.ice_levelset = project3d(md, 'vector', self.ice_levelset, 'type', 'node')
     35        self.groundedice_levelset = project3d(md, 'vector', self.groundedice_levelset, 'type', 'node')
     36        return self
     37    #}}}
     38
     39    def setdefaultparameters(self):  # {{{
     40        return self
     41    #}}}
     42
     43    def checkconsistency(self, md, solution, analyses):  # {{{
     44        if(solution == 'LoveSolution'):
     45            return
     46
     47        md = checkfield(md, 'fieldname', 'mask.ice_levelset', 'size', [md.mesh.numberofvertices])
     48        isice = np.array(md.mask.ice_levelset <= 0, int)
     49        if np.sum(isice) == 0:
     50            raise TypeError("no ice present in the domain")
     51
     52        return md
     53    # }}}
     54
     55    def marshall(self, prefix, md, fid):  # {{{
     56        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundedice_levelset', 'format', 'DoubleMat', 'mattype', 1)
     57        WriteData(fid, prefix, 'object', self, 'fieldname', 'ice_levelset', 'format', 'DoubleMat', 'mattype', 1)
     58    # }}}
  • issm/trunk-jpl/src/m/classes/maskpsl.py

    r23064 r24213  
    66from WriteData import WriteData
    77
     8
    89class maskpsl(object):
    9 #MASKPSL class definition
    10 #
    11 #   Usage:
    12 #      maskpsl=maskpsl();
     10    #MASKPSL class definition
     11    #
     12    #   Usage:
     13    #      maskpsl = maskpsl()
    1314
    14         def __init__(self,*args): # {{{
    15                 self.groundedice_levelset = float('NaN')
    16                 self.ice_levelset        = float('NaN')
    17                 self.ocean_levelset = float('NaN')
    18                 self.land_levelset = float('NaN')
     15    def __init__(self, *args): # {{{
     16        self.groundedice_levelset = float('NaN')
     17        self.ice_levelset = float('NaN')
     18        self.ocean_levelset = float('NaN')
     19        self.land_levelset = float('NaN')
    1920
    20                 if not len(args):
    21                         self.setdefaultparameters()
    22                 else:
    23                         raise RuntimeError('constructor not supported')
    24         # }}}
    25         def __repr__(self): # {{{
    26                 string='   masks:'
    27                 string="%s\n%s"%(string,fielddisplay(self,'groundedice_levelset','is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0'))
    28                 string="%s\n%s"%(string,fielddisplay(self,'ice_levelset','presence of ice if < 0, icefront position if = 0, no ice if > 0'))
    29                 string="%s\n%s"%(string,fielddisplay(self,'ocean_levelset','is the vertex on the ocean ? yes if = 1, no if = 0'))
    30                 string="%s\n%s"%(string,fielddisplay(self,'land_levelset','is the vertex on the land ? yes if = 1, no if = 0'))
    31                 return string
     21        if not len(args):
     22            self.setdefaultparameters()
     23        else:
     24            raise RuntimeError('constructor not supported')
     25    # }}}
    3226
    33         # }}}   
    34         def loadobj(self): # {{{
    35                 # This def is directly called by matlab when a model object is
    36                 # loaded. Update old properties here
    37                 #2014 February 5th
    38                 if numel(self.ice_levelset)>1 and all(self.ice_levelset>=0):
    39                         print('WARNING: md.mask.ice_levelset>=0, you probably need to change the sign of this levelset')
    40                 return self
    41         # }}}
     27    def __repr__(self):  # {{{
     28        string = '   masks:'
     29        string = "%s\n%s" % (string, fielddisplay(self, 'groundedice_levelset', 'is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0'))
     30        string = "%s\n%s" % (string, fielddisplay(self, 'ice_levelset', 'presence of ice if < 0, icefront position if = 0, no ice if > 0'))
     31        string = "%s\n%s" % (string, fielddisplay(self, 'ocean_levelset', 'is the vertex on the ocean ? yes if = 1, no if = 0'))
     32        string = "%s\n%s" % (string, fielddisplay(self, 'land_levelset', 'is the vertex on the land ? yes if = 1, no if = 0'))
     33        return string
    4234
    43         def setdefaultparameters(self): # {{{
    44                 return self
     35    # }}}
    4536
    46         # }}}
     37    def loadobj(self):  # {{{
     38        # This def is directly called by matlab when a model object is
     39        # loaded. Update old properties here
     40        #2014 February 5th
     41        if numel(self.ice_levelset) > 1 and all(self.ice_levelset >= 0):
     42            print('WARNING: md.mask.ice_levelset >= 0, you probably need to change the sign of this levelset')
     43        return self
     44    # }}}
    4745
    48         def checkconsistency(self,md,solution,analyses): # {{{
    49                 md = checkfield(md,'fieldname','mask.groundedice_levelset','size',[md.mesh.numberofvertices])
    50                 md = checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices])
    51                 md = checkfield(md,'fieldname','mask.ocean_levelset','size',[md.mesh.numberofvertices])
    52                 md = checkfield(md,'fieldname','mask.land_levelset','size',[md.mesh.numberofvertices])
    53                 isice=(md.mask.ice_levelset<=0)
    54                 if sum(isice)==0:
    55                         print('no ice present in the domain')
     46    def setdefaultparameters(self):  # {{{
     47        return self
    5648
    57                 if max(md.mask.ice_levelset)<0:
    58                         print('no ice front provided')
     49    # }}}
    5950
    60                 elements=md.mesh.elements-1; elements=elements.astype(np.int32, copy=False);
    61                 icefront=np.sum(md.mask.ice_levelset[elements]==0,axis=1)
    62                 if (max(icefront)==3 & m.strcmp(md.mesh.elementtype(),'Tria')) or (max(icefront==6) & m.strcmp(md.mesh.elementtype(),'Penta')):
    63                         raise RuntimeError('At least one element has all nodes on ice front, change md.mask.ice_levelset to fix it')
     51    def checkconsistency(self, md, solution, analyses):  # {{{
     52        md = checkfield(md, 'fieldname', 'mask.groundedice_levelset', 'size', [md.mesh.numberofvertices])
     53        md = checkfield(md, 'fieldname', 'mask.ice_levelset', 'size', [md.mesh.numberofvertices])
     54        md = checkfield(md, 'fieldname', 'mask.ocean_levelset', 'size', [md.mesh.numberofvertices])
     55        md = checkfield(md, 'fieldname', 'mask.land_levelset', 'size', [md.mesh.numberofvertices])
     56        isice = (md.mask.ice_levelset <= 0)
     57        if sum(isice) == 0:
     58            print('no ice present in the domain')
    6459
    65                 return md
     60        if max(md.mask.ice_levelset) < 0:
     61            print('no ice front provided')
    6662
    67         # }}}
     63        elements = md.mesh.elements - 1
     64        elements = elements.astype(np.int32, copy=False)
     65        icefront = np.sum(md.mask.ice_levelset[elements] == 0, axis=1)
     66        if (max(icefront) == 3 & m.strcmp(md.mesh.elementtype(), 'Tria')) or (max(icefront == 6) & m.strcmp(md.mesh.elementtype(), 'Penta')):
     67            raise RuntimeError('At least one element has all nodes on ice front, change md.mask.ice_levelset to fix it')
    6868
    69         def extrude(self,md): # {{{
    70                 self.groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node')
    71                 self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node')
    72                 self.ocean_levelset=project3d(md,'vector',self.ocean_levelset,'type','node')
    73                 self.land_levelset=project3d(md,'vector',self.land_levelset,'type','node')
    74                 return self
    75         # }}}
     69        return md
    7670
    77         def mask(*args): # {{{
    78                 if not len(args):
    79                         self.setdefaultparameters()
    80                 else:
    81                         raise RuntimeError('constructor not supported')
    82                 return self
     71    # }}}
    8372
    84         # }}}
     73    def extrude(self, md):  # {{{
     74        self.groundedice_levelset = project3d(md, 'vector', self.groundedice_levelset, 'type', 'node')
     75        self.ice_levelset = project3d(md, 'vector', self.ice_levelset, 'type', 'node')
     76        self.ocean_levelset = project3d(md, 'vector', self.ocean_levelset, 'type', 'node')
     77        self.land_levelset = project3d(md, 'vector', self.land_levelset, 'type', 'node')
     78        return self
     79    # }}}
    8580
    86         def marshall(self,prefix,md,fid): # {{{
    87                 WriteData(fid,prefix,'name','md.mask.type','data',type(md.mask).__name__,'format','String')
    88                 WriteData(fid,prefix,'object',self,'class','mask','fieldname','groundedice_levelset','format','DoubleMat','mattype',1)
    89                 WriteData(fid,prefix,'object',self,'class','mask','fieldname','ice_levelset','format','DoubleMat','mattype',1)
    90                 WriteData(fid,prefix,'object',self,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1)
    91                 WriteData(fid,prefix,'object',self,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1)
    92         # }}}
    93         def savemodeljs(self,fid,modelname): # {{{
    94                 writejs1Darray(fid,[modelname, '.mask.groundedice_levelset'],self.groundedice_levelset)
    95                 writejs1Darray(fid,[modelname, '.mask.ice_levelset'],self.ice_levelset)
    96                 writejs1Darray(fid,[modelname, '.mask.ocean_levelset'],self.ocean_levelset)
    97                 writejs1Darray(fid,[modelname, '.mask.land_levelset'],self.land_levelset)
    98         # }}}
     81    def mask(*args):  # {{{
     82        if not len(args):
     83            self.setdefaultparameters()
     84        else:
     85            raise RuntimeError('constructor not supported')
     86        return self
    9987
     88    # }}}
     89
     90    def marshall(self, prefix, md, fid):  # {{{
     91        WriteData(fid, prefix, 'name', 'md.mask.type', 'data', type(md.mask).__name__, 'format', 'String')
     92        WriteData(fid, prefix, 'object', self, 'class', 'mask', 'fieldname', 'groundedice_levelset', 'format', 'DoubleMat', 'mattype', 1)
     93        WriteData(fid, prefix, 'object', self, 'class', 'mask', 'fieldname', 'ice_levelset', 'format', 'DoubleMat', 'mattype', 1)
     94        WriteData(fid, prefix, 'object', self, 'class', 'mask', 'fieldname', 'ocean_levelset', 'format', 'DoubleMat', 'mattype', 1)
     95        WriteData(fid, prefix, 'object', self, 'class', 'mask', 'fieldname', 'land_levelset', 'format', 'DoubleMat', 'mattype', 1)
     96    # }}}
     97
     98    def savemodeljs(self, fid, modelname):  # {{{
     99        writejs1Darray(fid, [modelname, '.mask.groundedice_levelset'], self.groundedice_levelset)
     100        writejs1Darray(fid, [modelname, '.mask.ice_levelset'], self.ice_levelset)
     101        writejs1Darray(fid, [modelname, '.mask.ocean_levelset'], self.ocean_levelset)
     102        writejs1Darray(fid, [modelname, '.mask.land_levelset'], self.land_levelset)
     103    # }}}
  • issm/trunk-jpl/src/m/classes/massfluxatgate.py

    r23716 r24213  
    66import os
    77
     8
    89class massfluxatgate(object):
    9         """
    10         MASSFLUXATEGATE class definition
     10    """
     11    MASSFLUXATEGATE class definition
    1112
    12            Usage:
    13                   massfluxatgate=massfluxatgate('GateName','PathToExpFile')
    14         """
     13       Usage:
     14          massfluxatgate = massfluxatgate('GateName', 'PathToExpFile')
     15    """
    1516
    16         def __init__(self,*args): # {{{
     17    def __init__(self, *args): # {{{
    1718
    18                 self.name            = ''
    19                 self.definitionstring = ''
    20                 self.profilename    = ''
    21                 self.segments        = float('NaN')
     19        self.name = ''
     20        self.definitionstring = ''
     21        self.profilename = ''
     22        self.segments = float('NaN')
    2223
    23                 #set defaults
    24                 self.setdefaultparameters()
     24    #set defaults
     25        self.setdefaultparameters()
    2526
    26                 #use provided options to change fields
    27                 options=pairoptions(*args)
     27    #use provided options to change fields
     28        options = pairoptions(*args)
    2829
    29                 #OK get other fields
    30                 self=options.AssignObjectFields(self)
     30    #OK get other fields
     31        self = options.AssignObjectFields(self)
    3132
    32                 #}}}
    33         def __repr__(self): # {{{
     33    #}}}
    3434
    35                 string="   Massfluxatgate:"
    36                 string="%s\n%s"%(string,fielddisplay(self,'name','identifier for this massfluxatgate response'))
    37                 string="%s\n%s"%(string,fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from Outputdefinition[1-100]'))
    38                 string="%s\n%s"%(string,fielddisplay(self,'profilename','name of file (shapefile or argus file) defining a profile (or gate)'))
    39                 return string
    40                 #}}}
    41         def extrude(self,md): # {{{
    42                 return self
    43            #}}}
    44         def setdefaultparameters(self): # {{{
    45                 return self
    46         #}}}
    47         def checkconsistency(self,md,solution,analyses):    # {{{
     35    def __repr__(self):  # {{{
    4836
    49                 if  not isinstance(self.name, str):
    50                         raise RuntimeError("massfluxatgate error message: 'name' field should be a string!")
     37        string = "   Massfluxatgate:"
     38        string = "%s\n%s" % (string, fielddisplay(self, 'name', 'identifier for this massfluxatgate response'))
     39        string = "%s\n%s" % (string, fielddisplay(self, 'definitionstring', 'string that identifies this output definition uniquely, from Outputdefinition[1 - 100]'))
     40        string = "%s\n%s" % (string, fielddisplay(self, 'profilename', 'name of file (shapefile or argus file) defining a profile (or gate)'))
     41        return string
     42    #}}}
    5143
    52                 if  not isinstance(self.profilename, str):
    53                         raise RuntimeError("massfluxatgate error message: 'profilename' field should be a string!")
     44    def extrude(self, md):  # {{{
     45        return self
     46    #}}}
    5447
    55                 OutputdefinitionStringArray=[]
    56                 for i in range(1,100):
    57                         x='Outputdefinition'+str(i)
    58                         OutputdefinitionStringArray.append(x)
     48    def setdefaultparameters(self):  # {{{
     49        return self
     50    #}}}
    5951
    60                 md = checkfield(md,'field',self.definitionstring,'values',OutputdefinitionStringArray)
     52    def checkconsistency(self, md, solution, analyses):  # {{{
     53        if not isinstance(self.name, str):
     54            raise RuntimeError("massfluxatgate error message: 'name' field should be a string!")
    6155
    62                 #check the profilename points to a file!:
    63                 if not os.path.isfile(self.profilename):
    64                         raise RuntimeError("massfluxatgate error message: file name for profile corresponding to gate does not point to a legitimate file on disk!")
     56        if not isinstance(self.profilename, str):
     57            raise RuntimeError("massfluxatgate error message: 'profilename' field should be a string!")
    6558
    66                 return md
    67         # }}}
    68         def marshall(self,prefix,md,fid):    # {{{
     59        OutputdefinitionStringArray = []
     60        for i in range(1, 100):
     61            x = 'Outputdefinition' + str(i)
     62            OutputdefinitionStringArray.append(x)
    6963
    70                 #before marshalling, we need to create the segments out of the profilename:
    71                 self.segments=MeshProfileIntersection(md.mesh.elements,md.mesh.x,md.mesh.y,self.profilename)[0]
     64        md = checkfield(md, 'field', self.definitionstring, 'values', OutputdefinitionStringArray)
    7265
    73                 #ok, marshall name and segments:
    74                 WriteData(fid,prefix,'data',self.name,'name','md.massfluxatgate.name','format','String');
    75                 WriteData(fid,prefix,'data',self.definitionstring,'name','md.massfluxatgate.definitionstring','format','String');
    76                 WriteData(fid,prefix,'data',self.segments,'name','md.massfluxatgate.segments','format','DoubleMat','mattype',1);
     66        #check the profilename points to a file!:
     67        if not os.path.isfile(self.profilename):
     68            raise RuntimeError("massfluxatgate error message: file name for profile corresponding to gate does not point to a legitimate file on disk!")
    7769
    78         # }}}
     70        return md
     71    # }}}
     72
     73    def marshall(self, prefix, md, fid):  # {{{
     74        #before marshalling, we need to create the segments out of the profilename:
     75        self.segments = MeshProfileIntersection(md.mesh.elements, md.mesh.x, md.mesh.y, self.profilename)[0]
     76
     77    #ok, marshall name and segments:
     78        WriteData(fid, prefix, 'data', self.name, 'name', 'md.massfluxatgate.name', 'format', 'String')
     79        WriteData(fid, prefix, 'data', self.definitionstring, 'name', 'md.massfluxatgate.definitionstring', 'format', 'String')
     80        WriteData(fid, prefix, 'data', self.segments, 'name', 'md.massfluxatgate.segments', 'format', 'DoubleMat', 'mattype', 1)
     81
     82    # }}}
  • issm/trunk-jpl/src/m/classes/masstransport.py

    r24192 r24213  
    44from WriteData import WriteData
    55
     6
    67class masstransport(object):
    7         """
    8         MASSTRANSPORT class definition
     8    """
     9    MASSTRANSPORT class definition
    910
    10            Usage:
    11               masstransport=masstransport();
    12         """
     11       Usage:
     12          masstransport = masstransport()
     13    """
    1314
    14         def __init__(self): # {{{
    15                 self.spcthickness          = float('NaN')
    16                 self.isfreesurface          = 0
    17                 self.min_thickness          = 0.
    18                 self.hydrostatic_adjustment = 0
    19                 self.stabilization          = 0
    20                 self.vertex_pairing        = float('NaN')
    21                 self.penalty_factor        = 0
    22                 self.requested_outputs      = []
     15    def __init__(self): # {{{
     16        self.spcthickness = float('NaN')
     17        self.isfreesurface = 0
     18        self.min_thickness = 0.
     19        self.hydrostatic_adjustment = 0
     20        self.stabilization = 0
     21        self.vertex_pairing = float('NaN')
     22        self.penalty_factor = 0
     23        self.requested_outputs = []
    2324
    24                 #set defaults
    25                 self.setdefaultparameters()
     25    #set defaults
     26        self.setdefaultparameters()
    2627
    27                 #}}}
    28         def __repr__(self): # {{{
    29                 string='   Masstransport solution parameters:'
    30                 string="%s\n%s"%(string,fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]'))
    31                 string="%s\n%s"%(string,fielddisplay(self,'isfreesurface','do we use free surfaces (FS only) or mass conservation'))
    32                 string="%s\n%s"%(string,fielddisplay(self,'min_thickness','minimum ice thickness allowed [m]'))
    33                 string="%s\n%s"%(string,fielddisplay(self,'hydrostatic_adjustment','adjustment of ice shelves surface and bed elevations: ''Incremental'' or ''Absolute'' '))
    34                 string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding, 3: discontinuous Galerkin, 4: Flux Correction Transport'))
    35                 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
     28    #}}}
    3629
    37                 return string
    38                 #}}}
    39         def extrude(self,md): # {{{
    40                 self.spcthickness=project3d(md,'vector',self.spcthickness,'type','node')
    41                 return self
    42         #}}}
    43         def defaultoutputs(self,md): # {{{
     30    def __repr__(self):  # {{{
     31        string = '   Masstransport solution parameters:'
     32        string = "%s\n%s" % (string, fielddisplay(self, 'spcthickness', 'thickness constraints (NaN means no constraint) [m]'))
     33        string = "%s\n%s" % (string, fielddisplay(self, 'isfreesurface', 'do we use free surfaces (FS only) or mass conservation'))
     34        string = "%s\n%s" % (string, fielddisplay(self, 'min_thickness', 'minimum ice thickness allowed [m]'))
     35        string = "%s\n%s" % (string, fielddisplay(self, 'hydrostatic_adjustment', 'adjustment of ice shelves surface and bed elevations: ''Incremental'' or ''Absolute'' '))
     36        string = "%s\n%s" % (string, fielddisplay(self, 'stabilization', '0: no, 1: artificial_diffusivity, 2: streamline upwinding, 3: discontinuous Galerkin, 4: Flux Correction Transport'))
     37        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
    4438
    45                 return ['Thickness','Surface','Base']
     39        return string
     40    #}}}
    4641
    47         #}}}
    48         def setdefaultparameters(self): # {{{
     42    def extrude(self, md):  # {{{
     43        self.spcthickness = project3d(md, 'vector', self.spcthickness, 'type', 'node')
     44        return self
     45    #}}}
    4946
    50                 #Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
    51                 self.stabilization=1
     47    def defaultoutputs(self, md):  # {{{
     48        return ['Thickness', 'Surface', 'Base']
    5249
    53                 #Factor applied to compute the penalties kappa=max(stiffness matrix)*10^penalty_factor
    54                 self.penalty_factor=3
     50    #}}}
     51    def setdefaultparameters(self):  # {{{
     52        #Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
     53        self.stabilization = 1
     54        #Factor applied to compute the penalties kappa = max(stiffness matrix) * 10^penalty_factor
     55        self.penalty_factor = 3
     56        #Minimum ice thickness that can be used
     57        self.min_thickness = 1
     58        #Hydrostatic adjustment
     59        self.hydrostatic_adjustment = 'Absolute'
     60        #default output
     61        self.requested_outputs = ['default']
     62        return self
     63    #}}}
    5564
    56                 #Minimum ice thickness that can be used
    57                 self.min_thickness=1
     65    def checkconsistency(self, md, solution, analyses):  # {{{
     66        #Early return
     67        if ('MasstransportAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.ismasstransport):
     68            return md
    5869
    59                 #Hydrostatic adjustment
    60                 self.hydrostatic_adjustment='Absolute'
     70        md = checkfield(md, 'fieldname', 'masstransport.spcthickness', 'Inf', 1, 'timeseries', 1)
     71        md = checkfield(md, 'fieldname', 'masstransport.isfreesurface', 'values', [0, 1])
     72        md = checkfield(md, 'fieldname', 'masstransport.hydrostatic_adjustment', 'values', ['Absolute', 'Incremental'])
     73        md = checkfield(md, 'fieldname', 'masstransport.stabilization', 'values', [0, 1, 2, 3, 4])
     74        md = checkfield(md, 'fieldname', 'masstransport.min_thickness', '>', 0)
     75        md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
    6176
    62                 #default output
    63                 self.requested_outputs=['default']
    64                 return self
    65         #}}}
    66         def checkconsistency(self,md,solution,analyses):    # {{{
     77        return md
     78    # }}}
    6779
    68                 #Early return
    69                 if ('MasstransportAnalysis' not in analyses) or (solution=='TransientSolution' and not md.transient.ismasstransport):
    70                         return md
     80    def marshall(self, prefix, md, fid):  # {{{
     81        WriteData(fid, prefix, 'object', self, 'fieldname', 'spcthickness', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     82        WriteData(fid, prefix, 'object', self, 'fieldname', 'isfreesurface', 'format', 'Boolean')
     83        WriteData(fid, prefix, 'object', self, 'fieldname', 'min_thickness', 'format', 'Double')
     84        WriteData(fid, prefix, 'data', self.hydrostatic_adjustment, 'format', 'String', 'name', 'md.masstransport.hydrostatic_adjustment')
     85        WriteData(fid, prefix, 'object', self, 'fieldname', 'stabilization', 'format', 'Integer')
     86        WriteData(fid, prefix, 'object', self, 'fieldname', 'vertex_pairing', 'format', 'DoubleMat', 'mattype', 3)
     87        WriteData(fid, prefix, 'object', self, 'fieldname', 'penalty_factor', 'format', 'Double')
    7188
    72                 md = checkfield(md,'fieldname','masstransport.spcthickness','Inf',1,'timeseries',1)
    73                 md = checkfield(md,'fieldname','masstransport.isfreesurface','values',[0,1])
    74                 md = checkfield(md,'fieldname','masstransport.hydrostatic_adjustment','values',['Absolute','Incremental'])
    75                 md = checkfield(md,'fieldname','masstransport.stabilization','values',[0,1,2,3,4])
    76                 md = checkfield(md,'fieldname','masstransport.min_thickness','>',0)
    77                 md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
    78 
    79                 return md
    80         # }}}
    81         def marshall(self,prefix,md,fid):    # {{{
    82 
    83                 yts=md.constants.yts
    84 
    85                 WriteData(fid,prefix,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    86                 WriteData(fid,prefix,'object',self,'fieldname','isfreesurface','format','Boolean')
    87                 WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double')
    88                 WriteData(fid,prefix,'data',self.hydrostatic_adjustment,'format','String','name','md.masstransport.hydrostatic_adjustment')
    89                 WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer')
    90                 WriteData(fid,prefix,'object',self,'fieldname','vertex_pairing','format','DoubleMat','mattype',3)
    91                 WriteData(fid,prefix,'object',self,'fieldname','penalty_factor','format','Double')
    92 
    93                 #process requested outputs
    94                 outputs = self.requested_outputs
    95                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    96                 if len(indices) > 0:
    97                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    98                         outputs    =outputscopy
    99                 WriteData(fid,prefix,'data',outputs,'name','md.masstransport.requested_outputs','format','StringArray')
    100         # }}}
     89    #process requested outputs
     90        outputs = self.requested_outputs
     91        indices = [i for i, x in enumerate(outputs) if x == 'default']
     92        if len(indices) > 0:
     93            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     94            outputs = outputscopy
     95        WriteData(fid, prefix, 'data', outputs, 'name', 'md.masstransport.requested_outputs', 'format', 'StringArray')
     96    # }}}
  • issm/trunk-jpl/src/m/classes/matdamageice.py

    r23774 r24213  
    44from WriteData import WriteData
    55
     6
    67class matdamageice(object):
    7         """
    8         MATICE class definition
     8    """
     9    MATICE class definition
    910
    10            Usage:
    11               matdamagice=matdamageice();
    12         """
     11       Usage:
     12          matdamagice = matdamageice()
     13    """
    1314
    14         def __init__(self): # {{{
    15                 self.rho_ice                  = 0.
    16                 self.rho_water                = 0.
    17                 self.rho_freshwater            = 0.
    18                 self.mu_water                  = 0.
    19                 self.heatcapacity              = 0.
    20                 self.latentheat                = 0.
    21                 self.thermalconductivity      = 0.
    22                 self.temperateiceconductivity = 0.
    23                 self.effectiveconductivity_averaging = 0
    24                 self.meltingpoint              = 0.
    25                 self.beta                      = 0.
    26                 self.mixed_layer_capacity      = 0.
    27                 self.thermal_exchange_velocity = 0.
    28                 self.rheology_B                = float('NaN')
    29                 self.rheology_n                = float('NaN')
    30                 self.rheology_law              = ''
     15    def __init__(self): # {{{
     16        self.rho_ice = 0.
     17        self.rho_water = 0.
     18        self.rho_freshwater = 0.
     19        self.mu_water = 0.
     20        self.heatcapacity = 0.
     21        self.latentheat = 0.
     22        self.thermalconductivity = 0.
     23        self.temperateiceconductivity = 0.
     24        self.effectiveconductivity_averaging = 0
     25        self.meltingpoint = 0.
     26        self.beta = 0.
     27        self.mixed_layer_capacity = 0.
     28        self.thermal_exchange_velocity = 0.
     29        self.rheology_B = float('NaN')
     30        self.rheology_n = float('NaN')
     31        self.rheology_law = ''
    3132
    32                 #giaivins:
    33                 self.lithosphere_shear_modulus = 0.
    34                 self.lithosphere_density        = 0.
    35                 self.mantle_shear_modulus      = 0.
    36                 self.mantle_density            = 0.
     33    #giaivins:
     34        self.lithosphere_shear_modulus = 0.
     35        self.lithosphere_density = 0.
     36        self.mantle_shear_modulus = 0.
     37        self.mantle_density = 0.
    3738
    38                 #SLR
    39                 self.earth_density= 5512;  # average density of the Earth, (kg/m^3)
     39    #SLR
     40        self.earth_density = 5512  # average density of the Earth, (kg / m^3)
     41        self.setdefaultparameters()
     42    #}}}
    4043
    41                 self.setdefaultparameters()
    42                 #}}}
     44    def __repr__(self):  # {{{
     45        string = "   Materials:"
     46        string = "%s\n%s" % (string, fielddisplay(self, "rho_ice", "ice density [kg / m^3]"))
     47        string = "%s\n%s" % (string, fielddisplay(self, "rho_water", "water density [kg / m^3]"))
     48        string = "%s\n%s" % (string, fielddisplay(self, "rho_freshwater", "fresh water density [kg / m^3]"))
     49        string = "%s\n%s" % (string, fielddisplay(self, "mu_water", "water viscosity [N s / m^2]"))
     50        string = "%s\n%s" % (string, fielddisplay(self, "heatcapacity", "heat capacity [J / kg / K]"))
     51        string = "%s\n%s" % (string, fielddisplay(self, "thermalconductivity", "ice thermal conductivity [W / m / K]"))
     52        string = "%s\n%s" % (string, fielddisplay(self, "temperateiceconductivity", "temperate ice thermal conductivity [W / m / K]"))
     53        string = "%s\n%s" % (string, fielddisplay(self, "effectiveconductivity_averaging", "computation of effectiveconductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)"))
     54        string = "%s\n%s" % (string, fielddisplay(self, "meltingpoint", "melting point of ice at 1atm in K"))
     55        string = "%s\n%s" % (string, fielddisplay(self, "latentheat", "latent heat of fusion [J / m^3]"))
     56        string = "%s\n%s" % (string, fielddisplay(self, "beta", "rate of change of melting point with pressure [K / Pa]"))
     57        string = "%s\n%s" % (string, fielddisplay(self, "mixed_layer_capacity", "mixed layer capacity [W / kg / K]"))
     58        string = "%s\n%s" % (string, fielddisplay(self, "thermal_exchange_velocity", "thermal exchange velocity [m / s]"))
     59        string = "%s\n%s" % (string, fielddisplay(self, "rheology_B", "flow law parameter [Pa s^(1 / n)]"))
     60        string = "%s\n%s" % (string, fielddisplay(self, "rheology_n", "Glen's flow law exponent"))
     61        string = "%s\n%s" % (string, fielddisplay(self, "rheology_law", "law for the temperature dependance of the rheology: 'None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius' or 'LliboutryDuval'"))
     62        string = "%s\n%s" % (string, fielddisplay(self, "lithosphere_shear_modulus", "Lithosphere shear modulus [Pa]"))
     63        string = "%s\n%s" % (string, fielddisplay(self, "lithosphere_density", "Lithosphere density [g / cm^ - 3]"))
     64        string = "%s\n%s" % (string, fielddisplay(self, "mantle_shear_modulus", "Mantle shear modulus [Pa]"))
     65        string = "%s\n%s" % (string, fielddisplay(self, "mantle_density", "Mantle density [g / cm^ - 3]"))
     66        string = "%s\n%s" % (string, fielddisplay(self, "earth_density", "Mantle density [kg / m^ - 3]"))
     67        return string
     68    #}}}
    4369
    44         def __repr__(self): # {{{
    45                 string="   Materials:"
    46                 string="%s\n%s"%(string,fielddisplay(self,"rho_ice","ice density [kg/m^3]"))
    47                 string="%s\n%s"%(string,fielddisplay(self,"rho_water","water density [kg/m^3]"))
    48                 string="%s\n%s"%(string,fielddisplay(self,"rho_freshwater","fresh water density [kg/m^3]"))
    49                 string="%s\n%s"%(string,fielddisplay(self,"mu_water","water viscosity [N s/m^2]"))
    50                 string="%s\n%s"%(string,fielddisplay(self,"heatcapacity","heat capacity [J/kg/K]"))
    51                 string="%s\n%s"%(string,fielddisplay(self,"thermalconductivity","ice thermal conductivity [W/m/K]"))
    52                 string="%s\n%s"%(string,fielddisplay(self,"temperateiceconductivity","temperate ice thermal conductivity [W/m/K]"))
    53                 string="%s\n%s"%(string,fielddisplay(self,"effectiveconductivity_averaging","computation of effectiveconductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)"))
    54                 string="%s\n%s"%(string,fielddisplay(self,"meltingpoint","melting point of ice at 1atm in K"))
    55                 string="%s\n%s"%(string,fielddisplay(self,"latentheat","latent heat of fusion [J/m^3]"))
    56                 string="%s\n%s"%(string,fielddisplay(self,"beta","rate of change of melting point with pressure [K/Pa]"))
    57                 string="%s\n%s"%(string,fielddisplay(self,"mixed_layer_capacity","mixed layer capacity [W/kg/K]"))
    58                 string="%s\n%s"%(string,fielddisplay(self,"thermal_exchange_velocity","thermal exchange velocity [m/s]"))
    59                 string="%s\n%s"%(string,fielddisplay(self,"rheology_B","flow law parameter [Pa s^(1/n)]"))
    60                 string="%s\n%s"%(string,fielddisplay(self,"rheology_n","Glen's flow law exponent"))
    61                 string="%s\n%s"%(string,fielddisplay(self,"rheology_law","law for the temperature dependance of the rheology: 'None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius' or 'LliboutryDuval'"))
    62                 string="%s\n%s"%(string,fielddisplay(self,"lithosphere_shear_modulus","Lithosphere shear modulus [Pa]"))
    63                 string="%s\n%s"%(string,fielddisplay(self,"lithosphere_density","Lithosphere density [g/cm^-3]"))
    64                 string="%s\n%s"%(string,fielddisplay(self,"mantle_shear_modulus","Mantle shear modulus [Pa]"))
    65                 string="%s\n%s"%(string,fielddisplay(self,"mantle_density","Mantle density [g/cm^-3]"))
    66                 string="%s\n%s"%(string,fielddisplay(self,"earth_density","Mantle density [kg/m^-3]"))
    67                 return string
    68                 #}}}
     70    def extrude(self, md):  # {{{
     71        self.rheology_B = project3d(md, 'vector', self.rheology_B, 'type', 'node')
     72        self.rheology_n = project3d(md, 'vector', self.rheology_n, 'type', 'element')
     73        return self
     74    #}}}
    6975
    70         def extrude(self,md): # {{{
    71                 self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node')
    72                 self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element')
    73                 return self
    74         #}}}
     76    def setdefaultparameters(self):  # {{{
     77        #ice density (kg / m^3)
     78        self.rho_ice = 917.
     79        #ocean water density (kg / m^3)
     80        self.rho_water = 1023.
     81        #fresh water density (kg / m^3)
     82        self.rho_freshwater = 1000.
     83        #water viscosity (N.s / m^2)
     84        self.mu_water = 0.001787
     85        #ice heat capacity cp (J / kg / K)
     86        self.heatcapacity = 2093.
     87        #ice latent heat of fusion L (J / kg)
     88        self.latentheat = 3.34 * 1.0e5
     89        #ice thermal conductivity (W / m / K)
     90        self.thermalconductivity = 2.4
     91        #temperate ice thermal conductivity (W / m / K)
     92        self.temperateiceconductivity = 0.24
     93        #computation of effective conductivity
     94        self.effectiveconductivity_averaging = 1
     95        #the melting point of ice at 1 atmosphere of pressure in K
     96        self.meltingpoint = 273.15
     97        #rate of change of melting point with pressure (K / Pa)
     98        self.beta = 9.8 * 1.0e-8
     99        #mixed layer (ice-water interface) heat capacity (J / kg / K)
     100        self.mixed_layer_capacity = 3974.
     101        #thermal exchange velocity (ice-water interface) (m / s)
     102        self.thermal_exchange_velocity = 1.00 * 1.0e-4
     103        #Rheology law: what is the temperature dependence of B with T
     104        #available: none, paterson and arrhenius
     105        self.rheology_law = 'Paterson'
    75106
    76         def setdefaultparameters(self): # {{{
    77                 #ice density (kg/m^3)
    78                 self.rho_ice=917.
    79                 #ocean water density (kg/m^3)
    80                 self.rho_water=1023.
    81                 #fresh water density (kg/m^3)
    82                 self.rho_freshwater=1000.
    83                 #water viscosity (N.s/m^2)
    84                 self.mu_water=0.001787
    85                 #ice heat capacity cp (J/kg/K)
    86                 self.heatcapacity=2093.
    87                 #ice latent heat of fusion L (J/kg)
    88                 self.latentheat=3.34*10**5
    89                 #ice thermal conductivity (W/m/K)
    90                 self.thermalconductivity=2.4
    91                 #temperate ice thermal conductivity (W/m/K)
    92                 self.temperateiceconductivity=0.24
    93     #computation of effective conductivity
    94                 self.effectiveconductivity_averaging=1
    95                 #the melting point of ice at 1 atmosphere of pressure in K
    96                 self.meltingpoint=273.15
    97                 #rate of change of melting point with pressure (K/Pa)
    98                 self.beta=9.8*10**-8
    99                 #mixed layer (ice-water interface) heat capacity (J/kg/K)
    100                 self.mixed_layer_capacity=3974.
    101                 #thermal exchange velocity (ice-water interface) (m/s)
    102                 self.thermal_exchange_velocity=1.00*10**-4
    103                 #Rheology law: what is the temperature dependence of B with T
    104                 #available: none, paterson and arrhenius
    105                 self.rheology_law='Paterson'
     107        # GIA:
     108        self.lithosphere_shear_modulus = 6.7 * 1.0e10  # (Pa)
     109        self.lithosphere_density = 3.32  # (g / cm^ - 3)
     110        self.mantle_shear_modulus = 1.45 * 1.0e11  # (Pa)
     111        self.mantle_density = 3.34  # (g / cm^ - 3)
    106112
    107                 # GIA:
    108                 self.lithosphere_shear_modulus  = 6.7*10**10  # (Pa)
    109                 self.lithosphere_density        = 3.32        # (g/cm^-3)
    110                 self.mantle_shear_modulus       = 1.45*10**11 # (Pa)
    111                 self.mantle_density             = 3.34        # (g/cm^-3)
     113        #SLR
     114        self.earth_density = 5512  #average density of the Earth, (kg / m^3)
     115        return self
     116    #}}}
    112117
    113                 #SLR
    114                 self.earth_density= 5512;  #average density of the Earth, (kg/m^3)
    115                 return self
    116                 #}}}
     118    def checkconsistency(self, md, solution, analyses):  # {{{
     119        md = checkfield(md, 'fieldname', 'materials.rho_ice', '>', 0)
     120        md = checkfield(md, 'fieldname', 'materials.rho_water', '>', 0)
     121        md = checkfield(md, 'fieldname', 'materials.rho_freshwater', '>', 0)
     122        md = checkfield(md, 'fieldname', 'materials.mu_water', '>', 0)
     123        md = checkfield(md, 'fieldname', 'materials.rheology_B', '>', 0, 'size', [md.mesh.numberofvertices])
     124        md = checkfield(md, 'fieldname', 'materials.rheology_n', '>', 0, 'size', [md.mesh.numberofelements])
     125        md = checkfield(md, 'fieldname', 'materials.rheology_law', 'values', ['None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval'])
     126        md = checkfield(md, 'fieldname', 'materials.effectiveconductivity_averaging', 'numel', [1], 'values', [0, 1, 2])
     127        md = checkfield(md, 'fieldname', 'materials.lithosphere_shear_modulus', '>', 0, 'numel', [1])
     128        md = checkfield(md, 'fieldname', 'materials.lithosphere_density', '>', 0, 'numel', [1])
     129        md = checkfield(md, 'fieldname', 'materials.mantle_shear_modulus', '>', 0, 'numel', [1])
     130        md = checkfield(md, 'fieldname', 'materials.mantle_density', '>', 0, 'numel', [1])
     131        md = checkfield(md, 'fieldname', 'materials.earth_density', '>', 0, 'numel', [1])
     132        return md
     133    # }}}
    117134
    118         def checkconsistency(self,md,solution,analyses):    # {{{
    119                 md = checkfield(md,'fieldname','materials.rho_ice','>',0)
    120                 md = checkfield(md,'fieldname','materials.rho_water','>',0)
    121                 md = checkfield(md,'fieldname','materials.rho_freshwater','>',0)
    122                 md = checkfield(md,'fieldname','materials.mu_water','>',0)
    123                 md = checkfield(md,'fieldname','materials.rheology_B','>',0,'size',[md.mesh.numberofvertices])
    124                 md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])
    125                 md = checkfield(md,'fieldname','materials.rheology_law','values',['None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson','Arrhenius','LliboutryDuval'])
    126                 md = checkfield(md,'fieldname','materials.effectiveconductivity_averaging','numel',[1],'values',[0,1,2])
    127                 md = checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',[1]);
    128                 md = checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',[1]);
    129                 md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',[1]);
    130                 md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',[1]);
    131                 md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',[1]);
    132                 return md
    133         # }}}
     135    def marshall(self, prefix, md, fid):  # {{{
     136        WriteData(fid, prefix, 'name', 'md.materials.type', 'data', 1, 'format', 'Integer')
     137        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_ice', 'format', 'Double')
     138        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_water', 'format', 'Double')
     139        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_freshwater', 'format', 'Double')
     140        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mu_water', 'format', 'Double')
     141        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'heatcapacity', 'format', 'Double')
     142        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'latentheat', 'format', 'Double')
     143        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermalconductivity', 'format', 'Double')
     144        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'temperateiceconductivity', 'format', 'Double')
     145        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'effectiveconductivity_averaging', 'format', 'Integer')
     146        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'meltingpoint', 'format', 'Double')
     147        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'beta', 'format', 'Double')
     148        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mixed_layer_capacity', 'format', 'Double')
     149        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermal_exchange_velocity', 'format', 'Double')
     150        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_B', 'format', 'DoubleMat', 'mattype', 1)
     151        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_n', 'format', 'DoubleMat', 'mattype', 2)
     152        WriteData(fid, prefix, 'data', self.rheology_law, 'name', 'md.materials.rheology_law', 'format', 'String')
     153        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'lithosphere_shear_modulus', 'format', 'Double')
     154        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'lithosphere_density', 'format', 'Double', 'scale', 10.**3.)
     155        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mantle_shear_modulus', 'format', 'Double')
     156        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mantle_density', 'format', 'Double', 'scale', 10.**3.)
     157        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'earth_density', 'format', 'Double')
    134158
    135         def marshall(self,prefix,md,fid):    # {{{
    136                 WriteData(fid,prefix,'name','md.materials.type','data',1,'format','Integer');
    137                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double')
    138                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double')
    139                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double')
    140                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double')
    141                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double')
    142                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double')
    143                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double')
    144                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double')
    145                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','effectiveconductivity_averaging','format','Integer')
    146                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double')
    147                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double')
    148                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double')
    149                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double')
    150                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1)
    151                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2)
    152                 WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String')
    153                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
    154                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10.**3.);
    155                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
    156                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10.**3.);
    157                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','earth_density','format','Double');
    158 
    159         # }}}
     159    # }}}
  • issm/trunk-jpl/src/m/classes/matenhancedice.py

    r23774 r24213  
    44from WriteData import WriteData
    55
     6
    67class matenhancedice(object):
    7         """
    8         MATICE class definition
     8    """
     9    MATICE class definition
    910
    10            Usage:
    11               matenhancedice=matenhancedice();
    12         """
     11       Usage:
     12          matenhancedice = matenhancedice()
     13    """
    1314
    14         def __init__(self): # {{{
    15                 self.rho_ice                  = 0.
    16                 self.rho_water                = 0.
    17                 self.rho_freshwater            = 0.
    18                 self.mu_water                  = 0.
    19                 self.heatcapacity              = 0.
    20                 self.latentheat                = 0.
    21                 self.thermalconductivity      = 0.
    22                 self.temperateiceconductivity = 0.
    23                 self.effectiveconductivity_averaging = 0
    24                 self.meltingpoint              = 0.
    25                 self.beta                      = 0.
    26                 self.mixed_layer_capacity      = 0.
    27                 self.thermal_exchange_velocity = 0.
    28                 self.rheology_E                                                          = float('NaN')
    29                 self.rheology_B                = float('NaN')
    30                 self.rheology_n                = float('NaN')
    31                 self.rheology_law              = ''
     15    def __init__(self): # {{{
     16        self.rho_ice = 0.
     17        self.rho_water = 0.
     18        self.rho_freshwater = 0.
     19        self.mu_water = 0.
     20        self.heatcapacity = 0.
     21        self.latentheat = 0.
     22        self.thermalconductivity = 0.
     23        self.temperateiceconductivity = 0.
     24        self.effectiveconductivity_averaging = 0
     25        self.meltingpoint = 0.
     26        self.beta = 0.
     27        self.mixed_layer_capacity = 0.
     28        self.thermal_exchange_velocity = 0.
     29        self.rheology_E = float('NaN')
     30        self.rheology_B = float('NaN')
     31        self.rheology_n = float('NaN')
     32        self.rheology_law = ''
    3233
    33                 #giaivins:
    34                 self.lithosphere_shear_modulus = 0.
    35                 self.lithosphere_density        = 0.
    36                 self.mantle_shear_modulus      = 0.
    37                 self.mantle_density            = 0.
     34    #giaivins:
     35        self.lithosphere_shear_modulus = 0.
     36        self.lithosphere_density = 0.
     37        self.mantle_shear_modulus = 0.
     38        self.mantle_density = 0.
    3839
    39                 #SLR
    40                 self.earth_density= 0  # average density of the Earth, (kg/m^3)
     40    #SLR
     41        self.earth_density = 0  # average density of the Earth, (kg / m^3)
     42        self.setdefaultparameters()
     43    #}}}
    4144
    42                 self.setdefaultparameters()
    43                 #}}}
     45    def __repr__(self):  # {{{
     46        string = "   Materials:"
     47        string = "%s\n%s" % (string, fielddisplay(self, "rho_ice", "ice density [kg / m^3]"))
     48        string = "%s\n%s" % (string, fielddisplay(self, "rho_water", "water density [kg / m^3]"))
     49        string = "%s\n%s" % (string, fielddisplay(self, "rho_freshwater", "fresh water density [kg / m^3]"))
     50        string = "%s\n%s" % (string, fielddisplay(self, "mu_water", "water viscosity [N s / m^2]"))
     51        string = "%s\n%s" % (string, fielddisplay(self, "heatcapacity", "heat capacity [J / kg / K]"))
     52        string = "%s\n%s" % (string, fielddisplay(self, "thermalconductivity", "ice thermal conductivity [W / m / K]"))
     53        string = "%s\n%s" % (string, fielddisplay(self, "temperateiceconductivity", "temperate ice thermal conductivity [W / m / K]"))
     54        string = "%s\n%s" % (string, fielddisplay(self, "effectiveconductivity_averaging", "computation of effectiveconductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)"))
     55        string = "%s\n%s" % (string, fielddisplay(self, "meltingpoint", "melting point of ice at 1atm in K"))
     56        string = "%s\n%s" % (string, fielddisplay(self, "latentheat", "latent heat of fusion [J / m^3]"))
     57        string = "%s\n%s" % (string, fielddisplay(self, "beta", "rate of change of melting point with pressure [K / Pa]"))
     58        string = "%s\n%s" % (string, fielddisplay(self, "mixed_layer_capacity", "mixed layer capacity [W / kg / K]"))
     59        string = "%s\n%s" % (string, fielddisplay(self, "thermal_exchange_velocity", "thermal exchange velocity [m / s]"))
     60        string = "%s\n%s" % (string, fielddisplay(self, "rheology_E", "enhancement factor"))
     61        string = "%s\n%s" % (string, fielddisplay(self, "rheology_B", "flow law parameter [Pa s^(1 / n)]"))
     62        string = "%s\n%s" % (string, fielddisplay(self, "rheology_n", "Glen's flow law exponent"))
     63        string = "%s\n%s" % (string, fielddisplay(self, "rheology_law", "law for the temperature dependance of the rheology: 'None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius' or 'LliboutryDuval'"))
     64        string = "%s\n%s" % (string, fielddisplay(self, "lithosphere_shear_modulus", "Lithosphere shear modulus [Pa]"))
     65        string = "%s\n%s" % (string, fielddisplay(self, "lithosphere_density", "Lithosphere density [g / cm^ - 3]"))
     66        string = "%s\n%s" % (string, fielddisplay(self, "mantle_shear_modulus", "Mantle shear modulus [Pa]"))
     67        string = "%s\n%s" % (string, fielddisplay(self, "mantle_density", "Mantle density [g / cm^ - 3]"))
     68        string = "%s\n%s" % (string, fielddisplay(self, "earth_density", "Mantle density [kg / m^ - 3]"))
     69        return string
     70    #}}}
    4471
    45         def __repr__(self): # {{{
    46                 string="   Materials:"
    47                 string="%s\n%s"%(string,fielddisplay(self,"rho_ice","ice density [kg/m^3]"))
    48                 string="%s\n%s"%(string,fielddisplay(self,"rho_water","water density [kg/m^3]"))
    49                 string="%s\n%s"%(string,fielddisplay(self,"rho_freshwater","fresh water density [kg/m^3]"))
    50                 string="%s\n%s"%(string,fielddisplay(self,"mu_water","water viscosity [N s/m^2]"))
    51                 string="%s\n%s"%(string,fielddisplay(self,"heatcapacity","heat capacity [J/kg/K]"))
    52                 string="%s\n%s"%(string,fielddisplay(self,"thermalconductivity","ice thermal conductivity [W/m/K]"))
    53                 string="%s\n%s"%(string,fielddisplay(self,"temperateiceconductivity","temperate ice thermal conductivity [W/m/K]"))
    54                 string="%s\n%s"%(string,fielddisplay(self,"effectiveconductivity_averaging","computation of effectiveconductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)"))
    55                 string="%s\n%s"%(string,fielddisplay(self,"meltingpoint","melting point of ice at 1atm in K"))
    56                 string="%s\n%s"%(string,fielddisplay(self,"latentheat","latent heat of fusion [J/m^3]"))
    57                 string="%s\n%s"%(string,fielddisplay(self,"beta","rate of change of melting point with pressure [K/Pa]"))
    58                 string="%s\n%s"%(string,fielddisplay(self,"mixed_layer_capacity","mixed layer capacity [W/kg/K]"))
    59                 string="%s\n%s"%(string,fielddisplay(self,"thermal_exchange_velocity","thermal exchange velocity [m/s]"))
    60                 string="%s\n%s"%(string,fielddisplay(self,"rheology_E","enhancement factor"))
    61                 string="%s\n%s"%(string,fielddisplay(self,"rheology_B","flow law parameter [Pa s^(1/n)]"))
    62                 string="%s\n%s"%(string,fielddisplay(self,"rheology_n","Glen's flow law exponent"))
    63                 string="%s\n%s"%(string,fielddisplay(self,"rheology_law","law for the temperature dependance of the rheology: 'None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius' or 'LliboutryDuval'"))
    64                 string="%s\n%s"%(string,fielddisplay(self,"lithosphere_shear_modulus","Lithosphere shear modulus [Pa]"))
    65                 string="%s\n%s"%(string,fielddisplay(self,"lithosphere_density","Lithosphere density [g/cm^-3]"))
    66                 string="%s\n%s"%(string,fielddisplay(self,"mantle_shear_modulus","Mantle shear modulus [Pa]"))
    67                 string="%s\n%s"%(string,fielddisplay(self,"mantle_density","Mantle density [g/cm^-3]"))
    68                 string="%s\n%s"%(string,fielddisplay(self,"earth_density","Mantle density [kg/m^-3]"))
    69                 return string
    70                 #}}}
     72    def extrude(self, md):  # {{{
     73        self.rheology_E = project3d(md, 'vector', self.rheology_E, 'type', 'node')
     74        self.rheology_B = project3d(md, 'vector', self.rheology_B, 'type', 'node')
     75        self.rheology_n = project3d(md, 'vector', self.rheology_n, 'type', 'element')
     76        return self
     77    #}}}
    7178
    72         def extrude(self,md): # {{{
    73                 self.rheology_E=project3d(md,'vector',self.rheology_E,'type','node')
    74                 self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node')
    75                 self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element')
    76                 return self
    77         #}}}
     79    def setdefaultparameters(self):  # {{{
     80        #ice density (kg / m^3)
     81        self.rho_ice = 917.
     82        #ocean water density (kg / m^3)
     83        self.rho_water = 1023.
     84        #fresh water density (kg / m^3)
     85        self.rho_freshwater = 1000.
     86        #water viscosity (N.s / m^2)
     87        self.mu_water = 0.001787
     88        #ice heat capacity cp (J / kg / K)
     89        self.heatcapacity = 2093.
     90        #ice latent heat of fusion L (J / kg)
     91        self.latentheat = 3.34 * 10**5
     92        #ice thermal conductivity (W / m / K)
     93        self.thermalconductivity = 2.4
     94        #temperate ice thermal conductivity (W / m / K)
     95        self.temperateiceconductivity = 0.24
     96        #computation of effective conductivity
     97        self.effectiveconductivity_averaging = 1
     98        #the melting point of ice at 1 atmosphere of pressure in K
     99        self.meltingpoint = 273.15
     100        #rate of change of melting point with pressure (K / Pa)
     101        self.beta = 9.8 * 10**- 8
     102        #mixed layer (ice-water interface) heat capacity (J / kg / K)
     103        self.mixed_layer_capacity = 3974.
     104        #thermal exchange velocity (ice-water interface) (m / s)
     105        self.thermal_exchange_velocity = 1.00 * 10**- 4
     106        #Rheology law: what is the temperature dependence of B with T
     107        #available: none, paterson and arrhenius
     108        self.rheology_law = 'Paterson'
    78109
    79         def setdefaultparameters(self): # {{{
    80                 #ice density (kg/m^3)
    81                 self.rho_ice=917.
    82                 #ocean water density (kg/m^3)
    83                 self.rho_water=1023.
    84                 #fresh water density (kg/m^3)
    85                 self.rho_freshwater=1000.
    86                 #water viscosity (N.s/m^2)
    87                 self.mu_water=0.001787
    88                 #ice heat capacity cp (J/kg/K)
    89                 self.heatcapacity=2093.
    90                 #ice latent heat of fusion L (J/kg)
    91                 self.latentheat=3.34*10**5
    92                 #ice thermal conductivity (W/m/K)
    93                 self.thermalconductivity=2.4
    94                 #temperate ice thermal conductivity (W/m/K)
    95                 self.temperateiceconductivity=0.24
    96     #computation of effective conductivity
    97                 self.effectiveconductivity_averaging=1
    98                 #the melting point of ice at 1 atmosphere of pressure in K
    99                 self.meltingpoint=273.15
    100                 #rate of change of melting point with pressure (K/Pa)
    101                 self.beta=9.8*10**-8
    102                 #mixed layer (ice-water interface) heat capacity (J/kg/K)
    103                 self.mixed_layer_capacity=3974.
    104                 #thermal exchange velocity (ice-water interface) (m/s)
    105                 self.thermal_exchange_velocity=1.00*10**-4
    106                 #Rheology law: what is the temperature dependence of B with T
    107                 #available: none, paterson and arrhenius
    108                 self.rheology_law='Paterson'
     110    # GIA:
     111        self.lithosphere_shear_modulus = 6.7 * 10**10  # (Pa)
     112        self.lithosphere_density = 3.32  # (g / cm^ - 3)
     113        self.mantle_shear_modulus = 1.45 * 10**11  # (Pa)
     114        self.mantle_density = 3.34  # (g / cm^ - 3)
    109115
    110                 # GIA:
    111                 self.lithosphere_shear_modulus  = 6.7*10**10  # (Pa)
    112                 self.lithosphere_density        = 3.32        # (g/cm^-3)
    113                 self.mantle_shear_modulus       = 1.45*10**11 # (Pa)
    114                 self.mantle_density             = 3.34        # (g/cm^-3)
     116    #SLR
     117        self.earth_density = 5512  #average density of the Earth, (kg / m^3)
    115118
    116                 #SLR
    117                 self.earth_density= 5512  #average density of the Earth, (kg/m^3)
     119        return self
     120    #}}}
    118121
    119                 return self
    120                 #}}}
     122    def checkconsistency(self, md, solution, analyses):  # {{{
     123        md = checkfield(md, 'fieldname', 'materials.rho_ice', '>', 0)
     124        md = checkfield(md, 'fieldname', 'materials.rho_water', '>', 0)
     125        md = checkfield(md, 'fieldname', 'materials.rho_freshwater', '>', 0)
     126        md = checkfield(md, 'fieldname', 'materials.mu_water', '>', 0)
     127        md = checkfield(md, 'fieldname', 'materials.rheology_E', '>', 0, 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     128        md = checkfield(md, 'fieldname', 'materials.rheology_B', '>', 0, 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     129        md = checkfield(md, 'fieldname', 'materials.rheology_n', '>', 0, 'size', [md.mesh.numberofelements])
     130        md = checkfield(md, 'fieldname', 'materials.rheology_law', 'values', ['None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval'])
     131        md = checkfield(md, 'fieldname', 'materials.effectiveconductivity_averaging', 'numel', [1], 'values', [0, 1, 2])
    121132
    122         def checkconsistency(self,md,solution,analyses):    # {{{
    123                 md = checkfield(md,'fieldname','materials.rho_ice','>',0)
    124                 md = checkfield(md,'fieldname','materials.rho_water','>',0)
    125                 md = checkfield(md,'fieldname','materials.rho_freshwater','>',0)
    126                 md = checkfield(md,'fieldname','materials.mu_water','>',0)
    127                 md = checkfield(md,'fieldname','materials.rheology_E','>',0,'timeseries',1,'NaN',1,'Inf',1)
    128                 md = checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1,'Inf',1)
    129                 md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])
    130                 md = checkfield(md,'fieldname','materials.rheology_law','values',['None','BuddJacka','Cuffey','CuffeyTemperate','Paterson','Arrhenius','LliboutryDuval'])
    131                 md = checkfield(md,'fieldname','materials.effectiveconductivity_averaging','numel',[1],'values',[0,1,2])
     133        if 'GiaAnalysis' in analyses:
     134            md = checkfield(md, 'fieldname', 'materials.lithosphere_shear_modulus', '>', 0, 'numel', 1)
     135            md = checkfield(md, 'fieldname', 'materials.lithosphere_density', '>', 0, 'numel', 1)
     136            md = checkfield(md, 'fieldname', 'materials.mantle_shear_modulus', '>', 0, 'numel', 1)
     137            md = checkfield(md, 'fieldname', 'materials.mantle_density', '>', 0, 'numel', 1)
     138        if 'SealevelriseAnalysis' in analyses:
     139            md = checkfield(md, 'fieldname', 'materials.earth_density', '>', 0, 'numel', 1)
     140        return md
     141    # }}}
    132142
    133                 if 'GiaAnalysis' in analyses:
    134                         md = checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',1)
    135                         md = checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',1)
    136                         md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',1)
    137                         md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',1)
    138                 if 'SealevelriseAnalysis' in analyses:
    139                         md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1)
    140                 return md
    141         # }}}
    142 
    143         def marshall(self,prefix,md,fid):    # {{{
    144                 WriteData(fid,prefix,'name','md.materials.type','data',4,'format','Integer')
    145                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double')
    146                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double')
    147                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double')
    148                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double')
    149                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double')
    150                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double')
    151                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double')
    152                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double')
    153                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','effectiveconductivity_averaging','format','Integer')
    154                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double')
    155                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double')
    156                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double')
    157                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double')
    158                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_E','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    159                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    160                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2)
    161                 WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String')
    162                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double')
    163                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10^3)
    164                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double')
    165                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10^3)
    166                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','earth_density','format','Double')
    167         # }}}
     143    def marshall(self, prefix, md, fid):  # {{{
     144        WriteData(fid, prefix, 'name', 'md.materials.type', 'data', 4, 'format', 'Integer')
     145        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_ice', 'format', 'Double')
     146        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_water', 'format', 'Double')
     147        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_freshwater', 'format', 'Double')
     148        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mu_water', 'format', 'Double')
     149        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'heatcapacity', 'format', 'Double')
     150        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'latentheat', 'format', 'Double')
     151        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermalconductivity', 'format', 'Double')
     152        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'temperateiceconductivity', 'format', 'Double')
     153        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'effectiveconductivity_averaging', 'format', 'Integer')
     154        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'meltingpoint', 'format', 'Double')
     155        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'beta', 'format', 'Double')
     156        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mixed_layer_capacity', 'format', 'Double')
     157        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermal_exchange_velocity', 'format', 'Double')
     158        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_E', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     159        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_B', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     160        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_n', 'format', 'DoubleMat', 'mattype', 2)
     161        WriteData(fid, prefix, 'data', self.rheology_law, 'name', 'md.materials.rheology_law', 'format', 'String')
     162        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'lithosphere_shear_modulus', 'format', 'Double')
     163        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'lithosphere_density', 'format', 'Double', 'scale', 10**3)
     164        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mantle_shear_modulus', 'format', 'Double')
     165        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mantle_density', 'format', 'Double', 'scale', 10**3)
     166        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'earth_density', 'format', 'Double')
     167    # }}}
  • issm/trunk-jpl/src/m/classes/materials.py

    r24092 r24213  
    55from WriteData import WriteData
    66
    7 def naturetointeger(strnat): #{{{
    8 
    9         intnat=np.zeros(len(strnat))
    10         for i in range(len(intnat)):
    11                 if strnat[i]=='damageice':
    12                         intnat[i]=1
    13                 elif strnat[i]=='estar':
    14                         intnat[i]=2
    15                 elif strnat[i]=='ice':
    16                         intnat[i]=3
    17                 elif strnat[i]=='enhancedice':
    18                         intnat[i]=4
    19                 elif strnat[i]=='litho':
    20                         intnat[i]=5
    21                 else:
    22                         raise RuntimeError("materials constructor error message: nature of the material not supported yet! (''ice'' or ''litho'')");
    23 
    24                 return intnat
    25 # }}}
     7
     8def naturetointeger(strnat):  #{{{
     9
     10    intnat = np.zeros(len(strnat))
     11    for i in range(len(intnat)):
     12        if strnat[i] == 'damageice':
     13            intnat[i] = 1
     14        elif strnat[i] == 'estar':
     15            intnat[i] = 2
     16        elif strnat[i] == 'ice':
     17            intnat[i] = 3
     18        elif strnat[i] == 'enhancedice':
     19            intnat[i] = 4
     20        elif strnat[i] == 'litho':
     21            intnat[i] = 5
     22        else:
     23            raise RuntimeError("materials constructor error message: nature of the material not supported yet! (''ice'' or ''litho'')")
     24
     25        return intnat
     26    # }}}
     27
    2628
    2729class materials(object):
    28         """
    29         MATERIALS class definition
    30 
    31            Usage:
    32               materials=materials();
    33         """
    34 
    35         def __init__(self,*args): # {{{
    36                 self.nature                    = []
    37                 if not len(args):
    38                         self.nature=['ice']
    39                 else:
    40                         self.nature=args
    41 
    42                 for i in range(len(self.nature)):
    43                         if not(self.nature[i] == 'litho' or self.nature[i]=='ice'):
    44                                 raise RuntimeError("materials constructor error message: nature of the material not supported yet! ('ice' or 'litho')")
    45 
    46                 #start filling in the dynamic fields:
    47                 for i in range(len(self.nature)):
    48                         nat=self.nature[i];
    49                         if nat=='ice':
    50                                 setattr(self,'rho_ice',0)
    51                                 setattr(self,'rho_ice',0);
    52                                 setattr(self,'rho_water',0);
    53                                 setattr(self,'rho_freshwater',0);
    54                                 setattr(self,'mu_water',0);
    55                                 setattr(self,'heatcapacity',0);
    56                                 setattr(self,'latentheat',0);
    57                                 setattr(self,'thermalconductivity',0);
    58                                 setattr(self,'temperateiceconductivity',0);
    59                                 setattr(self,'meltingpoint',0);
    60                                 setattr(self,'beta',0);
    61                                 setattr(self,'mixed_layer_capacity',0);
    62                                 setattr(self,'thermal_exchange_velocity',0);
    63                                 setattr(self,'rheology_B',0);
    64                                 setattr(self,'rheology_n',0);
    65                                 setattr(self,'rheology_law',0);
    66                         elif nat=='litho':
    67                                 setattr(self,'numlayers',0);
    68                                 setattr(self,'radius',0);
    69                                 setattr(self,'viscosity',0);
    70                                 setattr(self,'lame_lambda',0);
    71                                 setattr(self,'lame_mu',0);
    72                                 setattr(self,'burgers_viscosity',0);
    73                                 setattr(self,'burgers_mu',0);
    74                                 setattr(self,'isburgers',0);
    75                                 setattr(self,'density',0);
    76                                 setattr(self,'issolid',0);
    77                         else:
    78                                 raise RuntimeError("materials constructor error message: nature of the material not supported yet! ('ice' or 'litho')");
    79                         #set default parameters:
    80                 self.setdefaultparameters()
    81                 #}}}
    82 
    83         def __repr__(self): # {{{
    84                 string="   Materials:"
    85                 for i in range(len(self.nature)):
    86                         nat=self.nature[i];
    87                         if nat=='ice':
    88                                 string="%s\n%s"%(string,'Ice:');
    89                                 string="%s\n%s"%(string,fielddisplay(self,"rho_ice","ice density [kg/m^3]"))
    90                                 string="%s\n%s"%(string,fielddisplay(self,"rho_water","water density [kg/m^3]"))
    91                                 string="%s\n%s"%(string,fielddisplay(self,"rho_freshwater","fresh water density [kg/m^3]"))
    92                                 string="%s\n%s"%(string,fielddisplay(self,"mu_water","water viscosity [N s/m^2]"))
    93                                 string="%s\n%s"%(string,fielddisplay(self,"heatcapacity","heat capacity [J/kg/K]"))
    94                                 string="%s\n%s"%(string,fielddisplay(self,"thermalconductivity","ice thermal conductivity [W/m/K]"))
    95                                 string="%s\n%s"%(string,fielddisplay(self,"temperateiceconductivity","temperate ice thermal conductivity [W/m/K]"))
    96                                 string="%s\n%s"%(string,fielddisplay(self,"meltingpoint","melting point of ice at 1atm in K"))
    97                                 string="%s\n%s"%(string,fielddisplay(self,"latentheat","latent heat of fusion [J/m^3]"))
    98                                 string="%s\n%s"%(string,fielddisplay(self,"beta","rate of change of melting point with pressure [K/Pa]"))
    99                                 string="%s\n%s"%(string,fielddisplay(self,"mixed_layer_capacity","mixed layer capacity [W/kg/K]"))
    100                                 string="%s\n%s"%(string,fielddisplay(self,"thermal_exchange_velocity","thermal exchange velocity [m/s]"))
    101                                 string="%s\n%s"%(string,fielddisplay(self,"rheology_B","flow law parameter [Pa s^(1/n)]"))
    102                                 string="%s\n%s"%(string,fielddisplay(self,"rheology_n","Glen's flow law exponent"))
    103                                 string="%s\n%s"%(string,fielddisplay(self,"rheology_law","law for the temperature dependance of the rheology: 'None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval', 'NyeCO2', or 'NyeH2O'"))
    104                         elif nat=='litho':
    105                                 string="%s\n%s"%(string,'Litho:');
    106                                 string="%s\n%s"%(string,fielddisplay(self,'numlayers','number of layers (default 2)'))
    107                                 string="%s\n%s"%(string,fielddisplay(self,'radius','array describing the radius for each interface (numlayers+1) [m]'))
    108                                 string="%s\n%s"%(string,fielddisplay(self,'viscosity','array describing each layer''s viscosity (numlayers) [Pa.s]'))
    109                                 string="%s\n%s"%(string,fielddisplay(self,'lame_lambda','array describing the lame lambda parameter (numlayers) [Pa]'))
    110                                 string="%s\n%s"%(string,fielddisplay(self,'lame_mu','array describing the shear modulus for each layers (numlayers) [Pa]'))
    111                                 string="%s\n%s"%(string,fielddisplay(self,'burgers_viscosity','array describing each layer''s transient viscosity, only for Burgers rheologies  (numlayers) [Pa.s]'))
    112                                 string="%s\n%s"%(string,fielddisplay(self,'burgers_mu','array describing each layer''s transient shear modulus, only for Burgers rheologies  (numlayers) [Pa]'))
    113                                 string="%s\n%s"%(string,fielddisplay(self,'isburgers','array describing whether we adopt a MaxWell (0) or Burgers (1) rheology (default 0)'))
    114                                 string="%s\n%s"%(string,fielddisplay(self,'density','array describing each layer''s density (numlayers) [kg/m^3]'))
    115                                 string="%s\n%s"%(string,fielddisplay(self,'issolid','array describing whether the layer is solid or liquid (default 1) (numlayers)'))
    116 
    117                         else:
    118                                 raise RuntimeError("materials constructor error message: nature of the material not supported yet! ('ice' or 'litho')");
    119 
    120                 return string
    121                 #}}}
    122 
    123         def extrude(self,md): # {{{
    124                 for i in range(len(self.nature)):
    125                         nat=self.nature[i];
    126                         if nat=='ice':
    127                                 self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node')
    128                                 self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element')
    129                         return self
    130         #}}}
    131 
    132         def setdefaultparameters(self): # {{{
    133                 for i in range(len(self.nature)):
    134                         nat=self.nature[i];
    135                         if nat=='ice':
    136                                 #ice density (kg/m^3)
    137                                 self.rho_ice=917.
    138                                 #ocean water density (kg/m^3)
    139                                 self.rho_water=1023.
    140                                 #fresh water density (kg/m^3)
    141                                 self.rho_freshwater=1000.
    142                                 #water viscosity (N.s/m^2)
    143                                 self.mu_water=0.001787
    144                                 #ice heat capacity cp (J/kg/K)
    145                                 self.heatcapacity=2093.
    146                                 #ice latent heat of fusion L (J/kg)
    147                                 self.latentheat=3.34*10^5
    148                                 #ice thermal conductivity (W/m/K)
    149                                 self.thermalconductivity=2.4
    150                                 #wet ice thermal conductivity (W/m/K)
    151                                 self.temperateiceconductivity=.24
    152                                 #the melting point of ice at 1 atmosphere of pressure in K
    153                                 self.meltingpoint=273.15
    154                                 #rate of change of melting point with pressure (K/Pa)
    155                                 self.beta=9.8*10^-8
    156                                 #mixed layer (ice-water interface) heat capacity (J/kg/K)
    157                                 self.mixed_layer_capacity=3974.
    158                                 #thermal exchange velocity (ice-water interface) (m/s)
    159                                 self.thermal_exchange_velocity=1.00*10^-4
    160                                 #Rheology law: what is the temperature dependence of B with T
    161                                 #available: none, paterson and arrhenius
    162                                 self.rheology_law='Paterson'
    163 
    164                         elif nat=='litho':
    165                                 #we default to a configuration that enables running GIA solutions using giacaron and/or giaivins.
    166                                 self.numlayers=2
    167                                 #center of the earth (approximation, must not be 0), then the lab (lithosphere/asthenosphere boundary) then the surface
    168                                 #(with 1d3 to avoid numerical singularities)
    169                                 self.radius=[1e3,6278*1e3,6378*1e3]
    170                                 self.viscosity=[1e21,1e40] #mantle and lithosphere viscosity (respectively) [Pa.s]
    171                                 self.lame_mu=[1.45*1e11,6.7*1e10]  # (Pa) #lithosphere and mantle shear modulus (respectively) [Pa]
    172                                 self.lame_lambda=self.lame_mu  # (Pa) #mantle and lithosphere lamba parameter (respectively) [Pa]
    173                                 self.burgers_viscosity=[np.nan,np.nan]
    174                                 self.burgers_mu=[np.nan,np.nan]
    175                                 self.isburgers=[0,0]
    176                                 self.density=[5.51*1e3,5.50*1e3]  # (Pa) #mantle and lithosphere density [kg/m^3]
    177                                 self.issolid=[1,1] # is layer solid or liquid.
    178 
    179                         else:
    180                                 raise RuntimeError("materials setdefaultparameters error message: nature of the material not supported yet! ('ice' or 'litho')");
    181 
    182                 return self
    183                 #}}}
    184         def checkconsistency(self,md,solution,analyses):    # {{{
    185                 for i in range(len(self.nature)):
    186                         nat=self.nature[i];
    187                         if nat=='ice':
    188                                 md = checkfield(md,'fieldname','materials.rho_ice','>',0)
    189                                 md = checkfield(md,'fieldname','materials.rho_water','>',0)
    190                                 md = checkfield(md,'fieldname','materials.rho_freshwater','>',0)
    191                                 md = checkfield(md,'fieldname','materials.mu_water','>',0)
    192                                 md = checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1,'Inf',1)
    193                                 md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])
    194                                 md = checkfield(md,'fieldname','materials.rheology_law','values',['None','BuddJacka','Cuffey','CuffeyTemperate','Paterson','Arrhenius','LliboutryDuval','NyeCO2','NyeH2O'])
    195 
    196                         elif nat=='litho':
    197                                 if 'LoveAnalysis' not in analyses:
    198                                         return md
    199 
    200                                 md = checkfield(md,'fieldname','materials.numlayers','NaN',1,'Inf',1,'>',0,'numel',[1])
    201                                 md = checkfield(md,'fieldname','materials.radius','NaN',1,'Inf',1,'size',[md.materials.numlayers+1,1],'>',0)
    202                                 md = checkfield(md,'fieldname','materials.lame_mu','NaN',1,'Inf',1,'size',[md.materials.numlayers,1],'>=',0)
    203                                 md = checkfield(md,'fieldname','materials.lame_lambda','NaN',1,'Inf',1,'size',[md.materials.numlayers,1],'>=',0)
    204                                 md = checkfield(md,'fieldname','materials.issolid','NaN',1,'Inf',1,'size',[md.materials.numlayers,1],'>=',0,'<',2)
    205                                 md = checkfield(md,'fieldname','materials.density','NaN',1,'Inf',1,'size',[md.materials.numlayers,1],'>',0)
    206                                 md = checkfield(md,'fieldname','materials.viscosity','NaN',1,'Inf',1,'size',[md.materials.numlayers,1],'>=',0)
    207                                 md = checkfield(md,'fieldname','materials.isburgers','NaN',1,'Inf',1,'size',[md.materials.numlayers,1],'>=',0,'<=',1)
    208                                 md = checkfield(md,'fieldname','materials.burgers_viscosity','Inf',1,'size',[md.materials.numlayers,1],'>=',0)
    209                                 md = checkfield(md,'fieldname','materials.burgers_mu','Inf',1,'size',[md.materials.numlayers,1],'>=',0)
    210 
    211                                 for i in range(md.materials.numlayers):
    212                                         if md.materials.isburgers[i] and (np.isnan(md.materials.burgers_viscosity[i] or np.isnan(md.materials.burgers_mu[i]))):
    213                                                 raise RuntimeError("materials checkconsistency error message: Litho burgers_viscosity or burgers_mu has NaN values, inconsistent with isburgers choice")
    214 
    215                                         if md.materials.issolid[0]==0 or md.materials.lame_mu[0]==0:
    216                                                 raise RuntimeError('First layer must be solid (issolid(1) > 0 AND lame_mu(1) > 0). Add a weak inner core if necessary.')
    217 
    218                                         for i in range(md.materials.numlayers-1):
    219                                                 if (not md.materials.issolid[i]) and (not md.materials.issolid[i+1]): #if there are at least two consecutive indices that contain issolid = 0
    220                                                         raise RuntimeError("%s%i%s"%('2 or more adjacent fluid layers detected starting at layer ',i,'. This is not supported yet. Consider merging them.'))
    221 
    222                         else:
    223                                 raise RuntimeError("materials checkconsistency error message: nature of the material not supported yet! ('ice' or 'litho')");
    224 
    225                 return md
    226         # }}}
    227 
    228         def marshall(self,prefix,md,fid):    # {{{
    229                 #1: MatdamageiceEnum 2: MatestarEnum 3: MaticeEnum 4: MatenhancediceEnum 5: MaterialsEnum
    230                 WriteData(fid,prefix,'name','md.materials.type','data',6,'format','Integer')
    231                 WriteData(fid,prefix,'name','md.materials.nature','data',naturetointeger(self.nature),'format','IntMat','mattype',3)
    232 
    233                 for i in range(len(self.nature)):
    234                         nat=self.nature[i];
    235                         if nat=='ice':
    236                                 WriteData(fid,prefix,'name','md.materials.type','data',3,'format','Integer')
    237                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double')
    238                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double')
    239                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double')
    240                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double')
    241                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double')
    242                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double')
    243                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double')
    244                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double')
    245                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double')
    246                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double')
    247                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double')
    248                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double')
    249                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    250                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2)
    251                                 WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String')
    252 
    253                         elif nat=='litho':
    254                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','numlayers','format','Integer')
    255                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','radius','format','DoubleMat','mattype',3)
    256                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','lame_mu','format','DoubleMat','mattype',3)
    257                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','lame_lambda','format','DoubleMat','mattype',3)
    258                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','issolid','format','DoubleMat','mattype',3)
    259                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','density','format','DoubleMat','mattype',3)
    260                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','viscosity','format','DoubleMat','mattype',3)
    261                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','isburgers','format','DoubleMat','mattype',3)
    262                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','burgers_viscosity','format','DoubleMat','mattype',3)
    263                                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','burgers_mu','format','DoubleMat','mattype',3)
    264 
    265                         else:
    266                                 raise RuntimeError("materials constructor error message: nature of the material not supported yet! (''ice'' or ''litho'')")
    267         # }}}
     30    """
     31    MATERIALS class definition
     32
     33       Usage:
     34          materials = materials()
     35    """
     36
     37    def __init__(self, *args):  # {{{
     38        self.nature = []
     39        if not len(args):
     40            self.nature = ['ice']
     41        else:
     42            self.nature = args
     43
     44        for i in range(len(self.nature)):
     45            if not(self.nature[i] == 'litho' or self.nature[i] == 'ice'):
     46                raise RuntimeError("materials constructor error message: nature of the material not supported yet! ('ice' or 'litho')")
     47
     48        #start filling in the dynamic fields:
     49        for i in range(len(self.nature)):
     50            nat = self.nature[i]
     51            if nat == 'ice':
     52                setattr(self, 'rho_ice', 0)
     53                setattr(self, 'rho_ice', 0)
     54                setattr(self, 'rho_water', 0)
     55                setattr(self, 'rho_freshwater', 0)
     56                setattr(self, 'mu_water', 0)
     57                setattr(self, 'heatcapacity', 0)
     58                setattr(self, 'latentheat', 0)
     59                setattr(self, 'thermalconductivity', 0)
     60                setattr(self, 'temperateiceconductivity', 0)
     61                setattr(self, 'meltingpoint', 0)
     62                setattr(self, 'beta', 0)
     63                setattr(self, 'mixed_layer_capacity', 0)
     64                setattr(self, 'thermal_exchange_velocity', 0)
     65                setattr(self, 'rheology_B', 0)
     66                setattr(self, 'rheology_n', 0)
     67                setattr(self, 'rheology_law', 0)
     68            elif nat == 'litho':
     69                setattr(self, 'numlayers', 0)
     70                setattr(self, 'radius', 0)
     71                setattr(self, 'viscosity', 0)
     72                setattr(self, 'lame_lambda', 0)
     73                setattr(self, 'lame_mu', 0)
     74                setattr(self, 'burgers_viscosity', 0)
     75                setattr(self, 'burgers_mu', 0)
     76                setattr(self, 'isburgers', 0)
     77                setattr(self, 'density', 0)
     78                setattr(self, 'issolid', 0)
     79            else:
     80                raise RuntimeError("materials constructor error message: nature of the material not supported yet! ('ice' or 'litho')")
     81    #set default parameters:
     82        self.setdefaultparameters()
     83    #}}}
     84
     85    def __repr__(self):  # {{{
     86        string = "   Materials:"
     87        for i in range(len(self.nature)):
     88            nat = self.nature[i]
     89            if nat == 'ice':
     90                string = "%s\n%s" % (string, 'Ice:')
     91                string = "%s\n%s" % (string, fielddisplay(self, "rho_ice", "ice density [kg / m^3]"))
     92                string = "%s\n%s" % (string, fielddisplay(self, "rho_water", "water density [kg / m^3]"))
     93                string = "%s\n%s" % (string, fielddisplay(self, "rho_freshwater", "fresh water density [kg / m^3]"))
     94                string = "%s\n%s" % (string, fielddisplay(self, "mu_water", "water viscosity [N s / m^2]"))
     95                string = "%s\n%s" % (string, fielddisplay(self, "heatcapacity", "heat capacity [J / kg / K]"))
     96                string = "%s\n%s" % (string, fielddisplay(self, "thermalconductivity", "ice thermal conductivity [W / m / K]"))
     97                string = "%s\n%s" % (string, fielddisplay(self, "temperateiceconductivity", "temperate ice thermal conductivity [W / m / K]"))
     98                string = "%s\n%s" % (string, fielddisplay(self, "meltingpoint", "melting point of ice at 1atm in K"))
     99                string = "%s\n%s" % (string, fielddisplay(self, "latentheat", "latent heat of fusion [J / m^3]"))
     100                string = "%s\n%s" % (string, fielddisplay(self, "beta", "rate of change of melting point with pressure [K / Pa]"))
     101                string = "%s\n%s" % (string, fielddisplay(self, "mixed_layer_capacity", "mixed layer capacity [W / kg / K]"))
     102                string = "%s\n%s" % (string, fielddisplay(self, "thermal_exchange_velocity", "thermal exchange velocity [m / s]"))
     103                string = "%s\n%s" % (string, fielddisplay(self, "rheology_B", "flow law parameter [Pa s^(1 / n)]"))
     104                string = "%s\n%s" % (string, fielddisplay(self, "rheology_n", "Glen's flow law exponent"))
     105                string = "%s\n%s" % (string, fielddisplay(self, "rheology_law", "law for the temperature dependance of the rheology: 'None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval', 'NyeCO2', or 'NyeH2O'"))
     106            elif nat == 'litho':
     107                string = "%s\n%s" % (string, 'Litho:')
     108                string = "%s\n%s" % (string, fielddisplay(self, 'numlayers', 'number of layers (default 2)'))
     109                string = "%s\n%s" % (string, fielddisplay(self, 'radius', 'array describing the radius for each interface (numlayers + 1) [m]'))
     110                string = "%s\n%s" % (string, fielddisplay(self, 'viscosity', 'array describing each layer''s viscosity (numlayers) [Pa.s]'))
     111                string = "%s\n%s" % (string, fielddisplay(self, 'lame_lambda', 'array describing the lame lambda parameter (numlayers) [Pa]'))
     112                string = "%s\n%s" % (string, fielddisplay(self, 'lame_mu', 'array describing the shear modulus for each layers (numlayers) [Pa]'))
     113                string = "%s\n%s" % (string, fielddisplay(self, 'burgers_viscosity', 'array describing each layer''s transient viscosity, only for Burgers rheologies  (numlayers) [Pa.s]'))
     114                string = "%s\n%s" % (string, fielddisplay(self, 'burgers_mu', 'array describing each layer''s transient shear modulus, only for Burgers rheologies  (numlayers) [Pa]'))
     115                string = "%s\n%s" % (string, fielddisplay(self, 'isburgers', 'array describing whether we adopt a MaxWell (0) or Burgers (1) rheology (default 0)'))
     116                string = "%s\n%s" % (string, fielddisplay(self, 'density', 'array describing each layer''s density (numlayers) [kg / m^3]'))
     117                string = "%s\n%s" % (string, fielddisplay(self, 'issolid', 'array describing whether the layer is solid or liquid (default 1) (numlayers)'))
     118
     119            else:
     120                raise RuntimeError("materials constructor error message: nature of the material not supported yet! ('ice' or 'litho')")
     121
     122        return string
     123    #}}}
     124
     125    def extrude(self, md):  # {{{
     126        for i in range(len(self.nature)):
     127            nat = self.nature[i]
     128            if nat == 'ice':
     129                self.rheology_B = project3d(md, 'vector', self.rheology_B, 'type', 'node')
     130                self.rheology_n = project3d(md, 'vector', self.rheology_n, 'type', 'element')
     131            return self
     132    #}}}
     133
     134    def setdefaultparameters(self):  # {{{
     135        for i in range(len(self.nature)):
     136            nat = self.nature[i]
     137            if nat == 'ice':
     138                #ice density (kg / m^3)
     139                self.rho_ice = 917.
     140                #ocean water density (kg / m^3)
     141                self.rho_water = 1023.
     142                #fresh water density (kg / m^3)
     143                self.rho_freshwater = 1000.
     144                #water viscosity (N.s / m^2)
     145                self.mu_water = 0.001787
     146                #ice heat capacity cp (J / kg / K)
     147                self.heatcapacity = 2093.
     148                #ice latent heat of fusion L (J / kg)
     149                self.latentheat = 3.34 * 1.0e5
     150                #ice thermal conductivity (W / m / K)
     151                self.thermalconductivity = 2.4
     152                #wet ice thermal conductivity (W / m / K)
     153                self.temperateiceconductivity = 0.24
     154                #the melting point of ice at 1 atmosphere of pressure in K
     155                self.meltingpoint = 273.15
     156                #rate of change of melting point with pressure (K / Pa)
     157                self.beta = 9.8 * 1.0e-8
     158                #mixed layer (ice-water interface) heat capacity (J / kg / K)
     159                self.mixed_layer_capacity = 3974.
     160                #thermal exchange velocity (ice-water interface) (m / s)
     161                self.thermal_exchange_velocity = 1.00 * 1.0e-4
     162                #Rheology law: what is the temperature dependence of B with T
     163                #available: none, paterson and arrhenius
     164                self.rheology_law = 'Paterson'
     165
     166            elif nat == 'litho':
     167                #we default to a configuration that enables running GIA solutions using giacaron and / or giaivins.
     168                self.numlayers = 2
     169                #center of the earth (approximation, must not be 0), then the lab (lithosphere / asthenosphere boundary) then the surface
     170                #(with 1d3 to avoid numerical singularities)
     171                self.radius = [1e3, 6278 * 1e3, 6378 * 1e3]
     172                self.viscosity = [1e21, 1e40]  #mantle and lithosphere viscosity (respectively) [Pa.s]
     173                self.lame_mu = [1.45 * 1e11, 6.7 * 1e10]  # (Pa)  #lithosphere and mantle shear modulus (respectively) [Pa]
     174                self.lame_lambda = self.lame_mu  # (Pa)  #mantle and lithosphere lamba parameter (respectively) [Pa]
     175                self.burgers_viscosity = [np.nan, np.nan]
     176                self.burgers_mu = [np.nan, np.nan]
     177                self.isburgers = [0, 0]
     178                self.density = [5.51 * 1e3, 5.50 * 1e3]  # (Pa)  #mantle and lithosphere density [kg / m^3]
     179                self.issolid = [1, 1]  # is layer solid or liquid.
     180
     181            else:
     182                raise RuntimeError("materials setdefaultparameters error message: nature of the material not supported yet! ('ice' or 'litho')")
     183
     184        return self
     185    #}}}
     186
     187    def checkconsistency(self, md, solution, analyses):  # {{{
     188        for i in range(len(self.nature)):
     189            nat = self.nature[i]
     190            if nat == 'ice':
     191                md = checkfield(md, 'fieldname', 'materials.rho_ice', '>', 0)
     192                md = checkfield(md, 'fieldname', 'materials.rho_water', '>', 0)
     193                md = checkfield(md, 'fieldname', 'materials.rho_freshwater', '>', 0)
     194                md = checkfield(md, 'fieldname', 'materials.mu_water', '>', 0)
     195                md = checkfield(md, 'fieldname', 'materials.rheology_B', '>', 0, 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     196                md = checkfield(md, 'fieldname', 'materials.rheology_n', '>', 0, 'size', [md.mesh.numberofelements])
     197                md = checkfield(md, 'fieldname', 'materials.rheology_law', 'values', ['None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval', 'NyeCO2', 'NyeH2O'])
     198
     199            elif nat == 'litho':
     200                if 'LoveAnalysis' not in analyses:
     201                    return md
     202
     203                md = checkfield(md, 'fieldname', 'materials.numlayers', 'NaN', 1, 'Inf', 1, '>', 0, 'numel', [1])
     204                md = checkfield(md, 'fieldname', 'materials.radius', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers + 1, 1], '>', 0)
     205                md = checkfield(md, 'fieldname', 'materials.lame_mu', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0)
     206                md = checkfield(md, 'fieldname', 'materials.lame_lambda', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0)
     207                md = checkfield(md, 'fieldname', 'materials.issolid', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0, '<', 2)
     208                md = checkfield(md, 'fieldname', 'materials.density', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>', 0)
     209                md = checkfield(md, 'fieldname', 'materials.viscosity', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0)
     210                md = checkfield(md, 'fieldname', 'materials.isburgers', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0, '<=', 1)
     211                md = checkfield(md, 'fieldname', 'materials.burgers_viscosity', 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0)
     212                md = checkfield(md, 'fieldname', 'materials.burgers_mu', 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0)
     213
     214                for i in range(md.materials.numlayers):
     215                    if md.materials.isburgers[i] and (np.isnan(md.materials.burgers_viscosity[i] or np.isnan(md.materials.burgers_mu[i]))):
     216                        raise RuntimeError("materials checkconsistency error message: Litho burgers_viscosity or burgers_mu has NaN values, inconsistent with isburgers choice")
     217
     218                    if md.materials.issolid[0] == 0 or md.materials.lame_mu[0] == 0:
     219                        raise RuntimeError('First layer must be solid (issolid(1) > 0 AND lame_mu(1) > 0). Add a weak inner core if necessary.')
     220
     221                    for i in range(md.materials.numlayers - 1):
     222                        if (not md.materials.issolid[i]) and (not md.materials.issolid[i + 1]):  #if there are at least two consecutive indices that contain issolid = 0
     223                            raise RuntimeError("%s%i%s" % ('2 or more adjacent fluid layers detected starting at layer ', i, '. This is not supported yet. Consider merging them.'))
     224
     225            else:
     226                raise RuntimeError("materials checkconsistency error message: nature of the material not supported yet! ('ice' or 'litho')")
     227
     228        return md
     229    # }}}
     230
     231    def marshall(self, prefix, md, fid):  # {{{
     232        #1: MatdamageiceEnum 2: MatestarEnum 3: MaticeEnum 4: MatenhancediceEnum 5: MaterialsEnum
     233        WriteData(fid, prefix, 'name', 'md.materials.type', 'data', 6, 'format', 'Integer')
     234        WriteData(fid, prefix, 'name', 'md.materials.nature', 'data', naturetointeger(self.nature), 'format', 'IntMat', 'mattype', 3)
     235
     236        for i in range(len(self.nature)):
     237            nat = self.nature[i]
     238            if nat == 'ice':
     239                WriteData(fid, prefix, 'name', 'md.materials.type', 'data', 3, 'format', 'Integer')
     240                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_ice', 'format', 'Double')
     241                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_water', 'format', 'Double')
     242                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_freshwater', 'format', 'Double')
     243                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mu_water', 'format', 'Double')
     244                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'heatcapacity', 'format', 'Double')
     245                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'latentheat', 'format', 'Double')
     246                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermalconductivity', 'format', 'Double')
     247                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'temperateiceconductivity', 'format', 'Double')
     248                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'meltingpoint', 'format', 'Double')
     249                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'beta', 'format', 'Double')
     250                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mixed_layer_capacity', 'format', 'Double')
     251                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermal_exchange_velocity', 'format', 'Double')
     252                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_B', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     253                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_n', 'format', 'DoubleMat', 'mattype', 2)
     254                WriteData(fid, prefix, 'data', self.rheology_law, 'name', 'md.materials.rheology_law', 'format', 'String')
     255
     256            elif nat == 'litho':
     257                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'numlayers', 'format', 'Integer')
     258                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'radius', 'format', 'DoubleMat', 'mattype', 3)
     259                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'lame_mu', 'format', 'DoubleMat', 'mattype', 3)
     260                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'lame_lambda', 'format', 'DoubleMat', 'mattype', 3)
     261                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'issolid', 'format', 'DoubleMat', 'mattype', 3)
     262                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'density', 'format', 'DoubleMat', 'mattype', 3)
     263                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'viscosity', 'format', 'DoubleMat', 'mattype', 3)
     264                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'isburgers', 'format', 'DoubleMat', 'mattype', 3)
     265                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'burgers_viscosity', 'format', 'DoubleMat', 'mattype', 3)
     266                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'burgers_mu', 'format', 'DoubleMat', 'mattype', 3)
     267
     268            else:
     269                raise RuntimeError("materials constructor error message: nature of the material not supported yet! (''ice'' or ''litho'')")
     270    # }}}
  • issm/trunk-jpl/src/m/classes/matestar.py

    r23774 r24213  
    1 import numpy as np
    21from fielddisplay import fielddisplay
    32from project3d import project3d
     
    54from WriteData import WriteData
    65
     6
    77class matestar(object):
    8         """
    9         matestar class definition
     8    """
     9    matestar class definition
    1010
    11            Usage:
    12               matestar=matestar()
    13         """
     11       Usage:
     12          matestar = matestar()
     13    """
    1414
    15         def __init__(self): # {{{
    16                 rho_ice                  = 0.
    17                 rho_water                = 0.
    18                 rho_freshwater            = 0.
    19                 mu_water                  = 0.
    20                 heatcapacity              = 0.
    21                 latentheat                = 0.
    22                 thermalconductivity      = 0.
    23                 temperateiceconductivity = 0.
    24                 self.effectiveconductivity_averaging = 0
    25                 meltingpoint              = 0.
    26                 beta                      = 0.
    27                 mixed_layer_capacity      = 0.
    28                 thermal_exchange_velocity = 0.
    29                 rheology_B                                                              = float('NaN')
    30                 rheology_Ec                                                             = float('NaN')
    31                 rheology_Es                                                             = float('NaN')
    32                 rheology_law                                                    = ''
     15    def __init__(self): # {{{
     16        self.rho_ice = 0.
     17        self.rho_water = 0.
     18        self.rho_freshwater = 0.
     19        self.mu_water = 0.
     20        self.heatcapacity = 0.
     21        self.latentheat = 0.
     22        self.thermalconductivity = 0.
     23        self.temperateiceconductivity = 0.
     24        self.effectiveconductivity_averaging = 0
     25        self.meltingpoint = 0.
     26        self.beta = 0.
     27        self.mixed_layer_capacity = 0.
     28        self.thermal_exchange_velocity = 0.
     29        self.rheology_B = float('NaN')
     30        self.rheology_Ec = float('NaN')
     31        self.rheology_Es = float('NaN')
     32        self.rheology_law = ''
    3333
    34                 #giaivins:
    35                 lithosphere_shear_modulus = 0.
    36                 lithosphere_density        = 0.
    37                 mantle_shear_modulus      = 0.
    38                 mantle_density            = 0.
     34        #giaivins:
     35        self.lithosphere_shear_modulus = 0.
     36        self.lithosphere_density = 0.
     37        self.mantle_shear_modulus = 0.
     38        self.mantle_density = 0.
    3939
    40                 #slr
    41                 earth_density              = 0
     40        #slr
     41        self.earth_density = 0
    4242
    43                 #set default parameters:
    44                 self.setdefaultparameters()
    45         #}}}
     43        #set default parameters:
     44        self.setdefaultparameters()
     45    #}}}
    4646
    47         def __repr__(self): # {{{
    48                 string="   Materials:"
    49                 string="%s\n%s"%(string,fielddisplay(self,'rho_ice','ice density [kg/m^3]'))
    50                 string="%s\n%s"%(string,fielddisplay(self,'rho_water','ocean water density [kg/m^3]'))
    51                 string="%s\n%s"%(string,fielddisplay(self,'rho_freshwater','fresh water density [kg/m^3]'))
    52                 string="%s\n%s"%(string,fielddisplay(self,'mu_water','water viscosity [N s/m^2]'))
    53                 string="%s\n%s"%(string,fielddisplay(self,'heatcapacity','heat capacity [J/kg/K]'))
    54                 string="%s\n%s"%(string,fielddisplay(self,'thermalconductivity',['ice thermal conductivity [W/m/K]']))
    55                 string="%s\n%s"%(string,fielddisplay(self,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]'))
    56                 string="%s\n%s"%(string,fielddisplay(self,"effectiveconductivity_averaging","computation of effectiveconductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)"))
    57                 string="%s\n%s"%(string,fielddisplay(self,'meltingpoint','melting point of ice at 1atm in K'))
    58                 string="%s\n%s"%(string,fielddisplay(self,'latentheat','latent heat of fusion [J/kg]'))
    59                 string="%s\n%s"%(string,fielddisplay(self,'beta','rate of change of melting point with pressure [K/Pa]'))
    60                 string="%s\n%s"%(string,fielddisplay(self,'mixed_layer_capacity','mixed layer capacity [W/kg/K]'))
    61                 string="%s\n%s"%(string,fielddisplay(self,'thermal_exchange_velocity','thermal exchange velocity [m/s]'))
    62                 string="%s\n%s"%(string,fielddisplay(self,'rheology_B','flow law parameter [Pa s^(1/3)]'))
    63                 string="%s\n%s"%(string,fielddisplay(self,'rheology_Ec','compressive enhancement factor'))
    64                 string="%s\n%s"%(string,fielddisplay(self,'rheology_Es','shear enhancement factor'))
    65                 string="%s\n%s"%(string,fielddisplay(self,'rheology_law',['law for the temperature dependance of the rheology: ''None'', ''BuddJacka'', ''Cuffey'', ''CuffeyTemperate'', ''Paterson'', ''Arrhenius'' or ''LliboutryDuval''']))
    66                 string="%s\n%s"%(string,fielddisplay(self,'lithosphere_shear_modulus','Lithosphere shear modulus [Pa]'))
    67                 string="%s\n%s"%(string,fielddisplay(self,'lithosphere_density','Lithosphere density [g/cm^-3]'))
    68                 string="%s\n%s"%(string,fielddisplay(self,'mantle_shear_modulus','Mantle shear modulus [Pa]'))
    69                 string="%s\n%s"%(string,fielddisplay(self,'mantle_density','Mantle density [g/cm^-3]'))
    70                 string="%s\n%s"%(string,fielddisplay(self,'earth_density','Mantle density [kg/m^-3]'))
    71                 return string
    72         #}}}
     47    def __repr__(self): # {{{
     48        string = "   Materials:"
     49        string = "%s\n%s" % (string, fielddisplay(self, 'rho_ice', 'ice density [kg / m^3]'))
     50        string = "%s\n%s" % (string, fielddisplay(self, 'rho_water', 'ocean water density [kg / m^3]'))
     51        string = "%s\n%s" % (string, fielddisplay(self, 'rho_freshwater', 'fresh water density [kg / m^3]'))
     52        string = "%s\n%s" % (string, fielddisplay(self, 'mu_water', 'water viscosity [N s / m^2]'))
     53        string = "%s\n%s" % (string, fielddisplay(self, 'heatcapacity', 'heat capacity [J / kg / K]'))
     54        string = "%s\n%s" % (string, fielddisplay(self, 'thermalconductivity', ['ice thermal conductivity [W / m / K]']))
     55        string = "%s\n%s" % (string, fielddisplay(self, 'temperateiceconductivity', 'temperate ice thermal conductivity [W / m / K]'))
     56        string = "%s\n%s" % (string, fielddisplay(self, "effectiveconductivity_averaging", "computation of effectiveconductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)"))
     57        string = "%s\n%s" % (string, fielddisplay(self, 'meltingpoint', 'melting point of ice at 1atm in K'))
     58        string = "%s\n%s" % (string, fielddisplay(self, 'latentheat', 'latent heat of fusion [J / kg]'))
     59        string = "%s\n%s" % (string, fielddisplay(self, 'beta', 'rate of change of melting point with pressure [K / Pa]'))
     60        string = "%s\n%s" % (string, fielddisplay(self, 'mixed_layer_capacity', 'mixed layer capacity [W / kg / K]'))
     61        string = "%s\n%s" % (string, fielddisplay(self, 'thermal_exchange_velocity', 'thermal exchange velocity [m / s]'))
     62        string = "%s\n%s" % (string, fielddisplay(self, 'rheology_B', 'flow law parameter [Pa s^(1 / 3)]'))
     63        string = "%s\n%s" % (string, fielddisplay(self, 'rheology_Ec', 'compressive enhancement factor'))
     64        string = "%s\n%s" % (string, fielddisplay(self, 'rheology_Es', 'shear enhancement factor'))
     65        string = "%s\n%s" % (string, fielddisplay(self, 'rheology_law', ['law for the temperature dependance of the rheology: ''None'', ''BuddJacka'', ''Cuffey'', ''CuffeyTemperate'', ''Paterson'', ''Arrhenius'' or ''LliboutryDuval''']))
     66        string = "%s\n%s" % (string, fielddisplay(self, 'lithosphere_shear_modulus', 'Lithosphere shear modulus [Pa]'))
     67        string = "%s\n%s" % (string, fielddisplay(self, 'lithosphere_density', 'Lithosphere density [g / cm^ - 3]'))
     68        string = "%s\n%s" % (string, fielddisplay(self, 'mantle_shear_modulus', 'Mantle shear modulus [Pa]'))
     69        string = "%s\n%s" % (string, fielddisplay(self, 'mantle_density', 'Mantle density [g / cm^ - 3]'))
     70        string = "%s\n%s" % (string, fielddisplay(self, 'earth_density', 'Mantle density [kg / m^ - 3]'))
     71        return string
     72    #}}}
    7373
    74         def extrude(self,md): # {{{
    75                 self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node')
    76                 self.rheology_Ec=project3d(md,'vector',self.rheology_Ec,'type','node')
    77                 self.rheology_Es=project3d(md,'vector',self.rheology_Es,'type','node')
    78                 return self
    79         #}}}
     74    def extrude(self, md): # {{{
     75        self.rheology_B = project3d(md, 'vector', self.rheology_B, 'type', 'node')
     76        self.rheology_Ec = project3d(md, 'vector', self.rheology_Ec, 'type', 'node')
     77        self.rheology_Es = project3d(md, 'vector', self.rheology_Es, 'type', 'node')
     78        return self
     79    #}}}
    8080
    81         def setdefaultparameters(self): # {{{
    82                 #ice density (kg/m^3)
    83                 self.rho_ice=917.
    84                 #ocean water density (kg/m^3)
    85                 self.rho_water=1023.
    86                 #fresh water density (kg/m^3)
    87                 self.rho_freshwater=1000.
    88                 #water viscosity (N.s/m^2)
    89                 self.mu_water=0.001787
    90                 #ice heat capacity cp (J/kg/K)
    91                 self.heatcapacity=2093.
    92                 #ice latent heat of fusion L (J/kg)
    93                 self.latentheat=3.34*10**5
    94                 #ice thermal conductivity (W/m/K)
    95                 self.thermalconductivity=2.4
    96                 #wet ice thermal conductivity (W/m/K)
    97                 self.temperateiceconductivity=.24
    98     #computation of effective conductivity
    99                 self.effectiveconductivity_averaging=1
    100                 #the melting point of ice at 1 atmosphere of pressure in K
    101                 self.meltingpoint=273.15
    102                 #rate of change of melting point with pressure (K/Pa)
    103                 self.beta=9.8*10**-8
    104                 #mixed layer (ice-water interface) heat capacity (J/kg/K)
    105                 self.mixed_layer_capacity=3974.
    106                 #thermal exchange velocity (ice-water interface) (m/s)
    107                 self.thermal_exchange_velocity=1.00*10**-4
    108                 #Rheology law: what is the temperature dependence of B with T
    109                 #available: none, paterson and arrhenius
    110                 self.rheology_law='Paterson'
    111                 # GIA:
    112                 self.lithosphere_shear_modulus  = 6.7*10**10  # (Pa)
    113                 self.lithosphere_density        = 3.32      # (g/cm^-3)
    114                 self.mantle_shear_modulus       = 1.45*10**11 # (Pa)
    115                 self.mantle_density             = 3.34      # (g/cm^-3)
    116                 #SLR
    117                 self.earth_density= 5512  # average density of the Earth, (kg/m^3)
     81    def setdefaultparameters(self): # {{{
     82        #ice density (kg / m^3)
     83        self.rho_ice = 917.
     84        #ocean water density (kg / m^3)
     85        self.rho_water = 1023.
     86        #fresh water density (kg / m^3)
     87        self.rho_freshwater = 1000.
     88        #water viscosity (N.s / m^2)
     89        self.mu_water = 0.001787
     90        #ice heat capacity cp (J / kg / K)
     91        self.heatcapacity = 2093.
     92        #ice latent heat of fusion L (J / kg)
     93        self.latentheat = 3.34 * 1.0e5
     94        #ice thermal conductivity (W / m / K)
     95        self.thermalconductivity = 2.4
     96        #wet ice thermal conductivity (W / m / K)
     97        self.temperateiceconductivity = 0.24
     98        #computation of effective conductivity
     99        self.effectiveconductivity_averaging = 1
     100        #the melting point of ice at 1 atmosphere of pressure in K
     101        self.meltingpoint = 273.15
     102        #rate of change of melting point with pressure (K / Pa)
     103        self.beta = 9.8 * 1.0e-8
     104        #mixed layer (ice-water interface) heat capacity (J / kg / K)
     105        self.mixed_layer_capacity = 3974.
     106        #thermal exchange velocity (ice-water interface) (m / s)
     107        self.thermal_exchange_velocity = 1.00 * 1.0e-4
     108        #Rheology law: what is the temperature dependence of B with T
     109        #available: none, paterson and arrhenius
     110        self.rheology_law = 'Paterson'
     111    # GIA:
     112        self.lithosphere_shear_modulus = 6.7 * 1.0e10  # (Pa)
     113        self.lithosphere_density = 3.32  # (g / cm^ - 3)
     114        self.mantle_shear_modulus = 1.45 * 1.0e11 # (Pa)
     115        self.mantle_density = 3.34  # (g / cm^ - 3)
     116    #SLR
     117        self.earth_density = 5512  # average density of the Earth, (kg / m^3)
    118118
    119                 return self
    120         #}}}
     119        return self
     120    #}}}
    121121
    122         def checkconsistency(self,md,solution,analyses):    # {{{
    123                 md = checkfield(md,'fieldname','materials.rho_ice','>',0)
    124                 md = checkfield(md,'fieldname','materials.rho_water','>',0)
    125                 md = checkfield(md,'fieldname','materials.rho_freshwater','>',0)
    126                 md = checkfield(md,'fieldname','materials.mu_water','>',0)
    127                 md = checkfield(md,'fieldname','materials.rheology_B','>',0,'size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    128                 md = checkfield(md,'fieldname','materials.rheology_Ec','>',0,'size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    129                 md = checkfield(md,'fieldname','materials.rheology_Es','>',0,'size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    130                 md = checkfield(md,'fieldname','materials.rheology_law','values',['None','BuddJacka', 'Cuffey','CuffeyTemperate','Paterson','Arrhenius','LliboutryDuval'])
    131                 md = checkfield(md,'fieldname','materials.effectiveconductivity_averaging','numel',[1],'values',[0,1,2])
     122    def checkconsistency(self, md, solution, analyses):  # {{{
     123        md = checkfield(md, 'fieldname', 'materials.rho_ice', '>', 0)
     124        md = checkfield(md, 'fieldname', 'materials.rho_water', '>', 0)
     125        md = checkfield(md, 'fieldname', 'materials.rho_freshwater', '>', 0)
     126        md = checkfield(md, 'fieldname', 'materials.mu_water', '>', 0)
     127        md = checkfield(md, 'fieldname', 'materials.rheology_B', '>', 0, 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
     128        md = checkfield(md, 'fieldname', 'materials.rheology_Ec', '>', 0, 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
     129        md = checkfield(md, 'fieldname', 'materials.rheology_Es', '>', 0, 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
     130        md = checkfield(md, 'fieldname', 'materials.rheology_law', 'values', ['None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval'])
     131        md = checkfield(md, 'fieldname', 'materials.effectiveconductivity_averaging', 'numel', [1], 'values', [0, 1, 2])
    132132
    133                 if 'GiaAnalysis' in analyses:
    134                         md = checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',1)
    135                         md = checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',1)
    136                         md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',1)
    137                         md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',1)
     133        if 'GiaAnalysis' in analyses:
     134            md = checkfield(md, 'fieldname', 'materials.lithosphere_shear_modulus', '>', 0, 'numel', 1)
     135            md = checkfield(md, 'fieldname', 'materials.lithosphere_density', '>', 0, 'numel', 1)
     136            md = checkfield(md, 'fieldname', 'materials.mantle_shear_modulus', '>', 0, 'numel', 1)
     137            md = checkfield(md, 'fieldname', 'materials.mantle_density', '>', 0, 'numel', 1)
    138138
    139                 if 'SealevelriseAnalysis' in analyses:
    140                         md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1)
     139        if 'SealevelriseAnalysis' in analyses:
     140            md = checkfield(md, 'fieldname', 'materials.earth_density', '>', 0, 'numel', 1)
    141141
    142                 return md
    143         # }}}
     142        return md
     143    # }}}
    144144
    145         def marshall(self,prefix,md,fid):    # {{{
    146                 WriteData(fid,prefix,'name','md.materials.type','data',2,'format','Integer')
    147                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double')
    148                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double')
    149                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double')
    150                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double')
    151                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double')
    152                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double')
    153                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double')
    154                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double')
    155                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','effectiveconductivity_averaging','format','Integer')
    156                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double')
    157                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double')
    158                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double')
    159                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double')
    160                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1)
    161                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_Ec','format','DoubleMat','mattype',1)
    162                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_Es','format','DoubleMat','mattype',1)
    163                 WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String')
    164                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double')
    165                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10^3)
    166                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double')
    167                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10**3)
    168                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','earth_density','format','Double')
    169         # }}}
     145    def marshall(self, prefix, md, fid):  # {{{
     146        WriteData(fid, prefix, 'name', 'md.materials.type', 'data', 2, 'format', 'Integer')
     147        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_ice', 'format', 'Double')
     148        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_water', 'format', 'Double')
     149        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_freshwater', 'format', 'Double')
     150        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mu_water', 'format', 'Double')
     151        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'heatcapacity', 'format', 'Double')
     152        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'latentheat', 'format', 'Double')
     153        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermalconductivity', 'format', 'Double')
     154        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'temperateiceconductivity', 'format', 'Double')
     155        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'effectiveconductivity_averaging', 'format', 'Integer')
     156        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'meltingpoint', 'format', 'Double')
     157        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'beta', 'format', 'Double')
     158        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mixed_layer_capacity', 'format', 'Double')
     159        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermal_exchange_velocity', 'format', 'Double')
     160        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_B', 'format', 'DoubleMat', 'mattype', 1)
     161        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_Ec', 'format', 'DoubleMat', 'mattype', 1)
     162        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_Es', 'format', 'DoubleMat', 'mattype', 1)
     163        WriteData(fid, prefix, 'data', self.rheology_law, 'name', 'md.materials.rheology_law', 'format', 'String')
     164        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'lithosphere_shear_modulus', 'format', 'Double')
     165        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'lithosphere_density', 'format', 'Double', 'scale', 1.0e3)
     166        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mantle_shear_modulus', 'format', 'Double')
     167        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mantle_density', 'format', 'Double', 'scale', 1.0e3)
     168        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'earth_density', 'format', 'Double')
     169    # }}}
  • issm/trunk-jpl/src/m/classes/matice.py

    r24092 r24213  
    44from WriteData import WriteData
    55
     6
    67class matice(object):
    7         """
    8         MATICE class definition
     8    """
     9    MATICE class definition
    910
    10            Usage:
    11               matice=matice();
    12         """
     11       Usage:
     12          matice = matice()
     13    """
    1314
    14         def __init__(self): # {{{
    15                 self.rho_ice                  = 0.
    16                 self.rho_water                = 0.
    17                 self.rho_freshwater            = 0.
    18                 self.mu_water                  = 0.
    19                 self.heatcapacity              = 0.
    20                 self.latentheat                = 0.
    21                 self.thermalconductivity      = 0.
    22                 self.temperateiceconductivity = 0.
    23                 self.effectiveconductivity_averaging = 0
    24                 self.meltingpoint              = 0.
    25                 self.beta                      = 0.
    26                 self.mixed_layer_capacity      = 0.
    27                 self.thermal_exchange_velocity = 0.
    28                 self.rheology_B                = float('NaN')
    29                 self.rheology_n                = float('NaN')
    30                 self.rheology_law              = ''
     15    def __init__(self): # {{{
     16        self.rho_ice = 0.
     17        self.rho_water = 0.
     18        self.rho_freshwater = 0.
     19        self.mu_water = 0.
     20        self.heatcapacity = 0.
     21        self.latentheat = 0.
     22        self.thermalconductivity = 0.
     23        self.temperateiceconductivity = 0.
     24        self.effectiveconductivity_averaging = 0
     25        self.meltingpoint = 0.
     26        self.beta = 0.
     27        self.mixed_layer_capacity = 0.
     28        self.thermal_exchange_velocity = 0.
     29        self.rheology_B = float('NaN')
     30        self.rheology_n = float('NaN')
     31        self.rheology_law = ''
    3132
    32                 #giaivins:
    33                 self.lithosphere_shear_modulus = 0.
    34                 self.lithosphere_density        = 0.
    35                 self.mantle_shear_modulus      = 0.
    36                 self.mantle_density            = 0.
     33        #giaivins:
     34        self.lithosphere_shear_modulus = 0.
     35        self.lithosphere_density = 0.
     36        self.mantle_shear_modulus = 0.
     37        self.mantle_density = 0.
    3738
    38                 #SLR
    39                 self.earth_density= 5512;
     39        #SLR
     40        self.earth_density = 5512
     41        self.setdefaultparameters()
     42    #}}}
    4043
    41                 self.setdefaultparameters()
    42                 #}}}
     44    def __repr__(self):  # {{{
     45        string = "   Materials:"
    4346
    44         def __repr__(self): # {{{
    45                 string="   Materials:"
     47        string = "%s\n%s" % (string, fielddisplay(self, "rho_ice", "ice density [kg / m^3]"))
     48        string = "%s\n%s" % (string, fielddisplay(self, "rho_water", "water density [kg / m^3]"))
     49        string = "%s\n%s" % (string, fielddisplay(self, "rho_freshwater", "fresh water density [kg / m^3]"))
     50        string = "%s\n%s" % (string, fielddisplay(self, "mu_water", "water viscosity [N s / m^2]"))
     51        string = "%s\n%s" % (string, fielddisplay(self, "heatcapacity", "heat capacity [J / kg / K]"))
     52        string = "%s\n%s" % (string, fielddisplay(self, "thermalconductivity", "ice thermal conductivity [W / m / K]"))
     53        string = "%s\n%s" % (string, fielddisplay(self, "temperateiceconductivity", "temperate ice thermal conductivity [W / m / K]"))
     54        string = "%s\n%s" % (string, fielddisplay(self, "effectiveconductivity_averaging", "computation of effectiveconductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)"))
     55        string = "%s\n%s" % (string, fielddisplay(self, "meltingpoint", "melting point of ice at 1atm in K"))
     56        string = "%s\n%s" % (string, fielddisplay(self, "latentheat", "latent heat of fusion [J / m^3]"))
     57        string = "%s\n%s" % (string, fielddisplay(self, "beta", "rate of change of melting point with pressure [K / Pa]"))
     58        string = "%s\n%s" % (string, fielddisplay(self, "mixed_layer_capacity", "mixed layer capacity [W / kg / K]"))
     59        string = "%s\n%s" % (string, fielddisplay(self, "thermal_exchange_velocity", "thermal exchange velocity [m / s]"))
     60        string = "%s\n%s" % (string, fielddisplay(self, "rheology_B", "flow law parameter [Pa s^(1 / n)]"))
     61        string = "%s\n%s" % (string, fielddisplay(self, "rheology_n", "Glen's flow law exponent"))
     62        string = "%s\n%s" % (string, fielddisplay(self, "rheology_law", "law for the temperature dependance of the rheology: 'None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval', 'NyeCO2', or 'NyeH2O'"))
     63        string = "%s\n%s" % (string, fielddisplay(self, "lithosphere_shear_modulus", "Lithosphere shear modulus [Pa]"))
     64        string = "%s\n%s" % (string, fielddisplay(self, "lithosphere_density", "Lithosphere density [g / cm^ - 3]"))
     65        string = "%s\n%s" % (string, fielddisplay(self, "mantle_shear_modulus", "Mantle shear modulus [Pa]"))
     66        string = "%s\n%s" % (string, fielddisplay(self, "mantle_density", "Mantle density [g / cm^ - 3]"))
     67        string = "%s\n%s" % (string, fielddisplay(self, "earth_density", "Mantle density [kg / m^ - 3]"))
     68        return string
     69    #}}}
    4670
    47                 string="%s\n%s"%(string,fielddisplay(self,"rho_ice","ice density [kg/m^3]"))
    48                 string="%s\n%s"%(string,fielddisplay(self,"rho_water","water density [kg/m^3]"))
    49                 string="%s\n%s"%(string,fielddisplay(self,"rho_freshwater","fresh water density [kg/m^3]"))
    50                 string="%s\n%s"%(string,fielddisplay(self,"mu_water","water viscosity [N s/m^2]"))
    51                 string="%s\n%s"%(string,fielddisplay(self,"heatcapacity","heat capacity [J/kg/K]"))
    52                 string="%s\n%s"%(string,fielddisplay(self,"thermalconductivity","ice thermal conductivity [W/m/K]"))
    53                 string="%s\n%s"%(string,fielddisplay(self,"temperateiceconductivity","temperate ice thermal conductivity [W/m/K]"))
    54                 string="%s\n%s"%(string,fielddisplay(self,"effectiveconductivity_averaging","computation of effectiveconductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)"))
    55                 string="%s\n%s"%(string,fielddisplay(self,"meltingpoint","melting point of ice at 1atm in K"))
    56                 string="%s\n%s"%(string,fielddisplay(self,"latentheat","latent heat of fusion [J/m^3]"))
    57                 string="%s\n%s"%(string,fielddisplay(self,"beta","rate of change of melting point with pressure [K/Pa]"))
    58                 string="%s\n%s"%(string,fielddisplay(self,"mixed_layer_capacity","mixed layer capacity [W/kg/K]"))
    59                 string="%s\n%s"%(string,fielddisplay(self,"thermal_exchange_velocity","thermal exchange velocity [m/s]"))
    60                 string="%s\n%s"%(string,fielddisplay(self,"rheology_B","flow law parameter [Pa s^(1/n)]"))
    61                 string="%s\n%s"%(string,fielddisplay(self,"rheology_n","Glen's flow law exponent"))
    62                 string="%s\n%s"%(string,fielddisplay(self,"rheology_law","law for the temperature dependance of the rheology: 'None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval', 'NyeCO2', or 'NyeH2O'"))
    63                 string="%s\n%s"%(string,fielddisplay(self,"lithosphere_shear_modulus","Lithosphere shear modulus [Pa]"))
    64                 string="%s\n%s"%(string,fielddisplay(self,"lithosphere_density","Lithosphere density [g/cm^-3]"))
    65                 string="%s\n%s"%(string,fielddisplay(self,"mantle_shear_modulus","Mantle shear modulus [Pa]"))
    66                 string="%s\n%s"%(string,fielddisplay(self,"mantle_density","Mantle density [g/cm^-3]"))
    67                 string="%s\n%s"%(string,fielddisplay(self,"earth_density","Mantle density [kg/m^-3]"))
    68                 return string
    69                 #}}}
     71    def extrude(self, md):  # {{{
     72        self.rheology_B = project3d(md, 'vector', self.rheology_B, 'type', 'node')
     73        self.rheology_n = project3d(md, 'vector', self.rheology_n, 'type', 'element')
     74        return self
     75    #}}}
    7076
    71         def extrude(self,md): # {{{
    72                 self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node')
    73                 self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element')
    74                 return self
    75         #}}}
     77    def setdefaultparameters(self):  # {{{
     78        #ice density (kg / m^3)
     79        self.rho_ice = 917.
     80        #ocean water density (kg / m^3)
     81        self.rho_water = 1023.
     82        #fresh water density (kg / m^3)
     83        self.rho_freshwater = 1000.
     84        #water viscosity (N.s / m^2)
     85        self.mu_water = 0.001787
     86        #ice heat capacity cp (J / kg / K)
     87        self.heatcapacity = 2093.
     88        #ice latent heat of fusion L (J / kg)
     89        self.latentheat = 3.34 * 1.0e5
     90        #ice thermal conductivity (W / m / K)
     91        self.thermalconductivity = 2.4
     92        #computation of effective conductivity
     93        self.effectiveconductivity_averaging = 1
     94        #temperate ice thermal conductivity (W / m / K)
     95        self.temperateiceconductivity = 0.24
     96        #the melting point of ice at 1 atmosphere of pressure in K
     97        self.meltingpoint = 273.15
     98        #rate of change of melting point with pressure (K / Pa)
     99        self.beta = 9.8 * 1.0e-8
     100        #mixed layer (ice-water interface) heat capacity (J / kg / K)
     101        self.mixed_layer_capacity = 3974.
     102        #thermal exchange velocity (ice-water interface) (m / s)
     103        self.thermal_exchange_velocity = 1.00 * 1.0e-4
     104        #Rheology law: what is the temperature dependence of B with T
     105        #available: none, paterson and arrhenius
     106        self.rheology_law = 'Paterson'
    76107
    77         def setdefaultparameters(self): # {{{
    78                 #ice density (kg/m^3)
    79                 self.rho_ice=917.
    80                 #ocean water density (kg/m^3)
    81                 self.rho_water=1023.
    82                 #fresh water density (kg/m^3)
    83                 self.rho_freshwater=1000.
    84                 #water viscosity (N.s/m^2)
    85                 self.mu_water=0.001787
    86                 #ice heat capacity cp (J/kg/K)
    87                 self.heatcapacity=2093.
    88                 #ice latent heat of fusion L (J/kg)
    89                 self.latentheat=3.34*10**5
    90                 #ice thermal conductivity (W/m/K)
    91                 self.thermalconductivity=2.4
    92     #computation of effective conductivity
    93                 self.effectiveconductivity_averaging=1
    94                 #temperate ice thermal conductivity (W/m/K)
    95                 self.temperateiceconductivity=0.24
    96                 #the melting point of ice at 1 atmosphere of pressure in K
    97                 self.meltingpoint=273.15
    98                 #rate of change of melting point with pressure (K/Pa)
    99                 self.beta=9.8*10**-8
    100                 #mixed layer (ice-water interface) heat capacity (J/kg/K)
    101                 self.mixed_layer_capacity=3974.
    102                 #thermal exchange velocity (ice-water interface) (m/s)
    103                 self.thermal_exchange_velocity=1.00*10**-4
    104                 #Rheology law: what is the temperature dependence of B with T
    105                 #available: none, paterson and arrhenius
    106                 self.rheology_law='Paterson'
     108        # GIA:
     109        self.lithosphere_shear_modulus = 6.7 * 1.0e10  # (Pa)
     110        self.lithosphere_density = 3.32  # (g / cm^ - 3)
     111        self.mantle_shear_modulus = 1.45 * 1.0e11  # (Pa)
     112        self.mantle_density = 3.34  # (g / cm^ - 3)
    107113
    108                 # GIA:
    109                 self.lithosphere_shear_modulus  = 6.7*10**10  # (Pa)
    110                 self.lithosphere_density        = 3.32        # (g/cm^-3)
    111                 self.mantle_shear_modulus       = 1.45*10**11 # (Pa)
    112                 self.mantle_density             = 3.34        # (g/cm^-3)
     114        #SLR
     115        self.earth_density = 5512  # average density of the Earth, (kg / m^3)
     116        return self
     117    #}}}
    113118
    114                 #SLR
    115                 self.earth_density= 5512;  # average density of the Earth, (kg/m^3)
    116                 return self
    117                 #}}}
     119    def checkconsistency(self, md, solution, analyses):  # {{{
     120        md = checkfield(md, 'fieldname', 'materials.rho_ice', '>', 0)
     121        md = checkfield(md, 'fieldname', 'materials.rho_water', '>', 0)
     122        md = checkfield(md, 'fieldname', 'materials.rho_freshwater', '>', 0)
     123        md = checkfield(md, 'fieldname', 'materials.mu_water', '>', 0)
     124        md = checkfield(md, 'fieldname', 'materials.rheology_B', '>', 0, 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     125        md = checkfield(md, 'fieldname', 'materials.rheology_n', '>', 0, 'size', [md.mesh.numberofelements])
     126        md = checkfield(md, 'fieldname', 'materials.rheology_law', 'values', ['None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval', 'NyeCO2', 'NyeH2O'])
     127        md = checkfield(md, 'fieldname', 'materials.effectiveconductivity_averaging', 'numel', [1], 'values', [0, 1, 2])
     128        md = checkfield(md, 'fieldname', 'materials.lithosphere_shear_modulus', '>', 0, 'numel', [1])
     129        md = checkfield(md, 'fieldname', 'materials.lithosphere_density', '>', 0, 'numel', [1])
     130        md = checkfield(md, 'fieldname', 'materials.mantle_shear_modulus', '>', 0, 'numel', [1])
     131        md = checkfield(md, 'fieldname', 'materials.mantle_density', '>', 0, 'numel', [1])
     132        md = checkfield(md, 'fieldname', 'materials.earth_density', '>', 0, 'numel', [1])
     133        return md
     134    # }}}
    118135
    119         def checkconsistency(self,md,solution,analyses):    # {{{
    120                 md = checkfield(md,'fieldname','materials.rho_ice','>',0)
    121                 md = checkfield(md,'fieldname','materials.rho_water','>',0)
    122                 md = checkfield(md,'fieldname','materials.rho_freshwater','>',0)
    123                 md = checkfield(md,'fieldname','materials.mu_water','>',0)
    124                 md = checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1,'Inf',1)
    125                 md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])
    126                 md = checkfield(md,'fieldname','materials.rheology_law','values',['None','BuddJacka','Cuffey','CuffeyTemperate','Paterson','Arrhenius','LliboutryDuval','NyeCO2','NyeH2O'])
    127                 md = checkfield(md,'fieldname','materials.effectiveconductivity_averaging','numel',[1],'values',[0,1,2])
    128                 md = checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',[1]);
    129                 md = checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',[1]);
    130                 md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',[1]);
    131                 md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',[1]);
    132                 md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',[1]);
    133                 return md
    134         # }}}
     136    def marshall(self, prefix, md, fid):  # {{{
     137        WriteData(fid, prefix, 'name', 'md.materials.type', 'data', 3, 'format', 'Integer')
     138        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_ice', 'format', 'Double')
     139        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_water', 'format', 'Double')
     140        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_freshwater', 'format', 'Double')
     141        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mu_water', 'format', 'Double')
     142        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'heatcapacity', 'format', 'Double')
     143        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'latentheat', 'format', 'Double')
     144        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermalconductivity', 'format', 'Double')
     145        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'temperateiceconductivity', 'format', 'Double')
     146        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'effectiveconductivity_averaging', 'format', 'Integer')
     147        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'meltingpoint', 'format', 'Double')
     148        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'beta', 'format', 'Double')
     149        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mixed_layer_capacity', 'format', 'Double')
     150        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermal_exchange_velocity', 'format', 'Double')
     151        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_B', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     152        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_n', 'format', 'DoubleMat', 'mattype', 2)
     153        WriteData(fid, prefix, 'data', self.rheology_law, 'name', 'md.materials.rheology_law', 'format', 'String')
    135154
    136         def marshall(self,prefix,md,fid):    # {{{
    137                 WriteData(fid,prefix,'name','md.materials.type','data',3,'format','Integer');
    138                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double')
    139                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double')
    140                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double')
    141                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double')
    142                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double')
    143                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double')
    144                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double')
    145                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double')
    146                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','effectiveconductivity_averaging','format','Integer')
    147                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double')
    148                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double')
    149                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double')
    150                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double')
    151                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    152                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2)
    153                 WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String')
     155        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'lithosphere_shear_modulus', 'format', 'Double')
     156        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'lithosphere_density', 'format', 'Double', 'scale', 10.**3.)
     157        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mantle_shear_modulus', 'format', 'Double')
     158        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mantle_density', 'format', 'Double', 'scale', 10.**3.)
     159        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'earth_density', 'format', 'Double')
    154160
    155                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
    156                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10.**3.);
    157                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
    158                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10.**3.);
    159                 WriteData(fid,prefix,'object',self,'class','materials','fieldname','earth_density','format','Double');
    160 
    161         # }}}
     161    # }}}
  • issm/trunk-jpl/src/m/classes/mesh2d.py

    r22879 r24213  
    55from WriteData import WriteData
    66
     7
    78class mesh2d(object):
    8         """
    9         MESH2D class definition
     9    """
     10    MESH2D class definition
    1011
    11            Usage:
    12               mesh2d=mesh2d();
    13         """
     12       Usage:
     13          mesh2d = mesh2d()
     14    """
    1415
    15         def __init__(self): # {{{
    16                 self.x                           = float('NaN');
    17                 self.y                           = float('NaN');
    18                 self.elements                    = float('NaN');
    19                 self.numberofelements            = 0;
    20                 self.numberofvertices            = 0;
    21                 self.numberofedges               = 0;
    22                
    23                 self.lat                         = float('NaN');
    24                 self.long                        = float('NaN');
    25                 self.epsg                        = 0;
    26                 self.scale_factor                = float('NaN');
     16    def __init__(self):  # {{{
     17        self.x = float('NaN')
     18        self.y = float('NaN')
     19        self.elements = float('NaN')
     20        self.numberofelements = 0
     21        self.numberofvertices = 0
     22        self.numberofedges = 0
    2723
    28                 self.vertexonboundary            = float('NaN');
    29                 self.edges                       = float('NaN');
    30                 self.segments                    = float('NaN');
    31                 self.segmentmarkers              = float('NaN');
    32                 self.vertexconnectivity          = float('NaN');
    33                 self.elementconnectivity         = float('NaN');
    34                 self.average_vertex_connectivity = 0;
     24        self.lat = float('NaN')
     25        self.long = float('NaN')
     26        self.epsg = 0
     27        self.scale_factor = float('NaN')
    3528
    36                 self.extractedvertices           = float('NaN');
    37                 self.extractedelements           = float('NaN');
     29        self.vertexonboundary = float('NaN')
     30        self.edges = float('NaN')
     31        self.segments = float('NaN')
     32        self.segmentmarkers = float('NaN')
     33        self.vertexconnectivity = float('NaN')
     34        self.elementconnectivity = float('NaN')
     35        self.average_vertex_connectivity = 0
    3836
    39                 #set defaults
    40                 self.setdefaultparameters()
     37        self.extractedvertices = float('NaN')
     38        self.extractedelements = float('NaN')
    4139
    42                 #}}}
    43         def __repr__(self): # {{{
    44                 string="   2D tria Mesh (horizontal):"
     40    #set defaults
     41        self.setdefaultparameters()
    4542
    46                 string="%s\n%s"%(string,"\n      Elements and vertices:")
    47                 string="%s\n%s"%(string,fielddisplay(self,"numberofelements","number of elements"))
    48                 string="%s\n%s"%(string,fielddisplay(self,"numberofvertices","number of vertices"))
    49                 string="%s\n%s"%(string,fielddisplay(self,"elements","vertex indices of the mesh elements"))
    50                 string="%s\n%s"%(string,fielddisplay(self,"x","vertices x coordinate [m]"))
    51                 string="%s\n%s"%(string,fielddisplay(self,"y","vertices y coordinate [m]"))
    52                 string="%s\n%s"%(string,fielddisplay(self,"edges","edges of the 2d mesh (vertex1 vertex2 element1 element2)"))
    53                 string="%s\n%s"%(string,fielddisplay(self,"numberofedges","number of edges of the 2d mesh"))
     43    #}}}
    5444
    55                 string="%s%s"%(string,"\n\n      Properties:")
    56                 string="%s\n%s"%(string,fielddisplay(self,"vertexonboundary","vertices on the boundary of the domain flag list"))
    57                 string="%s\n%s"%(string,fielddisplay(self,"segments","edges on domain boundary (vertex1 vertex2 element)"))
    58                 string="%s\n%s"%(string,fielddisplay(self,"segmentmarkers","number associated to each segment"))
    59                 string="%s\n%s"%(string,fielddisplay(self,"vertexconnectivity","list of elements connected to vertex_i"))
    60                 string="%s\n%s"%(string,fielddisplay(self,"elementconnectivity","list of elements adjacent to element_i"))
    61                 string="%s\n%s"%(string,fielddisplay(self,"average_vertex_connectivity","average number of vertices connected to one vertex"))
     45    def __repr__(self):  # {{{
     46        string = "   2D tria Mesh (horizontal):"
    6247
    63                 string="%s%s"%(string,"\n\n      Extracted model:")
    64                 string="%s\n%s"%(string,fielddisplay(self,"extractedvertices","vertices extracted from the model"))
    65                 string="%s\n%s"%(string,fielddisplay(self,"extractedelements","elements extracted from the model"))
     48        string = "%s\n%s" % (string, "\n      Elements and vertices:")
     49        string = "%s\n%s" % (string, fielddisplay(self, "numberofelements", "number of elements"))
     50        string = "%s\n%s" % (string, fielddisplay(self, "numberofvertices", "number of vertices"))
     51        string = "%s\n%s" % (string, fielddisplay(self, "elements", "vertex indices of the mesh elements"))
     52        string = "%s\n%s" % (string, fielddisplay(self, "x", "vertices x coordinate [m]"))
     53        string = "%s\n%s" % (string, fielddisplay(self, "y", "vertices y coordinate [m]"))
     54        string = "%s\n%s" % (string, fielddisplay(self, "edges", "edges of the 2d mesh (vertex1 vertex2 element1 element2)"))
     55        string = "%s\n%s" % (string, fielddisplay(self, "numberofedges", "number of edges of the 2d mesh"))
    6656
    67                 string="%s%s"%(string,"\n\n      Projection:")
    68                 string="%s\n%s"%(string,fielddisplay(self,"lat","vertices latitude [degrees]"))
    69                 string="%s\n%s"%(string,fielddisplay(self,"long","vertices longitude [degrees]"))
    70                 string="%s\n%s"%(string,fielddisplay(self,"epsg","EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
    71                 string="%s\n%s"%(string,fielddisplay(self,"scale_factor","Projection correction for volume, area, etc. computation"))
    72                 return string
    73                 #}}}
    74         def setdefaultparameters(self): # {{{
    75                
    76                 #the connectivity is the averaged number of nodes linked to a
    77                 #given node through an edge. This connectivity is used to initially
    78                 #allocate memory to the stiffness matrix. A value of 16 seems to
    79                 #give a good memory/time ration. This value can be checked in
    80                 #trunk/test/Miscellaneous/runme.m
    81                 self.average_vertex_connectivity=25
     57        string = "%s%s" % (string, "\n\n      Properties:")
     58        string = "%s\n%s" % (string, fielddisplay(self, "vertexonboundary", "vertices on the boundary of the domain flag list"))
     59        string = "%s\n%s" % (string, fielddisplay(self, "segments", "edges on domain boundary (vertex1 vertex2 element)"))
     60        string = "%s\n%s" % (string, fielddisplay(self, "segmentmarkers", "number associated to each segment"))
     61        string = "%s\n%s" % (string, fielddisplay(self, "vertexconnectivity", "list of elements connected to vertex_i"))
     62        string = "%s\n%s" % (string, fielddisplay(self, "elementconnectivity", "list of elements adjacent to element_i"))
     63        string = "%s\n%s" % (string, fielddisplay(self, "average_vertex_connectivity", "average number of vertices connected to one vertex"))
    8264
    83                 return self
    84         #}}}
    85         def checkconsistency(self,md,solution,analyses):    # {{{
    86                 if(solution=='LoveSolution'):
    87                         return
     65        string = "%s%s" % (string, "\n\n      Extracted model:")
     66        string = "%s\n%s" % (string, fielddisplay(self, "extractedvertices", "vertices extracted from the model"))
     67        string = "%s\n%s" % (string, fielddisplay(self, "extractedelements", "elements extracted from the model"))
    8868
    89                 md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    90                 md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    91                 md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',np.arange(1,md.mesh.numberofvertices+1))
    92                 md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,3])
    93                 if np.any(np.logical_not(m.ismember(np.arange(1,md.mesh.numberofvertices+1),md.mesh.elements))):
    94                         md.checkmessage("orphan nodes have been found. Check the mesh outline")
    95                 md = checkfield(md,'fieldname','mesh.numberofelements','>',0)
    96                 md = checkfield(md,'fieldname','mesh.numberofvertices','>',0)
    97                 md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d")
    98                 md = checkfield(md,'fieldname','mesh.segments','NaN',1,'Inf',1,'>',0,'size',[np.nan,3]);
    99                 if(np.size(self.scale_factor)>1):
    100                         md = checkfield(md,'fieldname','mesh.scale_factor','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    101                
    102                 if solution=='ThermalSolution':
    103                         md.checkmessage("thermal not supported for 2d mesh")
     69        string = "%s%s" % (string, "\n\n      Projection:")
     70        string = "%s\n%s" % (string, fielddisplay(self, "lat", "vertices latitude [degrees]"))
     71        string = "%s\n%s" % (string, fielddisplay(self, "long", "vertices longitude [degrees]"))
     72        string = "%s\n%s" % (string, fielddisplay(self, "epsg", "EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
     73        string = "%s\n%s" % (string, fielddisplay(self, "scale_factor", "Projection correction for volume, area, etc. computation"))
     74        return string
     75    #}}}
    10476
    105                 return md
    106         # }}}
    107         def domaintype(self): # {{{
    108                 return "2Dhorizontal"
    109         #}}}
    110         def dimension(self): # {{{
    111                 return 2
    112         #}}}
    113         def elementtype(self): # {{{
    114                 return "Tria"
    115         #}}}
    116         def marshall(self,prefix,md,fid):    # {{{
    117                 WriteData(fid,prefix,'name','md.mesh.domain_type','data',"Domain"+self.domaintype(),'format','String');
    118                 WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',self.dimension(),'format','Integer');
    119                 WriteData(fid,prefix,'name','md.mesh.elementtype','data',self.elementtype(),'format','String');
    120                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1)
    121                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1)
    122                 WriteData(fid,prefix,'name','md.mesh.z','data',np.zeros(self.numberofvertices),'format','DoubleMat','mattype',1);
    123                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2)
    124                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements','format','Integer')
    125                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer')
    126                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer')
    127                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonboundary','format','DoubleMat','mattype',1)
    128                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','segments','format','DoubleMat','mattype',3)
    129                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','scale_factor','format','DoubleMat','mattype',1)
    130                 if md.transient.isoceancoupling:
    131                         WriteData(fid,prefix,'object',self,'class','mesh','fieldname','lat','format','DoubleMat','mattype',1)
    132                         WriteData(fid,prefix,'object',self,'class','mesh','fieldname','long','format','DoubleMat','mattype',1)
    133         # }}}
     77    def setdefaultparameters(self):  # {{{
     78        #the connectivity is the averaged number of nodes linked to a
     79        #given node through an edge. This connectivity is used to initially
     80        #allocate memory to the stiffness matrix. A value of 16 seems to
     81        #give a good memory / time ration. This value can be checked in
     82        #trunk / test / Miscellaneous / runme.m
     83        self.average_vertex_connectivity = 25
     84
     85        return self
     86    #}}}
     87
     88    def checkconsistency(self, md, solution, analyses):  # {{{
     89        if(solution == 'LoveSolution'):
     90            return
     91
     92        md = checkfield(md, 'fieldname', 'mesh.x', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     93        md = checkfield(md, 'fieldname', 'mesh.y', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     94        md = checkfield(md, 'fieldname', 'mesh.elements', 'NaN', 1, 'Inf', 1, '>', 0, 'values', np.arange(1, md.mesh.numberofvertices + 1))
     95        md = checkfield(md, 'fieldname', 'mesh.elements', 'size', [md.mesh.numberofelements, 3])
     96        if np.any(np.logical_not(m.ismember(np.arange(1, md.mesh.numberofvertices + 1), md.mesh.elements))):
     97            md.checkmessage("orphan nodes have been found. Check the mesh outline")
     98        md = checkfield(md, 'fieldname', 'mesh.numberofelements', '>', 0)
     99        md = checkfield(md, 'fieldname', 'mesh.numberofvertices', '>', 0)
     100        md = checkfield(md, 'fieldname', 'mesh.average_vertex_connectivity', '>=', 9, 'message', "'mesh.average_vertex_connectivity' should be at least 9 in 2d")
     101        md = checkfield(md, 'fieldname', 'mesh.segments', 'NaN', 1, 'Inf', 1, '>', 0, 'size', [np.nan, 3])
     102        if(np.size(self.scale_factor) > 1):
     103            md = checkfield(md, 'fieldname', 'mesh.scale_factor', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     104
     105        if solution == 'ThermalSolution':
     106            md.checkmessage("thermal not supported for 2d mesh")
     107
     108        return md
     109    # }}}
     110
     111    def domaintype(self):  # {{{
     112        return "2Dhorizontal"
     113    #}}}
     114
     115    def dimension(self):  # {{{
     116        return 2
     117    #}}}
     118
     119    def elementtype(self):  # {{{
     120        return "Tria"
     121    #}}}
     122
     123    def marshall(self, prefix, md, fid):  # {{{
     124        WriteData(fid, prefix, 'name', 'md.mesh.domain_type', 'data', "Domain" + self.domaintype(), 'format', 'String')
     125        WriteData(fid, prefix, 'name', 'md.mesh.domain_dimension', 'data', self.dimension(), 'format', 'Integer')
     126        WriteData(fid, prefix, 'name', 'md.mesh.elementtype', 'data', self.elementtype(), 'format', 'String')
     127        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'x', 'format', 'DoubleMat', 'mattype', 1)
     128        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'y', 'format', 'DoubleMat', 'mattype', 1)
     129        WriteData(fid, prefix, 'name', 'md.mesh.z', 'data', np.zeros(self.numberofvertices), 'format', 'DoubleMat', 'mattype', 1)
     130        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'elements', 'format', 'DoubleMat', 'mattype', 2)
     131        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofelements', 'format', 'Integer')
     132        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofvertices', 'format', 'Integer')
     133        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'average_vertex_connectivity', 'format', 'Integer')
     134        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'vertexonboundary', 'format', 'DoubleMat', 'mattype', 1)
     135        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'segments', 'format', 'DoubleMat', 'mattype', 3)
     136        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'scale_factor', 'format', 'DoubleMat', 'mattype', 1)
     137        if md.transient.isoceancoupling:
     138            WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'lat', 'format', 'DoubleMat', 'mattype', 1)
     139            WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'long', 'format', 'DoubleMat', 'mattype', 1)
     140    # }}}
  • issm/trunk-jpl/src/m/classes/mesh2dvertical.py

    r22879 r24213  
    55from WriteData import WriteData
    66
     7
    78class mesh2dvertical(object):
    8         """
    9         MESH2DVERTICAL class definition
     9    """
     10    MESH2DVERTICAL class definition
    1011
    11            Usage:
    12               mesh2dvertical=mesh2dvertical();
    13         """
     12       Usage:
     13          mesh2dvertical = mesh2dvertical()
     14    """
    1415
    15         def __init__(self): # {{{
    16                 self.x                           = float('NaN')
    17                 self.y                           = float('NaN')
    18                 self.elements                    = float('NaN')
    19                 self.numberofelements            = 0
    20                 self.numberofvertices            = 0
    21                 self.numberofedges               = 0
    22                
    23                 self.lat                         = float('NaN')
    24                 self.long                        = float('NaN')
    25                 self.epsg                        = float('NaN')
    26                 self.scale_factor                = float('NaN');
     16    def __init__(self):  # {{{
     17        self.x = float('NaN')
     18        self.y = float('NaN')
     19        self.elements = float('NaN')
     20        self.numberofelements = 0
     21        self.numberofvertices = 0
     22        self.numberofedges = 0
    2723
    28                 self.vertexonboundary            = float('NaN')
    29                 self.vertexonbase                = float('NaN')
    30                 self.vertexonsurface             = float('NaN')
     24        self.lat = float('NaN')
     25        self.long = float('NaN')
     26        self.epsg = float('NaN')
     27        self.scale_factor = float('NaN')
    3128
    32                 self.edges                       = float('NaN')
    33                 self.segments                    = float('NaN')
    34                 self.segmentmarkers              = float('NaN')
    35                 self.vertexconnectivity          = float('NaN')
    36                 self.elementconnectivity         = float('NaN')
    37                 self.average_vertex_connectivity = 0
     29        self.vertexonboundary = float('NaN')
     30        self.vertexonbase = float('NaN')
     31        self.vertexonsurface = float('NaN')
    3832
    39                 #set defaults
    40                 self.setdefaultparameters()
     33        self.edges = float('NaN')
     34        self.segments = float('NaN')
     35        self.segmentmarkers = float('NaN')
     36        self.vertexconnectivity = float('NaN')
     37        self.elementconnectivity = float('NaN')
     38        self.average_vertex_connectivity = 0
    4139
    42                 #}}}
    43         def __repr__(self): # {{{
    44                 string="   2D tria Mesh (vertical):"
     40    #set defaults
     41        self.setdefaultparameters()
    4542
    46                 string="%s\n%s"%(string,"\n      Elements and vertices:")
    47                 string="%s\n%s"%(string,fielddisplay(self,"numberofelements","number of elements"))
    48                 string="%s\n%s"%(string,fielddisplay(self,"numberofvertices","number of vertices"))
    49                 string="%s\n%s"%(string,fielddisplay(self,"elements","vertex indices of the mesh elements"))
    50                 string="%s\n%s"%(string,fielddisplay(self,"x","vertices x coordinate [m]"))
    51                 string="%s\n%s"%(string,fielddisplay(self,"y","vertices y coordinate [m]"))
    52                 string="%s\n%s"%(string,fielddisplay(self,"edges","edges of the 2d mesh (vertex1 vertex2 element1 element2)"))
    53                 string="%s\n%s"%(string,fielddisplay(self,"numberofedges","number of edges of the 2d mesh"))
     43    #}}}
     44    def __repr__(self):  # {{{
     45        string = "   2D tria Mesh (vertical):"
    5446
    55                 string="%s%s"%(string,"\n\n      Properties:")
    56                 string="%s\n%s"%(string,fielddisplay(self,"vertexonboundary","vertices on the boundary of the domain flag list"))
    57                 string="%s\n%s"%(string,fielddisplay(self,'vertexonbase','vertices on the bed of the domain flag list'))
    58                 string="%s\n%s"%(string,fielddisplay(self,'vertexonsurface','vertices on the surface of the domain flag list'))
    59                 string="%s\n%s"%(string,fielddisplay(self,"segments","edges on domain boundary (vertex1 vertex2 element)"))
    60                 string="%s\n%s"%(string,fielddisplay(self,"segmentmarkers","number associated to each segment"))
    61                 string="%s\n%s"%(string,fielddisplay(self,"vertexconnectivity","list of elements connected to vertex_i"))
    62                 string="%s\n%s"%(string,fielddisplay(self,"elementconnectivity","list of elements adjacent to element_i"))
    63                 string="%s\n%s"%(string,fielddisplay(self,"average_vertex_connectivity","average number of vertices connected to one vertex"))
     47        string = "%s\n%s" % (string, "\n      Elements and vertices:")
     48        string = "%s\n%s" % (string, fielddisplay(self, "numberofelements", "number of elements"))
     49        string = "%s\n%s" % (string, fielddisplay(self, "numberofvertices", "number of vertices"))
     50        string = "%s\n%s" % (string, fielddisplay(self, "elements", "vertex indices of the mesh elements"))
     51        string = "%s\n%s" % (string, fielddisplay(self, "x", "vertices x coordinate [m]"))
     52        string = "%s\n%s" % (string, fielddisplay(self, "y", "vertices y coordinate [m]"))
     53        string = "%s\n%s" % (string, fielddisplay(self, "edges", "edges of the 2d mesh (vertex1 vertex2 element1 element2)"))
     54        string = "%s\n%s" % (string, fielddisplay(self, "numberofedges", "number of edges of the 2d mesh"))
    6455
    65                 string="%s%s"%(string,"\n\n      Projection:")
    66                 string="%s\n%s"%(string,fielddisplay(self,"lat","vertices latitude [degrees]"))
    67                 string="%s\n%s"%(string,fielddisplay(self,"long","vertices longitude [degrees]"))
    68                 string="%s\n%s"%(string,fielddisplay(self,"epsg","EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
    69                 string="%s\n%s"%(string,fielddisplay(self,"scale_factor","Projection correction for volume, area, etc. computation"))
    70                 return string
    71                 #}}}
    72         def setdefaultparameters(self): # {{{
    73                
    74                 #the connectivity is the averaged number of nodes linked to a
    75                 #given node through an edge. This connectivity is used to initially
    76                 #allocate memory to the stiffness matrix. A value of 16 seems to
    77                 #give a good memory/time ration. This value can be checked in
    78                 #trunk/test/Miscellaneous/runme.m
    79                 self.average_vertex_connectivity=25.
     56        string = "%s%s" % (string, "\n\n      Properties:")
     57        string = "%s\n%s" % (string, fielddisplay(self, "vertexonboundary", "vertices on the boundary of the domain flag list"))
     58        string = "%s\n%s" % (string, fielddisplay(self, 'vertexonbase', 'vertices on the bed of the domain flag list'))
     59        string = "%s\n%s" % (string, fielddisplay(self, 'vertexonsurface', 'vertices on the surface of the domain flag list'))
     60        string = "%s\n%s" % (string, fielddisplay(self, "segments", "edges on domain boundary (vertex1 vertex2 element)"))
     61        string = "%s\n%s" % (string, fielddisplay(self, "segmentmarkers", "number associated to each segment"))
     62        string = "%s\n%s" % (string, fielddisplay(self, "vertexconnectivity", "list of elements connected to vertex_i"))
     63        string = "%s\n%s" % (string, fielddisplay(self, "elementconnectivity", "list of elements adjacent to element_i"))
     64        string = "%s\n%s" % (string, fielddisplay(self, "average_vertex_connectivity", "average number of vertices connected to one vertex"))
    8065
    81                 return self
    82         #}}}
    83         def checkconsistency(self,md,solution,analyses):    # {{{
    84                 if(solution=='LoveSolution'):
    85                         return
     66        string = "%s%s" % (string, "\n\n      Projection:")
     67        string = "%s\n%s" % (string, fielddisplay(self, "lat", "vertices latitude [degrees]"))
     68        string = "%s\n%s" % (string, fielddisplay(self, "long", "vertices longitude [degrees]"))
     69        string = "%s\n%s" % (string, fielddisplay(self, "epsg", "EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
     70        string = "%s\n%s" % (string, fielddisplay(self, "scale_factor", "Projection correction for volume, area, etc. computation"))
     71        return string
     72    #}}}
    8673
    87                 md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    88                 md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    89                 md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',np.arange(1,md.mesh.numberofvertices+1))
    90                 md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,3])
    91                 if np.any(np.logical_not(m.ismember(np.arange(1,md.mesh.numberofvertices+1),md.mesh.elements))):
    92                         md.checkmessage("orphan nodes have been found. Check the mesh outline")
    93                 md = checkfield(md,'fieldname','mesh.numberofelements','>',0)
    94                 md = checkfield(md,'fieldname','mesh.numberofvertices','>',0)
    95                 md = checkfield(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices],'values',[0,1])
    96                 md = checkfield(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices],'values',[0,1])
    97                 md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d")
    98                 if(np.size(self.scale_factor)>1):
    99                         md = checkfield(md,'fieldname','mesh.scale_factor','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
     74    def setdefaultparameters(self):  # {{{
     75        #the connectivity is the averaged number of nodes linked to a
     76        #given node through an edge. This connectivity is used to initially
     77        #allocate memory to the stiffness matrix. A value of 16 seems to
     78        #give a good memory / time ration. This value can be checked in
     79        #trunk / test / Miscellaneous / runme.m
     80        self.average_vertex_connectivity = 25.
    10081
    101                 if solution=='ThermalSolution':
    102                         md.checkmessage("thermal not supported for 2d mesh")
     82        return self
     83    #}}}
    10384
    104                 return md
    105         # }}}
    106         def domaintype(self): # {{{
    107                 return "2Dvertical"
    108         #}}}
    109         def dimension(self): # {{{
    110                 return 2
    111         #}}}
    112         def elementtype(self): # {{{
    113                 return "Tria"
    114         #}}}
    115         def vertexflags(self,value): # {{{
    116                 flags = np.zeros((self.numberofvertices,))
    117                 pos   = self.segments[np.where(self.segmentmarkers==value),0:2]-1
    118                 flags[pos] = 1
    119                 return flags
    120         #}}}
    121         def marshall(self,prefix,md,fid):    # {{{
    122                 WriteData(fid,prefix,'name','md.mesh.domain_type','data',"Domain"+self.domaintype(),'format','String');
    123                 WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',self.dimension(),'format','Integer');
    124                 WriteData(fid,prefix,'name','md.mesh.elementtype','data',self.elementtype(),'format','String');
    125                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1)
    126                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1)
    127                 WriteData(fid,prefix,'name','md.mesh.z','data',np.zeros(self.numberofvertices),'format','DoubleMat','mattype',1);
    128                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2)
    129                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements','format','Integer')
    130                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer')
    131                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1)
    132                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1)
    133                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer')
    134                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','scale_factor','format','DoubleMat','mattype',1)
    135         # }}}
     85    def checkconsistency(self, md, solution, analyses):  # {{{
     86        if(solution == 'LoveSolution'):
     87            return
     88
     89        md = checkfield(md, 'fieldname', 'mesh.x', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     90        md = checkfield(md, 'fieldname', 'mesh.y', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     91        md = checkfield(md, 'fieldname', 'mesh.elements', 'NaN', 1, 'Inf', 1, '>', 0, 'values', np.arange(1, md.mesh.numberofvertices + 1))
     92        md = checkfield(md, 'fieldname', 'mesh.elements', 'size', [md.mesh.numberofelements, 3])
     93        if np.any(np.logical_not(m.ismember(np.arange(1, md.mesh.numberofvertices + 1), md.mesh.elements))):
     94            md.checkmessage("orphan nodes have been found. Check the mesh outline")
     95        md = checkfield(md, 'fieldname', 'mesh.numberofelements', '>', 0)
     96        md = checkfield(md, 'fieldname', 'mesh.numberofvertices', '>', 0)
     97        md = checkfield(md, 'fieldname', 'mesh.vertexonbase', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
     98        md = checkfield(md, 'fieldname', 'mesh.vertexonsurface', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
     99        md = checkfield(md, 'fieldname', 'mesh.average_vertex_connectivity', '>=', 9, 'message', "'mesh.average_vertex_connectivity' should be at least 9 in 2d")
     100        if(np.size(self.scale_factor) > 1):
     101            md = checkfield(md, 'fieldname', 'mesh.scale_factor', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     102
     103        if solution == 'ThermalSolution':
     104            md.checkmessage("thermal not supported for 2d mesh")
     105
     106        return md
     107    # }}}
     108
     109    def domaintype(self):  # {{{
     110        return "2Dvertical"
     111    #}}}
     112
     113    def dimension(self):  # {{{
     114        return 2
     115    #}}}
     116
     117    def elementtype(self):  # {{{
     118        return "Tria"
     119    #}}}
     120
     121    def vertexflags(self, value):  # {{{
     122        flags = np.zeros((self.numberofvertices, ))
     123        pos = self.segments[np.where(self.segmentmarkers == value), 0:2] - 1
     124        flags[pos] = 1
     125        return flags
     126    #}}}
     127
     128    def marshall(self, prefix, md, fid):  # {{{
     129        WriteData(fid, prefix, 'name', 'md.mesh.domain_type', 'data', "Domain" + self.domaintype(), 'format', 'String')
     130        WriteData(fid, prefix, 'name', 'md.mesh.domain_dimension', 'data', self.dimension(), 'format', 'Integer')
     131        WriteData(fid, prefix, 'name', 'md.mesh.elementtype', 'data', self.elementtype(), 'format', 'String')
     132        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'x', 'format', 'DoubleMat', 'mattype', 1)
     133        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'y', 'format', 'DoubleMat', 'mattype', 1)
     134        WriteData(fid, prefix, 'name', 'md.mesh.z', 'data', np.zeros(self.numberofvertices), 'format', 'DoubleMat', 'mattype', 1)
     135        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'elements', 'format', 'DoubleMat', 'mattype', 2)
     136        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofelements', 'format', 'Integer')
     137        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofvertices', 'format', 'Integer')
     138        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'vertexonbase', 'format', 'BooleanMat', 'mattype', 1)
     139        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'vertexonsurface', 'format', 'BooleanMat', 'mattype', 1)
     140        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'average_vertex_connectivity', 'format', 'Integer')
     141        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'scale_factor', 'format', 'DoubleMat', 'mattype', 1)
     142    # }}}
  • issm/trunk-jpl/src/m/classes/mesh3dprisms.py

    r22879 r24213  
    55from WriteData import WriteData
    66
     7
    78class mesh3dprisms(object):
    8         """
    9         MESH3DPRISMS class definition
     9    """
     10    MESH3DPRISMS class definition
    1011
    11            Usage:
    12               mesh3d=mesh3dprisms();
    13         """
     12       Usage:
     13          mesh3d = mesh3dprisms()
     14    """
    1415
    15         def __init__(self): # {{{
    16                 self.x                           = float('NaN');
    17                 self.y                           = float('NaN');
    18                 self.z                           = float('NaN');
    19                 self.elements                    = float('NaN');
    20                 self.numberoflayers              = 0;
    21                 self.numberofelements            = 0;
    22                 self.numberofvertices            = 0;
    23                
    24                 self.lat                         = float('NaN');
    25                 self.long                        = float('NaN');
    26                 self.epsg                        = 0;
    27                 self.scale_factor                = float('NaN');
     16    def __init__(self):  # {{{
     17        self.x = float('NaN')
     18        self.y = float('NaN')
     19        self.z = float('NaN')
     20        self.elements = float('NaN')
     21        self.numberoflayers = 0
     22        self.numberofelements = 0
     23        self.numberofvertices = 0
    2824
    29                 self.vertexonbase                = float('NaN');
    30                 self.vertexonsurface             = float('NaN');
    31                 self.lowerelements               = float('NaN');
    32                 self.lowervertex                 = float('NaN');
    33                 self.upperelements               = float('NaN');
    34                 self.uppervertex                 = float('NaN');
    35                 self.vertexonboundary            = float('NaN');
     25        self.lat = float('NaN')
     26        self.long = float('NaN')
     27        self.epsg = 0
     28        self.scale_factor = float('NaN')
    3629
    37                 self.vertexconnectivity          = float('NaN');
    38                 self.elementconnectivity         = float('NaN');
    39                 self.average_vertex_connectivity = 0;
     30        self.vertexonbase = float('NaN')
     31        self.vertexonsurface = float('NaN')
     32        self.lowerelements = float('NaN')
     33        self.lowervertex = float('NaN')
     34        self.upperelements = float('NaN')
     35        self.uppervertex = float('NaN')
     36        self.vertexonboundary = float('NaN')
    4037
    41                 self.x2d                         = float('NaN');
    42                 self.y2d                         = float('NaN');
    43                 self.elements2d                  = float('NaN');
    44                 self.numberofvertices2d          = 0;
    45                 self.numberofelements2d          = 0;
     38        self.vertexconnectivity = float('NaN')
     39        self.elementconnectivity = float('NaN')
     40        self.average_vertex_connectivity = 0
    4641
    47                 self.extractedvertices           = float('NaN');
    48                 self.extractedelements           = float('NaN');
     42        self.x2d = float('NaN')
     43        self.y2d = float('NaN')
     44        self.elements2d = float('NaN')
     45        self.numberofvertices2d = 0
     46        self.numberofelements2d = 0
    4947
    50                 #set defaults
    51                 self.setdefaultparameters()
    52                 #}}}
    53         def __repr__(self): # {{{
    54                 string="   3D prism Mesh:"
     48        self.extractedvertices = float('NaN')
     49        self.extractedelements = float('NaN')
    5550
    56                 string="%s\n%s"%(string,"\n      Elements and vertices of the original 2d mesh3dprisms:")
    57                
    58                 string="%s\n%s"%(string,fielddisplay(self,"numberofelements2d","number of elements"))
    59                 string="%s\n%s"%(string,fielddisplay(self,"numberofvertices2d","number of vertices"))
    60                 string="%s\n%s"%(string,fielddisplay(self,"elements2d","vertex indices of the mesh3dprisms elements"))
    61                 string="%s\n%s"%(string,fielddisplay(self,"x2d","vertices x coordinate [m]"))
    62                 string="%s\n%s"%(string,fielddisplay(self,"y2d","vertices y coordinate [m]"))
     51    #set defaults
     52        self.setdefaultparameters()
     53    #}}}
    6354
    64                 string="%s\n%s"%(string,"\n\n      Elements and vertices of the extruded 3d mesh3dprisms:")
    65                 string="%s\n%s"%(string,fielddisplay(self,"numberofelements","number of elements"))
    66                 string="%s\n%s"%(string,fielddisplay(self,"numberofvertices","number of vertices"))
    67                 string="%s\n%s"%(string,fielddisplay(self,"elements","vertex indices of the mesh3dprisms elements"))
    68                 string="%s\n%s"%(string,fielddisplay(self,"x","vertices x coordinate [m]"))
    69                 string="%s\n%s"%(string,fielddisplay(self,"y","vertices y coordinate [m]"))
    70                 string="%s\n%s"%(string,fielddisplay(self,"z","vertices z coordinate [m]"))
     55    def __repr__(self):  # {{{
     56        string = "   3D prism Mesh:"
    7157
    72                 string="%s%s"%(string,"\n\n      Properties:")
    73                 string="%s\n%s"%(string,fielddisplay(self,"numberoflayers","number of extrusion layers"))
    74                 string="%s\n%s"%(string,fielddisplay(self,"vertexonbase","lower vertices flags list"))
    75                 string="%s\n%s"%(string,fielddisplay(self,"vertexonsurface","upper vertices flags list"))
    76                 string="%s\n%s"%(string,fielddisplay(self,"uppervertex","upper vertex list (NaN for vertex on the upper surface)"))
    77                 string="%s\n%s"%(string,fielddisplay(self,"upperelements","upper element list (NaN for element on the upper layer)"))
    78                 string="%s\n%s"%(string,fielddisplay(self,"lowervertex","lower vertex list (NaN for vertex on the lower surface)"))
    79                 string="%s\n%s"%(string,fielddisplay(self,"lowerelements","lower element list (NaN for element on the lower layer)"))
    80                 string="%s\n%s"%(string,fielddisplay(self,"vertexonboundary","vertices on the boundary of the domain flag list"))
    81                 string="%s\n%s"%(string,fielddisplay(self,"vertexconnectivity","list of elements connected to vertex_i"))
    82                 string="%s\n%s"%(string,fielddisplay(self,"elementconnectivity","list of elements adjacent to element_i"))
    83                 string="%s\n%s"%(string,fielddisplay(self,"average_vertex_connectivity","average number of vertices connected to one vertex"))
     58        string = "%s\n%s" % (string, "\n      Elements and vertices of the original 2d mesh3dprisms:")
    8459
    85                 string="%s%s"%(string,"\n\n      Extracted model:")
    86                 string="%s\n%s"%(string,fielddisplay(self,"extractedvertices","vertices extracted from the model"))
    87                 string="%s\n%s"%(string,fielddisplay(self,"extractedelements","elements extracted from the model"))
     60        string = "%s\n%s" % (string, fielddisplay(self, "numberofelements2d", "number of elements"))
     61        string = "%s\n%s" % (string, fielddisplay(self, "numberofvertices2d", "number of vertices"))
     62        string = "%s\n%s" % (string, fielddisplay(self, "elements2d", "vertex indices of the mesh3dprisms elements"))
     63        string = "%s\n%s" % (string, fielddisplay(self, "x2d", "vertices x coordinate [m]"))
     64        string = "%s\n%s" % (string, fielddisplay(self, "y2d", "vertices y coordinate [m]"))
    8865
    89                 string="%s%s"%(string,"\n\n      Projection:")
    90                 string="%s\n%s"%(string,fielddisplay(self,"lat","vertices latitude [degrees]"))
    91                 string="%s\n%s"%(string,fielddisplay(self,"long","vertices longitude [degrees]"))
    92                 string="%s\n%s"%(string,fielddisplay(self,"epsg","EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
    93                 string="%s\n%s"%(string,fielddisplay(self,"scale_factor","Projection correction for volume, area, etc. computation"))
    94                 return string
    95                 #}}}
    96         def setdefaultparameters(self): # {{{
    97                
    98                 #the connectivity is the averaged number of nodes linked to a
    99                 #given node through an edge. This connectivity is used to initially
    100                 #allocate memory to the stiffness matrix. A value of 16 seems to
    101                 #give a good memory/time ration. This value can be checked in
    102                 #trunk/test/Miscellaneous/runme.m
    103                 self.average_vertex_connectivity=25
     66        string = "%s\n%s" % (string, "\n\n      Elements and vertices of the extruded 3d mesh3dprisms:")
     67        string = "%s\n%s" % (string, fielddisplay(self, "numberofelements", "number of elements"))
     68        string = "%s\n%s" % (string, fielddisplay(self, "numberofvertices", "number of vertices"))
     69        string = "%s\n%s" % (string, fielddisplay(self, "elements", "vertex indices of the mesh3dprisms elements"))
     70        string = "%s\n%s" % (string, fielddisplay(self, "x", "vertices x coordinate [m]"))
     71        string = "%s\n%s" % (string, fielddisplay(self, "y", "vertices y coordinate [m]"))
     72        string = "%s\n%s" % (string, fielddisplay(self, "z", "vertices z coordinate [m]"))
    10473
    105                 return self
    106         #}}}
    107         def checkconsistency(self,md,solution,analyses):    # {{{
     74        string = "%s%s" % (string, "\n\n      Properties:")
     75        string = "%s\n%s" % (string, fielddisplay(self, "numberoflayers", "number of extrusion layers"))
     76        string = "%s\n%s" % (string, fielddisplay(self, "vertexonbase", "lower vertices flags list"))
     77        string = "%s\n%s" % (string, fielddisplay(self, "vertexonsurface", "upper vertices flags list"))
     78        string = "%s\n%s" % (string, fielddisplay(self, "uppervertex", "upper vertex list (NaN for vertex on the upper surface)"))
     79        string = "%s\n%s" % (string, fielddisplay(self, "upperelements", "upper element list (NaN for element on the upper layer)"))
     80        string = "%s\n%s" % (string, fielddisplay(self, "lowervertex", "lower vertex list (NaN for vertex on the lower surface)"))
     81        string = "%s\n%s" % (string, fielddisplay(self, "lowerelements", "lower element list (NaN for element on the lower layer)"))
     82        string = "%s\n%s" % (string, fielddisplay(self, "vertexonboundary", "vertices on the boundary of the domain flag list"))
     83        string = "%s\n%s" % (string, fielddisplay(self, "vertexconnectivity", "list of elements connected to vertex_i"))
     84        string = "%s\n%s" % (string, fielddisplay(self, "elementconnectivity", "list of elements adjacent to element_i"))
     85        string = "%s\n%s" % (string, fielddisplay(self, "average_vertex_connectivity", "average number of vertices connected to one vertex"))
    10886
    109                 md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    110                 md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    111                 md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    112                 md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',np.arange(1,md.mesh.numberofvertices+1))
    113                 md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,6])
    114                 if np.any(np.logical_not(m.ismember(np.arange(1,md.mesh.numberofvertices+1),md.mesh.elements))):
    115                         md.checkmessage("orphan nodes have been found. Check the mesh3dprisms outline")
    116                 md = checkfield(md,'fieldname','mesh.numberoflayers','>=',0)
    117                 md = checkfield(md,'fieldname','mesh.numberofelements','>',0)
    118                 md = checkfield(md,'fieldname','mesh.numberofvertices','>',0)
    119                 md = checkfield(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices],'values',[0,1])
    120                 md = checkfield(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices],'values',[0,1])
    121                 md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message',"'mesh.average_vertex_connectivity' should be at least 24 in 3d")
    122                 if(np.size(self.scale_factor)>1):
    123                         md = checkfield(md,'fieldname','mesh.scale_factor','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
     87        string = "%s%s" % (string, "\n\n      Extracted model:")
     88        string = "%s\n%s" % (string, fielddisplay(self, "extractedvertices", "vertices extracted from the model"))
     89        string = "%s\n%s" % (string, fielddisplay(self, "extractedelements", "elements extracted from the model"))
    12490
    125                 return md
    126         # }}}
    127         def domaintype(self): # {{{
    128                 return "3D"
    129         #}}}
    130         def dimension(self): # {{{
    131                 return 3
    132         #}}}
    133         def elementtype(self): # {{{
    134                 return "Penta"
    135         #}}}
    136         def marshall(self,prefix,md,fid):    # {{{
    137                 WriteData(fid,prefix,'name','md.mesh.domain_type','data',"Domain"+self.domaintype(),'format','String');
    138                 WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',self.dimension(),'format','Integer');
    139                 WriteData(fid,prefix,'name','md.mesh.elementtype','data',self.elementtype(),'format','String');
    140                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1)
    141                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1)
    142                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','z','format','DoubleMat','mattype',1)
    143                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2)
    144                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberoflayers','format','Integer')
    145                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements','format','Integer')
    146                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer')
    147                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1)
    148                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1)
    149                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','lowerelements','format','DoubleMat','mattype',2)
    150                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','upperelements','format','DoubleMat','mattype',2)
    151                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer')
    152                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements2d','format','DoubleMat','mattype',3)
    153                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices2d','format','Integer')
    154                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements2d','format','Integer')
    155                 WriteData(fid,prefix,'object',self,'class','mesh','fieldname','scale_factor','format','DoubleMat','mattype',1)
    156                 if md.transient.isoceancoupling:
    157                         WriteData(fid,prefix,'object',self,'class','mesh','fieldname','lat','format','DoubleMat','mattype',1)
    158                         WriteData(fid,prefix,'object',self,'class','mesh','fieldname','long','format','DoubleMat','mattype',1)
    159         # }}}
     91        string = "%s%s" % (string, "\n\n      Projection:")
     92        string = "%s\n%s" % (string, fielddisplay(self, "lat", "vertices latitude [degrees]"))
     93        string = "%s\n%s" % (string, fielddisplay(self, "long", "vertices longitude [degrees]"))
     94        string = "%s\n%s" % (string, fielddisplay(self, "epsg", "EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
     95        string = "%s\n%s" % (string, fielddisplay(self, "scale_factor", "Projection correction for volume, area, etc. computation"))
     96        return string
     97    #}}}
     98
     99    def setdefaultparameters(self):  # {{{
     100        #the connectivity is the averaged number of nodes linked to a
     101        #given node through an edge. This connectivity is used to initially
     102        #allocate memory to the stiffness matrix. A value of 16 seems to
     103        #give a good memory / time ration. This value can be checked in
     104        #trunk / test / Miscellaneous / runme.m
     105        self.average_vertex_connectivity = 25
     106
     107        return self
     108    #}}}
     109
     110    def checkconsistency(self, md, solution, analyses):  # {{{
     111        md = checkfield(md, 'fieldname', 'mesh.x', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     112        md = checkfield(md, 'fieldname', 'mesh.y', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     113        md = checkfield(md, 'fieldname', 'mesh.z', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     114        md = checkfield(md, 'fieldname', 'mesh.elements', 'NaN', 1, 'Inf', 1, '>', 0, 'values', np.arange(1, md.mesh.numberofvertices + 1))
     115        md = checkfield(md, 'fieldname', 'mesh.elements', 'size', [md.mesh.numberofelements, 6])
     116        if np.any(np.logical_not(m.ismember(np.arange(1, md.mesh.numberofvertices + 1), md.mesh.elements))):
     117            md.checkmessage("orphan nodes have been found. Check the mesh3dprisms outline")
     118        md = checkfield(md, 'fieldname', 'mesh.numberoflayers', '>=', 0)
     119        md = checkfield(md, 'fieldname', 'mesh.numberofelements', '>', 0)
     120        md = checkfield(md, 'fieldname', 'mesh.numberofvertices', '>', 0)
     121        md = checkfield(md, 'fieldname', 'mesh.vertexonbase', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
     122        md = checkfield(md, 'fieldname', 'mesh.vertexonsurface', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
     123        md = checkfield(md, 'fieldname', 'mesh.average_vertex_connectivity', '>=', 24, 'message', "'mesh.average_vertex_connectivity' should be at least 24 in 3d")
     124        if(np.size(self.scale_factor) > 1):
     125            md = checkfield(md, 'fieldname', 'mesh.scale_factor', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     126
     127        return md
     128    # }}}
     129
     130    def domaintype(self):  # {{{
     131        return "3D"
     132    #}}}
     133
     134    def dimension(self):  # {{{
     135        return 3
     136    #}}}
     137
     138    def elementtype(self):  # {{{
     139        return "Penta"
     140    #}}}
     141
     142    def marshall(self, prefix, md, fid):  # {{{
     143        WriteData(fid, prefix, 'name', 'md.mesh.domain_type', 'data', "Domain" + self.domaintype(), 'format', 'String')
     144        WriteData(fid, prefix, 'name', 'md.mesh.domain_dimension', 'data', self.dimension(), 'format', 'Integer')
     145        WriteData(fid, prefix, 'name', 'md.mesh.elementtype', 'data', self.elementtype(), 'format', 'String')
     146        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'x', 'format', 'DoubleMat', 'mattype', 1)
     147        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'y', 'format', 'DoubleMat', 'mattype', 1)
     148        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'z', 'format', 'DoubleMat', 'mattype', 1)
     149        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'elements', 'format', 'DoubleMat', 'mattype', 2)
     150        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberoflayers', 'format', 'Integer')
     151        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofelements', 'format', 'Integer')
     152        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofvertices', 'format', 'Integer')
     153        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'vertexonbase', 'format', 'BooleanMat', 'mattype', 1)
     154        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'vertexonsurface', 'format', 'BooleanMat', 'mattype', 1)
     155        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'lowerelements', 'format', 'DoubleMat', 'mattype', 2)
     156        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'upperelements', 'format', 'DoubleMat', 'mattype', 2)
     157        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'average_vertex_connectivity', 'format', 'Integer')
     158        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'elements2d', 'format', 'DoubleMat', 'mattype', 3)
     159        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofvertices2d', 'format', 'Integer')
     160        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofelements2d', 'format', 'Integer')
     161        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'scale_factor', 'format', 'DoubleMat', 'mattype', 1)
     162        if md.transient.isoceancoupling:
     163            WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'lat', 'format', 'DoubleMat', 'mattype', 1)
     164            WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'long', 'format', 'DoubleMat', 'mattype', 1)
     165    # }}}
  • issm/trunk-jpl/src/m/classes/mesh3dsurface.py

    r22879 r24213  
    66from WriteData import WriteData
    77
     8
    89class mesh3dsurface(object):
    9 #MESH3DSURFACE class definition
    10 #
    11 #   Usage:
    12 #      mesh3dsurface=mesh3dsurface();
    13         def __init__(self,*args): # {{{
    14                 self.x                          = np.nan
    15                 self.y                          = np.nan
    16                 self.z                          = np.nan
    17                 self.elements                    = np.nan
    18                 self.numberofelements            = 0
    19                 self.numberofvertices            = 0
    20                 self.numberofedges              = 0
     10    #MESH3DSURFACE class definition
     11    #
     12    #   Usage:
     13    #      mesh3dsurface = mesh3dsurface();
     14    def __init__(self, *args): # {{{
     15        self.x = np.nan
     16        self.y = np.nan
     17        self.z = np.nan
     18        self.elements = np.nan
     19        self.numberofelements = 0
     20        self.numberofvertices = 0
     21        self.numberofedges = 0
    2122
    22                 self.lat                        = np.nan
    23                 self.long                        = np.nan
    24                 self.r                          = np.nan
     23        self.lat = np.nan
     24        self.long = np.nan
     25        self.r = np.nan
    2526
    26                 self.vertexonboundary            = np.nan
    27                 self.edges                      = np.nan
    28                 self.segments                    = np.nan
    29                 self.segmentmarkers              = np.nan
    30                 self.vertexconnectivity          = np.nan
    31                 self.elementconnectivity        = np.nan
    32                 self.average_vertex_connectivity = 0
     27        self.vertexonboundary = np.nan
     28        self.edges = np.nan
     29        self.segments = np.nan
     30        self.segmentmarkers = np.nan
     31        self.vertexconnectivity = np.nan
     32        self.elementconnectivity = np.nan
     33        self.average_vertex_connectivity = 0
    3334
    34                 self.extractedvertices           = np.nan
    35                 self.extractedelements           = np.nan
    36                
    37                 if not len(args):
    38                         self.setdefaultparameters()
    39                 elif len(args)==1:
    40                         self=mesh3dsurface()
    41                         arg=args[1]
    42                         fields=fieldnames(arg)
    43                         for i in range(len(fields)):
    44                                 field=fields[i]
    45                                 if ismember(field,properties('mesh3dsurface')):
    46                                         self.field=arg.field
    47                 else:
    48                         raise RuntimeError('constructor not supported')
     35        self.extractedvertices = np.nan
     36        self.extractedelements = np.nan
    4937
    50         # }}}
    51         def __repr__(self): # {{{
    52                 string='   2D tria Mesh (horizontal):'
    53                
    54                 string+='\n      Elements and vertices:'
    55                 string="%s\n%s"%(string,fielddisplay(self,'numberofelements','number of elements'))
    56                 string="%s\n%s"%(string,fielddisplay(self,'numberofvertices','number of vertices'))
    57                 string="%s\n%s"%(string,fielddisplay(self,'elements','vertex indices of the mesh elements'))
    58                 string="%s\n%s"%(string,fielddisplay(self,'x','vertices x coordinate [m]'))
    59                 string="%s\n%s"%(string,fielddisplay(self,'y','vertices y coordinate [m]'))
    60                 string="%s\n%s"%(string,fielddisplay(self,'z','vertices z coordinate [m]'))
    61                 string="%s\n%s"%(string,fielddisplay(self,'lat','vertices latitude [degrees]'))
    62                 string="%s\n%s"%(string,fielddisplay(self,'long','vertices longitude [degrees]'))
    63                 string="%s\n%s"%(string,fielddisplay(self,'r','vertices radius [m]'))
    64                
    65                 string="%s\n%s"%(string,fielddisplay(self,'edges','edges of the 2d mesh (vertex1 vertex2 element1 element2)'))
    66                 string="%s\n%s"%(string,fielddisplay(self,'numberofedges','number of edges of the 2d mesh'))
     38        if not len(args):
     39            self.setdefaultparameters()
     40        elif len(args) == 1:
     41            self = mesh3dsurface()
     42            arg = args[1]
     43            fields = fieldnames(arg)
     44            for i in range(len(fields)):
     45                field = fields[i]
     46                if ismember(field, properties('mesh3dsurface')):
     47                    self.field = arg.field
     48        else:
     49            raise RuntimeError('constructor not supported')
    6750
    68                 string+='\n      Properties:'
    69                 string="%s\n%s"%(string,fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list'))
    70                 string="%s\n%s"%(string,fielddisplay(self,'segments','edges on domain boundary (vertex1 vertex2 element)'))
    71                 string="%s\n%s"%(string,fielddisplay(self,'segmentmarkers','number associated to each segment'))
    72                 string="%s\n%s"%(string,fielddisplay(self,'vertexconnectivity','list of elements connected to vertex_i'))
    73                 string="%s\n%s"%(string,fielddisplay(self,'elementconnectivity','list of elements adjacent to element_i'))
    74                 string="%s\n%s"%(string,fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex'))
     51    # }}}
    7552
    76                 string+='\n      Extracted model():'
    77                 string="%s\n%s"%(string,fielddisplay(self,'extractedvertices','vertices extracted from the model()'))
    78                 string="%s\n%s"%(string,fielddisplay(self,'extractedelements','elements extracted from the model()'))
    79                
    80                 return string
    81         # }}}
    82         def loadobj(self): # {{{
    83                 # This def is directly called by matlab when a model() selfect is
    84                 # loaded. Update old properties here
     53    def __repr__(self):  # {{{
     54        string = '   2D tria Mesh (horizontal):'
    8555
    86                 #2014 Oct. 1st
    87                 if isstruct(self):
    88                         oldself=self
    89                         #Assign property values from struct
    90                         self=structtoobj(mesh3dsurface(),oldself)
    91                         if isfield(oldself,'hemisphere'):
    92                                 print ('md.mesh.hemisphere has been automatically converted to EPSG code')
    93                                 if strcmpi(oldself.hemisphere,'n'):
    94                                         self.epsg=3413
    95                                 else:
    96                                         self.epsg=3031
    97                 return self
    98         # }}}
    99         def setdefaultparameters(self): # {{{
     56        string += '\n      Elements and vertices:'
     57        string = "%s\n%s" % (string, fielddisplay(self, 'numberofelements', 'number of elements'))
     58        string = "%s\n%s" % (string, fielddisplay(self, 'numberofvertices', 'number of vertices'))
     59        string = "%s\n%s" % (string, fielddisplay(self, 'elements', 'vertex indices of the mesh elements'))
     60        string = "%s\n%s" % (string, fielddisplay(self, 'x', 'vertices x coordinate [m]'))
     61        string = "%s\n%s" % (string, fielddisplay(self, 'y', 'vertices y coordinate [m]'))
     62        string = "%s\n%s" % (string, fielddisplay(self, 'z', 'vertices z coordinate [m]'))
     63        string = "%s\n%s" % (string, fielddisplay(self, 'lat', 'vertices latitude [degrees]'))
     64        string = "%s\n%s" % (string, fielddisplay(self, 'long', 'vertices longitude [degrees]'))
     65        string = "%s\n%s" % (string, fielddisplay(self, 'r', 'vertices radius [m]'))
    10066
    101                 #the connectivity is the averaged number of nodes linked to a
    102                 #given node through an edge. This connectivity is used to initially
    103                 #allocate memory to the stiffness matrix. A value of 16 seems to
    104                 #give a good memory/time ration. This value can be checked in
    105                 #trunk/test/Miscellaneous/runme.m
    106                 self.average_vertex_connectivity=25
    107                 return self
    108         # }}}
    109         def checkconsistency(self,md,solution,analyses): # {{{
     67        string = "%s\n%s" % (string, fielddisplay(self, 'edges', 'edges of the 2d mesh (vertex1 vertex2 element1 element2)'))
     68        string = "%s\n%s" % (string, fielddisplay(self, 'numberofedges', 'number of edges of the 2d mesh'))
    11069
    111                 md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    112                 md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    113                 md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    114                 md = checkfield(md,'fieldname','mesh.lat','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    115                 md = checkfield(md,'fieldname','mesh.long','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    116                 md = checkfield(md,'fieldname','mesh.r','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    117                 md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',np.arange(1,md.mesh.numberofvertices+1))
    118                 md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,3])
    119                 if np.any(np.logical_not(np.in1d(np.arange(1,md.mesh.numberofvertices+1),md.mesh.elements.flat))):
    120                         md = checkmessage(md,'orphan nodes have been found. Check the mesh outline')
    121                
    122                 md = checkfield(md,'fieldname','mesh.numberofelements','>',0)
    123                 md = checkfield(md,'fieldname','mesh.numberofvertices','>',0)
    124                 md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message','"mesh.average_vertex_connectivity" should be at least 9 in 2d')
     70        string += '\n      Properties:'
     71        string = "%s\n%s" % (string, fielddisplay(self, 'vertexonboundary', 'vertices on the boundary of the domain flag list'))
     72        string = "%s\n%s" % (string, fielddisplay(self, 'segments', 'edges on domain boundary (vertex1 vertex2 element)'))
     73        string = "%s\n%s" % (string, fielddisplay(self, 'segmentmarkers', 'number associated to each segment'))
     74        string = "%s\n%s" % (string, fielddisplay(self, 'vertexconnectivity', 'list of elements connected to vertex_i'))
     75        string = "%s\n%s" % (string, fielddisplay(self, 'elementconnectivity', 'list of elements adjacent to element_i'))
     76        string = "%s\n%s" % (string, fielddisplay(self, 'average_vertex_connectivity', 'average number of vertices connected to one vertex'))
    12577
    126                 if (solution=='ThermalSolution'):
    127                         md = checkmessage(md,'thermal not supported for 2d mesh');
    128                        
    129                 return md
    130         # }}}
    131         def marshall(self,prefix,md,fid): # {{{
    132                 WriteData(fid,prefix,'name','md.mesh.domain_type','data','Domain' + self.domaintype(),'format','String')
    133                 WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',self.dimension(),'format','Integer')
    134                 WriteData(fid,prefix,'name','md.mesh.elementtype','data',self.elementtype(),'format','String')
    135                 WriteData(fid,prefix,'object',self,'fieldname','x','format','DoubleMat','mattype',1)
    136                 WriteData(fid,prefix,'object',self,'fieldname','y','format','DoubleMat','mattype',1)
    137                 WriteData(fid,prefix,'object',self,'fieldname','z','format','DoubleMat','mattype',1)
    138                 WriteData(fid,prefix,'object',self,'fieldname','lat','format','DoubleMat','mattype',1)
    139                 WriteData(fid,prefix,'object',self,'fieldname','long','format','DoubleMat','mattype',1)
    140                 WriteData(fid,prefix,'object',self,'fieldname','r','format','DoubleMat','mattype',1)
    141                 WriteData(fid,prefix,'name','md.mesh.z','data',np.zeros(md.mesh.numberofvertices),'format','DoubleMat','mattype',1)
    142                 WriteData(fid,prefix,'object',self,'fieldname','elements','format','DoubleMat','mattype',2)
    143                 WriteData(fid,prefix,'object',self,'fieldname','numberofelements','format','Integer')
    144                 WriteData(fid,prefix,'object',self,'fieldname','numberofvertices','format','Integer')
    145                 WriteData(fid,prefix,'object',self,'fieldname','average_vertex_connectivity','format','Integer')
    146                 WriteData(fid,prefix,'object',self,'fieldname','vertexonboundary','format','DoubleMat','mattype',1)
    147         # }}}
    148         def domaintype(self): # {{{
    149                 return '3Dsurface'
    150         # }}}
    151         def dimension(self): # {{{
    152                 return 2
    153         # }}}
    154         def elementtype(self): # {{{
    155                 return 'Tria'
    156         # }}}
    157         def processmesh(self,options): # {{{
    158        
    159                 isplanet = 1
    160                 is2d     = 0
     78        string += '\n      Extracted model():'
     79        string = "%s\n%s" % (string, fielddisplay(self, 'extractedvertices', 'vertices extracted from the model()'))
     80        string = "%s\n%s" % (string, fielddisplay(self, 'extractedelements', 'elements extracted from the model()'))
    16181
    162                 elements = self.elements
    163                 x        = self.x
    164                 y        = self.y
    165                 z        = self.z
    166                 return [x, y, z, elements, is2d, isplanet]
    167         # }}}
    168         def savemodeljs(self,fid,modelname): # {{{
    169        
    170                 fid.write('#s.mesh=new mesh3dsurface()\n'%modelname)
    171                 writejs1Darray(fid,[modelname, '.mesh.x'],self.x)
    172                 writejs1Darray(fid,[modelname, '.mesh.y'],self.y)
    173                 writejs1Darray(fid,[modelname, '.mesh.z'],self.z)
    174                 writejs2Darray(fid,[modelname, '.mesh.elements'],self.elements)
    175                 writejsdouble(fid,[modelname, '.mesh.numberofelements'],self.numberofelements)
    176                 writejsdouble(fid,[modelname, '.mesh.numberofvertices'],self.numberofvertices)
    177                 writejsdouble(fid,[modelname, '.mesh.numberofedges'],self.numberofedges)
    178                 writejs1Darray(fid,[modelname, '.mesh.lat'],self.lat)
    179                 writejs1Darray(fid,[modelname, '.mesh.long'],self.long)
    180                 writejs1Darray(fid,[modelname, '.mesh.r'],self.r)
    181                 writejs1Darray(fid,[modelname, '.mesh.vertexonboundary'],self.vertexonboundary)
    182                 writejs2Darray(fid,[modelname, '.mesh.edges'],self.edges)
    183                 writejs2Darray(fid,[modelname, '.mesh.segments'],self.segments)
    184                 writejs2Darray(fid,[modelname, '.mesh.segmentmarkers'],self.segmentmarkers)
    185                 writejs2Darray(fid,[modelname, '.mesh.vertexconnectivity'],self.vertexconnectivity)
    186                 writejs2Darray(fid,[modelname, '.mesh.elementconnectivity'],self.elementconnectivity)
    187                 writejsdouble(fid,[modelname, '.mesh.average_vertex_connectivity'],self.average_vertex_connectivity)
    188                 writejs1Darray(fid,[modelname, '.mesh.extractedvertices'],self.extractedvertices)
    189                 writejs1Darray(fid,[modelname, '.mesh.extractedelements'],self.extractedelements)
     82        return string
     83    # }}}
    19084
    191         # }}}
    192        
     85    def loadobj(self):  # {{{
     86        # This def is directly called by matlab when a model() selfect is
     87        # loaded. Update old properties here
     88
     89        #2014 Oct. 1st
     90        if isstruct(self):
     91            oldself = self
     92            #Assign property values from struct
     93            self = structtoobj(mesh3dsurface(), oldself)
     94            if isfield(oldself, 'hemisphere'):
     95                print('md.mesh.hemisphere has been automatically converted to EPSG code')
     96                if strcmpi(oldself.hemisphere, 'n'):
     97                    self.epsg = 3413
     98                else:
     99                    self.epsg = 3031
     100        return self
     101    # }}}
     102
     103    def setdefaultparameters(self):  # {{{
     104        #the connectivity is the averaged number of nodes linked to a
     105        #given node through an edge. This connectivity is used to initially
     106        #allocate memory to the stiffness matrix. A value of 16 seems to
     107        #give a good memory / time ration. This value can be checked in
     108        #trunk / test / Miscellaneous / runme.m
     109        self.average_vertex_connectivity = 25
     110        return self
     111    # }}}
     112
     113    def checkconsistency(self, md, solution, analyses):  # {{{
     114        md = checkfield(md, 'fieldname', 'mesh.x', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     115        md = checkfield(md, 'fieldname', 'mesh.y', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     116        md = checkfield(md, 'fieldname', 'mesh.z', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     117        md = checkfield(md, 'fieldname', 'mesh.lat', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     118        md = checkfield(md, 'fieldname', 'mesh.long', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     119        md = checkfield(md, 'fieldname', 'mesh.r', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     120        md = checkfield(md, 'fieldname', 'mesh.elements', 'NaN', 1, 'Inf', 1, '>', 0, 'values', np.arange(1, md.mesh.numberofvertices + 1))
     121        md = checkfield(md, 'fieldname', 'mesh.elements', 'size', [md.mesh.numberofelements, 3])
     122        if np.any(np.logical_not(np.in1d(np.arange(1, md.mesh.numberofvertices + 1), md.mesh.elements.flat))):
     123            md = checkmessage(md, 'orphan nodes have been found. Check the mesh outline')
     124
     125        md = checkfield(md, 'fieldname', 'mesh.numberofelements', '>', 0)
     126        md = checkfield(md, 'fieldname', 'mesh.numberofvertices', '>', 0)
     127        md = checkfield(md, 'fieldname', 'mesh.average_vertex_connectivity', '>=', 9, 'message', '"mesh.average_vertex_connectivity" should be at least 9 in 2d')
     128
     129        if (solution == 'ThermalSolution'):
     130            md = checkmessage(md, 'thermal not supported for 2d mesh')
     131
     132        return md
     133    # }}}
     134
     135    def marshall(self, prefix, md, fid):  # {{{
     136        WriteData(fid, prefix, 'name', 'md.mesh.domain_type', 'data', 'Domain' + self.domaintype(), 'format', 'String')
     137        WriteData(fid, prefix, 'name', 'md.mesh.domain_dimension', 'data', self.dimension(), 'format', 'Integer')
     138        WriteData(fid, prefix, 'name', 'md.mesh.elementtype', 'data', self.elementtype(), 'format', 'String')
     139        WriteData(fid, prefix, 'object', self, 'fieldname', 'x', 'format', 'DoubleMat', 'mattype', 1)
     140        WriteData(fid, prefix, 'object', self, 'fieldname', 'y', 'format', 'DoubleMat', 'mattype', 1)
     141        WriteData(fid, prefix, 'object', self, 'fieldname', 'z', 'format', 'DoubleMat', 'mattype', 1)
     142        WriteData(fid, prefix, 'object', self, 'fieldname', 'lat', 'format', 'DoubleMat', 'mattype', 1)
     143        WriteData(fid, prefix, 'object', self, 'fieldname', 'long', 'format', 'DoubleMat', 'mattype', 1)
     144        WriteData(fid, prefix, 'object', self, 'fieldname', 'r', 'format', 'DoubleMat', 'mattype', 1)
     145        WriteData(fid, prefix, 'name', 'md.mesh.z', 'data', np.zeros(md.mesh.numberofvertices), 'format', 'DoubleMat', 'mattype', 1)
     146        WriteData(fid, prefix, 'object', self, 'fieldname', 'elements', 'format', 'DoubleMat', 'mattype', 2)
     147        WriteData(fid, prefix, 'object', self, 'fieldname', 'numberofelements', 'format', 'Integer')
     148        WriteData(fid, prefix, 'object', self, 'fieldname', 'numberofvertices', 'format', 'Integer')
     149        WriteData(fid, prefix, 'object', self, 'fieldname', 'average_vertex_connectivity', 'format', 'Integer')
     150        WriteData(fid, prefix, 'object', self, 'fieldname', 'vertexonboundary', 'format', 'DoubleMat', 'mattype', 1)
     151    # }}}
     152
     153    def domaintype(self):  # {{{
     154        return '3Dsurface'
     155    # }}}
     156
     157    def dimension(self):  # {{{
     158        return 2
     159    # }}}
     160
     161    def elementtype(self):  # {{{
     162        return 'Tria'
     163    # }}}
     164
     165    def processmesh(self, options):  # {{{
     166        isplanet = 1
     167        is2d = 0
     168
     169        elements = self.elements
     170        x = self.x
     171        y = self.y
     172        z = self.z
     173        return [x, y, z, elements, is2d, isplanet]
     174    # }}}
     175
     176    def savemodeljs(self, fid, modelname):  # {{{
     177        fid.write('  #s.mesh = new mesh3dsurface()\n' % modelname)
     178        writejs1Darray(fid, [modelname, '.mesh.x'], self.x)
     179        writejs1Darray(fid, [modelname, '.mesh.y'], self.y)
     180        writejs1Darray(fid, [modelname, '.mesh.z'], self.z)
     181        writejs2Darray(fid, [modelname, '.mesh.elements'], self.elements)
     182        writejsdouble(fid, [modelname, '.mesh.numberofelements'], self.numberofelements)
     183        writejsdouble(fid, [modelname, '.mesh.numberofvertices'], self.numberofvertices)
     184        writejsdouble(fid, [modelname, '.mesh.numberofedges'], self.numberofedges)
     185        writejs1Darray(fid, [modelname, '.mesh.lat'], self.lat)
     186        writejs1Darray(fid, [modelname, '.mesh.long'], self.long)
     187        writejs1Darray(fid, [modelname, '.mesh.r'], self.r)
     188        writejs1Darray(fid, [modelname, '.mesh.vertexonboundary'], self.vertexonboundary)
     189        writejs2Darray(fid, [modelname, '.mesh.edges'], self.edges)
     190        writejs2Darray(fid, [modelname, '.mesh.segments'], self.segments)
     191        writejs2Darray(fid, [modelname, '.mesh.segmentmarkers'], self.segmentmarkers)
     192        writejs2Darray(fid, [modelname, '.mesh.vertexconnectivity'], self.vertexconnectivity)
     193        writejs2Darray(fid, [modelname, '.mesh.elementconnectivity'], self.elementconnectivity)
     194        writejsdouble(fid, [modelname, '.mesh.average_vertex_connectivity'], self.average_vertex_connectivity)
     195        writejs1Darray(fid, [modelname, '.mesh.extractedvertices'], self.extractedvertices)
     196        writejs1Darray(fid, [modelname, '.mesh.extractedelements'], self.extractedelements)
     197
     198    # }}}
  • issm/trunk-jpl/src/m/classes/miscellaneous.py

    r21049 r24213  
    44from WriteData import WriteData
    55
     6
    67class miscellaneous(object):
    7         """
    8         MISCELLANEOUS class definition
     8    """
     9    MISCELLANEOUS class definition
    910
    10            Usage:
    11               miscellaneous=miscellaneous();
    12         """
     11       Usage:
     12          miscellaneous = miscellaneous()
     13    """
    1314
    14         def __init__(self): # {{{
    15                 self.notes = ''
    16                 self.name = ''
    17                 self.dummy = OrderedDict()
     15    def __init__(self): # {{{
     16        self.notes = ''
     17        self.name = ''
     18        self.dummy = OrderedDict()
    1819
    19                 #set defaults
    20                 self.setdefaultparameters()
     20    #set defaults
     21        self.setdefaultparameters()
    2122
    22                 #}}}
    23         def __repr__(self): # {{{
    24                 string='   miscellaneous parameters:'
     23    #}}}
     24    def __repr__(self): # {{{
     25        string = '   miscellaneous parameters:'
    2526
    26                 string="%s\n%s"%(string,fielddisplay(self,'notes','notes in a cell of strings'))
    27                 string="%s\n%s"%(string,fielddisplay(self,'name','model name'))
    28                 string="%s\n%s"%(string,fielddisplay(self,'dummy','empty field to store some data'))
    29                 return string
    30                 #}}}
    31         def setdefaultparameters(self): # {{{
    32                 return self
    33         #}}}
    34         def checkconsistency(self,md,solution,analyses):    # {{{
    35                 md = checkfield(md,'fieldname','miscellaneous.name','empty',1)
    36                 return md
    37         # }}}
    38         def marshall(self,prefix,md,fid):    #  {{{
    39                 WriteData(fid,prefix,'object',self,'fieldname','name','format','String');
    40         # }}}
     27        string = "%s\n%s" % (string, fielddisplay(self, 'notes', 'notes in a cell of strings'))
     28        string = "%s\n%s" % (string, fielddisplay(self, 'name', 'model name'))
     29        string = "%s\n%s" % (string, fielddisplay(self, 'dummy', 'empty field to store some data'))
     30        return string
     31    #}}}
     32
     33    def setdefaultparameters(self):  # {{{
     34        return self
     35    #}}}
     36
     37    def checkconsistency(self, md, solution, analyses):  # {{{
     38        md = checkfield(md, 'fieldname', 'miscellaneous.name', 'empty', 1)
     39        return md
     40    # }}}
     41
     42    def marshall(self, prefix, md, fid):  #  {{{
     43        WriteData(fid, prefix, 'object', self, 'fieldname', 'name', 'format', 'String')
     44    # }}}
  • issm/trunk-jpl/src/m/classes/misfit.py

    r22104 r24213  
    11import numpy as np
    22from project3d import project3d
    3 from pairoptions import *
    4 from collections import OrderedDict
    53from fielddisplay import fielddisplay
    64from checkfield import checkfield
     
    97
    108class misfit(object):
    11         """
    12         MISFIT class definition
     9    """
     10    MISFIT class definition
    1311
    14         Usage:
    15                 misfit=misfit()
    16                 misfit=misfit(name='SurfaceAltimetry',
    17                         definitionstring='Outputdefinition1',
    18                         model_string='Surface',
    19                         observation_string='SurfaceObservations',
    20                         observation=md.geometry.surface,
    21                         timeinterpolation='nearestneighbor',
    22                         local=1,
    23                         weights=np.ones((md.mesh.numberofvertices,1)),
    24                         weights_string='WeightsSurfaceObservations')
    25         """
     12    Usage:
     13        misfit = misfit()
     14        misfit = misfit(name = 'SurfaceAltimetry',
     15                    definitionstring = 'Outputdefinition1',
     16            model_string = 'Surface',
     17                    observation_string = 'SurfaceObservations',
     18                     observation = md.geometry.surface,
     19                        timeinterpolation = 'nearestneighbor',
     20                        local = 1,
     21                        weights = np.ones((md.mesh.numberofvertices, 1)),
     22                        weights_string = 'WeightsSurfaceObservations')
     23    """
    2624
    27         def __init__(self, name = None, definitionstring = None, model_string = None, observation = None, observation_string = None, timeinterpolation = None, local = None, weights = None, weights_string = None, cumulated = None):
    28                 # {{{
    29                 self.name = name if name is not None else ''
     25    def __init__(self, name=None, definitionstring=None, model_string=None, observation=None, observation_string=None, timeinterpolation=None, local=None, weights=None, weights_string=None, cumulated=None):  # {{{
     26        self.name = name if name is not None else ''
     27        #string that identifies this output definition uniquely, from 'Outputdefinition[1 - 100]'
     28        self.definitionstring = definitionstring if definitionstring is not None else ''
     29        #string for field that is modeled
     30        self.model_string = model_string if model_string is not None else ''
     31        #observed field that we compare the model against
     32        self.observation = observation if observation is not None else float('NaN')
     33        #string for observed field.
     34        self.observation_string = observation_string if observation_string is not None else ''
     35        self.timeinterpolation = timeinterpolation if timeinterpolation is not None else 'nearestneighbor'
     36        self.local = local if local is not None else 1
     37        #weight coefficients for every vertex
     38        self.weights = weights if weights is not None else float('NaN')
     39        #string to identify this particular set of weights
     40        self.weights_string = weights_string if weights_string is not None else ''
     41        #do we cumulate misfit through time?
     42        self.cumulated = cumulated if cumulated is not None else float('NaN')
     43    #}}}
    3044
    31                 #string that identifies this output definition uniquely, from 'Outputdefinition[1-100]'
    32                 self.definitionstring = definitionstring if definitionstring is not None else ''
     45    def __repr__(self):  # {{{
     46        string = '   Misfit:'
    3347
    34                 #string for field that is modeled
    35                 self.model_string = model_string if model_string is not None else ''
     48        string = "%s\n%s" % (string, fielddisplay(self, 'name', 'identifier for this misfit response'))
     49        string = "%s\n%s" % (string, fielddisplay(self, 'definitionstring', 'string that identifies this output definition uniquely, from "Outputdefinition[1 - 10]"'))
     50        string = "%s\n%s" % (string, fielddisplay(self, 'model_string', 'string for field that is modeled'))
     51        string = "%s\n%s" % (string, fielddisplay(self, 'observation', 'observed field that we compare the model against'))
     52        string = "%s\n%s" % (string, fielddisplay(self, 'observation_string', 'observation string'))
     53        string = "%s\n%s" % (string, fielddisplay(self, 'local', 'is the response local to the elements, or global? (default is 1)'))
     54        string = "%s\n%s" % (string, fielddisplay(self, 'timeinterpolation', 'interpolation routine used to interpolate misfit between two time steps (default is "nearestneighbor"'))
     55        string = "%s\n%s" % (string, fielddisplay(self, 'weights', 'weights (at vertices) to apply to the misfit'))
     56        string = "%s\n%s" % (string, fielddisplay(self, 'weights_string', 'string for weights for identification purposes'))
     57        return string
     58    #}}}
    3659
    37                 #observed field that we compare the model against
    38                 self.observation = observation if observation is not None else float('NaN')
     60    def extrude(self, md):  # {{{
     61        if not np.any(np.isnan(self.weights)):
     62            self.weights = project3d(md, 'vector', self.weights, 'type', 'node')
     63        if not np.any(np.isnan(self.observation)):
     64            self.observation = project3d(md, 'vector', self.observation, 'type', 'node')
     65        return self
     66    #}}}
    3967
    40                 #string for observed field.
    41                 self.observation_string = observation_string if observation_string is not None else ''
     68    def checkconsistency(self, md, solution, analyses):  # {{{
     69        if type(self.name) != str:
     70            raise TypeError('misfit error message: "name" field should be a string!')
    4271
    43                 self.timeinterpolation = timeinterpolation if timeinterpolation is not None else 'nearestneighbor'
     72        OutputdefinitionStringArray = []
     73        for i in range(100):
     74            OutputdefinitionStringArray.append('Outputdefinition' + str(i))
    4475
    45                 self.local = local if local is not None else 1
     76        md = checkfield(md, 'fieldname', 'self.definitionstring', 'field', self.definitionstring, 'values', OutputdefinitionStringArray)
     77        if type(self.timeinterpolation) != str:
     78            raise TypeError('misfit error message: "timeinterpolation" field should be a string!')
    4679
    47                 #weight coefficients for every vertex
    48                 self.weights = weights if weights is not None else float('NaN')
     80        md = checkfield(md, 'fieldname', 'self.observation', 'field', self.observation, 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     81        md = checkfield(md, 'fieldname', 'self.timeinterpolation', 'field', self.timeinterpolation, 'values', ['nearestneighbor'])
     82        md = checkfield(md, 'fieldname', 'self.weights', 'field', self.weights, 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    4983
    50                 #string to identify this particular set of weights
    51                 self.weights_string = weights_string if weights_string is not None else ''
     84        return md
     85    # }}}
    5286
    53                 #do we cumulate misfit through time?
    54                 self.cumulated = cumulated if cumulated is not None else float('NaN')           
    55                 #}}}
    56 
    57         def __repr__(self): # {{{
    58                 string='   Misfit:'
    59 
    60                 string="%s\n%s"%(string,fielddisplay(self,'name','identifier for this misfit response'))
    61                 string="%s\n%s"%(string,fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from "Outputdefinition[1-10]"'))
    62                 string="%s\n%s"%(string,fielddisplay(self,'model_string','string for field that is modeled'))
    63                 string="%s\n%s"%(string,fielddisplay(self,'observation','observed field that we compare the model against'))
    64                 string="%s\n%s"%(string,fielddisplay(self,'observation_string','observation string'))
    65                 string="%s\n%s"%(string,fielddisplay(self,'local','is the response local to the elements, or global? (default is 1)'))
    66                 string="%s\n%s"%(string,fielddisplay(self,'timeinterpolation','interpolation routine used to interpolate misfit between two time steps (default is "nearestneighbor"'))
    67                 string="%s\n%s"%(string,fielddisplay(self,'weights','weights (at vertices) to apply to the misfit'))
    68                 string="%s\n%s"%(string,fielddisplay(self,'weights_string','string for weights for identification purposes'))
    69                 return string
    70                 #}}}
    71 
    72         def extrude(self,md): # {{{
    73                 if not np.any(np.isnan(self.weights)):
    74                         self.weights = project3d(md,'vector',self.weights,'type','node')
    75                 if not np.any(np.isnan(self.observation)):
    76                         self.observation = project3d(md,'vector',self.observation,'type','node')
    77                 return self
    78         #}}}
    79 
    80         def checkconsistency(self,md,solution,analyses):    # {{{
    81                 if type(self.name) != str:
    82                         raise TypeError('misfit error message: "name" field should be a string!')
    83 
    84                 OutputdefinitionStringArray = []
    85                 for i in range(100):
    86                         OutputdefinitionStringArray.append('Outputdefinition' + str(i))
    87 
    88                 md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray)
    89                 if type(self.timeinterpolation) != str:
    90                         raise TypeError('misfit error message: "timeinterpolation" field should be a string!')
    91 
    92                 md = checkfield(md,'fieldname','self.observation','field',self.observation,'timeseries',1,'NaN',1,'Inf',1)
    93                 md = checkfield(md,'fieldname','self.timeinterpolation','field',self.timeinterpolation,'values',['nearestneighbor'])
    94                 md = checkfield(md,'fieldname','self.weights','field',self.weights,'timeseries',1,'NaN',1,'Inf',1)
    95 
    96                 return md
    97         # }}}
    98 
    99         def marshall(self,prefix,md,fid):    #  {{{
    100                 WriteData(fid,prefix,'data',self.name,'name','md.misfit.name','format','String')
    101                 WriteData(fid,prefix,'data',self.definitionstring,'name','md.misfit.definitionstring','format','String')
    102                 WriteData(fid,prefix,'data',self.model_string,'name','md.misfit.model_string','format','String')
    103                 WriteData(fid,prefix,'data',self.observation,'name','md.misfit.observation','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    104                 WriteData(fid,prefix,'data',self.observation_string,'name','md.misfit.observation_string','format','String')
    105                 WriteData(fid,prefix,'data',self.local,'name','md.misfit.local','format','Integer')
    106                 WriteData(fid,prefix,'data',self.timeinterpolation,'name','md.misfit.timeinterpolation','format','String')
    107                 WriteData(fid,prefix,'data',self.weights,'name','md.misfit.weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    108                 WriteData(fid,prefix,'data',self.weights_string,'name','md.misfit.weights_string','format','String')
    109         # }}}
     87    def marshall(self, prefix, md, fid):  #  {{{
     88        WriteData(fid, prefix, 'data', self.name, 'name', 'md.misfit.name', 'format', 'String')
     89        WriteData(fid, prefix, 'data', self.definitionstring, 'name', 'md.misfit.definitionstring', 'format', 'String')
     90        WriteData(fid, prefix, 'data', self.model_string, 'name', 'md.misfit.model_string', 'format', 'String')
     91        WriteData(fid, prefix, 'data', self.observation, 'name', 'md.misfit.observation', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     92        WriteData(fid, prefix, 'data', self.observation_string, 'name', 'md.misfit.observation_string', 'format', 'String')
     93        WriteData(fid, prefix, 'data', self.local, 'name', 'md.misfit.local', 'format', 'Integer')
     94        WriteData(fid, prefix, 'data', self.timeinterpolation, 'name', 'md.misfit.timeinterpolation', 'format', 'String')
     95        WriteData(fid, prefix, 'data', self.weights, 'name', 'md.misfit.weights', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     96        WriteData(fid, prefix, 'data', self.weights_string, 'name', 'md.misfit.weights_string', 'format', 'String')
     97    # }}}
  • issm/trunk-jpl/src/m/classes/mismipbasalforcings.py

    r23716 r24213  
    55import numpy as np
    66
     7
    78class mismipbasalforcings(object):
    8         """
    9         MISMIP Basal Forcings class definition
     9    """
     10    MISMIP Basal Forcings class definition
    1011
    11         Usage:
    12         mismipbasalforcings=mismipbasalforcings()
    13         """
     12    Usage:
     13    mismipbasalforcings = mismipbasalforcings()
     14    """
    1415
    15         def __init__(self): # {{{
    16                 self.groundedice_melting_rate = float('NaN')
    17                 self.meltrate_factor = float('NaN')
    18                 self.threshold_thickness = float('NaN')
    19                 self.upperdepth_melt = float('NaN')
    20                 self.geothermalflux = float('NaN')
    21                 self.setdefaultparameters()
     16    def __init__(self): # {{{
     17        self.groundedice_melting_rate = float('NaN')
     18        self.meltrate_factor = float('NaN')
     19        self.threshold_thickness = float('NaN')
     20        self.upperdepth_melt = float('NaN')
     21        self.geothermalflux = float('NaN')
     22        self.setdefaultparameters()
    2223
    23                 #}}}
    24         def __repr__(self): # {{{
    25                 string=" MISMIP+ basal melt parameterization\n"
    26                 string="%s\n%s"%(string,fielddisplay(self,"groundedice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
    27                 string="%s\n%s"%(string,fielddisplay(self,"meltrate_factor","Melt-rate rate factor [1/yr] (sign is opposite to MISMIP+ benchmark to remain consistent with ISSM convention of positive values for melting)"))
    28                 string="%s\n%s"%(string,fielddisplay(self,"threshold_thickness","Threshold thickness for saturation of basal melting [m]"))
    29                 string="%s\n%s"%(string,fielddisplay(self,"upperdepth_melt","Depth above which melt rate is zero [m]"))
    30                 string="%s\n%s"%(string,fielddisplay(self,"geothermalflux","Geothermal heat flux [W/m^2]"))
    31                 return string
    32         #}}}
    33         def extrude(self,md): # {{{
    34                 self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1)
    35                 self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1)    #bedrock only gets geothermal flux
    36                 return self
    37         #}}}
    38         def initialize(self,md): # {{{
    39                 if np.all(np.isnan(self.groundedice_melting_rate)):
    40                         self.groundedice_melting_rate=np.zeros((md.mesh.numberofvertices))
    41                         print(' no basalforcings.groundedice_melting_rate specified: values set as zero')
    42                 if np.all(np.isnan(self.geothermalflux)):
    43                         self.geothermalflux=np.zeros((md.mesh.numberofvertices))
    44                         print("      no basalforcings.geothermalflux specified: values set as zero")
    45                 return self
    46         #}}}
    47         def setdefaultparameters(self): # {{{
    48                 # default values for melting parameterization
    49                 self.meltrate_factor = 0.2
    50                 self.threshold_thickness = 75.
    51                 self.upperdepth_melt = -100.
    52                 return self
    53         #}}}
    54         def checkconsistency(self,md,solution,analyses):    # {{{
    55                 #Early return
    56                 if 'MasstransportAnalysis' in analyses and not (solution=='TransientSolution' and md.transient.ismasstransport==0):
    57                         md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
    58                         md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
    59                         md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
    60                         md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
     24    #}}}
    6125
    62                 if 'BalancethicknessAnalysis' in analyses:
    63                         md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    64                         md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
    65                         md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
    66                         md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
     26    def __repr__(self):  # {{{
     27        string = " MISMIP + basal melt parameterization\n"
     28        string = "%s\n%s" % (string, fielddisplay(self, "groundedice_melting_rate", "basal melting rate (positive if melting) [m / yr]"))
     29        string = "%s\n%s" % (string, fielddisplay(self, "meltrate_factor", "Melt - rate rate factor [1 / yr] (sign is opposite to MISMIP + benchmark to remain consistent with ISSM convention of positive values for melting)"))
     30        string = "%s\n%s" % (string, fielddisplay(self, "threshold_thickness", "Threshold thickness for saturation of basal melting [m]"))
     31        string = "%s\n%s" % (string, fielddisplay(self, "upperdepth_melt", "Depth above which melt rate is zero [m]"))
     32        string = "%s\n%s" % (string, fielddisplay(self, "geothermalflux", "Geothermal heat flux [W / m^2]"))
     33        return string
     34    #}}}
    6735
    68                 if 'ThermalAnalysis' in analyses and not (solution=='TransientSolution' and md.transient.isthermal==0):
    69                         md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
    70                         md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
    71                         md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
    72                         md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
    73                         md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
    74                 return md
    75         # }}}
    76         def marshall(self,prefix,md,fid):    # {{{
    77                 yts=md.constants.yts
    78                 if yts!=365.2422*24.*3600.:
    79                         print('WARNING: value of yts for MISMIP+ runs different from ISSM default!')
     36    def extrude(self, md):  # {{{
     37        self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1)
     38        self.geothermalflux = project3d(md, 'vector', self.geothermalflux, 'type', 'node', 'layer', 1)  #bedrock only gets geothermal flux
     39        return self
     40    #}}}
    8041
    81                 WriteData(fid,prefix,'name','md.basalforcings.model','data',3,'format','Integer')
    82                 WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    83                 WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    84                 WriteData(fid,prefix,'object',self,'fieldname','meltrate_factor','format','Double','scale',1./yts)
    85                 WriteData(fid,prefix,'object',self,'fieldname','threshold_thickness','format','Double')
    86                 WriteData(fid,prefix,'object',self,'fieldname','upperdepth_melt','format','Double')
     42    def initialize(self, md):  # {{{
     43        if np.all(np.isnan(self.groundedice_melting_rate)):
     44            self.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
     45            print(' no basalforcings.groundedice_melting_rate specified: values set as zero')
     46        if np.all(np.isnan(self.geothermalflux)):
     47            self.geothermalflux = np.zeros((md.mesh.numberofvertices))
     48            print("      no basalforcings.geothermalflux specified: values set as zero")
     49        return self
     50    #}}}
     51
     52    def setdefaultparameters(self):  # {{{
     53        # default values for melting parameterization
     54        self.meltrate_factor = 0.2
     55        self.threshold_thickness = 75.
     56        self.upperdepth_melt = - 100.
     57        return self
     58    #}}}
     59
     60    def checkconsistency(self, md, solution, analyses):  # {{{
     61        #Early return
     62        if 'MasstransportAnalysis' in analyses and not (solution == 'TransientSolution' and md.transient.ismasstransport == 0):
     63            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     64            md = checkfield(md, 'fieldname', 'basalforcings.meltrate_factor', '>=', 0, 'numel', [1])
     65            md = checkfield(md, 'fieldname', 'basalforcings.threshold_thickness', '>=', 0, 'numel', [1])
     66            md = checkfield(md, 'fieldname', 'basalforcings.upperdepth_melt', '<=', 0, 'numel', [1])
     67
     68        if 'BalancethicknessAnalysis' in analyses:
     69            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     70            md = checkfield(md, 'fieldname', 'basalforcings.meltrate_factor', '>=', 0, 'numel', [1])
     71            md = checkfield(md, 'fieldname', 'basalforcings.threshold_thickness', '>=', 0, 'numel', [1])
     72            md = checkfield(md, 'fieldname', 'basalforcings.upperdepth_melt', '<=', 0, 'numel', [1])
     73
     74        if 'ThermalAnalysis' in analyses and not (solution == 'TransientSolution' and md.transient.isthermal == 0):
     75            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
     76            md = checkfield(md, 'fieldname', 'basalforcings.meltrate_factor', '>=', 0, 'numel', [1])
     77            md = checkfield(md, 'fieldname', 'basalforcings.threshold_thickness', '>=', 0, 'numel', [1])
     78            md = checkfield(md, 'fieldname', 'basalforcings.upperdepth_melt', '<=', 0, 'numel', [1])
     79            md = checkfield(md, 'fieldname', 'basalforcings.geothermalflux', 'NaN', 1, 'Inf', 1, 'timeseries', 1, '>=', 0)
     80        return md
    8781    # }}}
     82
     83    def marshall(self, prefix, md, fid):  # {{{
     84        yts = md.constants.yts
     85        if yts != 365.2422 * 24. * 3600.:
     86            print('WARNING: value of yts for MISMIP + runs different from ISSM default!')
     87
     88        WriteData(fid, prefix, 'name', 'md.basalforcings.model', 'data', 3, 'format', 'Integer')
     89        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundedice_melting_rate', 'format', 'DoubleMat', 'name', 'md.basalforcings.groundedice_melting_rate', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     90        WriteData(fid, prefix, 'object', self, 'fieldname', 'geothermalflux', 'name', 'md.basalforcings.geothermalflux', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     91        WriteData(fid, prefix, 'object', self, 'fieldname', 'meltrate_factor', 'format', 'Double', 'scale', 1. / yts)
     92        WriteData(fid, prefix, 'object', self, 'fieldname', 'threshold_thickness', 'format', 'Double')
     93        WriteData(fid, prefix, 'object', self, 'fieldname', 'upperdepth_melt', 'format', 'Double')
     94    # }}}
  • issm/trunk-jpl/src/m/classes/model.py

    r23870 r24213  
    7575    #properties
    7676    def __init__(self):  #{{{
    77 
    78         # classtype = model.properties
    79 
    80         # for classe in dict.keys(classtype):
    81         #       print classe
    82         #       self.__dict__[classe] = classtype[str(classe)]
    83 
     77        ''' classtype = model.properties
     78         for classe in dict.keys(classtype):
     79               print classe
     80               self.__dict__[classe] = classtype[str(classe)]
     81        '''
    8482        self.mesh = mesh2d()
    8583        self.mask = mask()
     
    176174
    177175    def __repr__(obj):  #{{{
    178         #print "Here %s the number: %d" % ("is",  37)
    179         string = "%19s: %-22s -- %s" % ("mesh", "[%s, %s]" % ("1x1", obj.mesh.__class__.__name__), "mesh properties")
    180         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("mask", "[%s, %s]" % ("1x1", obj.mask.__class__.__name__), "defines grounded and floating elements"))
    181         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("geometry", "[%s, %s]" % ("1x1", obj.geometry.__class__.__name__), "surface elevation,  bedrock topography, ice thickness, ..."))
    182         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("constants", "[%s, %s]" % ("1x1", obj.constants.__class__.__name__), "physical constants"))
    183         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("smb", "[%s, %s]" % ("1x1", obj.smb.__class__.__name__), "surface mass balance"))
    184         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("basalforcings", "[%s, %s]" % ("1x1", obj.basalforcings.__class__.__name__), "bed forcings"))
    185         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("materials", "[%s, %s]" % ("1x1", obj.materials.__class__.__name__), "material properties"))
    186         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("damage", "[%s, %s]" % ("1x1", obj.damage.__class__.__name__), "damage propagation laws"))
    187         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("friction", "[%s, %s]" % ("1x1", obj.friction.__class__.__name__), "basal friction/drag properties"))
    188         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("flowequation", "[%s, %s]" % ("1x1", obj.flowequation.__class__.__name__), "flow equations"))
    189         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("timestepping", "[%s, %s]" % ("1x1", obj.timestepping.__class__.__name__), "time stepping for transient models"))
    190         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("initialization", "[%s, %s]" % ("1x1", obj.initialization.__class__.__name__), "initial guess/state"))
    191         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("rifts", "[%s, %s]" % ("1x1", obj.rifts.__class__.__name__), "rifts properties"))
    192         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("slr", "[%s, %s]" % ("1x1", obj.slr.__class__.__name__), "slr forcings"))
    193         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("debug", "[%s, %s]" % ("1x1", obj.debug.__class__.__name__), "debugging tools (valgrind, gprof)"))
    194         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("verbose", "[%s, %s]" % ("1x1", obj.verbose.__class__.__name__), "verbosity level in solve"))
    195         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("settings", "[%s, %s]" % ("1x1", obj.settings.__class__.__name__), "settings properties"))
    196         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("toolkits", "[%s, %s]" % ("1x1", obj.toolkits.__class__.__name__), "PETSc options for each solution"))
    197         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("cluster", "[%s, %s]" % ("1x1", obj.cluster.__class__.__name__), "cluster parameters (number of cpus...)"))
    198         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("balancethickness", "[%s, %s]" % ("1x1", obj.balancethickness.__class__.__name__), "parameters for balancethickness solution"))
    199         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("stressbalance", "[%s, %s]" % ("1x1", obj.stressbalance.__class__.__name__), "parameters for stressbalance solution"))
    200         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("groundingline", "[%s, %s]" % ("1x1", obj.groundingline.__class__.__name__), "parameters for groundingline solution"))
    201         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("hydrology", "[%s, %s]" % ("1x1", obj.hydrology.__class__.__name__), "parameters for hydrology solution"))
    202         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("masstransport", "[%s, %s]" % ("1x1", obj.masstransport.__class__.__name__), "parameters for masstransport solution"))
    203         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("thermal", "[%s, %s]" % ("1x1", obj.thermal.__class__.__name__), "parameters for thermal solution"))
    204         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("steadystate", "[%s, %s]" % ("1x1", obj.steadystate.__class__.__name__), "parameters for steadystate solution"))
    205         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("transient", "[%s, %s]" % ("1x1", obj.transient.__class__.__name__), "parameters for transient solution"))
    206         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("levelset", "[%s, %s]" % ("1x1", obj.levelset.__class__.__name__), "parameters for moving boundaries (level-set method)"))
    207         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("calving", "[%s, %s]" % ("1x1", obj.calving.__class__.__name__), "parameters for calving"))
    208         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("frontalforcings", "[%s, %s]" % ("1x1", obj.frontalforcings.__class__.__name__), "parameters for frontalforcings"))
    209         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("gia", "[%s, %s]" % ("1x1", obj.gia.__class__.__name__), "parameters for gia solution"))
    210         string = "%s\n%s" % (string, '%19s: %-22s -- %s' % ("love", "[%s, %s]" % ("1x1", obj.love.__class__.__name__), "parameters for love solution"))
    211         string = "%s\n%s" % (string, '%19s: %-22s -- %s' % ("esa", "[%s, %s]" % ("1x1", obj.esa.__class__.__name__), "parameters for elastic adjustment solution"))
    212         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("autodiff", "[%s, %s]" % ("1x1", obj.autodiff.__class__.__name__), "automatic differentiation parameters"))
    213         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("inversion", "[%s, %s]" % ("1x1", obj.inversion.__class__.__name__), "parameters for inverse methods"))
    214         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("qmu", "[%s, %s]" % ("1x1", obj.qmu.__class__.__name__), "dakota properties"))
    215         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("amr", "[%s, %s]" % ("1x1", obj.amr.__class__.__name__), "adaptive mesh refinement properties"))
    216         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("outputdefinition", "[%s, %s]" % ("1x1", obj.outputdefinition.__class__.__name__), "output definition"))
    217         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("results", "[%s, %s]" % ("1x1", obj.results.__class__.__name__), "model results"))
    218         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("radaroverlay", "[%s, %s]" % ("1x1", obj.radaroverlay.__class__.__name__), "radar image for plot overlay"))
    219         string = "%s\n%s" % (string, "%19s: %-22s -- %s" % ("miscellaneous", "[%s, %s]" % ("1x1", obj.miscellaneous.__class__.__name__), "miscellaneous fields"))
     176        #print "Here %s the number: %d" % ("is", 37)
     177        string = "%19s: % - 22s - - %s" % ("mesh", "[%s, %s]" % ("1x1", obj.mesh.__class__.__name__), "mesh properties")
     178        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("mask", "[%s, %s]" % ("1x1", obj.mask.__class__.__name__), "defines grounded and floating elements"))
     179        string = "%s\n%s" % (string, "%19s: % - 22s - -  %s" % ("geometry", "[%s, %s]" % ("1x1", obj.geometry.__class__.__name__), "surface elevation, bedrock topography, ice thickness, ..."))
     180        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("constants", "[%s, %s]" % ("1x1", obj.constants.__class__.__name__), "physical constants"))
     181        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("smb", "[%s, %s]" % ("1x1", obj.smb.__class__.__name__), "surface mass balance"))
     182        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("basalforcings", "[%s, %s]" % ("1x1", obj.basalforcings.__class__.__name__), "bed forcings"))
     183        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("materials", "[%s, %s]" % ("1x1", obj.materials.__class__.__name__), "material properties"))
     184        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("damage", "[%s, %s]" % ("1x1", obj.damage.__class__.__name__), "damage propagation laws"))
     185        string = "%s\n%s" % (string, "%19s: % - 22s - -  %s" % ("friction", "[%s, %s]" % ("1x1", obj.friction.__class__.__name__), "basal friction / drag properties"))
     186        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("flowequation", "[%s, %s]" % ("1x1", obj.flowequation.__class__.__name__), "flow equations"))
     187        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("timestepping", "[%s, %s]" % ("1x1", obj.timestepping.__class__.__name__), "time stepping for transient models"))
     188        string = "%s\n%s" % (string, "%19s: % - 22s - -  %s" % ("initialization", "[%s, %s]" % ("1x1", obj.initialization.__class__.__name__), "initial guess / state"))
     189        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("rifts", "[%s, %s]" % ("1x1", obj.rifts.__class__.__name__), "rifts properties"))
     190        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("slr", "[%s, %s]" % ("1x1", obj.slr.__class__.__name__), "slr forcings"))
     191        string = "%s\n%s" % (string, "%19s: % - 22s - -  %s" % ("debug", "[%s, %s]" % ("1x1", obj.debug.__class__.__name__), "debugging tools (valgrind, gprof)"))
     192        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("verbose", "[%s, %s]" % ("1x1", obj.verbose.__class__.__name__), "verbosity level in solve"))
     193        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("settings", "[%s, %s]" % ("1x1", obj.settings.__class__.__name__), "settings properties"))
     194        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("toolkits", "[%s, %s]" % ("1x1", obj.toolkits.__class__.__name__), "PETSc options for each solution"))
     195        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("cluster", "[%s, %s]" % ("1x1", obj.cluster.__class__.__name__), "cluster parameters (number of cpus...)"))
     196        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("balancethickness", "[%s, %s]" % ("1x1", obj.balancethickness.__class__.__name__), "parameters for balancethickness solution"))
     197        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("stressbalance", "[%s, %s]" % ("1x1", obj.stressbalance.__class__.__name__), "parameters for stressbalance solution"))
     198        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("groundingline", "[%s, %s]" % ("1x1", obj.groundingline.__class__.__name__), "parameters for groundingline solution"))
     199        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("hydrology", "[%s, %s]" % ("1x1", obj.hydrology.__class__.__name__), "parameters for hydrology solution"))
     200        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("masstransport", "[%s, %s]" % ("1x1", obj.masstransport.__class__.__name__), "parameters for masstransport solution"))
     201        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("thermal", "[%s, %s]" % ("1x1", obj.thermal.__class__.__name__), "parameters for thermal solution"))
     202        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("steadystate", "[%s, %s]" % ("1x1", obj.steadystate.__class__.__name__), "parameters for steadystate solution"))
     203        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("transient", "[%s, %s]" % ("1x1", obj.transient.__class__.__name__), "parameters for transient solution"))
     204        string = "%s\n%s" % (string, "%19s: % - 22s - -  %s" % ("levelset", "[%s, %s]" % ("1x1", obj.levelset.__class__.__name__), "parameters for moving boundaries (level - set method)"))
     205        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("calving", "[%s, %s]" % ("1x1", obj.calving.__class__.__name__), "parameters for calving"))
     206        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("frontalforcings", "[%s, %s]" % ("1x1", obj.frontalforcings.__class__.__name__), "parameters for frontalforcings"))
     207        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("gia", "[%s, %s]" % ("1x1", obj.gia.__class__.__name__), "parameters for gia solution"))
     208        string = "%s\n%s" % (string, '%19s: % - 22s - - %s' % ("love", "[%s, %s]" % ("1x1", obj.love.__class__.__name__), "parameters for love solution"))
     209        string = "%s\n%s" % (string, '%19s: % - 22s - - %s' % ("esa", "[%s, %s]" % ("1x1", obj.esa.__class__.__name__), "parameters for elastic adjustment solution"))
     210        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("autodiff", "[%s, %s]" % ("1x1", obj.autodiff.__class__.__name__), "automatic differentiation parameters"))
     211        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("inversion", "[%s, %s]" % ("1x1", obj.inversion.__class__.__name__), "parameters for inverse methods"))
     212        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("qmu", "[%s, %s]" % ("1x1", obj.qmu.__class__.__name__), "dakota properties"))
     213        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("amr", "[%s, %s]" % ("1x1", obj.amr.__class__.__name__), "adaptive mesh refinement properties"))
     214        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("outputdefinition", "[%s, %s]" % ("1x1", obj.outputdefinition.__class__.__name__), "output definition"))
     215        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("results", "[%s, %s]" % ("1x1", obj.results.__class__.__name__), "model results"))
     216        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("radaroverlay", "[%s, %s]" % ("1x1", obj.radaroverlay.__class__.__name__), "radar image for plot overlay"))
     217        string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("miscellaneous", "[%s, %s]" % ("1x1", obj.miscellaneous.__class__.__name__), "miscellaneous fields"))
    220218        return string
    221219    # }}}
    222220
    223     def checkmessage(self, string):    # {{{
     221    def checkmessage(self, string):  # {{{
    224222        print("model not consistent: {}".format(string))
    225223        self.private.isconsistent = False
     
    228226    #@staticmethod
    229227
    230     def extract(self, area):    # {{{
     228    def extract(self, area):  # {{{
    231229        """
    232230        extract - extract a model according to an Argus contour or flag list
     
    234232           This routine extracts a submodel from a bigger model with respect to a given contour
    235233           md must be followed by the corresponding exp file or flags list
    236            It can either be a domain file (argus type,  .exp extension), or an array of element flags.
     234           It can either be a domain file (argus type, .exp extension), or an array of element flags.
    237235           If user wants every element outside the domain to be
    238            extract2d,  add '~' to the name of the domain file (ex: '~HO.exp')
     236           extract2d, add '~' to the name of the domain file (ex: '~HO.exp')
    239237           an empty string '' will be considered as an empty domain
    240238           a string 'all' will be considered as the entire domain
     
    246244              md2 = extract(md, 'Domain.exp')
    247245
    248            See also: EXTRUDE,  COLLAPSE
     246           See also: EXTRUDE, COLLAPSE
    249247        """
    250248
    251         #copy model
     249    #copy model
    252250        md1 = copy.deepcopy(self)
    253251
    254         #get elements that are inside area
     252    #get elements that are inside area
    255253        flag_elem = FlagElements(md1, area)
    256254        if not np.any(flag_elem):
    257255            raise RuntimeError("extracted model is empty")
    258256
    259         #kick out all elements with 3 dirichlets
     257    #kick out all elements with 3 dirichlets
    260258        spc_elem = np.nonzero(np.logical_not(flag_elem))[0]
    261259        spc_node = np.unique(md1.mesh.elements[spc_elem, :]) - 1
     
    265263        flag_elem[pos] = 0
    266264
    267         #extracted elements and nodes lists
     265    #extracted elements and nodes lists
    268266        pos_elem = np.nonzero(flag_elem)[0]
    269267        pos_node = np.unique(md1.mesh.elements[pos_elem, :]) - 1
    270268
    271         #keep track of some fields
     269    #keep track of some fields
    272270        numberofvertices1 = md1.mesh.numberofvertices
    273271        numberofelements1 = md1.mesh.numberofelements
     
    277275        flag_node[pos_node] = 1
    278276
    279         #Create Pelem and Pnode (transform old nodes in new nodes and same thing for the elements)
     277    #Create Pelem and Pnode (transform old nodes in new nodes and same thing for the elements)
    280278        Pelem = np.zeros(numberofelements1, int)
    281279        Pelem[pos_elem] = np.arange(1, numberofelements2 + 1)
     
    283281        Pnode[pos_node] = np.arange(1, numberofvertices2 + 1)
    284282
    285         #renumber the elements (some node won't exist anymore)
     283    #renumber the elements (some node won't exist anymore)
    286284        elements_1 = copy.deepcopy(md1.mesh.elements)
    287285        elements_2 = elements_1[pos_elem, :]
     
    294292            elements_2[:, 5] = Pnode[elements_2[:, 5] - 1]
    295293
    296         #OK, now create the new model!
    297 
    298         #take every field from model
     294    #OK, now create the new model!
     295
     296    #take every field from model
    299297        md2 = copy.deepcopy(md1)
    300298
    301         #automatically modify fields
    302 
    303         #loop over model fields
     299    #automatically modify fields
     300
     301    #loop over model fields
    304302        model_fields = vars(md1)
    305303        for fieldi in model_fields:
     
    334332
    335333        #modify some specific fields
    336 
    337334        #Mesh
    338335        md2.mesh.numberofelements = numberofelements2
     
    377374        #Edges
    378375        if md1.mesh.domaintype() == '2Dhorizontal':
    379             if np.ndim(md2.mesh.edges) > 1 and np.size(md2.mesh.edges, axis=1) > 1:    #do not use ~isnan because there are some np.nans...
     376            if np.ndim(md2.mesh.edges) > 1 and np.size(md2.mesh.edges, axis=1) > 1:  #do not use ~isnan because there are some np.nans...
    380377                #renumber first two columns
    381                 pos = np.nonzero(md2.mesh.edges[:, 3] != -1)[0]
     378                pos = np.nonzero(md2.mesh.edges[:, 3] != - 1)[0]
    382379                md2.mesh.edges[:, 0] = Pnode[md2.mesh.edges[:, 0] - 1]
    383380                md2.mesh.edges[:, 1] = Pnode[md2.mesh.edges[:, 1] - 1]
     
    386383                #remove edges when the 2 vertices are not in the domain.
    387384                md2.mesh.edges = md2.mesh.edges[np.nonzero(np.logical_and(md2.mesh.edges[:, 0], md2.mesh.edges[:, 1]))[0], :]
    388                 #Replace all zeros by -1 in the last two columns
     385                #Replace all zeros by - 1 in the last two columns
    389386                pos = np.nonzero(md2.mesh.edges[:, 2] == 0)[0]
    390                 md2.mesh.edges[pos, 2] = -1
     387                md2.mesh.edges[pos, 2] = - 1
    391388                pos = np.nonzero(md2.mesh.edges[:, 3] == 0)[0]
    392                 md2.mesh.edges[pos, 3] = -1
    393                 #Invert -1 on the third column with last column (Also invert first two columns!!)
    394                 pos = np.nonzero(md2.mesh.edges[:, 2] == -1)[0]
     389                md2.mesh.edges[pos, 3] = - 1
     390                #Invert - 1 on the third column with last column (Also invert first two columns!!)
     391                pos = np.nonzero(md2.mesh.edges[:, 2] == - 1)[0]
    395392                md2.mesh.edges[pos, 2] = md2.mesh.edges[pos, 3]
    396393                md2.mesh.edges[pos, 3] = - 1
     
    502499                                    setattr(fieldr, solutionsubfield, subfield)
    503500
    504         #Keep track of pos_node and pos_elem
     501    #Keep track of pos_node and pos_elem
    505502        md2.mesh.extractedvertices = pos_node + 1
    506503        md2.mesh.extractedelements = pos_elem + 1
     
    509506    # }}}
    510507
    511     def extrude(md, *args):   # {{{
     508    def extrude(md, *args):  # {{{
    512509        """
    513510        EXTRUDE - vertically extrude a 2d mesh
     
    515512           vertically extrude a 2d mesh and create corresponding 3d mesh.
    516513           The vertical distribution can:
    517             - follow a polynomial law
    518             - follow two polynomial laws, one for the lower part and one for the upper part of the mesh
    519             - be discribed by a list of coefficients (between 0 and 1)
     514        - follow a polynomial law
     515        - follow two polynomial laws, one for the lower part and one for the upper part of the mesh
     516        - be discribed by a list of coefficients (between 0 and 1)
    520517
    521518
     
    526523
    527524           Example:
    528                         md = extrude(md, 15, 1.3);
    529                         md = extrude(md, 15, 1.3, 1.2);
     525                        md = extrude(md, 15, 1.3)
     526                        md = extrude(md, 15, 1.3, 1.2)
    530527                        md = extrude(md, [0 0.2 0.5 0.7 0.9 0.95 1])
    531528
    532            See also: MODELEXTRACT,  COLLAPSE
     529           See also: MODELEXTRACT, COLLAPSE
    533530        """
    534531        #some checks on list of arguments
     
    537534
    538535        #Extrude the mesh
    539         if len(args) == 1:    #list of coefficients
     536        if len(args) == 1:  #list of coefficients
    540537            clist = args[0]
    541538            if any(clist < 0) or any(clist > 1):
     
    546543            numlayers = len(extrusionlist)
    547544
    548         elif len(args) == 2:    #one polynomial law
     545        elif len(args) == 2:  #one polynomial law
    549546            if args[1] <= 0:
    550                 raise TypeError("extrusionexponent must be >=0")
     547                raise TypeError("extrusionexponent must be >= 0")
    551548            numlayers = args[0]
    552549            extrusionlist = (np.arange(0., float(numlayers - 1) + 1., 1.) / float(numlayers - 1))**args[1]
    553550
    554         elif len(args) == 3:    #two polynomial laws
     551        elif len(args) == 3:  #two polynomial laws
    555552            numlayers = args[0]
    556553            lowerexp = args[1]
     
    558555
    559556            if args[1] <= 0 or args[2] <= 0:
    560                 raise TypeError("lower and upper extrusionexponents must be >=0")
     557                raise TypeError("lower and upper extrusionexponents must be >= 0")
    561558
    562559            lowerextrusionlist = (np.arange(0., 1. + 2. / float(numlayers - 1), 2. / float(numlayers - 1)))**lowerexp / 2.
     
    593590        x3d = np.empty((0))
    594591        y3d = np.empty((0))
    595         z3d = np.empty((0))    #the lower node is on the bed
    596         thickness3d = md.geometry.thickness    #thickness and bed for these nodes
     592        z3d = np.empty((0))  #the lower node is on the bed
     593        thickness3d = md.geometry.thickness  #thickness and bed for these nodes
    597594        bed3d = md.geometry.base
    598595
     
    602599            y3d = np.concatenate((y3d, md.mesh.y))
    603600            #nodes are distributed between bed and surface accordingly to the given exponent
    604             z3d = np.concatenate((z3d, (bed3d + thickness3d * extrusionlist[i]).reshape(-1)))
    605         number_nodes3d = np.size(x3d)    #number of 3d nodes for the non extruded part of the mesh
     601            z3d = np.concatenate((z3d, (bed3d + thickness3d * extrusionlist[i]).reshape(- 1)))
     602        number_nodes3d = np.size(x3d)  #number of 3d nodes for the non extruded part of the mesh
    606603
    607604        #Extrude elements
     
    609606        for i in range(numlayers - 1):
    610607            elements3d = np.vstack((elements3d, np.hstack((md.mesh.elements + i * md.mesh.numberofvertices,
    611                                                            md.mesh.elements + (i + 1) * md.mesh.numberofvertices))))    #Create the elements of the 3d mesh for the non extruded part
    612         number_el3d = np.size(elements3d, axis=0)    #number of 3d nodes for the non extruded part of the mesh
     608                                                           md.mesh.elements + (i + 1) * md.mesh.numberofvertices))))  #Create the elements of the 3d mesh for the non extruded part
     609        number_el3d = np.size(elements3d, axis=0)  #number of 3d nodes for the non extruded part of the mesh
    613610
    614611        #Keep a trace of lower and upper nodes
     
    644641        md.mesh.numberoflayers = numlayers
    645642
    646         #Ok,  now deal with the other fields from the 2d mesh:
    647 
     643        #Ok, now deal with the other fields from the 2d mesh:
    648644        #bedinfo and surface info
    649645        md.mesh.vertexonbase = project3d(md, 'vector', np.ones(md.mesh.numberofvertices2d, bool), 'type', 'node', 'layer', 1)
     
    697693
    698694        return md
    699         # }}}
     695    # }}}
    700696
    701697    def collapse(md):  #{{{
     
    704700
    705701        This routine collapses a 3d model into a 2d model and collapses all
    706         the fileds of the 3d model by taking their depth-averaged values
     702        the fileds of the 3d model by taking their depth - averaged values
    707703
    708704        Usage:
     
    719715            md.friction.coefficient = project2d(md, md.friction.coefficient, 1)
    720716
    721         #p and q (same deal,  except for element that are on the bedrock: )
     717        #p and q (same deal, except for element that are on the bedrock: )
    722718        if hasattr(md.friction, 'p'):
    723719            md.friction.p = project2d(md, md.friction.p, 1)
     
    802798            if isvector:
    803799                md.hydrology.__dict__[field] = project2d(md, md.hydrology.__dict__[field], 1)
    804 
    805800
    806801        #boundary conditions
     
    883878        return md
    884879
    885 #}}}
     880    #}}}
  • issm/trunk-jpl/src/m/classes/organizer.py

    r23719 r24213  
    88#hack to keep python 2 compatipility
    99try:
    10         #py3 import
    11         from dbm.ndbm import whichdb
     10    #py3 import
     11    from dbm.ndbm import whichdb
    1212except ImportError:
    13         #py2 import
    14         from whichdb import whichdb
     13    #py2 import
     14    from whichdb import whichdb
    1515
    1616import MatlabFuncs as m
    1717
     18
    1819class organizer(object):
    19         """
    20         ORGANIZER class definition
     20    """
     21    ORGANIZER class definition
    2122
    22            Supported options:
    23               repository: directory where all models will be saved
    24               prefix:     prefix for saved model names
    25               steps:      requested steps
    26               trunkprefix:prefix of previous run with a different prefix. Used to branch.
     23       Supported options:
     24          repository: directory where all models will be saved
     25          prefix:     prefix for saved model names
     26          steps:      requested steps
     27          trunkprefix:prefix of previous run with a different prefix. Used to branch.
    2728
    28            Usage:
    29               org = organizer(varargin)
     29       Usage:
     30          org = organizer(varargin)
    3031
    31            Examples:
    32               org = organizer('repository','Models/','prefix','AGU2015','steps',0);  %build an empty organizer object with a given repository
    33         """
     32       Examples:
     33          org = organizer('repository', 'Models/', 'prefix', 'AGU2015', 'steps', 0);  %build an empty organizer object with a given repository
     34    """
    3435
    35         def __init__(self,*args):    # {{{
    36                 self._currentstep  =0
    37                 self.repository    ='./'
    38                 self.prefix        ='model.'
    39                 self.trunkprefix   =''
    40                 self.steps         =[]
    41                 self.requestedsteps=[0]
     36    def __init__(self, *args):  # {{{
     37        self._currentstep = 0
     38        self.repository = './'
     39        self.prefix = 'model.'
     40        self.trunkprefix = ''
     41        self.steps = []
     42        self.requestedsteps = [0]
    4243
    43                 #process options
    44                 options=pairoptions.pairoptions(*args)
     44        #process options
     45        options = pairoptions.pairoptions(*args)
    4546
    46                 #Get prefix
    47                 prefix=options.getfieldvalue('prefix','model.')
    48                 if not isinstance(prefix,str):
    49                         raise TypeError("prefix is not a string")
    50                 if not m.strcmp(prefix,prefix.strip()) or len(prefix.split()) > 1:
    51                         raise TypeError("prefix should not have any white space")
    52                 self.prefix=prefix
     47        #Get prefix
     48        prefix = options.getfieldvalue('prefix', 'model.')
     49        if not isinstance(prefix, str):
     50            raise TypeError("prefix is not a string")
     51        if not m.strcmp(prefix, prefix.strip()) or len(prefix.split()) > 1:
     52            raise TypeError("prefix should not have any white space")
     53        self.prefix = prefix
    5354
    54                 #Get repository
    55                 repository=options.getfieldvalue('repository','./')
    56                 if not isinstance(repository,str):
    57                         raise TypeError("repository is not a string")
    58                 if not os.path.isdir(repository):
    59                         raise IOError("Directory '%s' not found" % repository)
    60                 self.repository=repository
     55        #Get repository
     56        repository = options.getfieldvalue('repository', './')
     57        if not isinstance(repository, str):
     58            raise TypeError("repository is not a string")
     59        if not os.path.isdir(repository):
     60            raise IOError("Directory '%s' not found" % repository)
     61        self.repository = repository
    6162
    62                 #Get steps
    63                 self.requestedsteps=options.getfieldvalue('steps',[0])
     63        #Get steps
     64        self.requestedsteps = options.getfieldvalue('steps', [0])
    6465
    65                 #Get trunk prefix (only if provided by user)
    66                 if options.exist('trunkprefix'):
    67                         trunkprefix=options.getfieldvalue('trunkprefix','')
    68                         if not isinstance(trunkprefix,str):
    69                                 raise TypeError("trunkprefix is not a string")
    70                         if not m.strcmp(trunkprefix,trunkprefix.strip()) or len(trunkprefix.split()) > 1:
    71                                 raise TypeError("trunkprefix should not have any white space")
    72                         self.trunkprefix=trunkprefix
    73         #}}}
    74         def __repr__(self):    # {{{
    75                 s =""
     66        #Get trunk prefix (only if provided by user)
     67        if options.exist('trunkprefix'):
     68            trunkprefix = options.getfieldvalue('trunkprefix', '')
     69            if not isinstance(trunkprefix, str):
     70                raise TypeError("trunkprefix is not a string")
     71            if not m.strcmp(trunkprefix, trunkprefix.strip()) or len(trunkprefix.split()) > 1:
     72                raise TypeError("trunkprefix should not have any white space")
     73            self.trunkprefix = trunkprefix
     74    #}}}
    7675
    77                 s+="%s\n" % "   Repository: '%s'" % self.repository
    78                 s+="%s\n" % "   Prefix:     '%s'" % self.prefix
    79                 if not self.steps:
    80                         s+="%s\n" % "   no step"
    81                 else:
    82                         for step in self.steps:
    83                                 s+="%s\n" % "   step #%2i: '%s'",step['id'],step['string']
    84         #}}}
    85         def load(self,string):    # {{{
     76    def __repr__(self):  # {{{
     77        s = ""
     78        s += "%s\n" % "   Repository: '%s'" % self.repository
     79        s += "%s\n" % "   Prefix:     '%s'" % self.prefix
     80        if not self.steps:
     81            s += "%s\n" % "   no step"
     82        else:
     83            for step in self.steps:
     84                s += "%s\n" % "   step  #%2i: '%s'", step['id'], step['string']
     85    #}}}
    8686
    87                 #Get model path
    88                 if not isinstance(string,str):
    89                         raise TypeError("argument provided is not a string")
    90                 path=os.path.join(self.repository,self.prefix+string)
     87    def load(self, string):  # {{{
     88        #Get model path
     89        if not isinstance(string, str):
     90            raise TypeError("argument provided is not a string")
     91        path = os.path.join(self.repository, self.prefix + string)
    9192
    92                 #figure out if the model is there
    93                 if os.path.exists(path):
    94                         struc=loadvars(path)
    95                         name=name=[key for key in list(struc.keys())]
    96                         md=struc.name[0]
    97                 else:
    98                         raise IOError("Could not find '%s'" % path)
     93        #figure out if the model is there
     94        if os.path.exists(path):
     95            struc = loadvars(path)
     96            name = name = [key for key in list(struc.keys())]
     97            md = struc.name[0]
     98        else:
     99            raise IOError("Could not find '%s'" % path)
    99100
    100                 return md
    101         #}}}
    102         def loadmodel(self,string):    # {{{
     101        return md
     102    #}}}
    103103
    104                 #Get model path
    105                 if not isinstance(string,str):
    106                         raise TypeError("argument provided is not a string")
    107                 path1=os.path.join(self.repository,self.prefix+string+'.python')
    108                 path2=os.path.join(self.repository,string)
     104    def loadmodel(self, string):  # {{{
     105        #Get model path
     106        if not isinstance(string, str):
     107            raise TypeError("argument provided is not a string")
     108        path1 = os.path.join(self.repository, self.prefix + string + '.python')
     109        path2 = os.path.join(self.repository, string)
    109110
    110                 #figure out if the model is there, otherwise, we have to use the default path supplied by user.
    111                 if whichdb(path1):
    112                         md=loadmodel(path1)
    113                         return md
    114                 elif whichdb(path2):
    115                         md=loadmodel(path2)
    116                         return md
     111        #figure out if the model is there, otherwise, we have to use the default path supplied by user.
     112        if whichdb(path1):
     113            md = loadmodel(path1)
     114            return md
     115        elif whichdb(path2):
     116            md = loadmodel(path2)
     117            return md
    117118
    118                 #If we are here, the model has not been found. Try trunk prefix if provided
    119                 if self.trunkprefix:
    120                         path2=os.path.join(self.repository,self.trunkprefix+string)
    121                         if not os.path.exists(path2):
    122                                 raise IOError("Could find neither '%s' nor '%s'" % (path,path2))
    123                         else:
    124                                 print(("--> Branching '%s' from trunk '%s'" % (self.prefix,self.trunkprefix)))
    125                                 md=loadmodel(path2)
    126                                 return md
    127                 else:
    128                         raise IOError("Could not find '%s'" % path1)
    129         #}}}
    130         def perform(self,string):    # {{{
     119    #If we are here, the model has not been found. Try trunk prefix if provided
     120        if self.trunkprefix:
     121            path2 = os.path.join(self.repository, self.trunkprefix + string)
     122            if not os.path.exists(path2):
     123                raise IOError("Could find neither '%s' nor '%s'" % (path1, path2))
     124            else:
     125                print((" - - > Branching '%s' from trunk '%s'" % (self.prefix, self.trunkprefix)))
     126                md = loadmodel(path2)
     127                return md
     128        else:
     129            raise IOError("Could not find '%s'" % path1)
     130    #}}}
    131131
    132                 bool=False
     132    def perform(self, string):  # {{{
     133        bool = False
    133134
    134                 #Some checks
    135                 if not isinstance(string,str):
    136                         raise TypeError("Step provided should be a string")
    137                 if not m.strcmp(string,string.strip()) or len(string.split()) > 1:
    138                         raise TypeError("Step provided should not have any white space")
    139                 if self._currentstep>0 and string in [step['string'] for step in self.steps]:
    140                         raise RuntimeError("Step '%s' already present. Change name" % string)
     135        #Some checks
     136        if not isinstance(string, str):
     137            raise TypeError("Step provided should be a string")
     138        if not m.strcmp(string, string.strip()) or len(string.split()) > 1:
     139            raise TypeError("Step provided should not have any white space")
     140        if self._currentstep > 0 and string in [step['string'] for step in self.steps]:
     141            raise RuntimeError("Step '%s' already present. Change name" % string)
    141142
    142                 #Add step
    143                 self.steps.append(OrderedDict())
    144                 self.steps[-1]['id']=len(self.steps)
    145                 self.steps[-1]['string']=string
    146                 self._currentstep+=1
     143        #Add step
     144        self.steps.append(OrderedDict())
     145        self.steps[-1]['id'] = len(self.steps)
     146        self.steps[-1]['string'] = string
     147        self._currentstep += 1
    147148
    148                 #if requestedsteps = 0, print all steps in self
    149                 if 0 in self.requestedsteps:
    150                         if self._currentstep==1:
    151                                 print(("   prefix: %s" % self.prefix))
    152                         print(("   step #%i : %s" % (self.steps[self._currentstep-1]['id'],self.steps[self._currentstep-1]['string'])))
     149        #if requestedsteps = 0, print all steps in self
     150        if 0 in self.requestedsteps:
     151            if self._currentstep == 1:
     152                print(("   prefix: %s" % self.prefix))
     153            print(("   step  #%i : %s" % (self.steps[self._currentstep - 1]['id'], self.steps[self._currentstep - 1]['string'])))
    153154
    154                 #Ok, now if _currentstep is a member of steps, return true
    155                 if self._currentstep in self.requestedsteps:
    156                         print(("\n   step #%i : %s\n" % (self.steps[self._currentstep-1]['id'],self.steps[self._currentstep-1]['string'])))
    157                         bool=True
     155    #Ok, now if _currentstep is a member of steps, return true
     156        if self._currentstep in self.requestedsteps:
     157            print(("\n   step  #%i : %s\n" % (self.steps[self._currentstep - 1]['id'], self.steps[self._currentstep - 1]['string'])))
     158            bool = True
    158159
    159                 #assign self back to calling workspace
    160                 # (no need, since Python modifies class instance directly)
     160    #assign self back to calling workspace
     161    # (no need, since Python modifies class instance directly)
    161162
    162                 return bool
    163         #}}}
    164         def savemodel(self,md, name='default'):    # {{{
     163        return bool
     164    #}}}
    165165
    166                 #check
    167                 if self._currentstep==0:
    168                         raise RuntimeError("Cannot save model because organizer (org) is empty! Make sure you did not skip any perform call")
    169                 if self._currentstep>len(self.steps):
    170                         raise RuntimeError("Cannot save model because organizer (org) is not up to date!")
     166    def savemodel(self, md, name='default'):  # {{{
     167        #check
     168        if self._currentstep == 0:
     169            raise RuntimeError("Cannot save model because organizer (org) is empty! Make sure you did not skip any perform call")
     170        if self._currentstep > len(self.steps):
     171            raise RuntimeError("Cannot save model because organizer (org) is not up to date!")
    171172
    172                 if (name=='default'):
    173                         name=os.path.join(self.repository,self.prefix+self.steps[self._currentstep-1]['string']+'.python')
    174                 else:
    175                         name=os.path.join(self.repository,name)
    176                 print(("saving model as: '%s'" % name))
     173        if (name == 'default'):
     174            name = os.path.join(self.repository, self.prefix + self.steps[self._currentstep - 1]['string'] + '.python')
     175        else:
     176            name = os.path.join(self.repository, name)
     177        print(("saving model as: '%s'" % name))
    177178
    178                 #check that md is a model
    179                 if not isinstance(md,model):
    180                         print("second argument is not a model")
    181                 if self._currentstep>len(self.steps):
    182                         raise RuntimeError("organizer error message: element with id %d not found" % self._currentstep)
     179    #check that md is a model
     180        if not isinstance(md, model):
     181            print("second argument is not a model")
     182        if self._currentstep > len(self.steps):
     183            raise RuntimeError("organizer error message: element with id %d not found" % self._currentstep)
    183184
    184                 #save model
    185                 savevars(name,'md',md)
    186         #}}}
     185    #save model
     186        savevars(name, 'md', md)
     187    #}}}
  • issm/trunk-jpl/src/m/classes/outputdefinition.py

    r21808 r24213  
    22from checkfield import checkfield
    33from WriteData import WriteData
    4 import numpy as  np
     4import numpy as np
     5
    56
    67class outputdefinition(object):
    7         """
    8         OUTPUTDEFINITION class definition
     8    """
     9    OUTPUTDEFINITION class definition
    910
    10            Usage:
    11               outputdefinition=outputdefinition();
    12         """
     11       Usage:
     12          outputdefinition = outputdefinition()
     13    """
    1314
    14         def __init__(self): # {{{
    15                 self.definitions                   = []
    16                 #}}}
    17         def __repr__(self): # {{{
    18                 string="   Outputdefinitions:"
     15    def __init__(self):  # {{{
     16        self.definitions = []
     17    #}}}
    1918
    20                 string="%s\n%s"%(string,fielddisplay(self,"definitions","list of potential outputs that can be requested, but which need additional data to be defined"))
     19    def __repr__(self):  # {{{
     20        string = "   Outputdefinitions:"
    2121
    22                 return string
    23                 #}}}
    24         def extrude(self,md): # {{{
    25                 for definition in self.definitions:
    26                         definition.extrude(md);
     22        string = "%s\n%s" % (string, fielddisplay(self, "definitions", "list of potential outputs that can be requested, but which need additional data to be defined"))
    2723
    28                 return self
    29          #}}}
    30         def setdefaultparameters(self): # {{{
    31                 return self
    32                 #}}}
    33         def checkconsistency(self,md,solution,analyses):    # {{{
    34                
    35                 md = checkfield(md,'fieldname','outputdefinition.definitions','cell',1)
    36                 for definition in self.definitions:
    37                         definition.checkconsistency(md,solution,analyses);
     24        return string
     25    #}}}
    3826
    39         # }}}
    40         def marshall(self,prefix,md,fid):    # {{{
    41                 data=[];
    42                 for i in range(len(self.definitions)):
    43                         self.definitions[i].marshall(prefix,md,fid);
    44                         classdefinition=self.definitions[i].__class__.__name__;
    45                         classdefinition=classdefinition[0].upper()+classdefinition[1:]
    46                         data.append(classdefinition)
     27    def extrude(self, md):  # {{{
     28        for definition in self.definitions:
     29            definition.extrude(md)
    4730
    48                 data=np.unique(data);
    49                 WriteData(fid,prefix,'data',data,'name','md.outputdefinition.list','format','StringArray');
    50         # }}}
     31        return self
     32    #}}}
     33
     34    def setdefaultparameters(self):  # {{{
     35        return self
     36    #}}}
     37
     38    def checkconsistency(self, md, solution, analyses):  # {{{
     39
     40        md = checkfield(md, 'fieldname', 'outputdefinition.definitions', 'cell', 1)
     41        for definition in self.definitions:
     42            definition.checkconsistency(md, solution, analyses)
     43
     44    # }}}
     45
     46    def marshall(self, prefix, md, fid):  # {{{
     47        data = []
     48        for i in range(len(self.definitions)):
     49            self.definitions[i].marshall(prefix, md, fid)
     50            classdefinition = self.definitions[i].__class__.__name__
     51            classdefinition = classdefinition[0].upper() + classdefinition[1:]
     52            data.append(classdefinition)
     53
     54        data = np.unique(data)
     55        WriteData(fid, prefix, 'data', data, 'name', 'md.outputdefinition.list', 'format', 'StringArray')
     56    # }}}
  • issm/trunk-jpl/src/m/classes/pairoptions.py

    r23716 r24213  
    11from collections import OrderedDict
    2 from WriteData import WriteData
     2
    33
    44class pairoptions(object):
    5         """
    6         PAIROPTIONS class definition
     5    """
     6    PAIROPTIONS class definition
    77
    8            Usage:
    9               pairoptions=pairoptions();
    10               pairoptions=pairoptions('module',true,'solver',false);
    11         """
     8       Usage:
     9          pairoptions = pairoptions()
     10          pairoptions = pairoptions('module', true, 'solver', false)
     11    """
    1212
    13         def __init__(self,*arg): # {{{
    14                 self.functionname = ''
    15                 self.list        = OrderedDict()
     13    def __init__(self, * arg): # {{{
     14        self.functionname = ''
     15        self.list = OrderedDict()
    1616
    17                 #get calling function name
    18                 import inspect
    19                 if len(inspect.stack()) > 1:
    20                         self.functionname=inspect.stack()[1][3]
     17    #get calling function name
     18        import inspect
     19        if len(inspect.stack()) > 1:
     20            self.functionname = inspect.stack()[1][3]
    2121
    22                 #initialize list
    23                 if not len(arg):
    24                         pass    #Do nothing,
    25                 else:
    26                         self.buildlist(*arg)
    27         # }}}
    28         def __repr__(self):    # {{{
    29                 s="   functionname: '{}'\n".format(self.functionname)
    30                 if self.list:
    31                         s+="   list: ({}x{}) \n\n".format(len(self.list),2)
    32                         for item in list(self.list.items()):
    33                                 #if   isinstance(item[1],str):
    34                                 s+="     field: {} value: '{}'\n".format((item[0],item[1]))
    35                                 # elif isinstance(item[1],(bool,int,float)):
    36                                 #       s+="     field: %-10s value: %g\n" % (item[0],item[1])
    37                                 # else:
    38                                 #       s+="     field: %-10s value: %s\n" % (item[0],type(item[1]))
    39                 else:
    40                         s+="   list: empty\n"
    41                 return s
    42         # }}}
    43         def buildlist(self,*arg):    # {{{
    44                 """BUILDLIST - build list of objects from input"""
     22    #initialize list
     23        if not len(arg):
     24            pass  #Do nothing,
     25        else:
     26            self.buildlist(* arg)
     27    # }}}
    4528
    46                 #check length of input
    47                 if len(arg) % 2:
    48                         raise TypeError('Invalid parameter/value pair arguments')
    49                 numoptions = int(len(arg)/2)
     29    def __repr__(self):  # {{{
     30        s = "   functionname: '{}'\n".format(self.functionname)
     31        if self.list:
     32            s += "   list: ({}x{}) \n\n".format(len(self.list), 2)
     33            for item in list(self.list.items()):
     34                s += "     field: {} value: '{}'\n".format((item[0], item[1]))
     35        else:
     36            s += "   list: empty\n"
     37        return s
     38    # }}}
    5039
    51                 #go through arg and build list of objects
    52                 for i in range(numoptions):
    53                         if isinstance(arg[2*i],str):
    54                                 self.list[arg[2*i]] = arg[2*i+1];
    55                         else:
    56                                 #option is not a string, ignore it
    57                                 print(("WARNING: option number {} is not a string and will be ignored.".format(i+1)))
    58         # }}}
    59         def addfield(self,field,value):    # {{{
    60                 """ADDFIELD - add a field to an options list"""
    61                 if isinstance(field,str):
    62                         if field in self.list:
    63                                 print(("WARNING: field '{}' with value={} exists and will be overwritten with value={}.".format(field,str(self.list[field]),str(value))))
    64                         self.list[field] = value
    65         # }}}
    66         def addfielddefault(self,field,value):    # {{{
    67                 """ADDFIELDDEFAULT - add a field to an options list if it does not already exist"""
    68                 if isinstance(field,str):
    69                         if field not in self.list:
    70                                 self.list[field] = value
    71         # }}}
    72         def AssignObjectFields(self,obj2):    # {{{
    73                 """ASSIGNOBJECTFIELDS - assign object fields from options"""
    74                 for item in list(self.list.items()):
    75                         if item[0] in dir(obj2):
    76                                 setattr(obj2,item[0],item[1])
    77                         else:
    78                                 print(("WARNING: field '%s' is not a property of '%s'." % (item[0],type(obj2))))
    79                 return obj2
    80         # }}}
    81         def changefieldvalue(self,field,newvalue):    # {{{
    82                 """CHANGEOPTIONVALUE - change the value of an option in an option list"""
     40    def buildlist(self, * arg):  # {{{
     41        """BUILDLIST - build list of objects from input"""
    8342
    84                 self.list[field]=newvalue;
    85         # }}}
    86         def exist(self,field):    # {{{
    87                 """EXIST - check if the option exist"""
     43        #check length of input
     44        if len(arg) % 2:
     45            raise TypeError('Invalid parameter / value pair arguments')
     46        numoptions = int(len(arg) / 2)
    8847
    89                 #some argument checking:
    90                 if field == None or field == '':
    91                         raise ValueError('exist error message: bad usage');
    92                 if not isinstance(field,str):
    93                         raise TypeError("exist error message: field '%s' should be a string." % str(field));
     48        #go through arg and build list of objects
     49        for i in range(numoptions):
     50            if isinstance(arg[2 * i], str):
     51                self.list[arg[2 * i]] = arg[2 * i + 1]
     52            else:
     53                #option is not a string, ignore it
     54                print(("WARNING: option number {} is not a string and will be ignored.".format(i + 1)))
     55    # }}}
    9456
    95                 #Recover option
    96                 if field in self.list:
    97                         return True
    98                 else:
    99                         return False
    100         # }}}
    101         def getfieldvalue(self,field,default=None):    # {{{
    102                 """
    103                 GETOPTION - get the value of an option
     57    def addfield(self, field, value):  # {{{
     58        """ADDFIELD - add a field to an options list"""
     59        if isinstance(field, str):
     60            if field in self.list:
     61                print(("WARNING: field '{}' with value={} exists and will be overwritten with value={}.".format(field, str(self.list[field]), str(value))))
     62            self.list[field] = value
     63    # }}}
    10464
    105                 Usage:
    106                    value=options.getfieldvalue(field,default)
     65    def addfielddefault(self, field, value):  # {{{
     66        """ADDFIELDDEFAULT - add a field to an options list if it does not already exist"""
     67        if isinstance(field, str):
     68            if field not in self.list:
     69                self.list[field] = value
     70    # }}}
    10771
    108                 Find an option value from a field. A default option
    109                 can be given in input if the field does not exist
     72    def AssignObjectFields(self, obj2):  # {{{
     73        """ASSIGNOBJECTFIELDS - assign object fields from options"""
     74        for item in list(self.list.items()):
     75            if item[0] in dir(obj2):
     76                setattr(obj2, item[0], item[1])
     77            else:
     78                print(("WARNING: field '%s' is not a property of '%s'." % (item[0], type(obj2))))
     79        return obj2
     80    # }}}
    11081
    111                 Examples:
    112                    value=options.getfieldvalue(options,'caxis')
    113                    value=options.getfieldvalue(options,'caxis',[0 2])
    114                 """
     82    def changefieldvalue(self, field, newvalue):  # {{{
     83        """CHANGEOPTIONVALUE - change the value of an option in an option list"""
    11584
    116                 #some argument checking:
    117                 if field == None or field == '':
    118                         raise ValueError('getfieldvalue error message: bad usage');
    119                 if not isinstance(field,str):
    120                         raise TypeError("getfieldvalue error message: field '%s' should be a string." % str(field));
     85        self.list[field] = newvalue
     86    # }}}
    12187
    122                 #Recover option
    123                 if field in self.list:
    124                         value=self.list[field]
    125                 else:
    126                         if not default == None:
    127                                 value=default
    128                         else:
    129                                 raise KeyError("error message: field '%s' has not been provided by user (and no default value has been specified)." % field)
     88    def exist(self, field):  # {{{
     89        """EXIST - check if the option exist"""
    13090
    131                 return value
    132         # }}}
    133         def removefield(self,field,warn):    # {{{
    134                 """
    135                 REMOVEFIELD - delete a field in an option list
     91        #some argument checking:
     92        if field is None or field == '':
     93            raise ValueError('exist error message: bad usage')
     94        if not isinstance(field, str):
     95            raise TypeError("exist error message: field '%s' should be a string." % str(field))
    13696
    137                 Usage:
    138                    obj=removefield(self,field,warn)
     97        #Recover option
     98        if field in self.list:
     99            return True
     100        else:
     101            return False
     102    # }}}
    139103
    140                 if warn==1 display an info message to warn user that
    141                 some of his options have been removed.
    142                 """
     104    def getfieldvalue(self, field, default=None):  # {{{
     105        """
     106        GETOPTION - get the value of an option
    143107
    144                 #check if field exist
    145                 if field in self.list:
     108        Usage:
     109           value = options.getfieldvalue(field, default)
    146110
    147                         #remove duplicates from the options list
    148                         del self.list[field]
     111        Find an option value from a field. A default option
     112        can be given in input if the field does not exist
    149113
    150                         #warn user if requested
    151                         if warn:
    152                                 print(("removefield info: option '%s' has been removed from the list of options." % field))
    153         # }}}
    154         def marshall(self,md,fid,firstindex):    # {{{
     114        Examples:
     115           value = options.getfieldvalue(options, 'caxis')
     116           value = options.getfieldvalue(options, 'caxis', [0 2])
     117        """
    155118
    156                 for i,item in enumerate(self.list.items()):
    157                         name  = item[0]
    158                         value = item[1]
     119    #some argument checking:
     120        if field is None or field == '':
     121            raise ValueError('getfieldvalue error message: bad usage')
     122        if not isinstance(field, str):
     123            raise TypeError("getfieldvalue error message: field '%s' should be a string." % str(field))
    159124
    160                         raise NameError('need to sync with MATLAB')
     125    #Recover option
     126        if field in self.list:
     127            value = self.list[field]
     128        else:
     129            if default is not None:
     130                value = default
     131            else:
     132                raise KeyError("error message: field '%s' has not been provided by user (and no default value has been specified)." % field)
    161133
    162                         ##Write option name
    163                         #WriteData(fid,prefix,'enum',(firstindex-1)+2*i+1,'data',name,'format','String')
     134        return value
     135    # }}}
    164136
    165                         ##Write option value
    166                         #if   isinstance(value,(str,unicode)):
    167                         #       WriteData(fid,prefix,'enum',(firstindex-1)+2*i+2,'data',value,'format','String')
    168                         #elif isinstance(value,(bool,int,long,float)):
    169                         #       WriteData(fid,prefix,'enum',(firstindex-1)+2*i+2,'data',value,'format','Double')
    170                         #else:
    171                                 #raise TypeError("Cannot marshall option '%s': format not supported yet." % name)
    172         # }}}
     137    def removefield(self, field, warn):  # {{{
     138        """
     139        REMOVEFIELD - delete a field in an option list
     140
     141        Usage:
     142           obj = removefield(self, field, warn)
     143
     144        if warn == 1 display an info message to warn user that
     145        some of his options have been removed.
     146        """
     147
     148        #check if field exist
     149        if field in self.list:
     150
     151            #remove duplicates from the options list
     152            del self.list[field]
     153
     154            #warn user if requested
     155            if warn:
     156                print(("removefield info: option '%s' has been removed from the list of options." % field))
     157    # }}}
     158
     159    def marshall(self, md, fid, firstindex):  # {{{
     160
     161        for i, item in enumerate(self.list.items()):
     162            name = item[0]
     163            value = item[1]
     164
     165            raise NameError('need to sync with MATLAB')
     166
     167        #Write option name
     168        #WriteData(fid, prefix, 'enum', (firstindex - 1) + 2 * i + 1, 'data', name, 'format', 'String')
     169
     170        #Write option value
     171        #if   isinstance(value, (str, unicode)):
     172        #    WriteData(fid, prefix, 'enum', (firstindex - 1) + 2 * i + 2, 'data', value, 'format', 'String')
     173        #elif isinstance(value, (bool, int, long, float)):
     174        #    WriteData(fid, prefix, 'enum', (firstindex - 1) + 2 * i + 2, 'data', value, 'format', 'Double')
     175        #else:
     176        #raise TypeError("Cannot marshall option '%s': format not supported yet." % name)
     177    # }}}
  • issm/trunk-jpl/src/m/classes/plotoptions.py

    r23716 r24213  
    1 from collections import OrderedDict, Counter, defaultdict
     1from collections import OrderedDict
    22import pairoptions
    33
     4
    45class plotoptions(object):
    5         '''
    6         PLOTOPTIONS class definition
     6    '''
     7    PLOTOPTIONS class definition
    78
    8                 Usage:
    9                         plotoptions=plotoptions(*arg)
    10         '''
     9        Usage:
     10            plotoptions = plotoptions(* arg)
     11    '''
    1112
    12         def __init__(self,*arg):# {{{
    13                 self.numberofplots = 0
    14                 self.figurenumber = 1
    15                 self.list          = OrderedDict()
     13    def __init__(self, * arg):  # {{{
     14        self.numberofplots = 0
     15        self.figurenumber = 1
     16        self.list = OrderedDict()
    1617
    17                 self.buildlist(*arg)
    18                 #}}}
    19         def __repr__(self): #{{{
    20                 s="\n"
    21                 s+="    numberofplots: %i\n" % self.numberofplots
    22                 s+="    figurenumber: %i\n"  % self.figurenumber
    23                 if self.list:
    24                         s+="    list: (%ix%i)\n" % (len(self.list),2)
    25                         for item in list(self.list.items()):
    26                                 #s+="   options of plot number %i\n" % item
    27                                 if   isinstance(item[1],str):
    28                                         s+="    field: %-10s value: '%s'\n" % (item[0],item[1])
    29                                 elif isinstance(item[1],(bool,int,float)):
    30                                         s+="    field: %-10s value: '%g'\n" % (item[0],item[1])
    31                                 else:
    32                                         s+="    field: %-10s value: '%s'\n" % (item[0],item[1])
    33                 else:
    34                         s+="    list: empty\n"
    35                 return s
    36         #}}}
    37         def buildlist(self,*arg): #{{{
    38                 #check length of input
    39                 if len(arg) % 2:
    40                         raise TypeError('Invalid parameter/value pair arguments')
     18        self.buildlist(* arg)
     19    #}}}
    4120
    42                 #go through args and build list (like pairoptions)
    43                 rawoptions=pairoptions.pairoptions(*arg)
    44                 numoptions=int(len(arg)/2)
    45                 rawlist=[] # cannot be a dict since they do not support duplicate keys
     21    def __repr__(self):  #{{{
     22        s = "\n"
     23        s += "    numberofplots: %i\n" % self.numberofplots
     24        s += "    figurenumber: %i\n" % self.figurenumber
     25        if self.list:
     26            s += "    list: (%ix%i)\n" % (len(self.list), 2)
     27            for item in list(self.list.items()):
     28                #s += "    options of plot number %i\n" % item
     29                if isinstance(item[1], str):
     30                    s += "    field: % - 10s value: '%s'\n" % (item[0], item[1])
     31                elif isinstance(item[1], (bool, int, float)):
     32                    s += "    field: % - 10s value: '%g'\n" % (item[0], item[1])
     33                else:
     34                    s += "    field: % - 10s value: '%s'\n" % (item[0], item[1])
     35        else:
     36            s += "    list: empty\n"
     37        return s
     38    #}}}
    4639
    47                 for i in range(numoptions):
    48                         if isinstance(arg[2*i],str):
    49                                 rawlist.append([arg[2*i],arg[2*i+1]])
    50                         else:
    51                                 #option is not a string, ignore it
    52                                 print(("WARNING: option number %d is not a string and will be ignored." % (i+1)))
     40    def buildlist(self, * arg):  #{{{
     41        #check length of input
     42        if len(arg) % 2:
     43            raise TypeError('Invalid parameter / value pair arguments')
    5344
    54                 #get figure number
    55                 self.figurenumber=rawoptions.getfieldvalue('figure',1)
    56                 rawoptions.removefield('figure',0)
     45        #go through args and build list (like pairoptions)
     46        rawoptions = pairoptions.pairoptions(* arg)
     47        numoptions = int(len(arg) / 2)
     48        rawlist = []  # cannot be a dict since they do not support duplicate keys
    5749
    58                 #get number of subplots
    59                 numberofplots=len([1 for sublist in rawlist for x in sublist if str(x)=='data'])
    60                 self.numberofplots=numberofplots
     50        for i in range(numoptions):
     51            if isinstance(arg[2 * i], str):
     52                rawlist.append([arg[2 * i], arg[2 * i + 1]])
     53            else:
     54                #option is not a string, ignore it
     55                print(("WARNING: option number %d is not a string and will be ignored." % (i + 1)))
    6156
    62                 #figure out whether alloptions flag is on
    63                 if rawoptions.getfieldvalue('alloptions','off') is 'on':
    64                         allflag=1
    65                 else:
    66                         allflag=0
     57        #get figure number
     58        self.figurenumber = rawoptions.getfieldvalue('figure', 1)
     59        rawoptions.removefield('figure', 0)
    6760
    68                 #initialize self.list (will need a list of dict's (or nested dict) for numberofplots>1)
    69                 #self.list=defaultdict(dict)
    70                 for i in range(numberofplots):
    71                         self.list[i]=pairoptions.pairoptions()
     61        #get number of subplots
     62        numberofplots = len([1 for sublist in rawlist for x in sublist if str(x) == 'data'])
     63        self.numberofplots = numberofplots
    7264
    73                 #process plot options
    74                 for i in range(len(rawlist)):
     65        #figure out whether alloptions flag is on
     66        if rawoptions.getfieldvalue('alloptions', 'off') == 'on':
     67            allflag = 1
     68        else:
     69            allflag = 0
    7570
    76                         #if alloptions flag is on, apply to all plots
    77                         if (allflag and 'data' not in rawlist[i][0] and '#' not in rawlist[i][0]):
     71        #initialize self.list (will need a list of dict's (or nested dict) for numberofplots > 1)
     72        #self.list = defaultdict(dict)
     73        for i in range(numberofplots):
     74            self.list[i] = pairoptions.pairoptions()
    7875
    79                                 for j in range(numberofplots):
    80                                         self.list[j].addfield(rawlist[i][0],rawlist[i][1])
     76        #process plot options
     77        for i in range(len(rawlist)):
    8178
    82                         elif '#' in rawlist[i][0]:
     79            #if alloptions flag is on, apply to all plots
     80            if (allflag and 'data' not in rawlist[i][0] and '  #' not in rawlist[i][0]):
    8381
    84                                 #get subplots associated
    85                                 string=rawlist[i][0].split('#')
    86                                 plotnums=string[-1].split(',')
    87                                 field=string[0]
     82                for j in range(numberofplots):
     83                    self.list[j].addfield(rawlist[i][0], rawlist[i][1])
    8884
    89                                 #loop over plotnums
    90                                 for k in range(len(plotnums)):
    91                                         plotnum=plotnums[k]
     85            elif '  #' in rawlist[i][0]:
     86                #get subplots associated
     87                string = rawlist[i][0].split('  #')
     88                plotnums = string[-1].split(', ')
     89                field = string[0]
    9290
    93                                         #Empty
    94                                         if not plotnum: continue
     91                #loop over plotnums
     92                for k in range(len(plotnums)):
     93                    plotnum = plotnums[k]
    9594
    96                                         # '#all'
    97                                         elif 'all' in plotnum:
    98                                                 for j in range(numberofplots):
    99                                                         self.list[j].addfield(field,rawlist[i][1])
     95                    #Empty
     96                    if not plotnum:
     97                        continue
    10098
    101                                         # '#i-j'
    102                                         elif '-' in plotnum:
    103                                                 nums=plotnum.split('-')
    104                                                 if len(nums)!=2: continue
    105                                                 if False in [x.isdigit() for x in nums]:
    106                                                         raise ValueError('error: in option i-j both i and j must be integers')
    107                                                 for j in range(int(nums[0])-1,int(nums[1])):
    108                                                         self.list[j].addfield(field,rawlist[i][1])
     99                    # '  #all'
     100                    elif 'all' in plotnum:
     101                        for j in range(numberofplots):
     102                            self.list[j].addfield(field, rawlist[i][1])
    109103
    110                                         # Deal with #i
    111                                         else:
    112                                                 #assign to subplot
    113                                                 if int(plotnum)>numberofplots:
    114                                                         raise ValueError('error: %s cannot be assigned %d which exceeds the number of subplots' % (field,plotnum))
    115                                                 self.list[int(plotnum)-1].addfield(field,rawlist[i][1])
    116                         else:
     104                    # '  #i - j'
     105                    elif '-' in plotnum:
     106                        nums = plotnum.split(' - ')
     107                        if len(nums) != 2:
     108                            continue
     109                        if False in [x.isdigit() for x in nums]:
     110                            raise ValueError('error: in option i - j both i and j must be integers')
     111                        for j in range(int(nums[0]) - 1, int(nums[1])):
     112                            self.list[j].addfield(field, rawlist[i][1])
    117113
    118                                 #go through all subplots and assign key-value pairs
    119                                 j=0
    120                                 while j <= numberofplots-1:
    121                                         if not self.list[j].exist(rawlist[i][0]):
    122                                                 self.list[j].addfield(rawlist[i][0],rawlist[i][1])
    123                                                 break
    124                                         else:
    125                                                 j=j+1
    126                                 if j+1>numberofplots:
    127                                         print(("WARNING: too many instances of '%s' in options" % rawlist[i][0]))
    128         #}}}
     114                    # Deal with  #i
     115                    else:
     116                        #assign to subplot
     117                        if int(plotnum) > numberofplots:
     118                            raise ValueError('error: %s cannot be assigned %d which exceeds the number of subplots' % (field, plotnum))
     119                        self.list[int(plotnum) - 1].addfield(field, rawlist[i][1])
     120            else:
     121                #go through all subplots and assign key - value pairs
     122                j = 0
     123                while j <= numberofplots - 1:
     124                    if not self.list[j].exist(rawlist[i][0]):
     125                        self.list[j].addfield(rawlist[i][0], rawlist[i][1])
     126                        break
     127                    else:
     128                        j = j + 1
     129                if j + 1 > numberofplots:
     130                    print(("WARNING: too many instances of '%s' in options" % rawlist[i][0]))
     131    #}}}
  • issm/trunk-jpl/src/m/classes/plumebasalforcings.py

    r23716 r24213  
     1import numpy as np
    12from fielddisplay import fielddisplay
    23from checkfield import checkfield
     
    45from project3d import project3d
    56
     7
    68class plumebasalforcings(object):
    7         '''
    8         PLUME BASAL FORCINGS class definition
     9    '''
     10    PLUME BASAL FORCINGS class definition
    911
    10                 Usage:
    11                         plumebasalforcings=plumebasalforcings()
    12         '''
     12        Usage:
     13            plumebasalforcings = plumebasalforcings()
     14    '''
    1315
    14         def __init__(self): # {{{
    15                 floatingice_melting_rate = float('NaN')
    16                 groundedice_melting_rate = float('NaN')
    17                 mantleconductivity        = float('NaN')
    18                 nusselt                  = float('NaN')
    19                 dtbg                      = float('NaN')
    20                 plumeradius              = float('NaN')
    21                 topplumedepth            = float('NaN')
    22                 bottomplumedepth          = float('NaN')
    23                 plumex                    = float('NaN')
    24                 plumey                    = float('NaN')
    25                 crustthickness            = float('NaN')
    26                 uppercrustthickness      = float('NaN')
    27                 uppercrustheat            = float('NaN')
    28                 lowercrustheat            = float('NaN')
     16    def __init__(self): # {{{
     17        self.floatingice_melting_rate = float('NaN')
     18        self.groundedice_melting_rate = float('NaN')
     19        self.mantleconductivity = float('NaN')
     20        self.nusselt = float('NaN')
     21        self.dtbg = float('NaN')
     22        self.plumeradius = float('NaN')
     23        self.topplumedepth = float('NaN')
     24        self.bottomplumedepth = float('NaN')
     25        self.plumex = float('NaN')
     26        self.plumey = float('NaN')
     27        self.crustthickness = float('NaN')
     28        self.uppercrustthickness = float('NaN')
     29        self.uppercrustheat = float('NaN')
     30        self.lowercrustheat = float('NaN')
    2931
    30                 self.setdefaultparameters()
    31         #}}}
     32        self.setdefaultparameters()
     33    #}}}
    3234
    33         def __repr__(self): # {{{
    34                 print('   mantle plume basal melt parameterization:')
     35    def __repr__(self): # {{{
     36        string = '   mantle plume basal melt parameterization:'
    3537
    36                 string="%s\n%s"%(string,fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]'))
    37                 string="%s\n%s"%(string,fielddisplay(self,'floatingice_melting_rate','basal melting rate (positive if melting) [m/yr]'))
    38                 string="%s\n%s"%(string,fielddisplay(self,'mantleconductivity','mantle heat conductivity [W/m^3]'))
    39                 string="%s\n%s"%(string,fielddisplay(self,'nusselt','nusselt number, ratio of mantle to plume [1]'))
    40                 string="%s\n%s"%(string,fielddisplay(self,'dtbg','background temperature gradient [degree/m]'))
    41                 string="%s\n%s"%(string,fielddisplay(self,'plumeradius','radius of the mantle plume [m]'))
    42                 string="%s\n%s"%(string,fielddisplay(self,'topplumedepth','depth of the mantle plume top below the crust [m]'))
    43                 string="%s\n%s"%(string,fielddisplay(self,'bottomplumedepth','depth of the mantle plume base below the crust [m]'))
    44                 string="%s\n%s"%(string,fielddisplay(self,'plumex','x coordinate of the center of the plume [m]'))
    45                 string="%s\n%s"%(string,fielddisplay(self,'plumey','y coordinate of the center of the plume [m]'))
    46                 string="%s\n%s"%(string,fielddisplay(self,'crustthickness','thickness of the crust [m]'))
    47                 string="%s\n%s"%(string,fielddisplay(self,'uppercrustthickness','thickness of the upper crust [m]'))
    48                 string="%s\n%s"%(string,fielddisplay(self,'uppercrustheat','volumic heat of the upper crust [w/m^3]'))
    49                 string="%s\n%s"%(string,fielddisplay(self,'lowercrustheat','volumic heat of the lowercrust [w/m^3]'))
     38        string = "%s\n%s" % (string, fielddisplay(self, 'groundedice_melting_rate', 'basal melting rate (positive if melting) [m / yr]'))
     39        string = "%s\n%s" % (string, fielddisplay(self, 'floatingice_melting_rate', 'basal melting rate (positive if melting) [m / yr]'))
     40        string = "%s\n%s" % (string, fielddisplay(self, 'mantleconductivity', 'mantle heat conductivity [W / m^3]'))
     41        string = "%s\n%s" % (string, fielddisplay(self, 'nusselt', 'nusselt number, ratio of mantle to plume [1]'))
     42        string = "%s\n%s" % (string, fielddisplay(self, 'dtbg', 'background temperature gradient [degree / m]'))
     43        string = "%s\n%s" % (string, fielddisplay(self, 'plumeradius', 'radius of the mantle plume [m]'))
     44        string = "%s\n%s" % (string, fielddisplay(self, 'topplumedepth', 'depth of the mantle plume top below the crust [m]'))
     45        string = "%s\n%s" % (string, fielddisplay(self, 'bottomplumedepth', 'depth of the mantle plume base below the crust [m]'))
     46        string = "%s\n%s" % (string, fielddisplay(self, 'plumex', 'x coordinate of the center of the plume [m]'))
     47        string = "%s\n%s" % (string, fielddisplay(self, 'plumey', 'y coordinate of the center of the plume [m]'))
     48        string = "%s\n%s" % (string, fielddisplay(self, 'crustthickness', 'thickness of the crust [m]'))
     49        string = "%s\n%s" % (string, fielddisplay(self, 'uppercrustthickness', 'thickness of the upper crust [m]'))
     50        string = "%s\n%s" % (string, fielddisplay(self, 'uppercrustheat', 'volumic heat of the upper crust [w / m^3]'))
     51        string = "%s\n%s" % (string, fielddisplay(self, 'lowercrustheat', 'volumic heat of the lowercrust [w / m^3]'))
    5052
    51                 return string
    52         #}}}
     53        return string
     54    #}}}
    5355
    54         def initialize(self,md): #{{{
    55                 if np.all(np.isnan(self.groundedice_melting_rate)):
    56                         self.groundedice_melting_rate=np.zeros((md.mesh.numberofvertices,))
    57                         print('      no basalforcings.groundedice_melting_rate specified: values set as zero')
    58                 if np.all(np.isnan(self.floatingice_melting_rate)):
    59                         self.floatingice_melting_rate=np.zeros((md.mesh.numberofvertices,))
    60                         print('      no basalforcings.floatingice_melting_rate specified: values set as zero')
    61                 return
    62         #}}}
     56    def initialize(self, md): #{{{
     57        if np.all(np.isnan(self.groundedice_melting_rate)):
     58            self.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
     59            print('      no basalforcings.groundedice_melting_rate specified: values set as zero')
     60        if np.all(np.isnan(self.floatingice_melting_rate)):
     61            self.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
     62            print('      no basalforcings.floatingice_melting_rate specified: values set as zero')
     63        return
     64    #}}}
    6365
    64         def extrude(self,md): # {{{
    65                 self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1);
    66                 self.floatingice_melting_rate=project3d(md,'vector',self.floatingice_melting_rate,'type','node','layer',1);
    67                 return self
    68         #}}}
     66    def extrude(self, md): # {{{
     67        self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1)
     68        self.floatingice_melting_rate = project3d(md, 'vector', self.floatingice_melting_rate, 'type', 'node', 'layer', 1)
     69        return self
     70    #}}}
    6971
    70         def setdefaultparameters(self): # {{{
    71                 #default values for melting parameterization
    72                 self.mantleconductivity    = 2.2
    73                 self.nusselt                = 300
    74                 self.dtbg                   = 11/1000.
    75                 self.plumeradius            = 100000
    76                 self.topplumedepth          = 10000
    77                 self.bottomplumedepth      = 1050000
    78                 self.crustthickness        = 30000
    79                 self.uppercrustthickness    = 14000
    80                 self.uppercrustheat         = 1.7*10**-6
    81                 self.lowercrustheat         = 0.4*10**-6
    82                 return self
    83         #}}}
     72    def setdefaultparameters(self): # {{{
     73        #default values for melting parameterization
     74        self.mantleconductivity = 2.2
     75        self.nusselt = 300
     76        self.dtbg = 11 / 1000.
     77        self.plumeradius = 100000
     78        self.topplumedepth = 10000
     79        self.bottomplumedepth = 1050000
     80        self.crustthickness = 30000
     81        self.uppercrustthickness = 14000
     82        self.uppercrustheat = 1.7 * 10**- 6
     83        self.lowercrustheat = 0.4 * 10**- 6
     84        return self
     85    #}}}
    8486
    85         def checkconsistency(self,md,solution,analyses):    # {{{
    86                 if 'MasstransportAnalysis' in analyses and not (solution == 'TransientSolution' and md.transient.ismasstransport==0):
    87                         md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)
    88                         md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1)
    89                 if 'BalancethicknessAnalysis' in analyses:
    90                         md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices])
    91                         md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices])
    92                 if 'ThermalAnalysis' in analyses and not (solution == 'TransientSolution' and md.transient.isthermal==0):
    93                         md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)
    94                         md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1)
    95                         md = checkfield(md,'fieldname','basalforcings.mantleconductivity','>=',0,'numel',1)
    96                         md = checkfield(md,'fieldname','basalforcings.nusselt','>',0,'numel',1)
    97                         md = checkfield(md,'fieldname','basalforcings.dtbg','>',0,'numel',1)
    98                         md = checkfield(md,'fieldname','basalforcings.topplumedepth','>',0,'numel',1)
    99                         md = checkfield(md,'fieldname','basalforcings.bottomplumedepth','>',0,'numel',1)
    100                         md = checkfield(md,'fieldname','basalforcings.plumex','numel',1)
    101                         md = checkfield(md,'fieldname','basalforcings.plumey','numel',1)
    102                         md = checkfield(md,'fieldname','basalforcings.crustthickness','>',0,'numel',1)
    103                         md = checkfield(md,'fieldname','basalforcings.uppercrustthickness','>',0,'numel',1)
    104                         md = checkfield(md,'fieldname','basalforcings.uppercrustheat','>',0,'numel',1)
    105                         md = checkfield(md,'fieldname','basalforcings.lowercrustheat','>',0,'numel',1)
    106                 return md
    107         # }}}
    108         def marshall(self,prefix,md,fid):    # {{{
    109                 yts=md.constants.yts
     87    def checkconsistency(self, md, solution, analyses):  # {{{
     88        if 'MasstransportAnalysis' in analyses and not (solution == 'TransientSolution' and md.transient.ismasstransport == 0):
     89            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'timeseries', 1)
     90            md = checkfield(md, 'fieldname', 'basalforcings.floatingice_melting_rate', 'NaN', 1, 'timeseries', 1)
     91        if 'BalancethicknessAnalysis' in analyses:
     92            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'size', [md.mesh.numberofvertices])
     93            md = checkfield(md, 'fieldname', 'basalforcings.floatingice_melting_rate', 'NaN', 1, 'size', [md.mesh.numberofvertices])
     94        if 'ThermalAnalysis' in analyses and not (solution == 'TransientSolution' and md.transient.isthermal == 0):
     95            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'timeseries', 1)
     96            md = checkfield(md, 'fieldname', 'basalforcings.floatingice_melting_rate', 'NaN', 1, 'timeseries', 1)
     97            md = checkfield(md, 'fieldname', 'basalforcings.mantleconductivity', '>=', 0, 'numel', 1)
     98            md = checkfield(md, 'fieldname', 'basalforcings.nusselt', '>', 0, 'numel', 1)
     99            md = checkfield(md, 'fieldname', 'basalforcings.dtbg', '>', 0, 'numel', 1)
     100            md = checkfield(md, 'fieldname', 'basalforcings.topplumedepth', '>', 0, 'numel', 1)
     101            md = checkfield(md, 'fieldname', 'basalforcings.bottomplumedepth', '>', 0, 'numel', 1)
     102            md = checkfield(md, 'fieldname', 'basalforcings.plumex', 'numel', 1)
     103            md = checkfield(md, 'fieldname', 'basalforcings.plumey', 'numel', 1)
     104            md = checkfield(md, 'fieldname', 'basalforcings.crustthickness', '>', 0, 'numel', 1)
     105            md = checkfield(md, 'fieldname', 'basalforcings.uppercrustthickness', '>', 0, 'numel', 1)
     106            md = checkfield(md, 'fieldname', 'basalforcings.uppercrustheat', '>', 0, 'numel', 1)
     107            md = checkfield(md, 'fieldname', 'basalforcings.lowercrustheat', '>', 0, 'numel', 1)
     108        return md
     109    # }}}
    110110
    111                 WriteData(fid,prefix,'name','md.basalforcings.model','data',4,'format','Integer')
    112                 WriteData(fid,prefix,'object',self,'fieldname','floatingice_melting_rate','format','DoubleMat','name','md.basalforcings.floatingice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    113                 WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    114                 WriteData(fid,prefix,'object',self,'fieldname','mantleconductivity','format','Double')
    115                 WriteData(fid,prefix,'object',self,'fieldname','nusselt','format','Double')
    116                 WriteData(fid,prefix,'object',self,'fieldname','dtbg','format','Double')
    117                 WriteData(fid,prefix,'object',self,'fieldname','plumeradius','format','Double')
    118                 WriteData(fid,prefix,'object',self,'fieldname','topplumedepth','format','Double')
    119                 WriteData(fid,prefix,'object',self,'fieldname','bottomplumedepth','format','Double')
    120                 WriteData(fid,prefix,'object',self,'fieldname','plumex','format','Double')
    121                 WriteData(fid,prefix,'object',self,'fieldname','plumey','format','Double')
    122                 WriteData(fid,prefix,'object',self,'fieldname','crustthickness','format','Double')
    123                 WriteData(fid,prefix,'object',self,'fieldname','uppercrustthickness','format','Double')
    124                 WriteData(fid,prefix,'object',self,'fieldname','uppercrustheat','format','Double')
    125                 WriteData(fid,prefix,'object',self,'fieldname','lowercrustheat','format','Double')
    126         # }}}
     111    def marshall(self, prefix, md, fid):  # {{{
     112        yts = md.constants.yts
     113
     114        WriteData(fid, prefix, 'name', 'md.basalforcings.model', 'data', 4, 'format', 'Integer')
     115        WriteData(fid, prefix, 'object', self, 'fieldname', 'floatingice_melting_rate', 'format', 'DoubleMat', 'name', 'md.basalforcings.floatingice_melting_rate', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     116        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundedice_melting_rate', 'format', 'DoubleMat', 'name', 'md.basalforcings.groundedice_melting_rate', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     117        WriteData(fid, prefix, 'object', self, 'fieldname', 'mantleconductivity', 'format', 'Double')
     118        WriteData(fid, prefix, 'object', self, 'fieldname', 'nusselt', 'format', 'Double')
     119        WriteData(fid, prefix, 'object', self, 'fieldname', 'dtbg', 'format', 'Double')
     120        WriteData(fid, prefix, 'object', self, 'fieldname', 'plumeradius', 'format', 'Double')
     121        WriteData(fid, prefix, 'object', self, 'fieldname', 'topplumedepth', 'format', 'Double')
     122        WriteData(fid, prefix, 'object', self, 'fieldname', 'bottomplumedepth', 'format', 'Double')
     123        WriteData(fid, prefix, 'object', self, 'fieldname', 'plumex', 'format', 'Double')
     124        WriteData(fid, prefix, 'object', self, 'fieldname', 'plumey', 'format', 'Double')
     125        WriteData(fid, prefix, 'object', self, 'fieldname', 'crustthickness', 'format', 'Double')
     126        WriteData(fid, prefix, 'object', self, 'fieldname', 'uppercrustthickness', 'format', 'Double')
     127        WriteData(fid, prefix, 'object', self, 'fieldname', 'uppercrustheat', 'format', 'Double')
     128        WriteData(fid, prefix, 'object', self, 'fieldname', 'lowercrustheat', 'format', 'Double')
     129    # }}}
  • issm/trunk-jpl/src/m/classes/private.py

    r21049 r24213  
    11from collections import OrderedDict
    22from fielddisplay import fielddisplay
    3 from checkfield import checkfield
     3
    44
    55class private(object):
    6         """
    7         PRIVATE class definition
     6    """
     7    PRIVATE class definition
    88
    9            Usage:
    10               private=private();
    11         """
     9       Usage:
     10          private = private()
     11    """
    1212
    13         def __init__(self): # {{{
    14                 self.isconsistent = True
    15                 self.runtimename = ''
    16                 self.bamg        = OrderedDict()
    17                 self.solution    = ''
     13    def __init__(self): # {{{
     14        self.isconsistent = True
     15        self.runtimename = ''
     16        self.bamg = OrderedDict()
     17        self.solution = ''
    1818
    19                 #set defaults
    20                 self.setdefaultparameters()
     19    #set defaults
     20        self.setdefaultparameters()
    2121
    22                 #}}}
    23         def __repr__(self): # {{{
    24                 string='   private parameters: do not change'
     22    #}}}
    2523
    26                 string="%s\n%s"%(string,fielddisplay(self,'isconsistent','is model self consistent'))
    27                 string="%s\n%s"%(string,fielddisplay(self,'runtimename','name of the run launched'))
    28                 string="%s\n%s"%(string,fielddisplay(self,'bamg','structure with mesh properties constructed if bamg is used to mesh the domain'))
    29                 string="%s\n%s"%(string,fielddisplay(self,'solution','type of solution launched'))
    30                 return string
    31                 #}}}
    32         def setdefaultparameters(self): # {{{
    33                 return self
    34         #}}}
    35         def checkconsistency(self,md,solution,analyses):    # {{{
    36                 return md
    37         # }}}
     24    def __repr__(self):  # {{{
     25        string = '   private parameters: do not change'
     26
     27        string = "%s\n%s" % (string, fielddisplay(self, 'isconsistent', 'is model self consistent'))
     28        string = "%s\n%s" % (string, fielddisplay(self, 'runtimename', 'name of the run launched'))
     29        string = "%s\n%s" % (string, fielddisplay(self, 'bamg', 'structure with mesh properties constructed if bamg is used to mesh the domain'))
     30        string = "%s\n%s" % (string, fielddisplay(self, 'solution', 'type of solution launched'))
     31        return string
     32    #}}}
     33
     34    def setdefaultparameters(self):  # {{{
     35        return self
     36    #}}}
     37
     38    def checkconsistency(self, md, solution, analyses):  # {{{
     39        return md
     40    # }}}
  • issm/trunk-jpl/src/m/classes/qmu.py

    r24185 r24213  
    1010from dakota_method import *
    1111
     12
    1213class qmu(object):
    13         """
    14         QMU class definition
     14    """
     15    QMU class definition
    1516
    16            Usage:
    17               qmu=qmu();
    18         """
     17       Usage:
     18          qmu = qmu()
     19    """
    1920
    20         def __init__(self): # {{{
    21                 self.isdakota                    = 0
    22                 self.variables                  = OrderedStruct()
    23                 self.responses                  = OrderedStruct()
    24                 self.method                      = OrderedDict()
    25                 self.params                      = OrderedStruct()
    26                 self.results                    = OrderedDict()
    27                 self.vpartition                  = float('NaN')
    28                 self.epartition                  = float('NaN')
    29                 self.numberofpartitions          = 0
    30                 self.numberofresponses          = 0
    31                 self.variabledescriptors        = []
    32                 self.responsedescriptors        = []
    33                 self.mass_flux_profile_directory = float('NaN')
    34                 self.mass_flux_profiles          = float('NaN')
    35                 self.mass_flux_segments          = []
    36                 self.adjacency                  = float('NaN')
    37                 self.vertex_weight              = float('NaN')
     21    def __init__(self): # {{{
     22        self.isdakota = 0
     23        self.variables = OrderedStruct()
     24        self.responses = OrderedStruct()
     25        self.method = OrderedDict()
     26        self.params = OrderedStruct()
     27        self.results = OrderedDict()
     28        self.vpartition = float('NaN')
     29        self.epartition = float('NaN')
     30        self.numberofpartitions = 0
     31        self.numberofresponses = 0
     32        self.variabledescriptors = []
     33        self.responsedescriptors = []
     34        self.mass_flux_profile_directory = float('NaN')
     35        self.mass_flux_profiles = float('NaN')
     36        self.mass_flux_segments = []
     37        self.adjacency = float('NaN')
     38        self.vertex_weight = float('NaN')
    3839
    39                 #set defaults
    40                 self.setdefaultparameters()
     40    #set defaults
     41        self.setdefaultparameters()
    4142
    42                 #}}}
    43         def __repr__(self):    # {{{
    44                 s ='   qmu parameters:\n'
     43    #}}}
     44    def __repr__(self):  # {{{
     45        s = '   qmu parameters:\n'
    4546
    46                 s+="%s\n" % fielddisplay(self,'isdakota','is qmu analysis activated?')
    47                 maxlen = 0
    48                 s+="         variables:  (arrays of each variable class)\n"
     47        s += "%s\n" % fielddisplay(self, 'isdakota', 'is qmu analysis activated?')
     48        maxlen = 0
     49        s += "         variables:  (arrays of each variable class)\n"
    4950
    50                 # OrderedStruct's iterator returns individual name/array-of-functions pairs
    51                 for variable in self.variables:
    52                         fname=variable[0]
    53                         maxlen=max(maxlen,len(fname))
    54                         size = np.shape(variable[1])
    55                         a = size[0]
    56                         b = 1 if len(size) < 2 else size[1]
    57                         s+="            %-*s:    [%ix%i]    '%s'\n" %  (maxlen+1,fname,a,b,type(variable[1][0]))
     51    # OrderedStruct's iterator returns individual name / array - of - functions pairs
     52        for variable in self.variables:
     53            fname = variable[0]
     54            maxlen = max(maxlen, len(fname))
     55            size = np.shape(variable[1])
     56            a = size[0]
     57            b = 1 if len(size) < 2 else size[1]
     58            s += "            %-*s:    [%ix%i]    '%s'\n" % (maxlen + 1, fname, a, b, type(variable[1][0]))
    5859
    59                 s+="         responses:  (arrays of each response class)\n"
    60                 for response in self.responses:
    61                         fname=response[0]
    62                         maxlen=max(maxlen,len(fname))
    63                         size = np.shape(response[1])
    64                         a = size[0]
    65                         b = 1 if len(size) < 2 else size[1]
    66                         s+="            %-*s:    [%ix%i]    '%s'\n" %  (maxlen+1,fname,a,b,type(response[1][0]))
     60        s += "         responses:  (arrays of each response class)\n"
     61        for response in self.responses:
     62            fname = response[0]
     63            maxlen = max(maxlen, len(fname))
     64            size = np.shape(response[1])
     65            a = size[0]
     66            b = 1 if len(size) < 2 else size[1]
     67            s += "            %-*s:    [%ix%i]    '%s'\n" % (maxlen + 1, fname, a, b, type(response[1][0]))
    6768
    68                 s+="%s\n" % fielddisplay(self,'numberofresponses','number of responses')
     69        s += "%s\n" % fielddisplay(self, 'numberofresponses', 'number of responses')
    6970
    70                 if type(self.method) != OrderedDict:
    71                         self.method = [self.method]
    72                 # self.method must be iterable
    73                 for method in self.method:
    74                         if isinstance(method,dakota_method):
    75                                 s+="            method :    '%s'\n" % (method.method)
     71        if type(self.method) != OrderedDict:
     72            self.method = [self.method]
     73    # self.method must be iterable
     74        for method in self.method:
     75            if isinstance(method, dakota_method):
     76                s += "            method :    '%s'\n" % (method.method)
    7677
    77                 # params could be have a number of forms (mainly 1 struct or many)
    78                 if type(self.params) == OrderedStruct:
    79                         params = [self.params]
    80                 else:
    81                         params = np.hstack(np.atleast_1d(np.array(self.params)))
    82                 for param in params:
    83                         print(type(param))
    84                         print(param)
    85                         s+="         params:  (array of method-independent parameters)\n"
    86                         fnames=vars(param)
    87                         maxlen=0
    88                         for fname in fnames:
    89                                 maxlen=max(maxlen,len(fname))
     78    # params could be have a number of forms (mainly 1 struct or many)
     79        if type(self.params) == OrderedStruct:
     80            params = [self.params]
     81        else:
     82            params = np.hstack(np.atleast_1d(np.array(self.params)))
     83        for param in params:
     84            print(type(param))
     85            print(param)
     86            s += "         params:  (array of method - independent parameters)\n"
     87            fnames = vars(param)
     88            maxlen = 0
     89            for fname in fnames:
     90                maxlen = max(maxlen, len(fname))
    9091
    91                         for fname in fnames:
    92                                 s+="            %-*s: %s\n" %  (maxlen+1,fname,str(getattr(param,fname)))
     92            for fname in fnames:
     93                s += "            %-*s: %s\n" % (maxlen + 1, fname, str(getattr(param, fname)))
    9394
    94                 # results could be have a number of forms (mainly 1 struct or many)
    95                 results = np.hstack(np.atleast_1d(np.array(self.results)))
    96                 for result in results:
    97                         s+="         results:  (information from dakota files)\n"
    98                         fnames=vars(result)
    99                         maxlen=0
    100                         for fname in fnames:
    101                                 maxlen=max(maxlen,len(fname))
     95    # results could be have a number of forms (mainly 1 struct or many)
     96        results = np.hstack(np.atleast_1d(np.array(self.results)))
     97        for result in results:
     98            s += "         results:  (information from dakota files)\n"
     99            fnames = vars(result)
     100            maxlen = 0
     101            for fname in fnames:
     102                maxlen = max(maxlen, len(fname))
    102103
    103                         for fname in fnames:
    104                                 size = np.shape(response[1])
    105                                 a = size[0]
    106                                 b = 0 if len(size) < 2 else size[1]
    107                                 size = np.shape(getattr(result,fname))
    108                                 s+="            %-*s:    [%ix%i]    '%s'\n" % (maxlen+1,fname,a,b,type(getattr(result,fname)))
     104            for fname in fnames:
     105                size = np.shape(response[1])
     106                a = size[0]
     107                b = 0 if len(size) < 2 else size[1]
     108                size = np.shape(getattr(result, fname))
     109                s += "            %-*s:    [%ix%i]    '%s'\n" % (maxlen + 1, fname, a, b, type(getattr(result, fname)))
    109110
    110                 s+="%s\n" % fielddisplay(self,'vpartition','user provided mesh partitioning (vertex based)')
    111                 s+="%s\n" % fielddisplay(self,'epartition','user provided mesh partitioning (element based)')
    112                 s+="%s\n" % fielddisplay(self,'numberofpartitions','number of partitions for semi-discrete qmu')
    113                 s+="%s\n" % fielddisplay(self,'variabledescriptors','')
    114                 s+="%s\n" % fielddisplay(self,'responsedescriptors','')
    115                 s+="%s\n" % fielddisplay(self,'method','array of dakota_method class')
    116                 s+="%s\n" % fielddisplay(self,'mass_flux_profile_directory','directory for mass flux profiles')
    117                 s+="%s\n" % fielddisplay(self,'mass_flux_profiles','list of mass_flux profiles')
    118                 s+="%s\n" % fielddisplay(self,'mass_flux_segments','')
    119                 s+="%s\n" % fielddisplay(self,'adjacency','')
    120                 s+="%s\n" % fielddisplay(self,'vertex_weight','weight applied to each mesh vertex')
     111        s += "%s\n" % fielddisplay(self, 'vpartition', 'user provided mesh partitioning (vertex based)')
     112        s += "%s\n" % fielddisplay(self, 'epartition', 'user provided mesh partitioning (element based)')
     113        s += "%s\n" % fielddisplay(self, 'numberofpartitions', 'number of partitions for semi - discrete qmu')
     114        s += "%s\n" % fielddisplay(self, 'variabledescriptors', '')
     115        s += "%s\n" % fielddisplay(self, 'responsedescriptors', '')
     116        s += "%s\n" % fielddisplay(self, 'method', 'array of dakota_method class')
     117        s += "%s\n" % fielddisplay(self, 'mass_flux_profile_directory', 'directory for mass flux profiles')
     118        s += "%s\n" % fielddisplay(self, 'mass_flux_profiles', 'list of mass_flux profiles')
     119        s += "%s\n" % fielddisplay(self, 'mass_flux_segments', '')
     120        s += "%s\n" % fielddisplay(self, 'adjacency', '')
     121        s += "%s\n" % fielddisplay(self, 'vertex_weight', 'weight applied to each mesh vertex')
    121122
    122                 return s
    123         # }}}
    124         def extrude(self,md): # {{{
    125                 self.vpartition=project3d(md,'vector',np.transpose(self.vpartition),'type','node')
    126                 self.epartition=project3d(md,'vector',np.transpose(self.epartition),'type','element')
    127                 return self
    128         #}}}
    129         def setdefaultparameters(self): # {{{
    130                 return self
    131         #}}}
    132         def checkconsistency(self,md,solution,analyses):    # {{{
     123        return s
     124    # }}}
    133125
    134                 #Early return
    135                 if not md.qmu.isdakota:
    136                         return
     126    def extrude(self, md):  # {{{
     127        self.vpartition = project3d(md, 'vector', np.transpose(self.vpartition), 'type', 'node')
     128        self.epartition = project3d(md, 'vector', np.transpose(self.epartition), 'type', 'element')
     129        return self
     130    #}}}
    137131
    138                 version=IssmConfig('_DAKOTA_VERSION_')
    139                 version=float(version[0])
     132    def setdefaultparameters(self):  # {{{
     133        return self
     134    #}}}
    140135
    141                 if version < 6:
    142                         if not md.qmu.params.evaluation_concurrency==1:
    143                                 md.checkmessage("concurrency should be set to 1 when running dakota in library mode")
    144                 else:
    145                         if not strcmpi(self.params.evaluation_scheduling,'master'):
    146                                 md.checkmessage('evaluation_scheduling in qmu.params should be set to "master"')
     136    def checkconsistency(self, md, solution, analyses):  # {{{
     137        #Early return
     138        if not md.qmu.isdakota:
     139            return
    147140
    148                         if md.cluster.np <= 1:
    149                                 md.checkmessage('in parallel library mode, Dakota needs to run on at least 2 cpus, 1 cpu for the master, 1 cpu for the slave. Modify md.cluser.np accordingly.')
    150                                        
    151                         if self.params.processors_per_evaluation < 1:
    152                                 md.checkmessage('in parallel library mode, Dakota needs to run at least one slave on one cpu (md.qmu.params.processors_per_evaluation >=1)!')
    153                                
    154                         if np.mod(md.cluster.np-1,self.params.processors_per_evaluation):
    155                                 md.checkmessage('in parallel library mode, the requirement is for md.cluster.np = md.qmu.params.processors_per_evaluation * number_of_slaves, where number_of_slaves will automatically be determined by Dakota. Modify md.cluster.np accordingly')
    156                
    157                 if np.size(md.qmu.vpartition) > 0:
    158                         if np.size(md.qmu.vpartition,0)!=md.mesh.numberofvertices:
    159                                 md.checkmessage("user supplied vertex partition for qmu analysis should have size (md.mesh.numberofvertices x 1)")
    160                         if not min(md.qmu.vpartition.flatten())==0:
    161                                 md.checkmessage("vertex partition vector not indexed from 0 on")
    162                         if max(md.qmu.vpartition.flatten())>=md.qmu.numberofpartitions:
    163                                 md.checkmessage("for qmu analysis, vertex partitioning vector cannot go over npart, number of partition areas")
     141        version = IssmConfig('_DAKOTA_VERSION_')
     142        version = float(version[0])
     143
     144        if version < 6:
     145            if not md.qmu.params.evaluation_concurrency == 1:
     146                md.checkmessage("concurrency should be set to 1 when running dakota in library mode")
     147        else:
     148            if not strcmpi(self.params.evaluation_scheduling, 'master'):
     149                md.checkmessage('evaluation_scheduling in qmu.params should be set to "master"')
     150
     151            if md.cluster.np <= 1:
     152                md.checkmessage('in parallel library mode, Dakota needs to run on at least 2 cpus, 1 cpu for the master, 1 cpu for the slave. Modify md.cluser.np accordingly.')
     153
     154            if self.params.processors_per_evaluation < 1:
     155                md.checkmessage('in parallel library mode, Dakota needs to run at least one slave on one cpu (md.qmu.params.processors_per_evaluation >= 1)!')
     156
     157            if np.mod(md.cluster.np - 1, self.params.processors_per_evaluation):
     158                md.checkmessage('in parallel library mode, the requirement is for md.cluster.np = md.qmu.params.processors_per_evaluation * number_of_slaves, where number_of_slaves will automatically be determined by Dakota. Modify md.cluster.np accordingly')
     159
     160        if np.size(md.qmu.vpartition) > 0:
     161            if np.size(md.qmu.vpartition, 0) != md.mesh.numberofvertices:
     162                md.checkmessage("user supplied vertex partition for qmu analysis should have size (md.mesh.numberofvertices x 1)")
     163            if not min(md.qmu.vpartition.flatten()) == 0:
     164                md.checkmessage("vertex partition vector not indexed from 0 on")
     165            if max(md.qmu.vpartition.flatten()) >= md.qmu.numberofpartitions:
     166                md.checkmessage("for qmu analysis, vertex partitioning vector cannot go over npart, number of partition areas")
    164167
    165168                if np.size(md.qmu.epartition) > 0:
    166                         if np.size(md.qmu.epartition,0) != md.mesh.numberofelements:
    167                                 md.checkmessage("user supplied element partition for qmu analysis should have size (md.mesh.numberofelements x 1)")
    168                         if not min(md.qmu.epartition.flatten())==0:
    169                                 md.checkmessage("elememtn partition vector not indexed from 0 on")
    170                         if max(md.qmu.epartition.flatten())>=md.qmu.numberofpartitions:
    171                                 md.checkmessage("for qmu analysis, element partitioning vector cannot go over npart, number of partition areas")
     169                    if np.size(md.qmu.epartition, 0) != md.mesh.numberofelements:
     170                        md.checkmessage("user supplied element partition for qmu analysis should have size (md.mesh.numberofelements x 1)")
     171                    if not min(md.qmu.epartition.flatten()) == 0:
     172                        md.checkmessage("elememtn partition vector not indexed from 0 on")
     173                    if max(md.qmu.epartition.flatten()) >= md.qmu.numberofpartitions:
     174                        md.checkmessage("for qmu analysis, element partitioning vector cannot go over npart, number of partition areas")
    172175
    173176                if np.size(md.qmu.vpartition) == 0 or np.any(np.isnan(md.qmu.vpartition)) or np.size(md.qmu.epartition) == 0 or np.any(np.isnan(md.qmu.epartition)):
    174                         md.checkmessage("for qmu analysis, both an element and partitioning vectors need to be supplied with no nan values! One can be defaulted to all zeros.")
     177                    md.checkmessage("for qmu analysis, both an element and partitioning vectors need to be supplied with no nan values! One can be defaulted to all zeros.")
    175178
    176                 return md
    177         # }}}
    178         def marshall(self,prefix,md,fid):    # {{{
    179                 WriteData(fid,prefix,'object',self,'fieldname','isdakota','format','Boolean')
    180                 if not self.isdakota:
    181                         WriteData(fid,prefix,'data',False,'name','md.qmu.mass_flux_segments_present','format','Boolean');
    182                         return
    183                 WriteData(fid,prefix,'object',self,'fieldname','vpartition','format','DoubleMat','mattype',2)
    184                 WriteData(fid,prefix,'object',self,'fieldname','epartition','format','DoubleMat','mattype',2)
    185                 WriteData(fid,prefix,'object',self,'fieldname','numberofpartitions','format','Integer')
    186                 WriteData(fid,prefix,'object',self,'fieldname','numberofresponses','format','Integer')
    187                 WriteData(fid,prefix,'object',self,'fieldname','variabledescriptors','format','StringArray')
    188                 WriteData(fid,prefix,'object',self,'fieldname','responsedescriptors','format','StringArray')
    189                 if not isempty(self.mass_flux_segments):
    190                         WriteData(fid,prefix,'data',self.mass_flux_segments,'name','md.qmu.mass_flux_segments','format','MatArray');
    191                         flag=True;
    192                 else:
    193                         flag=False;
    194                 WriteData(fid,prefix,'data',flag,'name','md.qmu.mass_flux_segments_present','format','Boolean');
    195         # }}}
     179        return md
     180    # }}}
     181
     182    def marshall(self, prefix, md, fid):  # {{{
     183        WriteData(fid, prefix, 'object', self, 'fieldname', 'isdakota', 'format', 'Boolean')
     184        if not self.isdakota:
     185            WriteData(fid, prefix, 'data', False, 'name', 'md.qmu.mass_flux_segments_present', 'format', 'Boolean')
     186            return
     187        WriteData(fid, prefix, 'object', self, 'fieldname', 'vpartition', 'format', 'DoubleMat', 'mattype', 2)
     188        WriteData(fid, prefix, 'object', self, 'fieldname', 'epartition', 'format', 'DoubleMat', 'mattype', 2)
     189        WriteData(fid, prefix, 'object', self, 'fieldname', 'numberofpartitions', 'format', 'Integer')
     190        WriteData(fid, prefix, 'object', self, 'fieldname', 'numberofresponses', 'format', 'Integer')
     191        WriteData(fid, prefix, 'object', self, 'fieldname', 'variabledescriptors', 'format', 'StringArray')
     192        WriteData(fid, prefix, 'object', self, 'fieldname', 'responsedescriptors', 'format', 'StringArray')
     193        if not isempty(self.mass_flux_segments):
     194            WriteData(fid, prefix, 'data', self.mass_flux_segments, 'name', 'md.qmu.mass_flux_segments', 'format', 'MatArray')
     195            flag = True
     196        else:
     197            flag = False
     198        WriteData(fid, prefix, 'data', flag, 'name', 'md.qmu.mass_flux_segments_present', 'format', 'Boolean')
     199    # }}}
  • issm/trunk-jpl/src/m/classes/qmu/@dakota_method/dakota_method.py

    r23716 r24213  
    55import numpy as np
    66
     7
    78class dakota_method(object):
    8         '''
     9    '''
    910  definition for the dakota_method class.
    1011
    11   [dm]=dakota_method(method)
     12  [dm] = dakota_method(method)
    1213
    1314  where the required input is:
     
    2122    responses    (cell array, applicable response types, [])
    2223    ghspec       (cell array, gradient and hessian specs, [])
    23     params       (structure, method-depent parameters, [])
     24    params       (structure, method - depent parameters, [])
    2425
    2526  this class is used to guide the writing of a dakota input
     
    4344  authority as may be required before exporting such np.information
    4445  to foreign countries or providing access to foreign persons."
    45         '''
    46 
    47         def __init__(self,*args):
    48                 self.method   =''
    49                 self.type     =''
    50                 self.variables=[]
    51                 self.lcspec   =[]
    52                 self.responses=[]
    53                 self.ghspec   =[]
    54                 #properites
    55                 self.params   =struct()
    56 
    57         @staticmethod
    58         def dakota_method(*args):
    59                 dm = dakota_method()
    60                 #  return a default object
    61                 if len(args) == 0:
    62                         return dm
    63 
    64                 #  copy the object or create the object from the input
    65                 elif len(args) == 1:
    66                         method = args[0]
    67 
    68                         #given argument was a method, copy it
    69                         if isinstance(method,dakota_method):
    70                                 #dm=method
    71                                 object=method
    72                                 for field in object.keys():
    73                                         if field in vars(dm):
    74                                                 setattr(dm,field,object[field])
    75                                 return dm
    76 
    77                         #given argument was a way of constructing a method
    78                         else:
    79                                 mlist=['dot_bfgs',
    80                                                         'dot_frcg',
    81                                                         'dot_mmfd',
    82                                                         'dot_slp',
    83                                                         'dot_sqp',
    84                                                         'npsol_sqp',
    85                                                         'conmin_frcg',
    86                                                         'conmin_mfd',
    87                                                         'optpp_cg',
    88                                                         'optpp_q_newton',
    89                                                         'optpp_fd_newton',
    90                                                         'optpp_newton',
    91                                                         'optpp_pds',
    92                                                         'asynch_pattern_search',
    93                                                         'coliny_cobyla',
    94                                                         'coliny_direct',
    95                                                         'coliny_ea',
    96                                                         'coliny_pattern_search',
    97                                                         'coliny_solis_wets',
    98                                                         'ncsu_direct',
    99                                                         'surrogate_based_local',
    100                                                         'surrogate_based_global',
    101                                                         'moga',
    102                                                         'soga',
    103                                                         'nl2sol',
    104                                                         'nlssol_sqp',
    105                                                         'optpp_g_newton',
    106                                                         'nond_sampling',
    107                                                         'nond_local_reliability',
    108                                                         'nond_global_reliability',
    109                                                         'nond_polynomial_chaos',
    110                                                         'nond_stoch_collocation',
    111                                                         'nond_evidence',
    112                                                         'dace',
    113                                                         'fsu_quasi_mc',
    114                                                         'fsu_cvt',
    115                                                         'vector_parameter_study',
    116                                                         'list_parameter_study',
    117                                                         'centered_parameter_study',
    118                                                         'multidim_parameter_study',
    119                                                         'bayes_calibration']
    120 
    121                                 mlist2=[]
    122                                 for i in range(len(mlist)):
    123                                         if strncmpi(method,mlist[i],len(method)):
    124                                                 mlist2.append(mlist[i])
    125                                                 #  check for a unique match in the list of methods
    126                                 l = len(mlist2)
    127                                 if l == 0:
    128                                         raise RuntimeError('Unrecognized method: '+str(method)+'.')
    129                                 elif l == 1:
    130                                         dm.method=mlist2[0]
    131                                 else:
    132                                         raise RuntimeError('Non-unique method: '+str(method)+' matches '+string_cell(mlist2))
    133 
    134                                 #  assign the default values for the method
    135                           # switch dm.method
    136                                 if dm.method in ['dot_bfgs','dot_frcg']:
    137                                         dm.type     ='dot'
    138                                         dm.variables=['continuous_design',
    139                                                                                                 'continuous_state']
    140                                         dm.lcspec   =[]
    141                                         dm.responses=['objective_function']
    142                                         dm.ghspec   =['grad']
    143                                         dm.params.max_iterations=False
    144                                         dm.params.max_function_evaluations=False
    145                                         dm.params.convergence_tolerance=False
    146                                         dm.params.constraint_tolerance=False
    147                                         dm.params.output=False
    148                                         dm.params.speculative=False
    149                                         dm.params.scaling=False
    150                                         dm.params.optimization_type='minimize'
    151 
    152                                 elif dm.method in ['dot_mmfd','dot_slp','dot_sqp']:
    153                                         dm.type     ='dot'
    154                                         dm.variables=['continuous_design',
    155                                                                                                 'continuous_state']
    156                                         dm.lcspec   =['linear_inequality_constraint',
    157                                                                                                 'linear_equality_constraint']
    158                                         dm.responses=['objective_function',
    159                                                                                                 'nonlinear_inequality_constraint',
    160                                                                                                 'nonlinear_equality_constraint']
    161                                         dm.ghspec   =['grad']
    162                                         dm.params.max_iterations=False
    163                                         dm.params.max_function_evaluations=False
    164                                         dm.params.convergence_tolerance=False
    165                                         dm.params.constraint_tolerance=False
    166                                         dm.params.output=False
    167                                         dm.params.speculative=False
    168                                         dm.params.scaling=False
    169                                         dm.params.optimization_type='minimize'
    170 
    171                                 elif dm.method == 'npsol_sqp':
    172                                         dm.type     ='npsol'
    173                                         dm.variables=['continuous_design',
    174                                                                                                 'continuous_state']
    175                                         dm.lcspec   =['linear_inequality_constraint',
    176                                                                                                 'linear_equality_constraint']
    177                                         dm.responses=['objective_function',
    178                                                                                                 'nonlinear_inequality_constraint',
    179                                                                                                 'nonlinear_equality_constraint']
    180                                         dm.ghspec   =['grad']
    181                                         dm.params.max_iterations=False
    182                                         dm.params.max_function_evaluations=False
    183                                         dm.params.convergence_tolerance=False
    184                                         dm.params.constraint_tolerance=False
    185                                         dm.params.output=False
    186                                         dm.params.speculative=False
    187                                         dm.params.scaling=False
    188                                         dm.params.verify_level=-1
    189                                         dm.params.function_precision=1.0e-10
    190                                         dm.params.linesearch_tolerance=0.9
    191 
    192                                 elif dm.method == 'conmin_frcg':
    193                                         dm.type     ='conmin'
    194                                         dm.variables=['continuous_design',
    195                                                                                                 'continuous_state']
    196                                         dm.lcspec   =[]
    197                                         dm.responses=['objective_function']
    198                                         dm.ghspec   =['grad']
    199                                         dm.params.max_iterations=False
    200                                         dm.params.max_function_evaluations=False
    201                                         dm.params.convergence_tolerance=False
    202                                         dm.params.constraint_tolerance=False
    203                                         dm.params.output=False
    204                                         dm.params.speculative=False
    205                                         dm.params.scaling=False
    206 
    207                                 elif dm.method == 'conmin_mfd':
    208                                         dm.type     ='conmin'
    209                                         dm.variables=['continuous_design',
    210                                                                                                 'continuous_state']
    211                                         dm.lcspec   =['linear_inequality_constraint',
    212                                                                                                 'linear_equality_constraint']
    213                                         dm.responses=['objective_function',
    214                                                                                                 'nonlinear_inequality_constraint',
    215                                                                                                 'nonlinear_equality_constraint']
    216                                         dm.ghspec   =['grad']
    217                                         dm.params.max_iterations=False
    218                                         dm.params.max_function_evaluations=False
    219                                         dm.params.convergence_tolerance=False
    220                                         dm.params.constraint_tolerance=False
    221                                         dm.params.output=False
    222                                         dm.params.speculative=False
    223                                         dm.params.scaling=False
    224 
    225                                 elif dm.method == 'optpp_cg':
    226                                         dm.type     ='optpp'
    227                                         dm.variables=['continuous_design',
    228                                                                                                 'continuous_state']
    229                                         dm.lcspec   =[]
    230                                         dm.responses=['objective_function']
    231                                         dm.ghspec   =['grad']
    232                                         dm.params.max_iterations=False
    233                                         dm.params.max_function_evaluations=False
    234                                         dm.params.convergence_tolerance=False
    235                                         dm.params.output=False
    236                                         dm.params.speculative=False
    237                                         dm.params.scaling=False
    238                                         dm.params.max_step=1000.
    239                                         dm.params.gradient_tolerance=1.0e-4
    240 
    241                                 elif dm.method in ['optpp_q_newton',
    242                                                                                                         'optpp_fd_newton',
    243                                                                                                         'optpp_newton']:
    244                                         dm.type     ='optpp'
    245                                         dm.variables=['continuous_design',
    246                                                                                                 'continuous_state']
    247                                         dm.lcspec   =['linear_inequality_constraint',
    248                                                                                                 'linear_equality_constraint']
    249                                         dm.responses=['objective_function',
    250                                                                                                 'nonlinear_inequality_constraint',
    251                                                                                                 'nonlinear_equality_constraint']
    252                                         dm.ghspec   =['grad']
    253                                         dm.params.max_iterations=False
    254                                         dm.params.max_function_evaluations=False
    255                                         dm.params.convergence_tolerance=False
    256                                         dm.params.output=False
    257                                         dm.params.speculative=False
    258                                         dm.params.scaling=False
    259                                         dm.params.value_based_line_search=False
    260                                         dm.params.gradient_based_line_search=False
    261                                         dm.params.trust_region=False
    262                                         dm.params.tr_pds=False
    263                                         dm.params.max_step=1000.
    264                                         dm.params.gradient_tolerance=1.0e-4
    265                                         dm.params.merit_function='argaez_tapia'
    266                                         dm.params.central_path=dm.params.merit_function
    267                                         dm.params.steplength_to_boundary=0.99995
    268                                         dm.params.centering_parameter=0.2
    269 
    270                                 elif dm.method == 'optpp_pds':
    271                                         dm.type     ='optpp'
    272                                         dm.variables=['continuous_design',
    273                                                                                                 'continuous_state']
    274                                         dm.lcspec   =[]
    275                                         dm.responses=['objective_function']
    276                                         dm.ghspec   =['grad']
    277                                         dm.params.max_iterations=False
    278                                         dm.params.max_function_evaluations=False
    279                                         dm.params.convergence_tolerance=False
    280                                         dm.params.output=False
    281                                         dm.params.speculative=False
    282                                         dm.params.scaling=False
    283                                         dm.params.search_scheme_size=32
    284 
    285                                 elif dm.method == 'asynch_pattern_search':
    286                                         dm.type     ='apps'
    287                                         dm.variables=['continuous_design',
    288                                                                                                 'continuous_state']
    289                                         dm.lcspec   =['linear_inequality_constraint',
    290                                                                                                 'linear_equality_constraint']
    291                                         dm.responses=['objective_function',
    292                                                                                                 'nonlinear_inequality_constraint',
    293                                                                                                 'nonlinear_equality_constraint']
    294                                         dm.ghspec   =['grad']
    295                                         dm.params.max_function_evaluations=False
    296                                         dm.params.constraint_tolerance=False
    297                                         dm.params.output=False
    298                                         dm.params.scaling=False
    299                                         dm.params.initial_delta=1.0
    300                                         dm.params.threshold_delta=0.01
    301                                         dm.params.contraction_factor=0.5
    302                                         dm.params.solution_target=False
    303                                         dm.params.synchronization='nonblocking'
    304                                         dm.params.merit_function='merit2_smooth'
    305                                         dm.params.constraint_penalty=1.0
    306                                         dm.params.smoothing_factor=1.0
    307 
    308                                 elif dm.method == 'coliny_cobyla':
    309                                         dm.type     ='coliny'
    310                                         dm.variables=['continuous_design',
    311                                                                                                 'continuous_state']
    312                                         dm.lcspec   =[]
    313                                         dm.responses=['objective_function',
    314                                                                                                 'nonlinear_inequality_constraint',
    315                                                                                                 'nonlinear_equality_constraint']
    316                                         dm.ghspec   =['grad']
    317                                         dm.params.max_iterations=False
    318                                         dm.params.max_function_evaluations=False
    319                                         dm.params.convergence_tolerance=False
    320                                         dm.params.output=False
    321                                         dm.params.scaling=False
    322                                         dm.params.show_misc_options=False
    323                                         dm.params.misc_options=[]
    324                                         dm.params.solution_accuracy=-np.inf
    325                                         dm.params.initial_delta=[]
    326                                         dm.params.threshold_delta=[]
    327 
    328                                 elif dm.method == 'coliny_direct':
    329                                         dm.type     ='coliny'
    330                                         dm.variables=['continuous_design',
    331                                                                                                 'continuous_state']
    332                                         dm.lcspec   =[]
    333                                         dm.responses=['objective_function',
    334                                                                                                 'nonlinear_inequality_constraint',
    335                                                                                                 'nonlinear_equality_constraint']
    336                                         dm.ghspec   =['grad']
    337                                         dm.params.max_iterations=False
    338                                         dm.params.max_function_evaluations=False
    339                                         dm.params.convergence_tolerance=False
    340                                         dm.params.output=False
    341                                         dm.params.scaling=False
    342                                         dm.params.show_misc_options=False
    343                                         dm.params.misc_options=[]
    344                                         dm.params.solution_accuracy=-np.inf
    345                                         dm.params.division='major_dimension'
    346                                         dm.params.global_balance_parameter=0.0
    347                                         dm.params.local_balance_parameter=1.0e-8
    348                                         dm.params.max_boxsize_limit=0.0
    349                                         dm.params.min_boxsize_limit=0.0001
    350                                         dm.params.constraint_penalty=1000.0
    351 
    352                                 elif dm.method == 'coliny_ea':
    353                                         dm.type     ='coliny'
    354                                         dm.variables=['continuous_design',
    355                                                                                                 'continuous_state']
    356                                         dm.lcspec   =[]
    357                                         dm.responses=['objective_function',
    358                                                                                                 'nonlinear_inequality_constraint',
    359                                                                                                 'nonlinear_equality_constraint']
    360                                         dm.ghspec   =['grad']
    361                                         dm.params.max_iterations=False
    362                                         dm.params.max_function_evaluations=False
    363                                         dm.params.convergence_tolerance=False
    364                                         dm.params.output=False
    365                                         dm.params.scaling=False
    366                                         dm.params.show_misc_options=False
    367                                         dm.params.misc_options=[]
    368                                         dm.params.solution_accuracy=-np.inf
    369                                         dm.params.seed=False
    370                                         dm.params.population_size=50
    371                                         dm.params.initialization_type='unique_random'
    372                                         dm.params.fitness_type='linear_rank'
    373                                         dm.params.replacement_type='elitist'
    374                                         dm.params.random=[]
    375                                         dm.params.chc=[]
    376                                         dm.params.elitist=[]
    377                                         dm.params.new_solutions_generated='population_size - replacement_size'
    378                                         dm.params.crossover_type='two_point'
    379                                         dm.params.crossover_rate=0.8
    380                                         dm.params.mutation_type='offset_normal'
    381                                         dm.params.mutation_scale=0.1
    382                                         dm.params.mutation_range=1
    383                                         dm.params.dimension_ratio=1.0
    384                                         dm.params.mutation_rate=1.0
    385                                         dm.params.non_adaptive=False
    386 
    387                                 elif dm.method == 'coliny_pattern_search':
    388                                         dm.type     ='coliny'
    389                                         dm.variables=['continuous_design',
    390                                                                                                 'continuous_state']
    391                                         dm.lcspec   =[]
    392                                         dm.responses=['objective_function',
    393                                                                                                 'nonlinear_inequality_constraint',
    394                                                                                                 'nonlinear_equality_constraint']
    395                                         dm.ghspec   =['grad']
    396                                         dm.params.max_iterations=False
    397                                         dm.params.max_function_evaluations=False
    398                                         dm.params.convergence_tolerance=False
    399                                         dm.params.output=False
    400                                         dm.params.scaling=False
    401                                         dm.params.show_misc_options=False
    402                                         dm.params.misc_options=[]
    403                                         dm.params.solution_accuracy=-np.inf
    404                                         dm.params.stochastic=False
    405                                         dm.params.seed=False
    406                                         dm.params.initial_delta=[]
    407                                         dm.params.threshold_delta=[]
    408                                         dm.params.constraint_penalty=1.0
    409                                         dm.params.constant_penalty=False
    410                                         dm.params.pattern_basis='coordinate'
    411                                         dm.params.total_pattern_size=False
    412                                         dm.params.no_expansion=False
    413                                         dm.params.expand_after_success=1
    414                                         dm.params.contraction_factor=0.5
    415                                         dm.params.synchronization='nonblocking'
    416                                         dm.params.exploratory_moves='basic_pattern'
    417 
    418                                 elif dm.method == 'coliny_solis_wets':
    419                                         dm.type     ='coliny'
    420                                         dm.variables=['continuous_design',
    421                                                                                                 'continuous_state']
    422                                         dm.lcspec   =[]
    423                                         dm.responses=['objective_function',
    424                                                                                                 'nonlinear_inequality_constraint',
    425                                                                                                 'nonlinear_equality_constraint']
    426                                         dm.ghspec   =['grad']
    427                                         dm.params.max_iterations=False
    428                                         dm.params.max_function_evaluations=False
    429                                         dm.params.convergence_tolerance=False
    430                                         dm.params.output=False
    431                                         dm.params.scaling=False
    432                                         dm.params.show_misc_options=False
    433                                         dm.params.misc_options=[]
    434                                         dm.params.solution_accuracy=-np.inf
    435                                         dm.params.seed=False
    436                                         dm.params.initial_delta=[]
    437                                         dm.params.threshold_delta=[]
    438                                         dm.params.no_expansion=False
    439                                         dm.params.expand_after_success=5
    440                                         dm.params.contract_after_failure=3
    441                                         dm.params.contraction_factor=0.5
    442                                         dm.params.constraint_penalty=1.0
    443                                         dm.params.constant_penalty=False
    444 
    445                                 elif dm.method == 'ncsu_direct':
    446                                         dm.type     ='ncsu'
    447                                         dm.variables=['continuous_design',
    448                                                                                                 'continuous_state']
    449                                         dm.lcspec   =['linear_inequality_constraint',
    450                                                                                                 'linear_equality_constraint']  #  ?
    451                                         dm.responses=['objective_function',
    452                                                                                                 'nonlinear_inequality_constraint',
    453                                                                                                 'nonlinear_equality_constraint']  #  ?
    454                                         dm.ghspec   =['grad']
    455                                         dm.params.max_iterations=False
    456                                         dm.params.max_function_evaluations=False
    457                                         dm.params.scaling=False
    458                                         dm.params.solution_accuracy=0.
    459                                         dm.params.min_boxsize_limit=1.0e-8
    460                                         dm.params.vol_boxsize_limit=1.0e-8
    461 
    462                                         #if dm.method in ['surrogate_based_local',
    463                                         #'surrogate_based_global']:
    464 
    465                                 elif dm.method == 'moga':
    466                                         dm.type     ='jega'
    467                                         dm.variables=['continuous_design',
    468                                                                                                 'continuous_state']
    469                                         dm.lcspec   =['linear_inequality_constraint',
    470                                                                                                 'linear_equality_constraint']
    471                                         dm.responses=['objective_function',
    472                                                                                                 'nonlinear_inequality_constraint',
    473                                                                                                 'nonlinear_equality_constraint']
    474                                         dm.ghspec   =['grad']
    475                                         dm.params.max_iterations=False
    476                                         dm.params.max_function_evaluations=False
    477                                         dm.params.output=False
    478                                         dm.params.scaling=False
    479                                         dm.params.seed=False
    480                                         dm.params.log_file='JEGAGlobal.log'
    481                                         dm.params.population_size=50
    482                                         dm.params.print_each_pop=False
    483                                         #according to documentation, uses method-indepent control
    484                                         #dm.params.output='normal'
    485                                         dm.params.initialization_type='unique_random'
    486                                         dm.params.mutation_type='replace_uniform'
    487                                         dm.params.mutation_scale=0.15
    488                                         dm.params.mutation_rate=0.08
    489                                         dm.params.replacement_type=''
    490                                         dm.params.below_limit=6
    491                                         dm.params.shrinkage_percentage=0.9
    492                                         dm.params.crossover_type='shuffle_random'
    493                                         dm.params.multi_point_binary=[]
    494                                         dm.params.multi_point_parameterized_binary=[]
    495                                         dm.params.multi_point_real=[]
    496                                         dm.params.shuffle_random=[]
    497                                         dm.params.num_parents=2
    498                                         dm.params.num_offspring=2
    499                                         dm.params.crossover_rate=0.8
    500                                         dm.params.fitness_type=''
    501                                         dm.params.niching_type=False
    502                                         dm.params.radial=[0.01]
    503                                         dm.params.distance=[0.01]
    504                                         dm.params.metric_tracker=False
    505                                         dm.params.percent_change=0.1
    506                                         dm.params.num_generations=10
    507                                         dm.params.postprocessor_type=False
    508                                         dm.params.orthogonal_distance=[0.01]
    509 
    510                                 elif dm.method == 'soga':
    511                                         dm.type     ='jega'
    512                                         dm.variables=['continuous_design',
    513                                                                                                 'continuous_state']
    514                                         dm.lcspec   =['linear_inequality_constraint',
    515                                                                                                 'linear_equality_constraint']
    516                                         dm.responses=['objective_function',
    517                                                                                                 'nonlinear_inequality_constraint',
    518                                                                                                 'nonlinear_equality_constraint']
    519                                         dm.ghspec   =['grad']
    520                                         dm.params.max_iterations=False
    521                                         dm.params.max_function_evaluations=False
    522                                         dm.params.output=False
    523                                         dm.params.scaling=False
    524                                         dm.params.seed=False
    525                                         dm.params.log_file='JEGAGlobal.log'
    526                                         dm.params.population_size=50
    527                                         dm.params.print_each_pop=False
    528                                         dm.params.output='normal'
    529                                         dm.params.initialization_type='unique_random'
    530                                         dm.params.mutation_type='replace_uniform'
    531                                         dm.params.mutation_scale=0.15
    532                                         dm.params.mutation_rate=0.08
    533                                         dm.params.replacement_type=''
    534                                         dm.params.below_limit=6
    535                                         dm.params.shrinkage_percentage=0.9
    536                                         dm.params.crossover_type='shuffle_random'
    537                                         dm.params.multi_point_binary=[]
    538                                         dm.params.multi_point_parameterized_binary=[]
    539                                         dm.params.multi_point_real=[]
    540                                         dm.params.shuffle_random=[]
    541                                         dm.params.num_parents=2
    542                                         dm.params.num_offspring=2
    543                                         dm.params.crossover_rate=0.8
    544                                         dm.params.fitness_type='merit_function'
    545                                         dm.params.constraint_penalty=1.0
    546                                         dm.params.replacement_type=''
    547                                         dm.params.convergence_type=False
    548                                         dm.params.num_generations=10
    549                                         dm.params.percent_change=0.1
    550 
    551                                 elif dm.method == 'nl2sol':
    552                                         dm.type     ='lsq'
    553                                         dm.variables=['continuous_design',
    554                                                                                                 'continuous_state']
    555                                         dm.lcspec   =[]
    556                                         dm.responses=['least_squares_term']
    557                                         dm.ghspec   =['grad']
    558                                         dm.params.max_iterations=False
    559                                         dm.params.max_function_evaluations=False
    560                                         dm.params.convergence_tolerance=False
    561                                         dm.params.output=False
    562                                         dm.params.scaling=False
    563                                         dm.params.function_precision=1.0e-10
    564                                         dm.params.absolute_conv_tol=-1.
    565                                         dm.params.x_conv_tol=-1.
    566                                         dm.params.singular_conv_tol=-1.
    567                                         dm.params.singular_radius=-1.
    568                                         dm.params.False_conv_tol=-1.
    569                                         dm.params.initial_trust_radius=-1.
    570                                         dm.params.covariance=0
    571                                         dm.params.regression_stressbalances=False
    572 
    573                                 elif dm.method == 'nlssol_sqp':
    574                                         dm.type     ='lsq'
    575                                         dm.variables=['continuous_design',
    576                                                                                                 'continuous_state']
    577                                         dm.lcspec   =['linear_inequality_constraint',
    578                                                                                                 'linear_equality_constraint']
    579                                         dm.responses=['least_squares_term',
    580                                                                                                 'nonlinear_inequality_constraint',
    581                                                                                                 'nonlinear_equality_constraint']
    582                                         dm.ghspec   =['grad']
    583                                         dm.params.max_iterations=False
    584                                         dm.params.max_function_evaluations=False
    585                                         dm.params.convergence_tolerance=False
    586                                         dm.params.constraint_tolerance=False
    587                                         dm.params.output=False
    588                                         dm.params.speculative=False
    589                                         dm.params.scaling=False
    590                                         dm.params.verify_level=-1
    591                                         dm.params.function_precision=1.0e-10
    592                                         dm.params.linesearch_tolerance=0.9
    593 
    594                                 elif dm.method == 'optpp_g_newton':
    595                                         dm.type     ='lsq'
    596                                         dm.variables=['continuous_design',
    597                                                                                                 'continuous_state']
    598                                         dm.lcspec   =['linear_inequality_constraint',
    599                                                                                                 'linear_equality_constraint']
    600                                         dm.responses=['least_squares_term',
    601                                                                                                 'nonlinear_inequality_constraint',
    602                                                                                                 'nonlinear_equality_constraint']
    603                                         dm.ghspec   =['grad']
    604                                         dm.params.max_iterations=False
    605                                         dm.params.max_function_evaluations=False
    606                                         dm.params.convergence_tolerance=False
    607                                         dm.params.output=False
    608                                         dm.params.speculative=False
    609                                         dm.params.scaling=False
    610                                         dm.params.value_based_line_search=False
    611                                         dm.params.gradient_based_line_search=False
    612                                         dm.params.trust_region=False
    613                                         dm.params.tr_pds=False
    614                                         dm.params.max_step=1000.
    615                                         dm.params.gradient_tolerance=1.0e-4
    616                                         dm.params.merit_function='argaez_tapia'
    617                                         dm.params.central_path=dm.params.merit_function
    618                                         dm.params.steplength_to_boundary=0.99995
    619                                         dm.params.centering_parameter=0.2
    620 
    621                                 elif dm.method == 'nond_sampling':
    622                                         dm.type     ='nond'
    623                                         dm.variables=['normal_uncertain',
    624                                                                                                 'uniform_uncertain',
    625                                                                                                 'continuous_state']
    626                                         dm.lcspec   =[]
    627                                         dm.responses=['response_function']
    628                                         dm.ghspec   =[]
    629                                         #                               not documented, but apparently works
    630                                         dm.params.output=False
    631                                         dm.params.seed=False
    632                                         dm.params.fixed_seed=False
    633                                         dm.params.rng=False
    634                                         dm.params.samples=False
    635                                         dm.params.sample_type='lhs'
    636                                         dm.params.all_variables=False
    637                                         dm.params.variance_based_decomp=False
    638                                         dm.params.previous_samples=0
    639 
    640                                 elif dm.method == 'nond_local_reliability':
    641                                         dm.type     ='nond'
    642                                         dm.variables=['normal_uncertain',
    643                                                                                                 'uniform_uncertain',
    644                                                                                                 'continuous_state']
    645                                         dm.lcspec   =[]
    646                                         dm.responses=['response_function']
    647                                         dm.ghspec   =['grad']
    648                                         #                               not documented, but may work
    649                                         dm.params.output=False
    650                                         dm.params.max_iterations=False
    651                                         dm.params.convergence_tolerance=False
    652                                         dm.params.mpp_search=False
    653                                         dm.params.sqp=False
    654                                         dm.params.nip=False
    655                                         dm.params.integration='first_order'
    656                                         dm.params.refinement=False
    657                                         dm.params.samples=0
    658                                         dm.params.seed=False
    659 
    660                                 elif dm.method == 'nond_global_reliability':
    661                                         dm.type     ='nond'
    662                                         dm.variables=['normal_uncertain',
    663                                                                                                 'uniform_uncertain',
    664                                                                                                 'continuous_state']
    665                                         dm.lcspec   =[]
    666                                         dm.responses=['response_function']
    667                                         dm.ghspec   =['grad']
    668                                         #                               not documented, but may work
    669                                         dm.params.output=False
    670                                         dm.params.x_gaussian_process=False
    671                                         dm.params.u_gaussian_process=False
    672                                         dm.params.all_variables=False
    673                                         dm.params.seed=False
    674 
    675                                 elif dm.method == 'nond_polynomial_chaos':
    676                                         dm.type     ='nond'
    677                                         dm.variables=['normal_uncertain',
    678                                                                                                 'uniform_uncertain',
    679                                                                                                 'continuous_state']
    680                                         dm.lcspec   =[]
    681                                         dm.responses=['response_function']
    682                                         dm.ghspec   =['grad']
    683                                         #                               not documented, but may work
    684                                         dm.params.output=False
    685                                         dm.params.expansion_order=[]
    686                                         dm.params.expansion_terms=[]
    687                                         dm.params.quadrature_order=[]
    688                                         dm.params.sparse_grid_level=[]
    689                                         dm.params.expansion_samples=[]
    690                                         dm.params.incremental_lhs=False
    691                                         dm.params.collocation_points=[]
    692                                         dm.params.collocation_ratio=[]
    693                                         dm.params.reuse_samples=False
    694                                         dm.params.expansion_import_file=''
    695                                         dm.params.seed=False
    696                                         dm.params.fixed_seed=False
    697                                         dm.params.samples=0
    698                                         dm.params.sample_type='lhs'
    699                                         dm.params.all_variables=False
    700 
    701                                 elif dm.method == 'nond_stoch_collocation':
    702                                         dm.type     ='nond'
    703                                         dm.variables=['normal_uncertain',
    704                                                                                                 'uniform_uncertain',
    705                                                                                                 'continuous_state']
    706                                         dm.lcspec   =[]
    707                                         dm.responses=['response_function']
    708                                         dm.ghspec   =['grad']
    709                                         #                               not documented, but may work
    710                                         dm.params.output=False
    711                                         dm.params.quadrature_order=[]
    712                                         dm.params.sparse_grid_level=[]
    713                                         dm.params.seed=False
    714                                         dm.params.fixed_seed=False
    715                                         dm.params.samples=0
    716                                         dm.params.sample_type='lhs'
    717                                         dm.params.all_variables=False
    718 
    719                                 elif dm.method == 'nond_evidence':
    720                                         dm.type     ='nond'
    721                                         dm.variables=['normal_uncertain',
    722                                                                                                 'uniform_uncertain',
    723                                                                                                 'continuous_state']
    724                                         dm.lcspec   =[]
    725                                         dm.responses=['response_function']
    726                                         dm.ghspec   =['grad']
    727                                         #                               not documented, but may work
    728                                         dm.params.output=False
    729                                         dm.params.seed=False
    730                                         dm.params.samples=10000
    731 
    732                                 elif dm.method == 'dace':
    733                                         dm.type     ='dace'
    734                                         dm.variables=['continuous_design',
    735                                                                                                 'continuous_state']
    736                                         dm.lcspec   =[]
    737                                         dm.responses=['objective_function',
    738                                                                                                 'response_function']
    739                                         dm.ghspec   =[]
    740                                         dm.params.grid=False
    741                                         dm.params.random=False
    742                                         dm.params.oas=False
    743                                         dm.params.lhs=False
    744                                         dm.params.oa_lhs=False
    745                                         dm.params.box_behnken=False
    746                                         dm.params.central_composite=False
    747                                         dm.params.seed=False
    748                                         dm.params.fixed_seed=False
    749                                         dm.params.samples=False
    750                                         dm.params.symbols=False
    751                                         dm.params.quality_metrics=False
    752                                         dm.params.variance_based_decomp=False
    753 
    754                                 elif dm.method == 'fsu_quasi_mc':
    755                                         dm.type     ='dace'
    756                                         dm.variables=['continuous_design',
    757                                                                                                 'continuous_state']
    758                                         dm.lcspec   =[]
    759                                         dm.responses=['objective_function',
    760                                                                                                 'response_function']
    761                                         dm.ghspec   =[]
    762                                         dm.params.halton=False
    763                                         dm.params.hammersley=False
    764                                         dm.params.samples=0
    765                                         dm.params.sequence_start=[0]
    766                                         dm.params.sequence_leap=[1]
    767                                         dm.params.prime_base=False
    768                                         dm.params.fixed_sequence=False
    769                                         dm.params.latinize=False
    770                                         dm.params.variance_based_decomp=False
    771                                         dm.params.quality_metrics=False
    772 
    773                                 elif dm.method == 'fsu_cvt':
    774                                         dm.type     ='dace'
    775                                         dm.variables=['continuous_design',
    776                                                                                                 'continuous_state']
    777                                         dm.lcspec   =[]
    778                                         dm.responses=['objective_function',
    779                                                                                                 'response_function']
    780                                         dm.ghspec   =[]
    781                                         dm.params.seed=False
    782                                         dm.params.fixed_seed=False
    783                                         dm.params.samples=0
    784                                         dm.params.num_trials=10000
    785                                         dm.params.trial_type='random'
    786                                         dm.params.latinize=False
    787                                         dm.params.variance_based_decomp=False
    788                                         dm.params.quality_metrics=False
    789 
    790                                 elif dm.method == 'vector_parameter_study':
    791                                         dm.type     ='param'
    792                                         dm.variables=['continuous_design',
    793                                                                                                 'normal_uncertain',
    794                                                                                                 'uniform_uncertain',
    795                                                                                                 'continuous_state']
    796                                         dm.lcspec   =[]
    797                                         dm.responses=['objective_function',
    798                                                                                                 'response_function']
    799                                         dm.ghspec   =[]
    800                                         dm.params.output=False
    801                                         dm.params.final_point=[]
    802                                         dm.params.step_length=[]
    803                                         dm.params.num_steps=[]
    804                                         dm.params.step_vector=[]
    805                                         dm.params.num_steps=[]
    806 
    807                                 elif dm.method == 'list_parameter_study':
    808                                         dm.type     ='param'
    809                                         dm.variables=['continuous_design',
    810                                                                                                 'normal_uncertain',
    811                                                                                                 'uniform_uncertain',
    812                                                                                                 'continuous_state']
    813                                         dm.lcspec   =[]
    814                                         dm.responses=['objective_function',
    815                                                                                                 'response_function']
    816                                         dm.ghspec   =[]
    817                                         dm.params.output=False
    818                                         dm.params.list_of_points=[]
    819 
    820                                 elif dm.method == 'centered_parameter_study':
    821                                         dm.type     ='param'
    822                                         dm.variables=['continuous_design',
    823                                                                                                 'normal_uncertain',
    824                                                                                                 'uniform_uncertain',
    825                                                                                                 'continuous_state']
    826                                         dm.lcspec   =[]
    827                                         dm.responses=['objective_function',
    828                                                                                                 'response_function']
    829                                         dm.ghspec   =[]
    830                                         dm.params.output=False
    831                                         dm.params.percent_delta=[]
    832                                         dm.params.deltas_per_variable=[]
    833 
    834                                 elif dm.method == 'multidim_parameter_study':
    835                                         dm.type     ='param'
    836                                         dm.variables=['continuous_design',
    837                                                                                                 'normal_uncertain',
    838                                                                                                 'uniform_uncertain',
    839                                                                                                 'continuous_state']
    840                                         dm.lcspec   =[]
    841                                         dm.responses=['objective_function',
    842                                                                                                 'response_function']
    843                                         dm.ghspec   =[]
    844                                         dm.params.output=False
    845                                         dm.params.partitions=[]
    846 
    847                                 elif dm.method == 'bayes_calibration':
    848                                         dm.type     ='bayes'
    849                                         dm.variables=['continuous_design',
    850                                                                                                 'normal_uncertain',
    851                                                                                                 'uniform_uncertain',
    852                                                                                                 'continuous_state']
    853                                         dm.lcspec   =[]
    854                                         dm.responses=['objective_function',
    855                                                                                                 'response_function',
    856                                                                                                 'calibration_function']
    857                                         dm.ghspec   =[]
    858                                         dm.params.queso=False
    859                                         dm.params.dream=False
    860                                         dm.params.gpmsa=False
    861                                         dm.params.samples=0
    862                                         dm.params.seed=False
    863                                         dm.params.output=False
    864                                         dm.params.metropolis_hastings=False
    865                                         dm.params.proposal_covariance=False
    866                                         dm.params.diagonal=False
    867                                         dm.params.values=[]
    868 
    869                                 else:
    870                                         raise RuntimeError('Unimplemented method: {}.'.format(dm.method))
    871 
    872                 #  if more than one argument, issue warning
    873                 else:
    874                         print('Warning: dakota_method:extra_arg: Extra arguments for object of class '+str(type(dm))+'.')
    875                 return dm
    876 
    877         def __repr__(dm):
    878 
    879                 #  display the object
    880                 string = '\nclass dakota_method object = \n'
    881                 string += '       method: '+str(dm.method) + '\n'
    882                 string += '         type: '+str(dm.type) + '\n'
    883                 string += '    variables: '+str(dm.variables) + '\n'
    884                 string += '       lcspec: '+str(dm.lcspec) + '\n'
    885                 string += '    responses: '+str(dm.responses) + '\n'
    886                 string += '       ghspec: '+str(dm.ghspec) + '\n'
    887 
    888                 #  display the parameters within the object
    889 
    890                 fnames=fieldnames(dm.params)
    891                 #get rid of stuff we aren't using
    892                 try:
    893                         fnames.remove('__module__')
    894                 except ValueError:
    895                         pass
    896 
    897                 maxlen=0
    898                 for i in range(len(fnames)):
    899                         maxlen=max(maxlen,len(fnames[i]))
    900 
    901                 for i in fnames:
    902                         string += '       params.{:{space}s}: {}\n'.format(str(i),str(dm.params.__dict__[i]),space=maxlen+1)
    903                         #params.x   : y
    904                         #with maxlen+1 spaces between x and :
    905                 return string
     46    '''
     47
     48    def __init__(self, *args):
     49        self.method = ''
     50        self.type = ''
     51        self.variables = []
     52        self.lcspec = []
     53        self.responses = []
     54        self.ghspec = []
     55    #properites
     56        self.params = struct()
     57
     58    @staticmethod
     59    def dakota_method(*args):
     60        dm = dakota_method()
     61    #  return a default object
     62        if len(args) == 0:
     63            return dm
     64
     65    #  copy the object or create the object from the input
     66        elif len(args) == 1:
     67            method = args[0]
     68
     69            #given argument was a method, copy it
     70            if isinstance(method, dakota_method):
     71                #dm = method
     72                object = method
     73                for field in object.keys():
     74                    if field in vars(dm):
     75                        setattr(dm, field, object[field])
     76                return dm
     77
     78    #given argument was a way of constructing a method
     79            else:
     80                mlist = ['dot_bfgs',
     81                        'dot_frcg',
     82                        'dot_mmfd',
     83                        'dot_slp',
     84                        'dot_sqp',
     85                        'npsol_sqp',
     86                        'conmin_frcg',
     87                        'conmin_mfd',
     88                        'optpp_cg',
     89                        'optpp_q_newton',
     90                        'optpp_fd_newton',
     91                        'optpp_newton',
     92                        'optpp_pds',
     93                        'asynch_pattern_search',
     94                        'coliny_cobyla',
     95                        'coliny_direct',
     96                        'coliny_ea',
     97                        'coliny_pattern_search',
     98                        'coliny_solis_wets',
     99                        'ncsu_direct',
     100                        'surrogate_based_local',
     101                        'surrogate_based_global',
     102                        'moga',
     103                        'soga',
     104                        'nl2sol',
     105                        'nlssol_sqp',
     106                        'optpp_g_newton',
     107                        'nond_sampling',
     108                        'nond_local_reliability',
     109                        'nond_global_reliability',
     110                        'nond_polynomial_chaos',
     111                        'nond_stoch_collocation',
     112                        'nond_evidence',
     113                        'dace',
     114                        'fsu_quasi_mc',
     115                        'fsu_cvt',
     116                        'vector_parameter_study',
     117                        'list_parameter_study',
     118                        'centered_parameter_study',
     119                        'multidim_parameter_study',
     120                        'bayes_calibration']
     121
     122                mlist2 = []
     123                for i in range(len(mlist)):
     124                    if strncmpi(method, mlist[i], len(method)):
     125                        mlist2.append(mlist[i])
     126    #  check for a unique match in the list of methods
     127                length = len(mlist2)
     128                if length == 0:
     129                    raise RuntimeError('Unrecognized method: ' + str(method) + '.')
     130                elif length == 1:
     131                    dm.method = mlist2[0]
     132                else:
     133                    raise RuntimeError('Non - unique method: ' + str(method) + ' matches ' + string_cell(mlist2))
     134
     135    #  assign the default values for the method
     136    # switch dm.method
     137                if dm.method in ['dot_bfgs', 'dot_frcg']:
     138                    dm.type = 'dot'
     139                    dm.variables = ['continuous_design',
     140                                    'continuous_state']
     141                    dm.lcspec = []
     142                    dm.responses = ['objective_function']
     143                    dm.ghspec = ['grad']
     144                    dm.params.max_iterations = False
     145                    dm.params.max_function_evaluations = False
     146                    dm.params.convergence_tolerance = False
     147                    dm.params.constraint_tolerance = False
     148                    dm.params.output = False
     149                    dm.params.speculative = False
     150                    dm.params.scaling = False
     151                    dm.params.optimization_type = 'minimize'
     152
     153                elif dm.method in ['dot_mmfd', 'dot_slp', 'dot_sqp']:
     154                    dm.type = 'dot'
     155                    dm.variables = ['continuous_design',
     156                                    'continuous_state']
     157                    dm.lcspec = ['linear_inequality_constraint',
     158                                 'linear_equality_constraint']
     159                    dm.responses = ['objective_function',
     160                                    'nonlinear_inequality_constraint',
     161                                    'nonlinear_equality_constraint']
     162                    dm.ghspec = ['grad']
     163                    dm.params.max_iterations = False
     164                    dm.params.max_function_evaluations = False
     165                    dm.params.convergence_tolerance = False
     166                    dm.params.constraint_tolerance = False
     167                    dm.params.output = False
     168                    dm.params.speculative = False
     169                    dm.params.scaling = False
     170                    dm.params.optimization_type = 'minimize'
     171
     172                elif dm.method == 'npsol_sqp':
     173                    dm.type = 'npsol'
     174                    dm.variables = ['continuous_design',
     175                                    'continuous_state']
     176                    dm.lcspec = ['linear_inequality_constraint',
     177                                 'linear_equality_constraint']
     178                    dm.responses = ['objective_function',
     179                                    'nonlinear_inequality_constraint',
     180                                    'nonlinear_equality_constraint']
     181                    dm.ghspec = ['grad']
     182                    dm.params.max_iterations = False
     183                    dm.params.max_function_evaluations = False
     184                    dm.params.convergence_tolerance = False
     185                    dm.params.constraint_tolerance = False
     186                    dm.params.output = False
     187                    dm.params.speculative = False
     188                    dm.params.scaling = False
     189                    dm.params.verify_level = -1
     190                    dm.params.function_precision = 1.0e-10
     191                    dm.params.linesearch_tolerance = 0.9
     192
     193                elif dm.method == 'conmin_frcg':
     194                    dm.type = 'conmin'
     195                    dm.variables = ['continuous_design',
     196                                    'continuous_state']
     197                    dm.lcspec = []
     198                    dm.responses = ['objective_function']
     199                    dm.ghspec = ['grad']
     200                    dm.params.max_iterations = False
     201                    dm.params.max_function_evaluations = False
     202                    dm.params.convergence_tolerance = False
     203                    dm.params.constraint_tolerance = False
     204                    dm.params.output = False
     205                    dm.params.speculative = False
     206                    dm.params.scaling = False
     207
     208                elif dm.method == 'conmin_mfd':
     209                    dm.type = 'conmin'
     210                    dm.variables = ['continuous_design',
     211                                    'continuous_state']
     212                    dm.lcspec = ['linear_inequality_constraint',
     213                                 'linear_equality_constraint']
     214                    dm.responses = ['objective_function',
     215                                    'nonlinear_inequality_constraint',
     216                                    'nonlinear_equality_constraint']
     217                    dm.ghspec = ['grad']
     218                    dm.params.max_iterations = False
     219                    dm.params.max_function_evaluations = False
     220                    dm.params.convergence_tolerance = False
     221                    dm.params.constraint_tolerance = False
     222                    dm.params.output = False
     223                    dm.params.speculative = False
     224                    dm.params.scaling = False
     225
     226                elif dm.method == 'optpp_cg':
     227                    dm.type = 'optpp'
     228                    dm.variables = ['continuous_design',
     229                                    'continuous_state']
     230                    dm.lcspec = []
     231                    dm.responses = ['objective_function']
     232                    dm.ghspec = ['grad']
     233                    dm.params.max_iterations = False
     234                    dm.params.max_function_evaluations = False
     235                    dm.params.convergence_tolerance = False
     236                    dm.params.output = False
     237                    dm.params.speculative = False
     238                    dm.params.scaling = False
     239                    dm.params.max_step = 1000.
     240                    dm.params.gradient_tolerance = 1.0e-4
     241
     242                elif dm.method in ['optpp_q_newton',
     243                                  'optpp_fd_newton',
     244                                  'optpp_newton']:
     245                    dm.type = 'optpp'
     246                    dm.variables = ['continuous_design',
     247                                    'continuous_state']
     248                    dm.lcspec = ['linear_inequality_constraint',
     249                                 'linear_equality_constraint']
     250                    dm.responses = ['objective_function',
     251                                    'nonlinear_inequality_constraint',
     252                                    'nonlinear_equality_constraint']
     253                    dm.ghspec = ['grad']
     254                    dm.params.max_iterations = False
     255                    dm.params.max_function_evaluations = False
     256                    dm.params.convergence_tolerance = False
     257                    dm.params.output = False
     258                    dm.params.speculative = False
     259                    dm.params.scaling = False
     260                    dm.params.value_based_line_search = False
     261                    dm.params.gradient_based_line_search = False
     262                    dm.params.trust_region = False
     263                    dm.params.tr_pds = False
     264                    dm.params.max_step = 1000.
     265                    dm.params.gradient_tolerance = 1.0e-4
     266                    dm.params.merit_function = 'argaez_tapia'
     267                    dm.params.central_path = dm.params.merit_function
     268                    dm.params.steplength_to_boundary = 0.99995
     269                    dm.params.centering_parameter = 0.2
     270
     271                elif dm.method == 'optpp_pds':
     272                    dm.type = 'optpp'
     273                    dm.variables = ['continuous_design',
     274                                    'continuous_state']
     275                    dm.lcspec = []
     276                    dm.responses = ['objective_function']
     277                    dm.ghspec = ['grad']
     278                    dm.params.max_iterations = False
     279                    dm.params.max_function_evaluations = False
     280                    dm.params.convergence_tolerance = False
     281                    dm.params.output = False
     282                    dm.params.speculative = False
     283                    dm.params.scaling = False
     284                    dm.params.search_scheme_size = 32
     285
     286                elif dm.method == 'asynch_pattern_search':
     287                    dm.type = 'apps'
     288                    dm.variables = ['continuous_design',
     289                                    'continuous_state']
     290                    dm.lcspec = ['linear_inequality_constraint',
     291                                 'linear_equality_constraint']
     292                    dm.responses = ['objective_function',
     293                                    'nonlinear_inequality_constraint',
     294                                    'nonlinear_equality_constraint']
     295                    dm.ghspec = ['grad']
     296                    dm.params.max_function_evaluations = False
     297                    dm.params.constraint_tolerance = False
     298                    dm.params.output = False
     299                    dm.params.scaling = False
     300                    dm.params.initial_delta = 1.0
     301                    dm.params.threshold_delta = 0.01
     302                    dm.params.contraction_factor = 0.5
     303                    dm.params.solution_target = False
     304                    dm.params.synchronization = 'nonblocking'
     305                    dm.params.merit_function = 'merit2_smooth'
     306                    dm.params.constraint_penalty = 1.0
     307                    dm.params.smoothing_factor = 1.0
     308
     309                elif dm.method == 'coliny_cobyla':
     310                    dm.type = 'coliny'
     311                    dm.variables = ['continuous_design',
     312                                    'continuous_state']
     313                    dm.lcspec = []
     314                    dm.responses = ['objective_function',
     315                                    'nonlinear_inequality_constraint',
     316                                    'nonlinear_equality_constraint']
     317                    dm.ghspec = ['grad']
     318                    dm.params.max_iterations = False
     319                    dm.params.max_function_evaluations = False
     320                    dm.params.convergence_tolerance = False
     321                    dm.params.output = False
     322                    dm.params.scaling = False
     323                    dm.params.show_misc_options = False
     324                    dm.params.misc_options = []
     325                    dm.params.solution_accuracy = -np.inf
     326                    dm.params.initial_delta = []
     327                    dm.params.threshold_delta = []
     328
     329                elif dm.method == 'coliny_direct':
     330                    dm.type = 'coliny'
     331                    dm.variables = ['continuous_design',
     332                                    'continuous_state']
     333                    dm.lcspec = []
     334                    dm.responses = ['objective_function',
     335                                    'nonlinear_inequality_constraint',
     336                                    'nonlinear_equality_constraint']
     337                    dm.ghspec = ['grad']
     338                    dm.params.max_iterations = False
     339                    dm.params.max_function_evaluations = False
     340                    dm.params.convergence_tolerance = False
     341                    dm.params.output = False
     342                    dm.params.scaling = False
     343                    dm.params.show_misc_options = False
     344                    dm.params.misc_options = []
     345                    dm.params.solution_accuracy = -np.inf
     346                    dm.params.division = 'major_dimension'
     347                    dm.params.global_balance_parameter = 0.0
     348                    dm.params.local_balance_parameter = 1.0e-8
     349                    dm.params.max_boxsize_limit = 0.0
     350                    dm.params.min_boxsize_limit = 0.0001
     351                    dm.params.constraint_penalty = 1000.0
     352
     353                elif dm.method == 'coliny_ea':
     354                    dm.type = 'coliny'
     355                    dm.variables = ['continuous_design',
     356                                    'continuous_state']
     357                    dm.lcspec = []
     358                    dm.responses = ['objective_function',
     359                                    'nonlinear_inequality_constraint',
     360                                    'nonlinear_equality_constraint']
     361                    dm.ghspec = ['grad']
     362                    dm.params.max_iterations = False
     363                    dm.params.max_function_evaluations = False
     364                    dm.params.convergence_tolerance = False
     365                    dm.params.output = False
     366                    dm.params.scaling = False
     367                    dm.params.show_misc_options = False
     368                    dm.params.misc_options = []
     369                    dm.params.solution_accuracy = -np.inf
     370                    dm.params.seed = False
     371                    dm.params.population_size = 50
     372                    dm.params.initialization_type = 'unique_random'
     373                    dm.params.fitness_type = 'linear_rank'
     374                    dm.params.replacement_type = 'elitist'
     375                    dm.params.random = []
     376                    dm.params.chc = []
     377                    dm.params.elitist = []
     378                    dm.params.new_solutions_generated = 'population_size-replacement_size'
     379                    dm.params.crossover_type = 'two_point'
     380                    dm.params.crossover_rate = 0.8
     381                    dm.params.mutation_type = 'offset_normal'
     382                    dm.params.mutation_scale = 0.1
     383                    dm.params.mutation_range = 1
     384                    dm.params.dimension_ratio = 1.0
     385                    dm.params.mutation_rate = 1.0
     386                    dm.params.non_adaptive = False
     387
     388                elif dm.method == 'coliny_pattern_search':
     389                    dm.type = 'coliny'
     390                    dm.variables = ['continuous_design',
     391                                    'continuous_state']
     392                    dm.lcspec = []
     393                    dm.responses = ['objective_function',
     394                                    'nonlinear_inequality_constraint',
     395                                    'nonlinear_equality_constraint']
     396                    dm.ghspec = ['grad']
     397                    dm.params.max_iterations = False
     398                    dm.params.max_function_evaluations = False
     399                    dm.params.convergence_tolerance = False
     400                    dm.params.output = False
     401                    dm.params.scaling = False
     402                    dm.params.show_misc_options = False
     403                    dm.params.misc_options = []
     404                    dm.params.solution_accuracy = - np.inf
     405                    dm.params.stochastic = False
     406                    dm.params.seed = False
     407                    dm.params.initial_delta = []
     408                    dm.params.threshold_delta = []
     409                    dm.params.constraint_penalty = 1.0
     410                    dm.params.constant_penalty = False
     411                    dm.params.pattern_basis = 'coordinate'
     412                    dm.params.total_pattern_size = False
     413                    dm.params.no_expansion = False
     414                    dm.params.expand_after_success = 1
     415                    dm.params.contraction_factor = 0.5
     416                    dm.params.synchronization = 'nonblocking'
     417                    dm.params.exploratory_moves = 'basic_pattern'
     418
     419                elif dm.method == 'coliny_solis_wets':
     420                    dm.type = 'coliny'
     421                    dm.variables = ['continuous_design',
     422                                    'continuous_state']
     423                    dm.lcspec = []
     424                    dm.responses = ['objective_function',
     425                                    'nonlinear_inequality_constraint',
     426                                    'nonlinear_equality_constraint']
     427                    dm.ghspec = ['grad']
     428                    dm.params.max_iterations = False
     429                    dm.params.max_function_evaluations = False
     430                    dm.params.convergence_tolerance = False
     431                    dm.params.output = False
     432                    dm.params.scaling = False
     433                    dm.params.show_misc_options = False
     434                    dm.params.misc_options = []
     435                    dm.params.solution_accuracy = -np.inf
     436                    dm.params.seed = False
     437                    dm.params.initial_delta = []
     438                    dm.params.threshold_delta = []
     439                    dm.params.no_expansion = False
     440                    dm.params.expand_after_success = 5
     441                    dm.params.contract_after_failure = 3
     442                    dm.params.contraction_factor = 0.5
     443                    dm.params.constraint_penalty = 1.0
     444                    dm.params.constant_penalty = False
     445
     446                elif dm.method == 'ncsu_direct':
     447                    dm.type = 'ncsu'
     448                    dm.variables = ['continuous_design',
     449                                    'continuous_state']
     450                    dm.lcspec = ['linear_inequality_constraint',
     451                                 'linear_equality_constraint']  #  ?
     452                    dm.responses = ['objective_function',
     453                                    'nonlinear_inequality_constraint',
     454                                    'nonlinear_equality_constraint']  #  ?
     455                    dm.ghspec = ['grad']
     456                    dm.params.max_iterations = False
     457                    dm.params.max_function_evaluations = False
     458                    dm.params.scaling = False
     459                    dm.params.solution_accuracy = 0.
     460                    dm.params.min_boxsize_limit = 1.0e-8
     461                    dm.params.vol_boxsize_limit = 1.0e-8
     462
     463    #if dm.method in ['surrogate_based_local',
     464    #'surrogate_based_global']:
     465
     466                elif dm.method == 'moga':
     467                    dm.type = 'jega'
     468                    dm.variables = ['continuous_design',
     469                                    'continuous_state']
     470                    dm.lcspec = ['linear_inequality_constraint',
     471                                 'linear_equality_constraint']
     472                    dm.responses = ['objective_function',
     473                                    'nonlinear_inequality_constraint',
     474                                    'nonlinear_equality_constraint']
     475                    dm.ghspec = ['grad']
     476                    dm.params.max_iterations = False
     477                    dm.params.max_function_evaluations = False
     478                    dm.params.output = False
     479                    dm.params.scaling = False
     480                    dm.params.seed = False
     481                    dm.params.log_file = 'JEGAGlobal.log'
     482                    dm.params.population_size = 50
     483                    dm.params.print_each_pop = False
     484    #according to documentation, uses method - indepent control
     485    #dm.params.output = 'normal'
     486                    dm.params.initialization_type = 'unique_random'
     487                    dm.params.mutation_type = 'replace_uniform'
     488                    dm.params.mutation_scale = 0.15
     489                    dm.params.mutation_rate = 0.08
     490                    dm.params.replacement_type = ''
     491                    dm.params.below_limit = 6
     492                    dm.params.shrinkage_percentage = 0.9
     493                    dm.params.crossover_type = 'shuffle_random'
     494                    dm.params.multi_point_binary = []
     495                    dm.params.multi_point_parameterized_binary = []
     496                    dm.params.multi_point_real = []
     497                    dm.params.shuffle_random = []
     498                    dm.params.num_parents = 2
     499                    dm.params.num_offspring = 2
     500                    dm.params.crossover_rate = 0.8
     501                    dm.params.fitness_type = ''
     502                    dm.params.niching_type = False
     503                    dm.params.radial = [0.01]
     504                    dm.params.distance = [0.01]
     505                    dm.params.metric_tracker = False
     506                    dm.params.percent_change = 0.1
     507                    dm.params.num_generations = 10
     508                    dm.params.postprocessor_type = False
     509                    dm.params.orthogonal_distance = [0.01]
     510
     511                elif dm.method == 'soga':
     512                    dm.type = 'jega'
     513                    dm.variables = ['continuous_design',
     514                                    'continuous_state']
     515                    dm.lcspec = ['linear_inequality_constraint',
     516                                 'linear_equality_constraint']
     517                    dm.responses = ['objective_function',
     518                                    'nonlinear_inequality_constraint',
     519                                    'nonlinear_equality_constraint']
     520                    dm.ghspec = ['grad']
     521                    dm.params.max_iterations = False
     522                    dm.params.max_function_evaluations = False
     523                    dm.params.output = False
     524                    dm.params.scaling = False
     525                    dm.params.seed = False
     526                    dm.params.log_file = 'JEGAGlobal.log'
     527                    dm.params.population_size = 50
     528                    dm.params.print_each_pop = False
     529                    dm.params.output = 'normal'
     530                    dm.params.initialization_type = 'unique_random'
     531                    dm.params.mutation_type = 'replace_uniform'
     532                    dm.params.mutation_scale = 0.15
     533                    dm.params.mutation_rate = 0.08
     534                    dm.params.replacement_type = ''
     535                    dm.params.below_limit = 6
     536                    dm.params.shrinkage_percentage = 0.9
     537                    dm.params.crossover_type = 'shuffle_random'
     538                    dm.params.multi_point_binary = []
     539                    dm.params.multi_point_parameterized_binary = []
     540                    dm.params.multi_point_real = []
     541                    dm.params.shuffle_random = []
     542                    dm.params.num_parents = 2
     543                    dm.params.num_offspring = 2
     544                    dm.params.crossover_rate = 0.8
     545                    dm.params.fitness_type = 'merit_function'
     546                    dm.params.constraint_penalty = 1.0
     547                    dm.params.replacement_type = ''
     548                    dm.params.convergence_type = False
     549                    dm.params.num_generations = 10
     550                    dm.params.percent_change = 0.1
     551
     552                elif dm.method == 'nl2sol':
     553                    dm.type = 'lsq'
     554                    dm.variables = ['continuous_design',
     555                                    'continuous_state']
     556                    dm.lcspec = []
     557                    dm.responses = ['least_squares_term']
     558                    dm.ghspec = ['grad']
     559                    dm.params.max_iterations = False
     560                    dm.params.max_function_evaluations = False
     561                    dm.params.convergence_tolerance = False
     562                    dm.params.output = False
     563                    dm.params.scaling = False
     564                    dm.params.function_precision = 1.0e-10
     565                    dm.params.absolute_conv_tol = -1.
     566                    dm.params.x_conv_tol = -1.
     567                    dm.params.singular_conv_tol = -1.
     568                    dm.params.singular_radius = -1.
     569                    dm.params.False_conv_tol = -1.
     570                    dm.params.initial_trust_radius = -1.
     571                    dm.params.covariance = 0
     572                    dm.params.regression_stressbalances = False
     573
     574                elif dm.method == 'nlssol_sqp':
     575                    dm.type = 'lsq'
     576                    dm.variables = ['continuous_design',
     577                                    'continuous_state']
     578                    dm.lcspec = ['linear_inequality_constraint',
     579                                 'linear_equality_constraint']
     580                    dm.responses = ['least_squares_term',
     581                                    'nonlinear_inequality_constraint',
     582                                    'nonlinear_equality_constraint']
     583                    dm.ghspec = ['grad']
     584                    dm.params.max_iterations = False
     585                    dm.params.max_function_evaluations = False
     586                    dm.params.convergence_tolerance = False
     587                    dm.params.constraint_tolerance = False
     588                    dm.params.output = False
     589                    dm.params.speculative = False
     590                    dm.params.scaling = False
     591                    dm.params.verify_level = -1
     592                    dm.params.function_precision = 1.0e-10
     593                    dm.params.linesearch_tolerance = 0.9
     594
     595                elif dm.method == 'optpp_g_newton':
     596                    dm.type = 'lsq'
     597                    dm.variables = ['continuous_design',
     598                                    'continuous_state']
     599                    dm.lcspec = ['linear_inequality_constraint',
     600                                 'linear_equality_constraint']
     601                    dm.responses = ['least_squares_term',
     602                                    'nonlinear_inequality_constraint',
     603                                    'nonlinear_equality_constraint']
     604                    dm.ghspec = ['grad']
     605                    dm.params.max_iterations = False
     606                    dm.params.max_function_evaluations = False
     607                    dm.params.convergence_tolerance = False
     608                    dm.params.output = False
     609                    dm.params.speculative = False
     610                    dm.params.scaling = False
     611                    dm.params.value_based_line_search = False
     612                    dm.params.gradient_based_line_search = False
     613                    dm.params.trust_region = False
     614                    dm.params.tr_pds = False
     615                    dm.params.max_step = 1000.
     616                    dm.params.gradient_tolerance = 1.0e-4
     617                    dm.params.merit_function = 'argaez_tapia'
     618                    dm.params.central_path = dm.params.merit_function
     619                    dm.params.steplength_to_boundary = 0.99995
     620                    dm.params.centering_parameter = 0.2
     621
     622                elif dm.method == 'nond_sampling':
     623                    dm.type = 'nond'
     624                    dm.variables = ['normal_uncertain',
     625                                    'uniform_uncertain',
     626                                    'continuous_state']
     627                    dm.lcspec = []
     628                    dm.responses = ['response_function']
     629                    dm.ghspec = []
     630    #                               not documented, but apparently works
     631                    dm.params.output = False
     632                    dm.params.seed = False
     633                    dm.params.fixed_seed = False
     634                    dm.params.rng = False
     635                    dm.params.samples = False
     636                    dm.params.sample_type = 'lhs'
     637                    dm.params.all_variables = False
     638                    dm.params.variance_based_decomp = False
     639                    dm.params.previous_samples = 0
     640
     641                elif dm.method == 'nond_local_reliability':
     642                    dm.type = 'nond'
     643                    dm.variables = ['normal_uncertain',
     644                                    'uniform_uncertain',
     645                                    'continuous_state']
     646                    dm.lcspec = []
     647                    dm.responses = ['response_function']
     648                    dm.ghspec = ['grad']
     649    #                               not documented, but may work
     650                    dm.params.output = False
     651                    dm.params.max_iterations = False
     652                    dm.params.convergence_tolerance = False
     653                    dm.params.mpp_search = False
     654                    dm.params.sqp = False
     655                    dm.params.nip = False
     656                    dm.params.integration = 'first_order'
     657                    dm.params.refinement = False
     658                    dm.params.samples = 0
     659                    dm.params.seed = False
     660
     661                elif dm.method == 'nond_global_reliability':
     662                    dm.type = 'nond'
     663                    dm.variables = ['normal_uncertain',
     664                                    'uniform_uncertain',
     665                                    'continuous_state']
     666                    dm.lcspec = []
     667                    dm.responses = ['response_function']
     668                    dm.ghspec = ['grad']
     669    #                               not documented, but may work
     670                    dm.params.output = False
     671                    dm.params.x_gaussian_process = False
     672                    dm.params.u_gaussian_process = False
     673                    dm.params.all_variables = False
     674                    dm.params.seed = False
     675
     676                elif dm.method == 'nond_polynomial_chaos':
     677                    dm.type = 'nond'
     678                    dm.variables = ['normal_uncertain',
     679                                    'uniform_uncertain',
     680                                    'continuous_state']
     681                    dm.lcspec = []
     682                    dm.responses = ['response_function']
     683                    dm.ghspec = ['grad']
     684    #                               not documented, but may work
     685                    dm.params.output = False
     686                    dm.params.expansion_order = []
     687                    dm.params.expansion_terms = []
     688                    dm.params.quadrature_order = []
     689                    dm.params.sparse_grid_level = []
     690                    dm.params.expansion_samples = []
     691                    dm.params.incremental_lhs = False
     692                    dm.params.collocation_points = []
     693                    dm.params.collocation_ratio = []
     694                    dm.params.reuse_samples = False
     695                    dm.params.expansion_import_file = ''
     696                    dm.params.seed = False
     697                    dm.params.fixed_seed = False
     698                    dm.params.samples = 0
     699                    dm.params.sample_type = 'lhs'
     700                    dm.params.all_variables = False
     701
     702                elif dm.method == 'nond_stoch_collocation':
     703                    dm.type = 'nond'
     704                    dm.variables = ['normal_uncertain',
     705                                    'uniform_uncertain',
     706                                    'continuous_state']
     707                    dm.lcspec = []
     708                    dm.responses = ['response_function']
     709                    dm.ghspec = ['grad']
     710    #                               not documented, but may work
     711                    dm.params.output = False
     712                    dm.params.quadrature_order = []
     713                    dm.params.sparse_grid_level = []
     714                    dm.params.seed = False
     715                    dm.params.fixed_seed = False
     716                    dm.params.samples = 0
     717                    dm.params.sample_type = 'lhs'
     718                    dm.params.all_variables = False
     719
     720                elif dm.method == 'nond_evidence':
     721                    dm.type = 'nond'
     722                    dm.variables = ['normal_uncertain',
     723                                    'uniform_uncertain',
     724                                    'continuous_state']
     725                    dm.lcspec = []
     726                    dm.responses = ['response_function']
     727                    dm.ghspec = ['grad']
     728    #                               not documented, but may work
     729                    dm.params.output = False
     730                    dm.params.seed = False
     731                    dm.params.samples = 10000
     732
     733                elif dm.method == 'dace':
     734                    dm.type = 'dace'
     735                    dm.variables = ['continuous_design',
     736                                    'continuous_state']
     737                    dm.lcspec = []
     738                    dm.responses = ['objective_function',
     739                                    'response_function']
     740                    dm.ghspec = []
     741                    dm.params.grid = False
     742                    dm.params.random = False
     743                    dm.params.oas = False
     744                    dm.params.lhs = False
     745                    dm.params.oa_lhs = False
     746                    dm.params.box_behnken = False
     747                    dm.params.central_composite = False
     748                    dm.params.seed = False
     749                    dm.params.fixed_seed = False
     750                    dm.params.samples = False
     751                    dm.params.symbols = False
     752                    dm.params.quality_metrics = False
     753                    dm.params.variance_based_decomp = False
     754
     755                elif dm.method == 'fsu_quasi_mc':
     756                    dm.type = 'dace'
     757                    dm.variables = ['continuous_design',
     758                                    'continuous_state']
     759                    dm.lcspec = []
     760                    dm.responses = ['objective_function',
     761                                    'response_function']
     762                    dm.ghspec = []
     763                    dm.params.halton = False
     764                    dm.params.hammersley = False
     765                    dm.params.samples = 0
     766                    dm.params.sequence_start = [0]
     767                    dm.params.sequence_leap = [1]
     768                    dm.params.prime_base = False
     769                    dm.params.fixed_sequence = False
     770                    dm.params.latinize = False
     771                    dm.params.variance_based_decomp = False
     772                    dm.params.quality_metrics = False
     773
     774                elif dm.method == 'fsu_cvt':
     775                    dm.type = 'dace'
     776                    dm.variables = ['continuous_design',
     777                                    'continuous_state']
     778                    dm.lcspec = []
     779                    dm.responses = ['objective_function',
     780                                    'response_function']
     781                    dm.ghspec = []
     782                    dm.params.seed = False
     783                    dm.params.fixed_seed = False
     784                    dm.params.samples = 0
     785                    dm.params.num_trials = 10000
     786                    dm.params.trial_type = 'random'
     787                    dm.params.latinize = False
     788                    dm.params.variance_based_decomp = False
     789                    dm.params.quality_metrics = False
     790
     791                elif dm.method == 'vector_parameter_study':
     792                    dm.type = 'param'
     793                    dm.variables = ['continuous_design',
     794                                    'normal_uncertain',
     795                                    'uniform_uncertain',
     796                                    'continuous_state']
     797                    dm.lcspec = []
     798                    dm.responses = ['objective_function',
     799                                    'response_function']
     800                    dm.ghspec = []
     801                    dm.params.output = False
     802                    dm.params.final_point = []
     803                    dm.params.step_length = []
     804                    dm.params.num_steps = []
     805                    dm.params.step_vector = []
     806                    dm.params.num_steps = []
     807
     808                elif dm.method == 'list_parameter_study':
     809                    dm.type = 'param'
     810                    dm.variables = ['continuous_design',
     811                                    'normal_uncertain',
     812                                    'uniform_uncertain',
     813                                    'continuous_state']
     814                    dm.lcspec = []
     815                    dm.responses = ['objective_function',
     816                                    'response_function']
     817                    dm.ghspec = []
     818                    dm.params.output = False
     819                    dm.params.list_of_points = []
     820
     821                elif dm.method == 'centered_parameter_study':
     822                    dm.type = 'param'
     823                    dm.variables = ['continuous_design',
     824                                    'normal_uncertain',
     825                                    'uniform_uncertain',
     826                                    'continuous_state']
     827                    dm.lcspec = []
     828                    dm.responses = ['objective_function',
     829                                    'response_function']
     830                    dm.ghspec = []
     831                    dm.params.output = False
     832                    dm.params.percent_delta = []
     833                    dm.params.deltas_per_variable = []
     834
     835                elif dm.method == 'multidim_parameter_study':
     836                    dm.type = 'param'
     837                    dm.variables = ['continuous_design',
     838                                    'normal_uncertain',
     839                                    'uniform_uncertain',
     840                                    'continuous_state']
     841                    dm.lcspec = []
     842                    dm.responses = ['objective_function',
     843                                    'response_function']
     844                    dm.ghspec = []
     845                    dm.params.output = False
     846                    dm.params.partitions = []
     847
     848                elif dm.method == 'bayes_calibration':
     849                    dm.type = 'bayes'
     850                    dm.variables = ['continuous_design',
     851                                    'normal_uncertain',
     852                                    'uniform_uncertain',
     853                                    'continuous_state']
     854                    dm.lcspec = []
     855                    dm.responses = ['objective_function',
     856                                    'response_function',
     857                                    'calibration_function']
     858                    dm.ghspec = []
     859                    dm.params.queso = False
     860                    dm.params.dream = False
     861                    dm.params.gpmsa = False
     862                    dm.params.samples = 0
     863                    dm.params.seed = False
     864                    dm.params.output = False
     865                    dm.params.metropolis_hastings = False
     866                    dm.params.proposal_covariance = False
     867                    dm.params.diagonal = False
     868                    dm.params.values = []
     869
     870                else:
     871                    raise RuntimeError('Unimplemented method: {}.'.format(dm.method))
     872
     873    #  if more than one argument, issue warning
     874        else:
     875            print('Warning: dakota_method:extra_arg: Extra arguments for object of class ' + str(type(dm)) + '.')
     876        return dm
     877
     878    def __repr__(dm):
     879
     880        #  display the object
     881        string = '\nclass dakota_method object = \n'
     882        string += '       method: ' + str(dm.method) + '\n'
     883        string += '         type: ' + str(dm.type) + '\n'
     884        string += '    variables: ' + str(dm.variables) + '\n'
     885        string += '       lcspec: ' + str(dm.lcspec) + '\n'
     886        string += '    responses: ' + str(dm.responses) + '\n'
     887        string += '       ghspec: ' + str(dm.ghspec) + '\n'
     888
     889    #  display the parameters within the object
     890
     891        fnames = fieldnames(dm.params)
     892    #get rid of stuff we aren't using
     893        try:
     894            fnames.remove('__module__')
     895        except ValueError:
     896            pass
     897
     898        maxlen = 0
     899        for i in range(len(fnames)):
     900            maxlen = max(maxlen, len(fnames[i]))
     901
     902        for i in fnames:
     903            string += '       params.{:{space}s}: {}\n'.format(str(i), str(dm.params.__dict__[i]), space=maxlen + 1)
     904    #params.x   : y
     905    #with maxlen + 1 spaces between x and :
     906        return string
  • issm/trunk-jpl/src/m/classes/qmu/@dakota_method/dmeth_params_set.py

    r23716 r24213  
    22from dakota_method import *
    33
    4 def dmeth_params_set(dm,*args):
    5 #
    6 #  set parameters of a dakota_method object.
    7 #
    8 #  dm=dmeth_params_set(dm,*args)
    9 #
    104
    11         if not isinstance(dm,dakota_method):
    12                 raise RuntimeError('Provided object is a \''+str(type(dm))+'\' class object, not \'dakota_method\'')
     5def dmeth_params_set(dm, *args):
     6    #
     7    #  set parameters of a dakota_method object.
     8    #
     9    #  dm = dmeth_params_set(dm, *args)
     10    #
    1311
    14         #  loop through each parameter field in the input list
    15         for i in range(0,len(args),2):
    16                 if isfield(dm.params,args[i]):
    17                         #vars(dresp)[fnames[i]]
    18                         exec(('dm.params.%s = args[i+1]')%(args[i]))
    19                         #vars(dm.params)[args[i]]=args[i+1]
    20                 else:
    21                         print('WARNING: dmeth_params_set:unknown_param No parameter \''+str(args[i])+'\' for dakota_method \''+str(dm.method)+'\'.')
     12    if not isinstance(dm, dakota_method):
     13        raise RuntimeError('Provided object is a \'' + str(type(dm)) + '\' class object, not \'dakota_method\'')
    2214
    23         return dm
     15    #  loop through each parameter field in the input list
     16    for i in range(0, len(args), 2):
     17        if isfield(dm.params, args[i]):
     18            #vars(dresp)[fnames[i]]
     19            exec(('dm.params.%s = args[i + 1]') % (args[i]))
     20    #vars(dm.params)[args[i]] = args[i + 1]
     21        else:
     22            print('WARNING: dmeth_params_set:unknown_param No parameter \'' + str(args[i]) + '\' for dakota_method \'' + str(dm.method) + '\'.')
     23
     24    return dm
  • issm/trunk-jpl/src/m/classes/qmu/@dakota_method/dmeth_params_write.py

    r23716 r24213  
    22from MatlabFuncs import *
    33from IssmConfig import *
    4 
    54#move this later:
    65from helpers import *
    76
    8 #
    9 #  write the parameters from a dakota_method object.
    10 #
    11 #  []=dmeth_params_write(dm,fid,sbeg)
    12 #
    13 def dmeth_params_write(dm,fid,sbeg='\t  '):
    14 
    15         if not isinstance(dm,dakota_method):
    16                 raise RuntimeError('Object '+str(dm)+' is a '+type(dm)+' class object, not <dakota_method>.')
    17 
    18         if sbeg == None or sbeg =='':
    19                 sbeg='\t  '
    20 
    21         #  perform some error checking, but leave the rest to dakota.
    22         #  unfortunately this prevents merely looping through the fields
    23         #  of the parameters structure.
    24 
    25         #  write method-indepent controls
    26 
    27         # param_write(fid,sbeg,'id_method','                = ','\n',dm.params)
    28         # param_write(fid,sbeg,'model_pointer','            = ','\n',dm.params)
    29 
    30         #  write method-depent controls
    31 
    32         #switch dm.type
    33         if dm.type == 'dot':
    34                 param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params)
    35                 param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params)
    36                 param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params)
    37                 param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params)
    38                 param_write(fid,sbeg,'output',' ','\n',dm.params)
    39                 param_write(fid,sbeg,'speculative','','\n',dm.params)
    40                 param_write(fid,sbeg,'scaling','','\n',dm.params)
    41                 #switch dm.method
    42                 if dm.method in ['dot_bfgs',
    43                                                                                  'dot_frcg',
    44                                                                                  'dot_mmfd',
    45                                                                                  'dot_slp',
    46                                                                                  'dot_sqp']:
    47                         param_write(fid,sbeg,'optimization_type',' = ','\n',dm.params)
    48 
    49                 else:
    50                         raise RuntimeError('Unrecognized '+dm.type+' method: '+dm.method+'.')
    51 
    52         elif dm.type == 'npsol':
    53                 param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params)
    54                 param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params)
    55                 param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params)
    56                 param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params)
    57                 param_write(fid,sbeg,'output',' ','\n',dm.params)
    58                 param_write(fid,sbeg,'speculative','','\n',dm.params)
    59                 param_write(fid,sbeg,'scaling','','\n',dm.params)
    60                 #switch dm.method
    61                 if dm.method == 'npsol_sqp':
    62                         param_write(fid,sbeg,'verify_level','         = ','\n',dm.params)
    63                         param_write(fid,sbeg,'function_precision','   = ','\n',dm.params)
    64                         param_write(fid,sbeg,'linesearch_tolerance',' = ','\n',dm.params)
    65 
    66                 else:
    67                         raise RuntimeError('Unrecognized '+dm.type+' method: '+dm.method+'.')
    68 
    69         elif dm.type == 'conmin':
    70                 param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params)
    71                 param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params)
    72                 param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params)
    73                 param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params)
    74                 param_write(fid,sbeg,'output',' ','\n',dm.params)
    75                 param_write(fid,sbeg,'speculative','','\n',dm.params)
    76                 param_write(fid,sbeg,'scaling','','\n',dm.params)
    77                 #switch dm.method
    78                 if dm.method in ['conmin_frcg','conmin_mfd']:
    79                         pass
    80                 else:
    81                         raise RuntimeError('Unrecognized '+dm.type+' method: '+dm.method+'.')
    82 
    83         elif dm.type == 'optpp':
    84                 param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params)
    85                 param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params)
    86                 param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params)
    87                 param_write(fid,sbeg,'output',' ','\n',dm.params)
    88                 param_write(fid,sbeg,'speculative','','\n',dm.params)
    89                 param_write(fid,sbeg,'scaling','','\n',dm.params)
    90                 #switch dm.method
    91                 if dm.method == 'optpp_cg':
    92                         param_write(fid,sbeg,'max_step','           = ','\n',dm.params)
    93                         param_write(fid,sbeg,'gradient_tolerance',' = ','\n',dm.params)
    94 
    95                 elif dm.method in ['optpp_q_newton','optpp_fd_newton','optpp_newton']:
    96                         if (dm.params.value_based_line_search +
    97                                         dm.params.gradient_based_line_search +
    98                                         dm.params.trust_region +
    99                                         dm.params.tr_pds > 1):
    100                                 raise RuntimeError('#s'' method must have only one algorithm.',
    101                                                                                                          dm.method)
    102                         param_write(fid,sbeg,'value_based_line_search','','\n',dm.params)
    103                         param_write(fid,sbeg,'gradient_based_line_search','','\n',dm.params)
    104                         param_write(fid,sbeg,'trust_region','','\n',dm.params)
    105                         param_write(fid,sbeg,'tr_pds','','\n',dm.params)
    106                         param_write(fid,sbeg,'max_step','               = ','\n',dm.params)
    107                         param_write(fid,sbeg,'gradient_tolerance','     = ','\n',dm.params)
    108                         param_write(fid,sbeg,'merit_function','         = ','\n',dm.params)
    109                         param_write(fid,sbeg,'central_path','           = ','\n',dm.params)
    110                         param_write(fid,sbeg,'steplength_to_boundary',' = ','\n',dm.params)
    111                         param_write(fid,sbeg,'centering_parameter','    = ','\n',dm.params)
    112 
    113                 elif dm.method == 'optpp_pds':
    114                         param_write(fid,sbeg,'search_scheme_size',' = ','\n',dm.params)
    115 
    116                 else:
    117                         raise RuntimeError('Unrecognized '+dm.type+' method: '+dm.method+'.')
    118 
    119         elif dm.type == 'apps':
    120                 param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params)
    121                 param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params)
    122                 param_write(fid,sbeg,'output',' ','\n',dm.params)
    123                 param_write(fid,sbeg,'scaling','','\n',dm.params)
    124                 #switch dm.method
    125                 if dm.method == 'asynch_pattern_search':
    126                         param_write(fid,sbeg,'initial_delta','      = ','\n',dm.params)
    127                         param_write(fid,sbeg,'threshold_delta','    = ','\n',dm.params)
    128                         param_write(fid,sbeg,'contraction_factor',' = ','\n',dm.params)
    129                         param_write(fid,sbeg,'solution_target','    = ','\n',dm.params)
    130                         param_write(fid,sbeg,'synchronization','    = ','\n',dm.params)
    131                         param_write(fid,sbeg,'merit_function','     = ','\n',dm.params)
    132                         param_write(fid,sbeg,'constraint_penalty',' = ','\n',dm.params)
    133                         param_write(fid,sbeg,'smoothing_factor','   = ','\n',dm.params)
    134 
    135                 else:
    136                         raise RuntimeError('Unrecognized '+dm.type+' method: '+dm.method+'.')
    137 
    138         elif dm.type == 'coliny':
    139                 param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params)
    140                 param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params)
    141                 param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params)
    142                 param_write(fid,sbeg,'output',' ','\n',dm.params)
    143                 param_write(fid,sbeg,'scaling','','\n',dm.params)
    144                 param_write(fid,sbeg,'show_misc_options','','\n',dm.params)
    145                 param_write(fid,sbeg,'misc_options','      = ','\n',dm.params)
    146                 param_write(fid,sbeg,'solution_accuracy',' = ','\n',dm.params)
    147                 #switch dm.method
    148                 if dm.method == 'coliny_cobyla':
    149                         param_write(fid,sbeg,'initial_delta','   = ','\n',dm.params)
    150                         param_write(fid,sbeg,'threshold_delta',' = ','\n',dm.params)
    151 
    152                 elif dm.method == 'coliny_direct':
    153                         param_write(fid,sbeg,'division','                 = ','\n',dm.params)
    154                         param_write(fid,sbeg,'global_balance_parameter',' = ','\n',dm.params)
    155                         param_write(fid,sbeg,'local_balance_parameter','  = ','\n',dm.params)
    156                         param_write(fid,sbeg,'max_boxsize_limit','        = ','\n',dm.params)
    157                         param_write(fid,sbeg,'min_boxsize_limit','        = ','\n',dm.params)
    158                         param_write(fid,sbeg,'constraint_penalty','       = ','\n',dm.params)
    159 
    160                 elif dm.method == 'coliny_ea':
    161                         param_write(fid,sbeg,'seed','                    = ','\n',dm.params)
    162                         param_write(fid,sbeg,'population_size','         = ','\n',dm.params)
    163                         param_write(fid,sbeg,'initialization_type','     = ','\n',dm.params)
    164                         param_write(fid,sbeg,'fitness_type','            = ','\n',dm.params)
    165                         param_write(fid,sbeg,'replacement_type','        = ','\n',dm.params)
    166                         param_write(fid,sbeg,'random','                  = ','\n',dm.params)
    167                         param_write(fid,sbeg,'chc','                     = ','\n',dm.params)
    168                         param_write(fid,sbeg,'elitist','                 = ','\n',dm.params)
    169                         param_write(fid,sbeg,'new_solutions_generated',' = ','\n',dm.params)
    170                         param_write(fid,sbeg,'crossover_type','          = ','\n',dm.params)
    171                         param_write(fid,sbeg,'crossover_rate','          = ','\n',dm.params)
    172                         param_write(fid,sbeg,'mutation_type','           = ','\n',dm.params)
    173                         param_write(fid,sbeg,'mutation_scale','          = ','\n',dm.params)
    174                         param_write(fid,sbeg,'mutation_range','          = ','\n',dm.params)
    175                         param_write(fid,sbeg,'dimension_ratio','         = ','\n',dm.params)
    176                         param_write(fid,sbeg,'mutation_rate','           = ','\n',dm.params)
    177                         param_write(fid,sbeg,'non_adaptive','','\n',dm.params)
    178 
    179                 elif dm.method == 'coliny_pattern_search':
    180                         param_write(fid,sbeg,'stochastic','','\n',dm.params)
    181                         param_write(fid,sbeg,'seed','                 = ','\n',dm.params)
    182                         param_write(fid,sbeg,'initial_delta','        = ','\n',dm.params)
    183                         param_write(fid,sbeg,'threshold_delta','      = ','\n',dm.params)
    184                         param_write(fid,sbeg,'constraint_penalty','   = ','\n',dm.params)
    185                         param_write(fid,sbeg,'constant_penalty','','\n',dm.params)
    186                         param_write(fid,sbeg,'pattern_basis','        = ','\n',dm.params)
    187                         param_write(fid,sbeg,'total_pattern_size','   = ','\n',dm.params)
    188                         param_write(fid,sbeg,'no_expansion','','\n',dm.params)
    189                         param_write(fid,sbeg,'expand_after_success',' = ','\n',dm.params)
    190                         param_write(fid,sbeg,'contraction_factor','   = ','\n',dm.params)
    191                         param_write(fid,sbeg,'synchronization','      = ','\n',dm.params)
    192                         param_write(fid,sbeg,'exploratory_moves','    = ','\n',dm.params)
    193 
    194                 elif dm.method == 'coliny_solis_wets':
    195                         param_write(fid,sbeg,'seed','                   = ','\n',dm.params)
    196                         param_write(fid,sbeg,'initial_delta','          = ','\n',dm.params)
    197                         param_write(fid,sbeg,'threshold_delta','        = ','\n',dm.params)
    198                         param_write(fid,sbeg,'no_expansion','','\n',dm.params)
    199                         param_write(fid,sbeg,'expand_after_success','   = ','\n',dm.params)
    200                         param_write(fid,sbeg,'contract_after_failure',' = ','\n',dm.params)
    201                         param_write(fid,sbeg,'contraction_factor','     = ','\n',dm.params)
    202                         param_write(fid,sbeg,'constraint_penalty','     = ','\n',dm.params)
    203                         param_write(fid,sbeg,'constant_penalty','','\n',dm.params)
    204 
    205                 else:
    206                         raise RuntimeError('Unrecognized '+dm.type+' method: '+dm.method+'.')
    207 
    208         elif dm.type == 'ncsu':
    209                 param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params)
    210                 param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params)
    211                 param_write(fid,sbeg,'scaling','','\n',dm.params)
    212                 #switch dm.method
    213                 if dm.method == 'ncsu_direct':
    214                         param_write(fid,sbeg,'solution_accuracy',' = ','\n',dm.params)
    215                         param_write(fid,sbeg,'min_boxsize_limit',' = ','\n',dm.params)
    216                         param_write(fid,sbeg,'vol_boxsize_limit',' = ','\n',dm.params)
    217 
    218                 else:
    219                         raise RuntimeError('Unrecognized '+dm.type+' method: '+dm.method+'.')
    220 
    221         elif dm.type == 'jega':
    222                 param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params)
    223                 param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params)
    224                 param_write(fid,sbeg,'output',' ','\n',dm.params)
    225                 param_write(fid,sbeg,'scaling','','\n',dm.params)
    226                 param_write(fid,sbeg,'seed','                             = ','\n',dm.params)
    227                 param_write(fid,sbeg,'log_file','                         = ','\n',dm.params)
    228                 param_write(fid,sbeg,'population_size','                  = ','\n',dm.params)
    229                 param_write(fid,sbeg,'print_each_pop','','\n',dm.params)
    230                 param_write(fid,sbeg,'output','                           = ','\n',dm.params)
    231                 param_write(fid,sbeg,'initialization_type','              = ','\n',dm.params)
    232                 param_write(fid,sbeg,'mutation_type','                    = ','\n',dm.params)
    233                 param_write(fid,sbeg,'mutation_scale','                   = ','\n',dm.params)
    234                 param_write(fid,sbeg,'mutation_rate','                    = ','\n',dm.params)
    235                 param_write(fid,sbeg,'replacement_type','                 = ','\n',dm.params)
    236                 param_write(fid,sbeg,'below_limit','                      = ','\n',dm.params)
    237                 param_write(fid,sbeg,'shrinkage_percentage','             = ','\n',dm.params)
    238                 param_write(fid,sbeg,'crossover_type','                   = ','\n',dm.params)
    239                 param_write(fid,sbeg,'multi_point_binary','               = ','\n',dm.params)
    240                 param_write(fid,sbeg,'multi_point_parameterized_binary',' = ','\n',dm.params)
    241                 param_write(fid,sbeg,'multi_point_real','                 = ','\n',dm.params)
    242                 param_write(fid,sbeg,'shuffle_random','                   = ','\n',dm.params)
    243                 param_write(fid,sbeg,'num_parents','                      = ','\n',dm.params)
    244                 param_write(fid,sbeg,'num_offspring','                    = ','\n',dm.params)
    245                 param_write(fid,sbeg,'crossover_rate','                   = ','\n',dm.params)
    246 
    247                 #switch dm.method
    248                 if dm.method == 'moga':
    249                         param_write(fid,sbeg,'fitness_type','        = ','\n',dm.params)
    250                         param_write(fid,sbeg,'niching_type','        = ','\n',dm.params)
    251                         if not isempty(dm.params.radial) and not isempty(dm.params.distance):
    252                                 raise RuntimeError('#s'' method must have only one niching distance.',
    253                                                                                                          dm.method)
    254                         param_write(fid,sbeg,'radial','              = ','\n',dm.params)
    255                         param_write(fid,sbeg,'distance','            = ','\n',dm.params)
    256                         param_write(fid,sbeg,'metric_tracker','','\n',dm.params)
    257                         param_write(fid,sbeg,'percent_change','      = ','\n',dm.params)
    258                         param_write(fid,sbeg,'num_generations','     = ','\n',dm.params)
    259                         param_write(fid,sbeg,'postprocessor_type','  = ','\n',dm.params)
    260                         param_write(fid,sbeg,'orthogonal_distance',' = ','\n',dm.params)
    261 
    262                 elif dm.method == 'soga':
    263                         param_write(fid,sbeg,'fitness_type','       = ','\n',dm.params)
    264                         param_write(fid,sbeg,'constraint_penalty',' = ','\n',dm.params)
    265                         param_write(fid,sbeg,'replacement_type','   = ','\n',dm.params)
    266                         param_write(fid,sbeg,'convergence_type','   = ','\n',dm.params)
    267                         param_write(fid,sbeg,'num_generations','    = ','\n',dm.params)
    268                         param_write(fid,sbeg,'percent_change','     = ','\n',dm.params)
    269 
    270                 else:
    271                         raise RuntimeError('Unrecognized '+dm.type+' method: '+dm.method+'.')
    272 
    273         elif dm.type == 'lsq':
    274                 #switch dm.method
    275                 if dm.method == 'nl2sol':
    276                         param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params)
    277                         param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params)
    278                         param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params)
    279                         param_write(fid,sbeg,'output',' ','\n',dm.params)
    280                         param_write(fid,sbeg,'scaling','','\n',dm.params)
    281                         param_write(fid,sbeg,'function_precision','   = ','\n',dm.params)
    282                         param_write(fid,sbeg,'absolute_conv_tol','    = ','\n',dm.params)
    283                         param_write(fid,sbeg,'x_conv_tol','           = ','\n',dm.params)
    284                         param_write(fid,sbeg,'singular_conv_tol','    = ','\n',dm.params)
    285                         param_write(fid,sbeg,'singular_radius','      = ','\n',dm.params)
    286                         param_write(fid,sbeg,'false_conv_tol','       = ','\n',dm.params)
    287                         param_write(fid,sbeg,'initial_trust_radius',' = ','\n',dm.params)
    288                         param_write(fid,sbeg,'covariance','           = ','\n',dm.params)
    289                         param_write(fid,sbeg,'regression_stressbalances','','\n',dm.params)
    290 
    291                 elif dm.method == 'nlssol_sqp':
    292                         param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params)
    293                         param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params)
    294                         param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params)
    295                         param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params)
    296                         param_write(fid,sbeg,'output',' ','\n',dm.params)
    297                         param_write(fid,sbeg,'speculative','','\n',dm.params)
    298                         param_write(fid,sbeg,'scaling','','\n',dm.params)
    299                         param_write(fid,sbeg,'verify_level','         = ','\n',dm.params)
    300                         param_write(fid,sbeg,'function_precision','   = ','\n',dm.params)
    301                         param_write(fid,sbeg,'linesearch_tolerance',' = ','\n',dm.params)
    302 
    303                 elif dm.method == 'optpp_g_newton':
    304                         param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params)
    305                         param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params)
    306                         param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params)
    307                         param_write(fid,sbeg,'output',' ','\n',dm.params)
    308                         param_write(fid,sbeg,'speculative','','\n',dm.params)
    309                         param_write(fid,sbeg,'scaling','','\n',dm.params)
    310 
    311                         if (dm.params.value_based_line_search +
    312                                         dm.params.gradient_based_line_search +
    313                                         dm.params.trust_region +
    314                                         dm.params.tr_pds > 1):
    315                                 raise RuntimeError('#s'' method must have only one algorithm.',
    316                                                                                                          dm.method)
    317 
    318                         param_write(fid,sbeg,'value_based_line_search','','\n',dm.params)
    319                         param_write(fid,sbeg,'gradient_based_line_search','','\n',dm.params)
    320                         param_write(fid,sbeg,'trust_region','','\n',dm.params)
    321                         param_write(fid,sbeg,'tr_pds','','\n',dm.params)
    322                         param_write(fid,sbeg,'max_step','               = ','\n',dm.params)
    323                         param_write(fid,sbeg,'gradient_tolerance','     = ','\n',dm.params)
    324                         param_write(fid,sbeg,'merit_function','         = ','\n',dm.params)
    325                         param_write(fid,sbeg,'central_path','           = ','\n',dm.params)
    326                         param_write(fid,sbeg,'steplength_to_boundary',' = ','\n',dm.params)
    327                         param_write(fid,sbeg,'centering_parameter','    = ','\n',dm.params)
    328 
    329                 else:
    330                         raise RuntimeError('Unrecognized '+dm.type+' method: '+dm.method+'.')
    331 
    332         elif dm.type == 'nond':
    333                 #switch dm.method
    334                 if dm.method == 'nond_sampling':
    335                         param_write(fid,sbeg,'seed','             = ','\n',dm.params)
    336                         param_write(fid,sbeg,'fixed_seed','','\n',dm.params)
    337                         dver = str(IssmConfig('_DAKOTA_VERSION_')[0])
    338                         if ((int(dver[0])==4 and int(dver[2])>2) or int(dver[0])>4):
    339                                 param_write(fid,sbeg,'rng','                ','\n',dm.params)
    340                                 param_write(fid,sbeg,'samples','          = ','\n',dm.params)
    341                                 param_write(fid,sbeg,'sample_type','        ','\n',dm.params)
    342                                 param_write(fid,sbeg,'all_variables','','\n',dm.params)
    343                                 param_write(fid,sbeg,'variance_based_decomp','','\n',dm.params)
    344                                 if strcmp(dm.params.sample_type,'incremental_random') or strcmp(dm.params.sample_type,'incremental_lhs'):
    345                                         param_write(fid,sbeg,'previous_samples',' = ','\n',dm.params)
    346                                         param_write(fid,sbeg,'output',' ','\n',dm.params)
    347 
    348                 elif dm.method == 'nond_local_reliability':
    349                         param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params)
    350                         param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params)
    351                         param_write(fid,sbeg,'mpp_search','  = ','\n',dm.params)
    352                         if type(dm.params.mpp_search) == str:
    353                                 if (dm.params.sqp +dm.params.nip > 1):
    354                                         raise RuntimeError('#s'' method must have only one algorithm.',
    355                                                                                                                  dm.method)
    356 
    357                                 param_write(fid,sbeg,'sqp','','\n',dm.params)
    358                                 param_write(fid,sbeg,'nip','','\n',dm.params)
    359                                 param_write(fid,sbeg,'integration','   ','\n',dm.params)
    360                                 param_write(fid,sbeg,'refinement','  = ','\n',dm.params)
    361                                 if type(dm.params.refinement) == str:
    362                                         param_write(fid,sbeg,'samples','     = ','\n',dm.params)
    363                                         param_write(fid,sbeg,'seed','        = ','\n',dm.params)
    364                                         param_write(fid,sbeg,'output',' ','\n',dm.params)
    365 
    366                 elif dm.method == 'nond_global_reliability':
    367                         if (dm.params.x_gaussian_process + dm.params.u_gaussian_process != 1):
    368                                 raise RuntimeError('#s'' method must have one and only one algorithm.',
    369                                                                                                          dm.method)
    370 
    371                         param_write(fid,sbeg,'x_gaussian_process','','\n',dm.params)
    372                         param_write(fid,sbeg,'u_gaussian_process','','\n',dm.params)
    373                         param_write(fid,sbeg,'all_variables','','\n',dm.params)
    374                         param_write(fid,sbeg,'seed',' = ','\n',dm.params)
    375 
    376                 elif dm.method == 'nond_polynomial_chaos':
    377                         param_write(fid,sbeg,'expansion_order','       = ','\n',dm.params)
    378                         param_write(fid,sbeg,'expansion_terms','       = ','\n',dm.params)
    379                         param_write(fid,sbeg,'quadrature_order','      = ','\n',dm.params)
    380                         param_write(fid,sbeg,'sparse_grid_level','     = ','\n',dm.params)
    381                         param_write(fid,sbeg,'expansion_samples','     = ','\n',dm.params)
    382                         param_write(fid,sbeg,'incremental_lhs','','\n',dm.params)
    383                         param_write(fid,sbeg,'collocation_points','    = ','\n',dm.params)
    384                         param_write(fid,sbeg,'collocation_ratio','     = ','\n',dm.params)
    385                         param_write(fid,sbeg,'reuse_samples','','\n',dm.params)
    386                         param_write(fid,sbeg,'expansion_import_file',' = ','\n',dm.params)
    387                         param_write(fid,sbeg,'seed','                  = ','\n',dm.params)
    388                         param_write(fid,sbeg,'fixed_seed','','\n',dm.params)
    389                         param_write(fid,sbeg,'samples','               = ','\n',dm.params)
    390                         param_write(fid,sbeg,'sample_type','           = ','\n',dm.params)
    391                         param_write(fid,sbeg,'all_variables','','\n',dm.params)
    392 
    393                 elif dm.method == 'nond_stoch_collocation':
    394                         param_write(fid,sbeg,'quadrature_order','  = ','\n',dm.params)
    395                         param_write(fid,sbeg,'sparse_grid_level',' = ','\n',dm.params)
    396                         param_write(fid,sbeg,'seed','              = ','\n',dm.params)
    397                         param_write(fid,sbeg,'fixed_seed','','\n',dm.params)
    398                         param_write(fid,sbeg,'samples','           = ','\n',dm.params)
    399                         param_write(fid,sbeg,'sample_type','       = ','\n',dm.params)
    400                         param_write(fid,sbeg,'all_variables','','\n',dm.params)
    401 
    402                 elif dm.method == 'nond_evidence':
    403                         param_write(fid,sbeg,'seed','    = ','\n',dm.params)
    404                         param_write(fid,sbeg,'samples',' = ','\n',dm.params)
    405 
    406                 else:
    407                         raise RuntimeError('Unrecognized '+dm.type+' method: '+dm.method+'.')
    408 
    409 
    410         elif dm.type == 'dace':
    411                 #switch dm.method
    412                 if dm.method == 'dace':
    413                         if (dm.params.grid + dm.params.random + dm.params.oas + dm.params.lhs + dm.params.oa_lhs + dm.params.box_behnken + dm.params.central_composite != 1):
    414                                 raise RuntimeError('#s'' method must have one and only one algorithm.',
    415                                                                                                          dm.method)
    416 
    417                         param_write(fid,sbeg,'grid','','\n',dm.params)
    418                         param_write(fid,sbeg,'random','','\n',dm.params)
    419                         param_write(fid,sbeg,'oas','','\n',dm.params)
    420                         param_write(fid,sbeg,'lhs','','\n',dm.params)
    421                         param_write(fid,sbeg,'oa_lhs','','\n',dm.params)
    422                         param_write(fid,sbeg,'box_behnken','','\n',dm.params)
    423                         param_write(fid,sbeg,'central_composite','','\n',dm.params)
    424                         param_write(fid,sbeg,'seed','    = ','\n',dm.params)
    425                         param_write(fid,sbeg,'fixed_seed','','\n',dm.params)
    426                         param_write(fid,sbeg,'samples',' = ','\n',dm.params)
    427                         param_write(fid,sbeg,'symbols',' = ','\n',dm.params)
    428                         param_write(fid,sbeg,'quality_metrics','','\n',dm.params)
    429                         param_write(fid,sbeg,'variance_based_decomp','','\n',dm.params)
    430 
    431                 elif dm.method == 'fsu_quasi_mc':
    432                         if (dm.params.halton + dm.params.hammersley != 1):
    433                                 raise RuntimeError('#s'' method must have one and only one sequence type.',dm.method)
    434 
    435                         param_write(fid,sbeg,'halton','','\n',dm.params)
    436                         param_write(fid,sbeg,'hammersley','','\n',dm.params)
    437                         param_write(fid,sbeg,'samples','        = ','\n',dm.params)
    438                         param_write(fid,sbeg,'sequence_start',' = ','\n',dm.params)
    439                         param_write(fid,sbeg,'sequence_leap','  = ','\n',dm.params)
    440                         param_write(fid,sbeg,'prime_base','     = ','\n',dm.params)
    441                         param_write(fid,sbeg,'fixed_sequence','','\n',dm.params)
    442                         param_write(fid,sbeg,'latinize','','\n',dm.params)
    443                         param_write(fid,sbeg,'variance_based_decomp','','\n',dm.params)
    444                         param_write(fid,sbeg,'quality_metrics','','\n',dm.params)
    445 
    446                 elif dm.method == 'fsu_cvt':
    447                         param_write(fid,sbeg,'seed','       = ','\n',dm.params)
    448                         param_write(fid,sbeg,'fixed_seed','','\n',dm.params)
    449                         param_write(fid,sbeg,'samples','    = ','\n',dm.params)
    450                         param_write(fid,sbeg,'num_trials',' = ','\n',dm.params)
    451                         param_write(fid,sbeg,'trial_type',' = ','\n',dm.params)
    452                         param_write(fid,sbeg,'latinize','','\n',dm.params)
    453                         param_write(fid,sbeg,'variance_based_decomp','','\n',dm.params)
    454                         param_write(fid,sbeg,'quality_metrics','','\n',dm.params)
    455 
    456                 else:
    457                         raise RuntimeError('Unrecognized '+dm.type+' method: '+dm.method+'.')
    458 
    459         elif dm.type == 'param':
    460                 param_write(fid,sbeg,'output',' ','\n',dm.params)
    461                 #switch dm.method
    462                 if dm.method == 'vector_parameter_study':
    463                         if not np.logical_xor(isempty(dm.params.final_point),isempty(dm.params.step_vector)):
    464                                 raise RuntimeError(str(dm.method)+' method must have one and only one specification.')
    465 
    466                         if not isempty(dm.params.final_point):
    467                                 param_write(fid,sbeg,'final_point',' = ','\n',dm.params)
    468                                 param_write(fid,sbeg,'step_length',' = ','\n',dm.params)
    469                                 param_write(fid,sbeg,'num_steps','   = ','\n',dm.params)
    470 
    471                         elif not isempty(dm.params.step_vector):
    472                                 param_write(fid,sbeg,'step_vector',' = ','\n',dm.params)
    473                                 param_write(fid,sbeg,'num_steps','   = ','\n',dm.params)
    474 
    475                 elif dm.method == 'list_parameter_study':
    476                         param_write(fid,sbeg,'list_of_points',' = ','\n',dm.params)
    477 
    478                 elif dm.method == 'centered_parameter_study':
    479                         param_write(fid,sbeg,'percent_delta','       = ','\n',dm.params)
    480                         param_write(fid,sbeg,'deltas_per_variable',' = ','\n',dm.params)
    481 
    482                 elif dm.method == 'multidim_parameter_study':
    483                         param_write(fid,sbeg,'partitions',' = ','\n',dm.params)
    484 
    485                 else:
    486                         raise RuntimeError('Unrecognized '+dm.type+' method: '+dm.method+'.')
    487 
    488 
    489         elif dm.type == 'bayes':
    490                 #switch dm.method
    491                 if dm.method == 'bayes_calibration':
    492                 # if (dm.params.queso +
    493                 #    dm.params.dream +
    494                 #        dm.params.gpmsa ~= 1)
    495                 #    raise RuntimeError('''#s'' method must have one and only one bayes type. YOU SUCK',
    496                 #       dm.method)
    497                 #
    498                         param_write(fid,sbeg,'queso','','\n',dm.params)
    499                         param_write(fid,sbeg,'dream','','\n',dm.params)
    500                         param_write(fid,sbeg,'gpmsa','','\n',dm.params)
    501                         param_write(fid,sbeg,'samples','        = ','\n',dm.params)
    502                         param_write(fid,sbeg,'seed','      = ','\n',dm.params)
    503                         param_write(fid,sbeg,'output','    =','\n',dm.params)
    504                         param_write(fid,sbeg,'metropolis_hastings','','\n',dm.params)
    505                         param_write(fid,sbeg,'proposal_covariance','','\n',dm.params)
    506                         param_write(fid,sbeg,'diagonal','','\n',dm.params)
    507                         param_write(fid,sbeg,'values','     = ','\n',dm.params)
    508 
    509         else:
    510                 raise RuntimeError('Unrecognized '+dm.type+' method: '+dm.method+'.')
    511 
    512 ##  function to write a structure of parameters
    513 def param_struc_write(fidi,sbeg,smid,s,params):
    514         #  loop through each parameter field in the structure
    515         fnames=fieldnames(params)
    516         for i in range(np.size(fnames)):
    517                 param_write(fidi,sbeg,fnames[i],smid,s,params)
    518 
    519         return
    520 
    521 ##  function to write a parameter
    522 def param_write(fidi,sbeg,pname,smid,s,params):
    523         #  check for errors
    524         if not isfield(params,pname):
    525                 warning('param_write:param_not_found',
    526                 'Parameter '+str(pname)+' not found in '+params+'.')
    527                 return
    528         elif type(vars(params)[pname]) == bool and not vars(params)[pname]:
    529                 return
    530         elif isempty(vars(params)[pname]):
    531                 print('Warning: param_write:param_empty: Parameter {} requires input of type {}.'.format(pname,type(vars(params)[pname])))
    532                 return
    533 
    534         #  construct the parameter string based on type
    535         if type(vars(params)[pname]) == bool:
    536                 fidi.write(sbeg+str(pname)+s)
    537 
    538         elif type(vars(params)[pname]) in [int,float]:
    539                 fidi.write(sbeg+str(pname)+smid+str(vars(params)[pname])+s)
    540 
    541         elif type(vars(params)[pname]) == list:
    542                 fidi.write(sbeg+str(pname)+smid+str(vars(params)[pname][0]))
    543                 for i in range(1,np.size(vars(params)[pname])):
    544                         fidi.write(' '+str(vars(params)[pname][i]))
    545 
    546                 fidi.write(s)
    547 
    548         elif type(vars(params)[pname]) == str:
    549                 fidi.write(sbeg+str(pname)+smid+str(vars(params)[pname])+s)
    550 
    551         else:
    552                 print('Warning: param_write:param_unrecog: Parameter {} is of unrecognized type {}.'.format(pname,type(vars(params)[pname])))
    553                 return
     7
     8def dmeth_params_write(dm, fid, sbeg='\t  '):
     9    '''  write the parameters from a dakota_method object.
     10    [] = dmeth_params_write(dm, fid, sbeg)
     11    '''
     12
     13    if not isinstance(dm, dakota_method):
     14        raise RuntimeError('Object ' + str(dm) + ' is a ' + type(dm) + ' class object, not < dakota_method > .')
     15
     16    if sbeg is None or sbeg == '':
     17        sbeg = '\t  '
     18
     19    #  perform some error checking, but leave the rest to dakota.
     20    #  unfortunately this prevents merely looping through the fields
     21    #  of the parameters structure.
     22
     23    #  write method - indepent controls
     24
     25    # param_write(fid, sbeg, 'id_method', ' = ', '\n', dm.params)
     26    # param_write(fid, sbeg, 'model_pointer', ' = ', '\n', dm.params)
     27
     28    #  write method - depent controls
     29
     30    #switch dm.type
     31    if dm.type == 'dot':
     32        param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
     33        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
     34        param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
     35        param_write(fid, sbeg, 'constraint_tolerance', ' = ', '\n', dm.params)
     36        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
     37        param_write(fid, sbeg, 'speculative', '', '\n', dm.params)
     38        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
     39    #switch dm.method
     40        if dm.method in ['dot_bfgs',
     41                         'dot_frcg',
     42                         'dot_mmfd',
     43                         'dot_slp',
     44                         'dot_sqp']:
     45            param_write(fid, sbeg, 'optimization_type', ' = ', '\n', dm.params)
     46
     47        else:
     48            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
     49
     50    elif dm.type == 'npsol':
     51        param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
     52        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
     53        param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
     54        param_write(fid, sbeg, 'constraint_tolerance', ' = ', '\n', dm.params)
     55        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
     56        param_write(fid, sbeg, 'speculative', '', '\n', dm.params)
     57        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
     58    #switch dm.method
     59        if dm.method == 'npsol_sqp':
     60            param_write(fid, sbeg, 'verify_level', ' = ', '\n', dm.params)
     61            param_write(fid, sbeg, 'function_precision', ' = ', '\n', dm.params)
     62            param_write(fid, sbeg, 'linesearch_tolerance', ' = ', '\n', dm.params)
     63
     64        else:
     65            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
     66
     67    elif dm.type == 'conmin':
     68        param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
     69        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
     70        param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
     71        param_write(fid, sbeg, 'constraint_tolerance', ' = ', '\n', dm.params)
     72        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
     73        param_write(fid, sbeg, 'speculative', '', '\n', dm.params)
     74        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
     75    #switch dm.method
     76        if dm.method in ['conmin_frcg', 'conmin_mfd']:
     77            pass
     78        else:
     79            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
     80
     81    elif dm.type == 'optpp':
     82        param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
     83        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
     84        param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
     85        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
     86        param_write(fid, sbeg, 'speculative', '', '\n', dm.params)
     87        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
     88    #switch dm.method
     89        if dm.method == 'optpp_cg':
     90            param_write(fid, sbeg, 'max_step', ' = ', '\n', dm.params)
     91            param_write(fid, sbeg, 'gradient_tolerance', ' = ', '\n', dm.params)
     92
     93        elif dm.method in ['optpp_q_newton', 'optpp_fd_newton', 'optpp_newton']:
     94            if (dm.params.value_based_line_search + dm.params.gradient_based_line_search + dm.params.trust_region + dm.params.tr_pds > 1):
     95                raise RuntimeError('  #s'' method must have only one algorithm.', dm.method)
     96            param_write(fid, sbeg, 'value_based_line_search', '', '\n', dm.params)
     97            param_write(fid, sbeg, 'gradient_based_line_search', '', '\n', dm.params)
     98            param_write(fid, sbeg, 'trust_region', '', '\n', dm.params)
     99            param_write(fid, sbeg, 'tr_pds', '', '\n', dm.params)
     100            param_write(fid, sbeg, 'max_step', ' = ', '\n', dm.params)
     101            param_write(fid, sbeg, 'gradient_tolerance', ' = ', '\n', dm.params)
     102            param_write(fid, sbeg, 'merit_function', ' = ', '\n', dm.params)
     103            param_write(fid, sbeg, 'central_path', ' = ', '\n', dm.params)
     104            param_write(fid, sbeg, 'steplength_to_boundary', ' = ', '\n', dm.params)
     105            param_write(fid, sbeg, 'centering_parameter', ' = ', '\n', dm.params)
     106
     107        elif dm.method == 'optpp_pds':
     108            param_write(fid, sbeg, 'search_scheme_size', ' = ', '\n', dm.params)
     109
     110        else:
     111            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
     112
     113    elif dm.type == 'apps':
     114        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
     115        param_write(fid, sbeg, 'constraint_tolerance', ' = ', '\n', dm.params)
     116        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
     117        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
     118    #switch dm.method
     119        if dm.method == 'asynch_pattern_search':
     120            param_write(fid, sbeg, 'initial_delta', ' = ', '\n', dm.params)
     121            param_write(fid, sbeg, 'threshold_delta', ' = ', '\n', dm.params)
     122            param_write(fid, sbeg, 'contraction_factor', ' = ', '\n', dm.params)
     123            param_write(fid, sbeg, 'solution_target', ' = ', '\n', dm.params)
     124            param_write(fid, sbeg, 'synchronization', ' = ', '\n', dm.params)
     125            param_write(fid, sbeg, 'merit_function', ' = ', '\n', dm.params)
     126            param_write(fid, sbeg, 'constraint_penalty', ' = ', '\n', dm.params)
     127            param_write(fid, sbeg, 'smoothing_factor', ' = ', '\n', dm.params)
     128
     129        else:
     130            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
     131
     132    elif dm.type == 'coliny':
     133        param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
     134        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
     135        param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
     136        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
     137        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
     138        param_write(fid, sbeg, 'show_misc_options', '', '\n', dm.params)
     139        param_write(fid, sbeg, 'misc_options', ' = ', '\n', dm.params)
     140        param_write(fid, sbeg, 'solution_accuracy', ' = ', '\n', dm.params)
     141    #switch dm.method
     142        if dm.method == 'coliny_cobyla':
     143            param_write(fid, sbeg, 'initial_delta', ' = ', '\n', dm.params)
     144            param_write(fid, sbeg, 'threshold_delta', ' = ', '\n', dm.params)
     145
     146        elif dm.method == 'coliny_direct':
     147            param_write(fid, sbeg, 'division', ' = ', '\n', dm.params)
     148            param_write(fid, sbeg, 'global_balance_parameter', ' = ', '\n', dm.params)
     149            param_write(fid, sbeg, 'local_balance_parameter', ' = ', '\n', dm.params)
     150            param_write(fid, sbeg, 'max_boxsize_limit', ' = ', '\n', dm.params)
     151            param_write(fid, sbeg, 'min_boxsize_limit', ' = ', '\n', dm.params)
     152            param_write(fid, sbeg, 'constraint_penalty', ' = ', '\n', dm.params)
     153
     154        elif dm.method == 'coliny_ea':
     155            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
     156            param_write(fid, sbeg, 'population_size', ' = ', '\n', dm.params)
     157            param_write(fid, sbeg, 'initialization_type', ' = ', '\n', dm.params)
     158            param_write(fid, sbeg, 'fitness_type', ' = ', '\n', dm.params)
     159            param_write(fid, sbeg, 'replacement_type', ' = ', '\n', dm.params)
     160            param_write(fid, sbeg, 'random', ' = ', '\n', dm.params)
     161            param_write(fid, sbeg, 'chc', ' = ', '\n', dm.params)
     162            param_write(fid, sbeg, 'elitist', ' = ', '\n', dm.params)
     163            param_write(fid, sbeg, 'new_solutions_generated', ' = ', '\n', dm.params)
     164            param_write(fid, sbeg, 'crossover_type', ' = ', '\n', dm.params)
     165            param_write(fid, sbeg, 'crossover_rate', ' = ', '\n', dm.params)
     166            param_write(fid, sbeg, 'mutation_type', ' = ', '\n', dm.params)
     167            param_write(fid, sbeg, 'mutation_scale', ' = ', '\n', dm.params)
     168            param_write(fid, sbeg, 'mutation_range', ' = ', '\n', dm.params)
     169            param_write(fid, sbeg, 'dimension_ratio', ' = ', '\n', dm.params)
     170            param_write(fid, sbeg, 'mutation_rate', ' = ', '\n', dm.params)
     171            param_write(fid, sbeg, 'non_adaptive', '', '\n', dm.params)
     172
     173        elif dm.method == 'coliny_pattern_search':
     174            param_write(fid, sbeg, 'stochastic', '', '\n', dm.params)
     175            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
     176            param_write(fid, sbeg, 'initial_delta', ' = ', '\n', dm.params)
     177            param_write(fid, sbeg, 'threshold_delta', ' = ', '\n', dm.params)
     178            param_write(fid, sbeg, 'constraint_penalty', ' = ', '\n', dm.params)
     179            param_write(fid, sbeg, 'constant_penalty', '', '\n', dm.params)
     180            param_write(fid, sbeg, 'pattern_basis', ' = ', '\n', dm.params)
     181            param_write(fid, sbeg, 'total_pattern_size', ' = ', '\n', dm.params)
     182            param_write(fid, sbeg, 'no_expansion', '', '\n', dm.params)
     183            param_write(fid, sbeg, 'expand_after_success', ' = ', '\n', dm.params)
     184            param_write(fid, sbeg, 'contraction_factor', ' = ', '\n', dm.params)
     185            param_write(fid, sbeg, 'synchronization', ' = ', '\n', dm.params)
     186            param_write(fid, sbeg, 'exploratory_moves', ' = ', '\n', dm.params)
     187
     188        elif dm.method == 'coliny_solis_wets':
     189            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
     190            param_write(fid, sbeg, 'initial_delta', ' = ', '\n', dm.params)
     191            param_write(fid, sbeg, 'threshold_delta', ' = ', '\n', dm.params)
     192            param_write(fid, sbeg, 'no_expansion', '', '\n', dm.params)
     193            param_write(fid, sbeg, 'expand_after_success', ' = ', '\n', dm.params)
     194            param_write(fid, sbeg, 'contract_after_failure', ' = ', '\n', dm.params)
     195            param_write(fid, sbeg, 'contraction_factor', ' = ', '\n', dm.params)
     196            param_write(fid, sbeg, 'constraint_penalty', ' = ', '\n', dm.params)
     197            param_write(fid, sbeg, 'constant_penalty', '', '\n', dm.params)
     198
     199        else:
     200            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
     201
     202    elif dm.type == 'ncsu':
     203        param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
     204        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
     205        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
     206    #switch dm.method
     207        if dm.method == 'ncsu_direct':
     208            param_write(fid, sbeg, 'solution_accuracy', ' = ', '\n', dm.params)
     209            param_write(fid, sbeg, 'min_boxsize_limit', ' = ', '\n', dm.params)
     210            param_write(fid, sbeg, 'vol_boxsize_limit', ' = ', '\n', dm.params)
     211
     212        else:
     213            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
     214
     215    elif dm.type == 'jega':
     216        param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
     217        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
     218        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
     219        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
     220        param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
     221        param_write(fid, sbeg, 'log_file', ' = ', '\n', dm.params)
     222        param_write(fid, sbeg, 'population_size', ' = ', '\n', dm.params)
     223        param_write(fid, sbeg, 'print_each_pop', '', '\n', dm.params)
     224        param_write(fid, sbeg, 'output', ' = ', '\n', dm.params)
     225        param_write(fid, sbeg, 'initialization_type', ' = ', '\n', dm.params)
     226        param_write(fid, sbeg, 'mutation_type', ' = ', '\n', dm.params)
     227        param_write(fid, sbeg, 'mutation_scale', ' = ', '\n', dm.params)
     228        param_write(fid, sbeg, 'mutation_rate', ' = ', '\n', dm.params)
     229        param_write(fid, sbeg, 'replacement_type', ' = ', '\n', dm.params)
     230        param_write(fid, sbeg, 'below_limit', ' = ', '\n', dm.params)
     231        param_write(fid, sbeg, 'shrinkage_percentage', ' = ', '\n', dm.params)
     232        param_write(fid, sbeg, 'crossover_type', ' = ', '\n', dm.params)
     233        param_write(fid, sbeg, 'multi_point_binary', ' = ', '\n', dm.params)
     234        param_write(fid, sbeg, 'multi_point_parameterized_binary', ' = ', '\n', dm.params)
     235        param_write(fid, sbeg, 'multi_point_real', ' = ', '\n', dm.params)
     236        param_write(fid, sbeg, 'shuffle_random', ' = ', '\n', dm.params)
     237        param_write(fid, sbeg, 'num_parents', ' = ', '\n', dm.params)
     238        param_write(fid, sbeg, 'num_offspring', ' = ', '\n', dm.params)
     239        param_write(fid, sbeg, 'crossover_rate', ' = ', '\n', dm.params)
     240
     241    #switch dm.method
     242        if dm.method == 'moga':
     243            param_write(fid, sbeg, 'fitness_type', ' = ', '\n', dm.params)
     244            param_write(fid, sbeg, 'niching_type', ' = ', '\n', dm.params)
     245            if not isempty(dm.params.radial) and not isempty(dm.params.distance):
     246                raise RuntimeError('  #s'' method must have only one niching distance.', dm.method)
     247            param_write(fid, sbeg, 'radial', ' = ', '\n', dm.params)
     248            param_write(fid, sbeg, 'distance', ' = ', '\n', dm.params)
     249            param_write(fid, sbeg, 'metric_tracker', '', '\n', dm.params)
     250            param_write(fid, sbeg, 'percent_change', ' = ', '\n', dm.params)
     251            param_write(fid, sbeg, 'num_generations', ' = ', '\n', dm.params)
     252            param_write(fid, sbeg, 'postprocessor_type', ' = ', '\n', dm.params)
     253            param_write(fid, sbeg, 'orthogonal_distance', ' = ', '\n', dm.params)
     254
     255        elif dm.method == 'soga':
     256            param_write(fid, sbeg, 'fitness_type', ' = ', '\n', dm.params)
     257            param_write(fid, sbeg, 'constraint_penalty', ' = ', '\n', dm.params)
     258            param_write(fid, sbeg, 'replacement_type', ' = ', '\n', dm.params)
     259            param_write(fid, sbeg, 'convergence_type', ' = ', '\n', dm.params)
     260            param_write(fid, sbeg, 'num_generations', ' = ', '\n', dm.params)
     261            param_write(fid, sbeg, 'percent_change', ' = ', '\n', dm.params)
     262
     263        else:
     264            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
     265
     266    elif dm.type == 'lsq':
     267        #switch dm.method
     268        if dm.method == 'nl2sol':
     269            param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
     270            param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
     271            param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
     272            param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
     273            param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
     274            param_write(fid, sbeg, 'function_precision', ' = ', '\n', dm.params)
     275            param_write(fid, sbeg, 'absolute_conv_tol', ' = ', '\n', dm.params)
     276            param_write(fid, sbeg, 'x_conv_tol', ' = ', '\n', dm.params)
     277            param_write(fid, sbeg, 'singular_conv_tol', ' = ', '\n', dm.params)
     278            param_write(fid, sbeg, 'singular_radius', ' = ', '\n', dm.params)
     279            param_write(fid, sbeg, 'false_conv_tol', ' = ', '\n', dm.params)
     280            param_write(fid, sbeg, 'initial_trust_radius', ' = ', '\n', dm.params)
     281            param_write(fid, sbeg, 'covariance', ' = ', '\n', dm.params)
     282            param_write(fid, sbeg, 'regression_stressbalances', '', '\n', dm.params)
     283
     284        elif dm.method == 'nlssol_sqp':
     285            param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
     286            param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
     287            param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
     288            param_write(fid, sbeg, 'constraint_tolerance', ' = ', '\n', dm.params)
     289            param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
     290            param_write(fid, sbeg, 'speculative', '', '\n', dm.params)
     291            param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
     292            param_write(fid, sbeg, 'verify_level', ' = ', '\n', dm.params)
     293            param_write(fid, sbeg, 'function_precision', ' = ', '\n', dm.params)
     294            param_write(fid, sbeg, 'linesearch_tolerance', ' = ', '\n', dm.params)
     295
     296        elif dm.method == 'optpp_g_newton':
     297            param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
     298            param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
     299            param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
     300            param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
     301            param_write(fid, sbeg, 'speculative', '', '\n', dm.params)
     302            param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
     303
     304            if (dm.params.value_based_line_search + dm.params.gradient_based_line_search + dm.params.trust_region + dm.params.tr_pds > 1):
     305                raise RuntimeError('  #s'' method must have only one algorithm.', dm.method)
     306
     307            param_write(fid, sbeg, 'value_based_line_search', '', '\n', dm.params)
     308            param_write(fid, sbeg, 'gradient_based_line_search', '', '\n', dm.params)
     309            param_write(fid, sbeg, 'trust_region', '', '\n', dm.params)
     310            param_write(fid, sbeg, 'tr_pds', '', '\n', dm.params)
     311            param_write(fid, sbeg, 'max_step', ' = ', '\n', dm.params)
     312            param_write(fid, sbeg, 'gradient_tolerance', ' = ', '\n', dm.params)
     313            param_write(fid, sbeg, 'merit_function', ' = ', '\n', dm.params)
     314            param_write(fid, sbeg, 'central_path', ' = ', '\n', dm.params)
     315            param_write(fid, sbeg, 'steplength_to_boundary', ' = ', '\n', dm.params)
     316            param_write(fid, sbeg, 'centering_parameter', ' = ', '\n', dm.params)
     317
     318        else:
     319            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
     320
     321    elif dm.type == 'nond':
     322        #switch dm.method
     323        if dm.method == 'nond_sampling':
     324            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
     325            param_write(fid, sbeg, 'fixed_seed', '', '\n', dm.params)
     326            dver = str(IssmConfig('_DAKOTA_VERSION_')[0])
     327            if ((int(dver[0]) == 4 and int(dver[2]) > 2) or int(dver[0]) > 4):
     328                param_write(fid, sbeg, 'rng', '                ', '\n', dm.params)
     329                param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
     330                param_write(fid, sbeg, 'sample_type', '        ', '\n', dm.params)
     331                param_write(fid, sbeg, 'all_variables', '', '\n', dm.params)
     332                param_write(fid, sbeg, 'variance_based_decomp', '', '\n', dm.params)
     333                if strcmp(dm.params.sample_type, 'incremental_random') or strcmp(dm.params.sample_type, 'incremental_lhs'):
     334                    param_write(fid, sbeg, 'previous_samples', ' = ', '\n', dm.params)
     335                    param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
     336
     337        elif dm.method == 'nond_local_reliability':
     338            param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
     339            param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
     340            param_write(fid, sbeg, 'mpp_search', ' = ', '\n', dm.params)
     341            if type(dm.params.mpp_search) == str:
     342                if (dm.params.sqp + dm.params.nip > 1):
     343                    raise RuntimeError('  #s'' method must have only one algorithm.', dm.method)
     344
     345                param_write(fid, sbeg, 'sqp', '', '\n', dm.params)
     346                param_write(fid, sbeg, 'nip', '', '\n', dm.params)
     347                param_write(fid, sbeg, 'integration', '   ', '\n', dm.params)
     348                param_write(fid, sbeg, 'refinement', ' = ', '\n', dm.params)
     349                if type(dm.params.refinement) == str:
     350                    param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
     351                    param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
     352                    param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
     353
     354        elif dm.method == 'nond_global_reliability':
     355            if (dm.params.x_gaussian_process + dm.params.u_gaussian_process != 1):
     356                raise RuntimeError('  #s'' method must have one and only one algorithm.', dm.method)
     357
     358            param_write(fid, sbeg, 'x_gaussian_process', '', '\n', dm.params)
     359            param_write(fid, sbeg, 'u_gaussian_process', '', '\n', dm.params)
     360            param_write(fid, sbeg, 'all_variables', '', '\n', dm.params)
     361            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
     362
     363        elif dm.method == 'nond_polynomial_chaos':
     364            param_write(fid, sbeg, 'expansion_order', ' = ', '\n', dm.params)
     365            param_write(fid, sbeg, 'expansion_terms', ' = ', '\n', dm.params)
     366            param_write(fid, sbeg, 'quadrature_order', ' = ', '\n', dm.params)
     367            param_write(fid, sbeg, 'sparse_grid_level', ' = ', '\n', dm.params)
     368            param_write(fid, sbeg, 'expansion_samples', ' = ', '\n', dm.params)
     369            param_write(fid, sbeg, 'incremental_lhs', '', '\n', dm.params)
     370            param_write(fid, sbeg, 'collocation_points', ' = ', '\n', dm.params)
     371            param_write(fid, sbeg, 'collocation_ratio', ' = ', '\n', dm.params)
     372            param_write(fid, sbeg, 'reuse_samples', '', '\n', dm.params)
     373            param_write(fid, sbeg, 'expansion_import_file', ' = ', '\n', dm.params)
     374            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
     375            param_write(fid, sbeg, 'fixed_seed', '', '\n', dm.params)
     376            param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
     377            param_write(fid, sbeg, 'sample_type', ' = ', '\n', dm.params)
     378            param_write(fid, sbeg, 'all_variables', '', '\n', dm.params)
     379
     380        elif dm.method == 'nond_stoch_collocation':
     381            param_write(fid, sbeg, 'quadrature_order', ' = ', '\n', dm.params)
     382            param_write(fid, sbeg, 'sparse_grid_level', ' = ', '\n', dm.params)
     383            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
     384            param_write(fid, sbeg, 'fixed_seed', '', '\n', dm.params)
     385            param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
     386            param_write(fid, sbeg, 'sample_type', ' = ', '\n', dm.params)
     387            param_write(fid, sbeg, 'all_variables', '', '\n', dm.params)
     388
     389        elif dm.method == 'nond_evidence':
     390            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
     391            param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
     392
     393        else:
     394            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
     395
     396    elif dm.type == 'dace':
     397        #switch dm.method
     398        if dm.method == 'dace':
     399            if (dm.params.grid + dm.params.random + dm.params.oas + dm.params.lhs + dm.params.oa_lhs + dm.params.box_behnken + dm.params.central_composite != 1):
     400                raise RuntimeError('  #s'' method must have one and only one algorithm.', dm.method)
     401
     402            param_write(fid, sbeg, 'grid', '', '\n', dm.params)
     403            param_write(fid, sbeg, 'random', '', '\n', dm.params)
     404            param_write(fid, sbeg, 'oas', '', '\n', dm.params)
     405            param_write(fid, sbeg, 'lhs', '', '\n', dm.params)
     406            param_write(fid, sbeg, 'oa_lhs', '', '\n', dm.params)
     407            param_write(fid, sbeg, 'box_behnken', '', '\n', dm.params)
     408            param_write(fid, sbeg, 'central_composite', '', '\n', dm.params)
     409            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
     410            param_write(fid, sbeg, 'fixed_seed', '', '\n', dm.params)
     411            param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
     412            param_write(fid, sbeg, 'symbols', ' = ', '\n', dm.params)
     413            param_write(fid, sbeg, 'quality_metrics', '', '\n', dm.params)
     414            param_write(fid, sbeg, 'variance_based_decomp', '', '\n', dm.params)
     415
     416        elif dm.method == 'fsu_quasi_mc':
     417            if (dm.params.halton + dm.params.hammersley != 1):
     418                raise RuntimeError('  #s'' method must have one and only one sequence type.', dm.method)
     419
     420            param_write(fid, sbeg, 'halton', '', '\n', dm.params)
     421            param_write(fid, sbeg, 'hammersley', '', '\n', dm.params)
     422            param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
     423            param_write(fid, sbeg, 'sequence_start', ' = ', '\n', dm.params)
     424            param_write(fid, sbeg, 'sequence_leap', ' = ', '\n', dm.params)
     425            param_write(fid, sbeg, 'prime_base', ' = ', '\n', dm.params)
     426            param_write(fid, sbeg, 'fixed_sequence', '', '\n', dm.params)
     427            param_write(fid, sbeg, 'latinize', '', '\n', dm.params)
     428            param_write(fid, sbeg, 'variance_based_decomp', '', '\n', dm.params)
     429            param_write(fid, sbeg, 'quality_metrics', '', '\n', dm.params)
     430
     431        elif dm.method == 'fsu_cvt':
     432            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
     433            param_write(fid, sbeg, 'fixed_seed', '', '\n', dm.params)
     434            param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
     435            param_write(fid, sbeg, 'num_trials', ' = ', '\n', dm.params)
     436            param_write(fid, sbeg, 'trial_type', ' = ', '\n', dm.params)
     437            param_write(fid, sbeg, 'latinize', '', '\n', dm.params)
     438            param_write(fid, sbeg, 'variance_based_decomp', '', '\n', dm.params)
     439            param_write(fid, sbeg, 'quality_metrics', '', '\n', dm.params)
     440
     441        else:
     442            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
     443
     444    elif dm.type == 'param':
     445        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
     446    #switch dm.method
     447        if dm.method == 'vector_parameter_study':
     448            if not np.logical_xor(isempty(dm.params.final_point), isempty(dm.params.step_vector)):
     449                raise RuntimeError(str(dm.method) + ' method must have one and only one specification.')
     450
     451            if not isempty(dm.params.final_point):
     452                param_write(fid, sbeg, 'final_point', ' = ', '\n', dm.params)
     453                param_write(fid, sbeg, 'step_length', ' = ', '\n', dm.params)
     454                param_write(fid, sbeg, 'num_steps', ' = ', '\n', dm.params)
     455
     456            elif not isempty(dm.params.step_vector):
     457                param_write(fid, sbeg, 'step_vector', ' = ', '\n', dm.params)
     458                param_write(fid, sbeg, 'num_steps', ' = ', '\n', dm.params)
     459
     460        elif dm.method == 'list_parameter_study':
     461            param_write(fid, sbeg, 'list_of_points', ' = ', '\n', dm.params)
     462
     463        elif dm.method == 'centered_parameter_study':
     464            param_write(fid, sbeg, 'percent_delta', ' = ', '\n', dm.params)
     465            param_write(fid, sbeg, 'deltas_per_variable', ' = ', '\n', dm.params)
     466
     467        elif dm.method == 'multidim_parameter_study':
     468            param_write(fid, sbeg, 'partitions', ' = ', '\n', dm.params)
     469
     470        else:
     471            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
     472
     473    elif dm.type == 'bayes':
     474        #switch dm.method
     475        if dm.method == 'bayes_calibration':
     476            # if (dm.params.queso +
     477            #    dm.params.dream +
     478            #     dm.params.gpmsa ~= 1)
     479            #    raise RuntimeError('''  #s'' method must have one and only one bayes type. YOU SUCK',
     480            #       dm.method)
     481            #
     482            param_write(fid, sbeg, 'queso', '', '\n', dm.params)
     483            param_write(fid, sbeg, 'dream', '', '\n', dm.params)
     484            param_write(fid, sbeg, 'gpmsa', '', '\n', dm.params)
     485            param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
     486            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
     487            param_write(fid, sbeg, 'output', ' = ', '\n', dm.params)
     488            param_write(fid, sbeg, 'metropolis_hastings', '', '\n', dm.params)
     489            param_write(fid, sbeg, 'proposal_covariance', '', '\n', dm.params)
     490            param_write(fid, sbeg, 'diagonal', '', '\n', dm.params)
     491            param_write(fid, sbeg, 'values', ' = ', '\n', dm.params)
     492
     493    else:
     494        raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
     495
     496
     497#  function to write a structure of parameters
     498def param_struc_write(fidi, sbeg, smid, s, params):
     499    #  loop through each parameter field in the structure
     500    fnames = fieldnames(params)
     501    for i in range(np.size(fnames)):
     502        param_write(fidi, sbeg, fnames[i], smid, s, params)
     503
     504    return
     505
     506
     507#  function to write a parameter
     508def param_write(fidi, sbeg, pname, smid, s, params):
     509    #  check for errors
     510    if not isfield(params, pname):
     511        warning('param_write:param_not_found', 'Parameter ' + str(pname) + ' not found in ' + params + '.')
     512        return
     513    elif type(vars(params)[pname]) == bool and not vars(params)[pname]:
     514        return
     515    elif isempty(vars(params)[pname]):
     516        print('Warning: param_write:param_empty: Parameter {} requires input of type {}.'.format(pname, type(vars(params)[pname])))
     517        return
     518
     519    #  construct the parameter string based on type
     520    if type(vars(params)[pname]) == bool:
     521        fidi.write(sbeg + str(pname) + s)
     522
     523    elif type(vars(params)[pname]) in [int, float]:
     524        fidi.write(sbeg + str(pname) + smid + str(vars(params)[pname]) + s)
     525
     526    elif type(vars(params)[pname]) == list:
     527        fidi.write(sbeg + str(pname) + smid + str(vars(params)[pname][0]))
     528        for i in range(1, np.size(vars(params)[pname])):
     529            fidi.write(' ' + str(vars(params)[pname][i]))
     530
     531        fidi.write(s)
     532
     533    elif type(vars(params)[pname]) == str:
     534        fidi.write(sbeg + str(pname) + smid + str(vars(params)[pname]) + s)
     535
     536    else:
     537        print('Warning: param_write:param_unrecog: Parameter {} is of unrecognized type {}.'.format(pname, type(vars(params)[pname])))
     538        return
  • issm/trunk-jpl/src/m/classes/qmu/calibration_function.py

    r23716 r24213  
    33from MatlabArray import *
    44
     5
    56class calibration_function(object):
    6         '''
     7    '''
    78  definition for the calibration_function class.
    89
    910  [cf] = calibration_function.calibration_function(args)
    10    cf  = calibration_function()
     11   cf = calibration_function()
    1112
    1213  where the required args are:
     
    2122  arguments constructs a new instance from the arguments.
    2223'''
    23         def __init__(self):
    24                 self.descriptor = ''
    25                 self.scale_type = 'none'
    26                 self.scale      = 1.
    27                 self.weight    = 1.
     24    def __init__(self):
     25        self.descriptor = ''
     26        self.scale_type = 'none'
     27        self.scale = 1.
     28        self.weight = 1.
    2829
    29         @staticmethod
    30         def calibration_function(*args):
    31                 nargin = len(args)
     30    @staticmethod
     31    def calibration_function(*args):
     32        nargin = len(args)
    3233
    33                 # create a default object
    34                 if nargin == 0:
    35                         return calibration_function()
     34    # create a default object
     35        if nargin == 0:
     36            return calibration_function()
    3637
    37                 # copy the object or create the object from the input
    38                 else:
    39                         if (nargin == 1) and isinstance(args[0],calibration_function):
    40                                 cf = args[0]
    41                         else:
    42                                 asizec = array_size(*args[0:min(nargin,4)])
    43                                 cf = [calibration_function() for i in range(asizec[0]) for j in range(asizec[1])]
     38    # copy the object or create the object from the input
     39        else:
     40            if (nargin == 1) and isinstance(args[0], calibration_function):
     41                cf = args[0]
     42            else:
     43                asizec = array_size(*args[0:min(nargin, 4)])
     44                cf = [calibration_function() for i in range(asizec[0]) for j in range(asizec[1])]
    4445
    45                         for i in range(np.size(cf)):
    46                                 if (np.size(args[0]) > 1):
    47                                         cf[i].descriptor = args[0][i]
    48                                 else:
    49                                         cf[i].descriptor = str(args[0])+string_dim(cf,i,'vector')
     46            for i in range(np.size(cf)):
     47                if (np.size(args[0]) > 1):
     48                    cf[i].descriptor = args[0][i]
     49                else:
     50                    cf[i].descriptor = str(args[0]) + string_dim(cf, i, 'vector')
    5051
    51                         if nargin >= 2:
    52                                 for i in range(np.size(cf)):
    53                                         cf[i].scale_type = str(args[1])
    54                         if nargin >= 3:
    55                                 for i in range(np.size(cf)):
    56                                         cf[i].scale = args[2]
    57                         if nargin >= 4:
    58                                 for i in range(np.size(cf)):
    59                                         cf[i].weight = args[3]
    60                         if nargin > 4:
    61                                 print('WARNING: calibration_function:extra_arg: Extra arguments for object of class '+str(type(cf))+'.')
     52            if nargin >= 2:
     53                for i in range(np.size(cf)):
     54                    cf[i].scale_type = str(args[1])
     55            if nargin >= 3:
     56                for i in range(np.size(cf)):
     57                    cf[i].scale = args[2]
     58            if nargin >= 4:
     59                for i in range(np.size(cf)):
     60                    cf[i].weight = args[3]
     61            if nargin > 4:
     62                print('WARNING: calibration_function:extra_arg: Extra arguments for object of class ' + str(type(cf)) + '.')
    6263
    63                 return cf
     64        return cf
    6465
    65         def __repr__(self):
    66                 # display the object
    67                 string = '\n'
    68                 string += 'class "calibration_function" object = \n'
    69                 string += '    descriptor: '+str(self.descriptor) + '\n'
    70                 string += '    scale_type: '+str(self.scale_type) + '\n'
    71                 string += '         scale: '+str(self.scale) + '\n'
    72                 string += '        weight: '+str(self.weight) + '\n'
    73                 return string
     66    def __repr__(self):
     67        # display the object
     68        string = '\n'
     69        string += 'class "calibration_function" object = \n'
     70        string += '    descriptor: ' + str(self.descriptor) + '\n'
     71        string += '    scale_type: ' + str(self.scale_type) + '\n'
     72        string += '         scale: ' + str(self.scale) + '\n'
     73        string += '        weight: ' + str(self.weight) + '\n'
     74        return string
    7475
    75         # from here on, cf is either a single, or a 1d vector of, calibration_function
    76         @staticmethod
    77         def prop_desc(cf,dstr):
    78                 if type(cf) not in [list,np.ndarray]:
    79                         if cf.descriptor != '' or type(cf.descriptor) != str:
    80                                 desc = str(cf.descriptor)
    81                         elif dstr != '':
    82                                 desc = str(dstr)
    83                         else:
    84                                 desc = 'cf'
    85                         return desc
     76    # from here on, cf is either a single, or a 1d vector of, calibration_function
     77    @staticmethod
     78    def prop_desc(cf, dstr):
     79        if type(cf) not in [list, np.ndarray]:
     80            if cf.descriptor != '' or type(cf.descriptor) != str:
     81                desc = str(cf.descriptor)
     82            elif dstr != '':
     83                desc = str(dstr)
     84            else:
     85                desc = 'cf'
     86            return desc
    8687
    87                 desc = ['' for i in range(np.size(cf))]
    88                 for i in range(np.size(cf)):
    89                         if cf[i].descriptor != '' or type(cf[i].descriptor) != str:
    90                                 desc[i] = str(cf[i].descriptor)
    91                         elif dstr != '':
    92                                 desc[i] = str(dstr)+str(string_dim(cf,i,'vector'))
    93                         else:
    94                                 desc[i] = 'cf'+str(string_dim(cf,i,'vector'))
     88        desc = ['' for i in range(np.size(cf))]
     89        for i in range(np.size(cf)):
     90            if cf[i].descriptor != '' or type(cf[i].descriptor) != str:
     91                desc[i] = str(cf[i].descriptor)
     92            elif dstr != '':
     93                desc[i] = str(dstr) + str(string_dim(cf, i, 'vector'))
     94            else:
     95                desc[i] = 'cf' + str(string_dim(cf, i, 'vector'))
    9596
    96                 desc = allempty(desc)
    97                 return desc
     97        desc = allempty(desc)
     98        return desc
    9899
    99         @staticmethod
    100         def prop_stype(cf):
    101                 stype=''
    102                 return stype
     100    @staticmethod
     101    def prop_stype(cf):
     102        stype = ''
     103        return stype
    103104
    104         @staticmethod
    105         def prop_weight(cf):
    106                 weight=[]
    107                 return weight
     105    @staticmethod
     106    def prop_weight(cf):
     107        weight = []
     108        return weight
    108109
    109         @staticmethod
    110         def prop_lower(cf):
    111                 lower=[]
    112                 return lower
     110    @staticmethod
     111    def prop_lower(cf):
     112        lower = []
     113        return lower
    113114
    114         @staticmethod
    115         def prop_upper(cf):
    116                 upper=[]
    117                 return upper
     115    @staticmethod
     116    def prop_upper(cf):
     117        upper = []
     118        return upper
    118119
    119         @staticmethod
    120         def prop_target(cf):
    121                 target=[]
    122                 return target
     120    @staticmethod
     121    def prop_target(cf):
     122        target = []
     123        return target
    123124
    124         @staticmethod
    125         def prop_scale(cf):
    126                 scale=[]
    127                 return scale
     125    @staticmethod
     126    def prop_scale(cf):
     127        scale = []
     128        return scale
    128129
    129         @staticmethod
    130         def dakota_write(fidi,dresp,rdesc):
    131                 # collect only the responses of the appropriate class
    132                 cf = [struc_class(i,'calibration_function','cf') for i in dresp]
     130    @staticmethod
     131    def dakota_write(fidi, dresp, rdesc):
     132        # collect only the responses of the appropriate class
     133        cf = [struc_class(i, 'calibration_function', 'cf') for i in dresp]
    133134
    134                 # write responses
    135                 rdesc = rlist_write(fidi,'calibration_terms','calibration_function',cf,rdesc)
    136                 return rdesc
     135        # write responses
     136        rdesc = rlist_write(fidi, 'calibration_terms', 'calibration_function', cf, rdesc)
     137        return rdesc
    137138
    138         @staticmethod
    139         def dakota_rlev_write(fidi,dresp,params):
    140                 return
     139    @staticmethod
     140    def dakota_rlev_write(fidi, dresp, params):
     141        return
  • issm/trunk-jpl/src/m/classes/qmu/continuous_design.py

    r23716 r24213  
    33from MatlabArray import *
    44
     5
    56class continuous_design(object):
    6         '''
     7    '''
    78  definition for the continuous_design class.
    89
    910  [cdv] = continuous_design.continuous_design(args)
    10    cdv  = continuous_design()
     11   cdv = continuous_design()
    1112
    1213  where the required args are:
     
    1415    initpt        (double, initial point, 0.)
    1516  and the optional args and defaults are:
    16     lower         (double, lower bound, -Inf)
    17     upper         (double, upper bound,  Inf)
     17    lower         (double, lower bound, - Inf)
     18    upper         (double, upper bound, Inf)
    1819    scale_type    (char, scaling type, 'none')
    1920    scale         (double, scaling factor, 1.)
     
    2425'''
    2526
    26         def __init__(self):
    27                 self.descriptor = ''
    28                 self.initpt     =  0.
    29                 self.lower      = -np.inf
    30                 self.upper      =  np.inf
    31                 self.scale_type = 'none'
    32                 self.scale      =  1.
    33        
    34         @staticmethod
    35         def continuous_design(*args):
    36                 nargin = len(args)
    37 
    38                 #  create a default object
    39                 if nargin == 0:
    40                         return continuous_design()
    41 
    42                 #  copy the object
    43                 if nargin == 1:
    44                         if isinstance(args[0],continuous_design):
    45                                 cdv = args[0]
    46                         else:
    47                                 raise RuntimeError('Object is a '+str(type(args[0]))+' class object, not "continuous_design".')
    48                                        
    49                 #  create the object from the input
    50                 else:
    51                         shapec = array_size(*args[0:min(nargin,6)])
    52                         cdv = [continuous_design() for i in range(shapec[0]) for j in range(shapec[1])]
    53                         # in case cdv doesn't use array-like args                       
    54                         #cdv = continuous_design()
    55 
    56                         for i in range(np.size(cdv)):
    57                                 if (np.size(args[0]) > 1):
    58                                         cdv[i].descriptor = args[0][i]
    59                                 else:
    60                                         cdv[i].descriptor = str(args[0])+string_dim(cdv,i,'vector')
    61 
    62                         if (nargin >= 2):
    63                                 for i in range(np.size(cdv)):
    64                                         if (np.size(args[1]) > 1):
    65                                                 cdv[i].initpt    = args[1][i]
    66                                         else:
    67                                                 cdv[i].initpt    = args[1]
    68 
    69                         if (nargin >= 3):
    70                                 for i in range(np.size(cdv)):
    71                                         if (np.size(args[2]) > 1):
    72                                                 cdv[i].lower     = args[2][i]
    73                                         else:
    74                                                 cdv[i].lower     = args[2]
    75                                                                        
    76                         if (nargin >= 4):
    77                                 for i in range(np.size(cdv)):
    78                                         if (np.size(args[3]) > 1):
    79                                                 cdv[i].upper     = args[3][i]
    80                                         else:
    81                                                 cdv[i].upper     = args[3]
    82                                                                                                
    83                         if (nargin >= 5):
    84                                 for i in range(np.size(cdv)):
    85                                         if (np.size(args[4]) > 1):
    86                                                 cdv[i].scale_type = args[4][i]
    87                                         else:
    88                                                 cdv[i].scale_type = str(args[4])
    89                                                                                                                
    90                         if (nargin >= 6):
    91                                 for i in range(np.size(cdv)):
    92                                         if (np.size(args[5]) > 1):
    93                                                 cdv[i].scale     = args[5][i]
    94                                         else:
    95                                                 cdv[i].scale     = args[5]
    96 
    97                         if (nargin > 6):
    98                                 print('WARNING: continuous_design:extra_arg: Extra arguments for object of class '+str(type(cdv))+'.')
    99 
    100                 return cdv
    101                                                                                
    102 
    103         def __repr__(self):
    104                 #  display the object
    105                 string = '\n'
    106                 string += 'class "continuous_design" object = \n'
    107                 string += '    descriptor: ' +str(self.descriptor) + '\n'
    108                 string += '        initpt: ' +str(self.initpt) + '\n'
    109                 string += '         lower: ' +str(self.lower) + '\n'
    110                 string += '         upper: ' +str(self.upper) + '\n'
    111                 string += '    scale_type: ' +str(self.scale_type) + '\n'
    112                 string += '         scale: ' +str(self.scale) + '\n'
    113 
    114                 return string
    115 
    116         @staticmethod
    117         def prop_desc(cdv,dstr):
    118                 if type(cdv) not in [list,np.ndarray]:
    119                         cdv = [cdv]
    120                         # in case cdv doesn't use array-like args
    121                         #if cdv.descriptor != '' or type(cdv.descriptor) != str:
    122                                 #desc = str(cdv.descriptor)
    123                         #elif dstr != '':
    124                                 #desc = str(dstr)
    125                         #else:
    126                                 #desc = 'cdv'
    127                         #return desc
    128 
    129                 desc = ['' for i in range(np.size(cdv))]
    130                 for i in range(np.size(cdv)):
    131                         if cdv[i].descriptor != '' or type(cdv[i].descriptor) != str:
    132                                 desc[i] = str(cdv[i].descriptor)
    133                         elif dstr != '':
    134                                 desc[i] = str(dstr)+str(string_dim(cdv,i,'vector'))
    135                         else:
    136                                 desc[i] = 'cdv'+str(string_dim(cdv,i,'vector'))
    137                        
    138                 desc = allempty(desc)
    139 
    140                 return desc
    141 
    142         @staticmethod   
    143         def prop_initpt(cdv):
    144                 if type(cdv) not in [list,np.ndarray]:
    145                         return cdv.initpt
    146 
    147                 initpt = np.zeros(np.size(cdv))
    148                 for i in range(np.size(cdv)):
    149                         initpt[i] = cdv[i].initpt
    150                        
    151                 initpt = allequal(initpt,0.)
    152 
    153                 return initpt
    154 
    155         @staticmethod
    156         def prop_lower(cdv):
    157                 if type(cdv) not in [list,np.ndarray]:
    158                         return cdv.lower
    159 
    160                 lower = np.zeros(np.size(cdv))
    161                 for i in range(np.size(cdv)):
    162                         lower[i] = cdv[i].lower
    163                        
    164                 lower = allequal(lower,-np.inf)
    165 
    166                 return lower
    167 
    168         @staticmethod   
    169         def prop_upper(cdv):
    170                 if type(cdv) not in [list,np.ndarray]:
    171                         return cdv.upper
    172 
    173                 upper = np.zeros(np.size(cdv))
    174                 for i in range(np.size(cdv)):
    175                         upper[i] = cdv[i].upper
    176 
    177                 upper = allequal(upper, np.inf)
    178 
    179                 return upper
    180 
    181         @staticmethod   
    182         def prop_mean(cdv):
    183                 mean=[]
    184                 return mean
    185 
    186         @staticmethod   
    187         def prop_stddev(cdv):
    188                 stddev=[]
    189                 return sttdev
    190 
    191         @staticmethod   
    192         def prop_initst(cdv):
    193                 initst=[]
    194                 return initst
    195 
    196         @staticmethod   
    197         def prop_stype(cdv):
    198                 if type(cdv) not in [list,np.ndarray]:
    199                         return str(cdv.scale_type)
    200 
    201                 stype = np.empty(np.size(cdv))
    202                 stype.fill(0.0)
    203                 for i in range(np.size(cdv)):
    204                         stype[i] = str(cdv[i].scale_type)
    205                        
    206                 stype = allequal(stype,'none')
    207 
    208                 return stype
    209 
    210         @staticmethod           
    211         def prop_scale(cdv):
    212                 if type(cdv) not in [list,np.ndarray]:
    213                         return cdv.scale
    214 
    215                 scale = np.zeros(np.size(cdv))
    216                 for i in range(np.size(cdv)):
    217                         scale[i] = cdv[i].scale
    218                        
    219                 scale = allequal(scale,1.)
    220 
    221                 return scale
    222        
    223 
    224         @staticmethod
    225         def dakota_write(fidi,dvar):
    226                 #  collect only the variables of the appropriate class
    227                 cdv = [struc_class(i,'continuous_design','cdv') for i in dvar]
    228 
    229                 #  write variables
    230                 vlist_write(fidi,'continuous_design','cdv',cdv)
    231 
     27    def __init__(self):
     28        self.descriptor = ''
     29        self.initpt = 0.
     30        self.lower = - np.inf
     31        self.upper = np.inf
     32        self.scale_type = 'none'
     33        self.scale = 1.
     34
     35    @staticmethod
     36    def continuous_design(*args):
     37        nargin = len(args)
     38
     39    #  create a default object
     40        if nargin == 0:
     41            return continuous_design()
     42
     43    #  copy the object
     44        if nargin == 1:
     45            if isinstance(args[0], continuous_design):
     46                cdv = args[0]
     47            else:
     48                raise RuntimeError('Object is a ' + str(type(args[0])) + ' class object, not "continuous_design".')
     49
     50    #  create the object from the input
     51        else:
     52            shapec = array_size(*args[0:min(nargin, 6)])
     53            cdv = [continuous_design() for i in range(shapec[0]) for j in range(shapec[1])]
     54    # in case cdv doesn't use array - like args
     55    #cdv = continuous_design()
     56
     57            for i in range(np.size(cdv)):
     58                if (np.size(args[0]) > 1):
     59                    cdv[i].descriptor = args[0][i]
     60                else:
     61                    cdv[i].descriptor = str(args[0]) + string_dim(cdv, i, 'vector')
     62
     63            if (nargin >= 2):
     64                for i in range(np.size(cdv)):
     65                    if (np.size(args[1]) > 1):
     66                        cdv[i].initpt = args[1][i]
     67                    else:
     68                        cdv[i].initpt = args[1]
     69
     70            if (nargin >= 3):
     71                for i in range(np.size(cdv)):
     72                    if (np.size(args[2]) > 1):
     73                        cdv[i].lower = args[2][i]
     74                    else:
     75                        cdv[i].lower = args[2]
     76
     77            if (nargin >= 4):
     78                for i in range(np.size(cdv)):
     79                    if (np.size(args[3]) > 1):
     80                        cdv[i].upper = args[3][i]
     81                    else:
     82                        cdv[i].upper = args[3]
     83
     84            if (nargin >= 5):
     85                for i in range(np.size(cdv)):
     86                    if (np.size(args[4]) > 1):
     87                        cdv[i].scale_type = args[4][i]
     88                    else:
     89                        cdv[i].scale_type = str(args[4])
     90
     91            if (nargin >= 6):
     92                for i in range(np.size(cdv)):
     93                    if (np.size(args[5]) > 1):
     94                        cdv[i].scale = args[5][i]
     95                    else:
     96                        cdv[i].scale = args[5]
     97
     98            if (nargin > 6):
     99                print('WARNING: continuous_design:extra_arg: Extra arguments for object of class ' + str(type(cdv)) + '.')
     100
     101        return cdv
     102
     103    def __repr__(self):
     104        #  display the object
     105        string = '\n'
     106        string += 'class "continuous_design" object = \n'
     107        string += '    descriptor: ' + str(self.descriptor) + '\n'
     108        string += '        initpt: ' + str(self.initpt) + '\n'
     109        string += '         lower: ' + str(self.lower) + '\n'
     110        string += '         upper: ' + str(self.upper) + '\n'
     111        string += '    scale_type: ' + str(self.scale_type) + '\n'
     112        string += '         scale: ' + str(self.scale) + '\n'
     113
     114        return string
     115
     116    @staticmethod
     117    def prop_desc(cdv, dstr):
     118        if type(cdv) not in [list, np.ndarray]:
     119            cdv = [cdv]
     120    # in case cdv doesn't use array - like args
     121    #if cdv.descriptor != '' or type(cdv.descriptor) != str:
     122    #desc = str(cdv.descriptor)
     123    #elif dstr != '':
     124    #desc = str(dstr)
     125    #else:
     126    #desc = 'cdv'
     127    #return desc
     128
     129        desc = ['' for i in range(np.size(cdv))]
     130        for i in range(np.size(cdv)):
     131            if cdv[i].descriptor != '' or type(cdv[i].descriptor) != str:
     132                desc[i] = str(cdv[i].descriptor)
     133            elif dstr != '':
     134                desc[i] = str(dstr) + str(string_dim(cdv, i, 'vector'))
     135            else:
     136                desc[i] = 'cdv' + str(string_dim(cdv, i, 'vector'))
     137
     138        desc = allempty(desc)
     139
     140        return desc
     141
     142    @staticmethod
     143    def prop_initpt(cdv):
     144        if type(cdv) not in [list, np.ndarray]:
     145            return cdv.initpt
     146
     147        initpt = np.zeros(np.size(cdv))
     148        for i in range(np.size(cdv)):
     149            initpt[i] = cdv[i].initpt
     150
     151        initpt = allequal(initpt, 0.)
     152
     153        return initpt
     154
     155    @staticmethod
     156    def prop_lower(cdv):
     157        if type(cdv) not in [list, np.ndarray]:
     158            return cdv.lower
     159
     160        lower = np.zeros(np.size(cdv))
     161        for i in range(np.size(cdv)):
     162            lower[i] = cdv[i].lower
     163
     164        lower = allequal(lower, - np.inf)
     165
     166        return lower
     167
     168    @staticmethod
     169    def prop_upper(cdv):
     170        if type(cdv) not in [list, np.ndarray]:
     171            return cdv.upper
     172
     173        upper = np.zeros(np.size(cdv))
     174        for i in range(np.size(cdv)):
     175            upper[i] = cdv[i].upper
     176
     177        upper = allequal(upper, np.inf)
     178
     179        return upper
     180
     181    @staticmethod
     182    def prop_mean(cdv):
     183        mean = []
     184        return mean
     185
     186    @staticmethod
     187    def prop_stddev(cdv):
     188        stddev = []
     189        return stddev
     190
     191    @staticmethod
     192    def prop_initst(cdv):
     193        initst = []
     194        return initst
     195
     196    @staticmethod
     197    def prop_stype(cdv):
     198        if type(cdv) not in [list, np.ndarray]:
     199            return str(cdv.scale_type)
     200
     201        stype = np.empty(np.size(cdv))
     202        stype.fill(0.0)
     203        for i in range(np.size(cdv)):
     204            stype[i] = str(cdv[i].scale_type)
     205
     206        stype = allequal(stype, 'none')
     207
     208        return stype
     209
     210    @staticmethod
     211    def prop_scale(cdv):
     212        if type(cdv) not in [list, np.ndarray]:
     213            return cdv.scale
     214
     215        scale = np.zeros(np.size(cdv))
     216        for i in range(np.size(cdv)):
     217            scale[i] = cdv[i].scale
     218
     219        scale = allequal(scale, 1.)
     220
     221        return scale
     222
     223    @staticmethod
     224    def dakota_write(fidi, dvar):
     225        #  collect only the variables of the appropriate class
     226        cdv = [struc_class(i, 'continuous_design', 'cdv') for i in dvar]
     227
     228    #  write variables
     229        vlist_write(fidi, 'continuous_design', 'cdv', cdv)
  • issm/trunk-jpl/src/m/classes/qmu/continuous_state.py

    r23716 r24213  
    33from MatlabArray import *
    44
     5
    56class continuous_state(object):
    6         '''
     7    '''
    78  definition for the continuous_state class.
    89
    910  [csv] = continuous_state.continuous_state(args)
    10    csv  = continuous_state()
     11   csv = continuous_state()
    1112
    1213  where the required args are:
     
    1415    initst        (double, initial state, 0.)
    1516  and the optional args and defaults are:
    16     lower         (double, lower bound, -Inf)
    17     upper         (double, upper bound,  Inf)
     17    lower         (double, lower bound, - Inf)
     18    upper         (double, upper bound, Inf)
    1819
    1920  note that zero arguments constructs a default instance, one
     
    2223'''
    2324
    24         def __init__(self):
    25                 self.descriptor = ''
    26                 self.initst     =  0.
    27                 self.lower      = -np.inf
    28                 self.upper      =  np.inf
    29        
    30         @staticmethod
    31         def continuous_state(*args):
    32                 nargin = len(args)
     25    def __init__(self):
     26        self.descriptor = ''
     27        self.initst = 0.
     28        self.lower = - np.inf
     29        self.upper = np.inf
    3330
    34                 #  create a default object
    35                 if nargin == 0:
    36                         return continuous_state()
     31    @staticmethod
     32    def continuous_state(*args):
     33        nargin = len(args)
    3734
    38                 #  copy the object
    39                 if nargin == 1:
    40                         if isinstance(args[0],continuous_state):
    41                                 csv = args[0]
    42                         else:
    43                                 raise RuntimeError('Object is a '+str(type(args[0]))+' class object, not "continuous_state".')
    44                                        
    45                 #  create the object from the input
    46                 else:
    47                         shapec = np.shape(*args[0:min(nargin,4)])
    48                         csv = [continuous_state() for i in range(shapec[0]) for j in range(shapec[1])]
    49                                        
    50                         for i in range(np.size(csv)):
    51                                 if (np.size(args[0]) > 1):
    52                                         csv[i].descriptor        = args[0][i]
    53                                 else:
    54                                         csv[i].descriptor        = str(args[0])+string_dim(csv,i,'vector')
     35        #  create a default object
     36        if nargin == 0:
     37            return continuous_state()
    5538
    56                         if (nargin >= 2):
    57                                 for i in range(np.size(csv)):
    58                                         if (np.size(args[1]) > 1):
    59                                                 csv[i].initst    = args[1][i]
    60                                         else:
    61                                                 csv[i].initst    = args[1]
     39        #  copy the object
     40        if nargin == 1:
     41            if isinstance(args[0], continuous_state):
     42                csv = args[0]
     43            else:
     44                raise RuntimeError('Object is a ' + str(type(args[0])) + ' class object, not "continuous_state".')
    6245
    63                         if (nargin >= 3):
    64                                 for i in range(np.size(csv)):
    65                                         if (np.size(args[2]) > 1):
    66                                                 csv[i].lower     = args[2][i]
    67                                         else:
    68                                                 csv[i].lower     = args[2]
    69        
    70                         if (nargin >= 4):
    71                                 for i in range(np.size(csv)):
    72                                         if (np.size(args[3]) > 1):
    73                                                 csv[i].upper     = args[3][i]
    74                                         else:
    75                                                 csv[i].upper     = args[3]
     46        #  create the object from the input
     47        else:
     48            shapec = np.shape(*args[0:min(nargin, 4)])
     49            csv = [continuous_state() for i in range(shapec[0]) for j in range(shapec[1])]
    7650
    77                         if (nargin > 4):
    78                                 print('continuous_state:extra_arg','Extra arguments for object of class '+str(type(csv))+'.')
     51            for i in range(np.size(csv)):
     52                if (np.size(args[0]) > 1):
     53                    csv[i].descriptor = args[0][i]
     54                else:
     55                    csv[i].descriptor = str(args[0]) + string_dim(csv, i, 'vector')
    7956
    80                 return csv
    81                                                                                
    82         def __repr__(self):
    83                 #  display the object
    84                 string = '\n'
    85                 string += 'class "continuous_state" object = \n'
    86                 string += '    descriptor: ' +str(self.descriptor) + '\n'
    87                 string += '        initst: ' +str(self.initst) + '\n'
    88                 string += '         lower: ' +str(self.lower) + '\n'
    89                 string += '         upper: ' +str(self.upper) + '\n'
     57            if (nargin >= 2):
     58                for i in range(np.size(csv)):
     59                    if (np.size(args[1]) > 1):
     60                        csv[i].initst = args[1][i]
     61                    else:
     62                        csv[i].initst = args[1]
    9063
    91                 return string
     64            if (nargin >= 3):
     65                for i in range(np.size(csv)):
     66                    if (np.size(args[2]) > 1):
     67                        csv[i].lower = args[2][i]
     68                    else:
     69                        csv[i].lower = args[2]
    9270
    93         @staticmethod
    94         def prop_desc(csv,dstr):
    95                 if type(csv) not in [list,np.ndarray]:
    96                         csv = [csv]
     71            if (nargin >= 4):
     72                for i in range(np.size(csv)):
     73                    if (np.size(args[3]) > 1):
     74                        csv[i].upper = args[3][i]
     75                    else:
     76                        csv[i].upper = args[3]
    9777
    98                 desc = ['' for i in range(np.size(csv))]
    99                 for i in range(np.size(csv)):
    100                         if csv[i].descriptor != '' or type(cdv[i].descriptor) != str:
    101                                 desc[i] = str(csv[i].descriptor)
    102                         elif dstr != '':
    103                                 desc[i] = str(dstr)+str(string_dim(csv,i,'vector'))
    104                         else:
    105                                 desc[i] = 'csv'+str(string_dim(csv,i,'vector'))
    106                        
    107                 desc = allempty(desc)
     78            if (nargin > 4):
     79                print('continuous_state:extra_arg', 'Extra arguments for object of class ' + str(type(csv)) + '.')
    10880
    109                 return desc
     81        return csv
    11082
    111         @staticmethod   
    112         def prop_initpt(csv):
    113                 initpt=[]
    114                 return initpt
     83    def __repr__(self):
     84        #  display the object
     85        string = '\n'
     86        string += 'class "continuous_state" object = \n'
     87        string += '    descriptor: ' + str(self.descriptor) + '\n'
     88        string += '        initst: ' + str(self.initst) + '\n'
     89        string += '         lower: ' + str(self.lower) + '\n'
     90        string += '         upper: ' + str(self.upper) + '\n'
    11591
    116         @staticmethod
    117         def prop_lower(csv):
    118                 if type(csv) not in [list,np.ndarray]:
    119                         return csv.lower
     92        return string
    12093
    121                 lower = np.zeros(np.size(csv))
    122                 for i in range(np.size(csv)):
    123                         lower[i] = csv[i].lower
    124                        
    125                 lower = allequal(lower,-np.inf)
     94    @staticmethod
     95    def prop_desc(csv, dstr):
     96        if type(csv) not in [list, np.ndarray]:
     97            csv = [csv]
    12698
    127                 return lower
     99        desc = ['' for i in range(np.size(csv))]
     100        for i in range(np.size(csv)):
     101            if csv[i].descriptor != '' or type(cdv[i].descriptor) != str:
     102                desc[i] = str(csv[i].descriptor)
     103            elif dstr != '':
     104                desc[i] = str(dstr) + str(string_dim(csv, i, 'vector'))
     105            else:
     106                desc[i] = 'csv' + str(string_dim(csv, i, 'vector'))
    128107
    129         @staticmethod   
    130         def prop_upper(csv):
    131                 if type(csv) not in [list,np.ndarray]:
    132                         return csv.upper
     108        desc = allempty(desc)
    133109
    134                 upper = np.zeros(np.size(csv))
    135                 for i in range(np.size(csv)):
    136                         upper[i] = csv[i].upper
     110        return desc
    137111
    138                 upper = allequal(upper, np.inf)
     112    @staticmethod
     113    def prop_initpt(csv):
     114        initpt = []
     115        return initpt
    139116
    140                 return upper
     117    @staticmethod
     118    def prop_lower(csv):
     119        if type(csv) not in [list, np.ndarray]:
     120            return csv.lower
    141121
    142         @staticmethod   
    143         def prop_mean(csv):
    144                 mean=[]
    145                 return mean
     122        lower = np.zeros(np.size(csv))
     123        for i in range(np.size(csv)):
     124            lower[i] = csv[i].lower
    146125
    147         @staticmethod   
    148         def prop_stddev(csv):
    149                 stddev=[]
    150                 return sttdev
     126        lower = allequal(lower, - np.inf)
    151127
    152         @staticmethod   
    153         def prop_initst(csv):
    154                 if type(csv) not in [list,np.ndarray]:
    155                         return csv.initst
     128        return lower
    156129
    157                 initst = np.zeros(np.size(csv))
    158                 for i in range(np.size(csv)):
    159                         initst[i] = csv[i].initst
     130    @staticmethod
     131    def prop_upper(csv):
     132        if type(csv) not in [list, np.ndarray]:
     133            return csv.upper
    160134
    161                 initst = allequal(initst,0.)
     135        upper = np.zeros(np.size(csv))
     136        for i in range(np.size(csv)):
     137            upper[i] = csv[i].upper
    162138
    163                 return initst
     139        upper = allequal(upper, np.inf)
    164140
    165         @staticmethod   
    166         def prop_stype(csv):
    167                 stype=''
    168                 return stype
     141        return upper
    169142
    170         @staticmethod           
    171         def prop_scale(csv):
    172                 scale=[]
    173                 return scale
     143    @staticmethod
     144    def prop_mean(csv):
     145        mean = []
     146        return mean
    174147
    175         @staticmethod
    176         def dakota_write(fidi,dvar):
    177                 #  collect only the variables of the appropriate class
    178                 csv = [struc_class(i,'continuous_state','csv') for i in dvar]
     148    @staticmethod
     149    def prop_stddev(csv):
     150        stddev = []
     151        return stddev
    179152
    180                 #  write variables
    181                 vlist_write(fidi,'continuous_state','csv',csv)
     153    @staticmethod
     154    def prop_initst(csv):
     155        if type(csv) not in [list, np.ndarray]:
     156            return csv.initst
    182157
     158        initst = np.zeros(np.size(csv))
     159        for i in range(np.size(csv)):
     160            initst[i] = csv[i].initst
     161
     162        initst = allequal(initst, 0.)
     163
     164        return initst
     165
     166    @staticmethod
     167    def prop_stype(csv):
     168        stype = ''
     169        return stype
     170
     171    @staticmethod
     172    def prop_scale(csv):
     173        scale = []
     174        return scale
     175
     176    @staticmethod
     177    def dakota_write(fidi, dvar):
     178        #  collect only the variables of the appropriate class
     179        csv = [struc_class(i, 'continuous_state', 'csv') for i in dvar]
     180
     181        #  write variables
     182        vlist_write(fidi, 'continuous_state', 'csv', csv)
  • issm/trunk-jpl/src/m/classes/qmu/least_squares_term.py

    r23716 r24213  
    33from MatlabArray import *
    44
     5
    56class least_squares_term(object):
    6         '''
     7    '''
    78  definition for the least_squares_term class.
    89
    910  [lst] = least_squares_term.least_squares_term(args)
    10    lst  = least_squares_term()
     11   lst = least_squares_term()
    1112
    1213  where the required args are:
     
    2122  arguments constructs a new instance from the arguments.
    2223'''
    23         def __init__(self):
    24                 self.descriptor = ''
    25                 self.scale_type = 'none'
    26                 self.scale      = 1.
    27                 self.weight     = 1.
     24    def __init__(self):
     25        self.descriptor = ''
     26        self.scale_type = 'none'
     27        self.scale = 1.
     28        self.weight = 1.
    2829
    29         @staticmethod
    30         def least_squares_term(*args):
    31                 nargin = len(args)
     30    @staticmethod
     31    def least_squares_term(*args):
     32        nargin = len(args)
    3233
    33                 #create a default object
    34                 if nargin == 0:
    35                         return least_squares_term()
     34        #create a default object
     35        if nargin == 0:
     36            return least_squares_term()
    3637
    37                 #copy the object or create the object from the input
    38                 else:
    39                         if  (nargin == 1) and isinstance(args[0],least_squares_term):
    40                                 lst = args[0]
    41                         else:
    42                                 asizec = np.shape(*args[0:min(nargin,4)])
    43                                 lst = [least_squares_term() for i in range(asizec[0]) for j in range(asizec[1])]
     38        #copy the object or create the object from the input
     39        else:
     40            if (nargin == 1) and isinstance(args[0], least_squares_term):
     41                lst = args[0]
     42            else:
     43                asizec = np.shape(*args[0:min(nargin, 4)])
     44                lst = [least_squares_term() for i in range(asizec[0]) for j in range(asizec[1])]
    4445
    45                                 for i in range(np.size(lst)):
    46                                         if (np.size(args[0]) > 1):
    47                                                 lst[i].descriptor = args[0][i]
    48                                         else:
    49                                                 lst[i].descriptor = str(args[0])+string_dim(lst,i,'vector')
     46                for i in range(np.size(lst)):
     47                    if (np.size(args[0]) > 1):
     48                        lst[i].descriptor = args[0][i]
     49                    else:
     50                        lst[i].descriptor = str(args[0]) + string_dim(lst, i, 'vector')
    5051
    51                                 if (nargin >= 2):
    52                                         for i in range(np.size(lst)):
    53                                                 if (np.size(args[1]) > 1):
    54                                                         lst[i].scale_type = args[1][i]
    55                                                 else:
    56                                                         lst[i].scale_type = str(args[1])
     52                if (nargin >= 2):
     53                    for i in range(np.size(lst)):
     54                        if (np.size(args[1]) > 1):
     55                            lst[i].scale_type = args[1][i]
     56                        else:
     57                            lst[i].scale_type = str(args[1])
    5758
    58                                 if (nargin >= 3):
    59                                         for i in range(np.size(lst)):
    60                                                 if (np.size(args[2]) > 1):
    61                                                         lst[i].scale = args[2][i]
    62                                                 else:
    63                                                         lst[i].scale = args[2]
     59                if (nargin >= 3):
     60                    for i in range(np.size(lst)):
     61                        if (np.size(args[2]) > 1):
     62                            lst[i].scale = args[2][i]
     63                        else:
     64                            lst[i].scale = args[2]
    6465
    65                                 if (nargin >= 4):
    66                                         for i in range(np.size(lst)):
    67                                                 if (np.size(args[3]) > 1):
    68                                                         lst[i].weight = args[3][i]
    69                                                 else:
    70                                                         lst[i].weight = args[3]
     66                if (nargin >= 4):
     67                    for i in range(np.size(lst)):
     68                        if (np.size(args[3]) > 1):
     69                            lst[i].weight = args[3][i]
     70                        else:
     71                            lst[i].weight = args[3]
    7172
    72                                 if (nargin > 4):
    73                                         print('WARNING: least_squares_term:extra_arg Extra arguments for object of class '+str(type(lst))+'.')
     73                if (nargin > 4):
     74                    print('WARNING: least_squares_term:extra_arg Extra arguments for object of class ' + str(type(lst)) + '.')
    7475
    75                 return lst
     76        return lst
    7677
    77         def __repr__(self):
    78                 # display the object
    79                 string = '\n'
    80                 string += 'class "least_squares_term" object = \n'
    81                 string += '    descriptor: '+str(self.descriptor) + '\n'
    82                 string += '    scale_type: '+str(self.scale_type) + '\n'
    83                 string += '         scale: '+str(self.scale) + '\n'
    84                 string += '        weight: '+str(self.weight) + '\n'
    85                 return string
     78    def __repr__(self):
     79        # display the object
     80        string = '\n'
     81        string += 'class "least_squares_term" object = \n'
     82        string += '    descriptor: ' + str(self.descriptor) + '\n'
     83        string += '    scale_type: ' + str(self.scale_type) + '\n'
     84        string += '         scale: ' + str(self.scale) + '\n'
     85        string += '        weight: ' + str(self.weight) + '\n'
     86        return string
    8687
    87         @staticmethod
    88         def prop_desc(lst,dstr):
    89                 if type(lst) not in [list,np.ndarray]:
    90                         lst = [lst]
     88    @staticmethod
     89    def prop_desc(lst, dstr):
     90        if type(lst) not in [list, np.ndarray]:
     91            lst = [lst]
    9192
    92                 desc = ['' for i in range(np.size(lst))]
    93                 for i in range(np.size(lst)):
    94                         if lst[i].descriptor != '' or type(cdv[i].descriptor) != str:
    95                                 desc[i] = str(lst[i].descriptor)
    96                         elif dstr != '':
    97                                 desc[i] = str(dstr)+str(string_dim(lst,i,'vector'))
    98                         else:
    99                                 desc[i] = 'lst'+str(string_dim(lst,i,'vector'))
     93        desc = ['' for i in range(np.size(lst))]
     94        for i in range(np.size(lst)):
     95            if lst[i].descriptor != '' or type(cdv[i].descriptor) != str:
     96                desc[i] = str(lst[i].descriptor)
     97            elif dstr != '':
     98                desc[i] = str(dstr) + str(string_dim(lst, i, 'vector'))
     99            else:
     100                desc[i] = 'lst' + str(string_dim(lst, i, 'vector'))
    100101
    101                 desc = allempty(desc)
    102                 return desc
     102        desc = allempty(desc)
     103        return desc
    103104
    104         @staticmethod
    105         def prop_stype(lst):
    106                 if type(lst) not in [list,np.ndarray]:
    107                         return str(lst.scale_type)
     105    @staticmethod
     106    def prop_stype(lst):
     107        if type(lst) not in [list, np.ndarray]:
     108            return str(lst.scale_type)
    108109
    109                 stype = ['' for i in range(np.size(lst))]
    110                 for i in range(np.size(lst)):
    111                         stype[i] = str(lst[i].scale_type)
     110        stype = ['' for i in range(np.size(lst))]
     111        for i in range(np.size(lst)):
     112            stype[i] = str(lst[i].scale_type)
    112113
    113                 stype = allequal(stype,'none')
    114                 return stype
     114        stype = allequal(stype, 'none')
     115        return stype
    115116
    116         @staticmethod
    117         def prop_scale(lst):
    118                 if type(lst) not in [list,np.ndarray]:
    119                         return lst.scale
     117    @staticmethod
     118    def prop_scale(lst):
     119        if type(lst) not in [list, np.ndarray]:
     120            return lst.scale
    120121
    121                 scale = np.zeros(np.size(lst))
    122                 for i in range(np.size(lst)):
    123                         scale[i] = lst[i].scale
     122        scale = np.zeros(np.size(lst))
     123        for i in range(np.size(lst)):
     124            scale[i] = lst[i].scale
    124125
    125                 scale = allequal(scale,1.)
    126                 return scale
     126        scale = allequal(scale, 1.)
     127        return scale
    127128
    128         @staticmethod
    129         def prop_weight(lst):
    130                 if type(lst) not in [list,np.ndarray]:
    131                         return lst.weight
     129    @staticmethod
     130    def prop_weight(lst):
     131        if type(lst) not in [list, np.ndarray]:
     132            return lst.weight
    132133
    133                 weight = np.zeros(np.size(lst))
    134                 for i in range(np.size(lst)):
    135                         weight[i] = lst[i].weight
     134        weight = np.zeros(np.size(lst))
     135        for i in range(np.size(lst)):
     136            weight[i] = lst[i].weight
    136137
    137                 weight = allequal(weight,1.)
    138                 return weight
     138        weight = allequal(weight, 1.)
     139        return weight
    139140
    140         @staticmethod
    141         def prop_lower(lst):
    142                 lower=[]
    143                 return lower
     141    @staticmethod
     142    def prop_lower(lst):
     143        lower = []
     144        return lower
    144145
    145         @staticmethod
    146         def prop_upper(lst):
    147                 upper=[]
    148                 return upper
     146    @staticmethod
     147    def prop_upper(lst):
     148        upper = []
     149        return upper
    149150
    150         @staticmethod
    151         def prop_target(lst):
    152                 target=[]
    153                 return target
     151    @staticmethod
     152    def prop_target(lst):
     153        target = []
     154        return target
    154155
    155         @staticmethod
    156         def dakota_write(fidi,dresp,rdesc):
    157                 #collect only the responses of the appropriate class
    158                 lst = [struc_class(i,'least_squares_term','lst') for i in dresp]
     156    @staticmethod
     157    def dakota_write(fidi, dresp, rdesc):
     158        #collect only the responses of the appropriate class
     159        lst = [struc_class(i, 'least_squares_term', 'lst') for i in dresp]
    159160
    160                 #write responses
    161                 rdesc = rlist_write(fidi,'least_squares_terms','least_squares_term',lst,rdesc)
    162                 return rdesc
     161        #write responses
     162        rdesc = rlist_write(fidi, 'least_squares_terms', 'least_squares_term', lst, rdesc)
     163        return rdesc
    163164
    164         @staticmethod
    165         def dakota_rlev_write(fidi,dresp,params):
    166                 return
     165    @staticmethod
     166    def dakota_rlev_write(fidi, dresp, params):
     167        return
  • issm/trunk-jpl/src/m/classes/qmu/linear_equality_constraint.py

    r23716 r24213  
    33from MatlabArray import *
    44
     5
    56class linear_equality_constraint:
    6         '''
     7    '''
    78  constructor for the linear_equality_constraint class.
    89
    910  [lec] = linear_equality_constraint.linear_equality_constraint(args)
    10    lec  = linear_equality_constraint()
     11   lec = linear_equality_constraint()
    1112
    1213  where the required args are:
     
    2122  arguments constructs a new instance from the arguments.
    2223'''
    23         def __init__(self):
    24                 self.matrix     = np.array([[float('NaN')]])
    25                 self.target     = 0.
    26                 self.scale_type = 'none'
    27                 self.scale      = 1.
     24    def __init__(self):
     25        self.matrix = np.array([[float('NaN')]])
     26        self.target = 0.
     27        self.scale_type = 'none'
     28        self.scale = 1.
    2829
    29         @staticmethod
    30         def linear_equality_constraint(*args):
    31                 nargin = len(args)
     30    @staticmethod
     31    def linear_equality_constraint(*args):
     32        nargin = len(args)
    3233
    33                 #  create a default object
    34                 if nargin == 0:
    35                         return linear_equality_constraint()
     34        #  create a default object
     35        if nargin == 0:
     36            return linear_equality_constraint()
    3637
    37                 #  copy the object
    38                 elif nargin == 1:
    39                         if isinstance(args[0],linear_equality_constraint):
    40                                 lec = args[0]
    41                         else:
    42                                 raise RuntimeError('Object is a '+str(type(args[0]))+' class object, not "linear_equality_constraint"')
     38        #  copy the object
     39        elif nargin == 1:
     40            if isinstance(args[0], linear_equality_constraint):
     41                lec = args[0]
     42            else:
     43                raise RuntimeError('Object is a ' + str(type(args[0])) + ' class object, not "linear_equality_constraint"')
    4344
    44                 #  create the object from the input
    45                 else:
    46                         if (np.shape(args[0],1) == array_np.size(args[1:min(nargin,4)]) or np.shape(args[0],1) == 1):
    47                                 asizec = np.shape(args[1:min(nargin,4)])
    48                         elif (array_np.size(args[1:min(nargin,4)]) == 1):
    49                                 asizec = [np.shape(args[0],1),1]
    50                         else:
    51                                 raise RuntimeError('Matrix for object of class '+str(type(lec))+' has inconsistent number of rows.')
     45        #  create the object from the input
     46        else:
     47            if (np.shape(args[0], 1) == array_np.size(args[1:min(nargin, 4)]) or np.shape(args[0], 1) == 1):
     48                asizec = np.shape(args[1:min(nargin, 4)])
     49            elif (array_np.size(args[1:min(nargin, 4)]) == 1):
     50                asizec = [np.shape(args[0], 1), 1]
     51            else:
     52                raise RuntimeError('Matrix for object of class ' + str(type(lec)) + ' has inconsistent number of rows.')
    5253
    53                         lec = [linear_equality_constraint() for i in range(asizec[0]) for j in range(asizec[1])]
     54            lec = [linear_equality_constraint() for i in range(asizec[0]) for j in range(asizec[1])]
    5455
    55                         for i in range(np.size(lec)):
    56                                 if (np.shape(args[0])[0] > 1):
    57                                         lec[i].matrix             = args[0][i,:]
    58                                 else:
    59                                         lec[i].matrix            = args[0]
     56            for i in range(np.size(lec)):
     57                if (np.shape(args[0])[0] > 1):
     58                    lec[i].matrix = args[0][i, :]
     59                else:
     60                    lec[i].matrix = args[0]
    6061
    61                         if (nargin >= 2):
    62                                 for i in range(np.size(lec)):
    63                                         if (np.size(args[1]) > 1):
    64                                                 lec[i].target    = args[1][i]
    65                                         else:
    66                                                 lec[i].target    = args[1]
     62            if (nargin >= 2):
     63                for i in range(np.size(lec)):
     64                    if (np.size(args[1]) > 1):
     65                        lec[i].target = args[1][i]
     66                    else:
     67                        lec[i].target = args[1]
    6768
    68                         if (nargin >= 3):                                       
    69                                 for i in range(np.size(lec)):
    70                                         if (np.size(args[2]) > 1):
    71                                                 lec[i].scale_type = args[2][i]
    72                                         else:
    73                                                 lec[i].scale_type = str(args[2])
    74                                            
    75                         if (nargin >= 4):
    76                                 for i in range(np.size(lec)):
    77                                         if (np.size(args[3]) > 1):
    78                                                 lec[i].scale      = args[3][i]
    79                                         else:
    80                                                 lec[i].scale      = args[3]
     69            if (nargin >= 3):
     70                for i in range(np.size(lec)):
     71                    if (np.size(args[2]) > 1):
     72                        lec[i].scale_type = args[2][i]
     73                    else:
     74                        lec[i].scale_type = str(args[2])
    8175
    82                         if (nargin > 4):
    83                                 print('WARNING: linear_equality_constraint:extra_arg: Extra arguments for object of class '+str(type(lec))+'.')
     76            if (nargin >= 4):
     77                for i in range(np.size(lec)):
     78                    if (np.size(args[3]) > 1):
     79                        lec[i].scale = args[3][i]
     80                    else:
     81                        lec[i].scale = args[3]
    8482
    85                 return lec
    86                                            
     83            if (nargin > 4):
     84                print('WARNING: linear_equality_constraint:extra_arg: Extra arguments for object of class ' + str(type(lec)) + '.')
    8785
    88         def __repr__(self):
    89                 # display the object
    90                 string = '\n'
    91                 string += 'class "linear_equality_constraint" object = \n'
    92                 string += '        matrix: '  +str(self.matrix) + '\n'
    93                 string += '        target: '  +str(self.target) + '\n'
    94                 string += '    scale_type: '  +str(self.scale_type) + '\n'
    95                 string += '         scale: '  +str(self.scale) + '\n'
     86        return lec
    9687
    97                 return string
     88    def __repr__(self):
     89        # display the object
     90        string = '\n'
     91        string += 'class "linear_equality_constraint" object = \n'
     92        string += '        matrix: ' + str(self.matrix) + '\n'
     93        string += '        target: ' + str(self.target) + '\n'
     94        string += '    scale_type: ' + str(self.scale_type) + '\n'
     95        string += '         scale: ' + str(self.scale) + '\n'
    9896
    99         @staticmethod
    100         def prop_matrix(lec):
    101                 if type(lec) not in [list,np.ndarray]:
    102                         return lec.matrix
     97        return string
    10398
    104                 matrix = np.zeros(np.size(lec))
    105                 for i in range(np.size(lec)):
    106                         matrix[i,0:np.shape(lec[i].matrix)[1]] = lec[i].matrix[0,:]
     99    @staticmethod
     100    def prop_matrix(lec):
     101        if type(lec) not in [list, np.ndarray]:
     102            return lec.matrix
    107103
    108                 return matrix
     104        matrix = np.zeros(np.size(lec))
     105        for i in range(np.size(lec)):
     106            matrix[i, 0:np.shape(lec[i].matrix)[1]] = lec[i].matrix[0, :]
    109107
    110         @staticmethod
    111         def prop_lower(lec):
    112                 lower=[]
    113                 return lower
     108        return matrix
    114109
    115         @staticmethod
    116         def prop_upper(lec):
    117                 upper=[]
    118                 return upper
     110    @staticmethod
     111    def prop_lower(lec):
     112        lower = []
     113        return lower
    119114
    120         @staticmethod
    121         def prop_target(lec):
    122                 if type(lec) not in [list,np.ndarray]:
    123                         return lec.target
     115    @staticmethod
     116    def prop_upper(lec):
     117        upper = []
     118        return upper
    124119
    125                 target = np.zeros(np.shape(lec))
    126                 for i in range(np.size(lec)):
    127                         target[i] = lec[i].target
    128                
    129                 target = allequal(target,0.)
     120    @staticmethod
     121    def prop_target(lec):
     122        if type(lec) not in [list, np.ndarray]:
     123            return lec.target
    130124
    131                 return target
     125        target = np.zeros(np.shape(lec))
     126        for i in range(np.size(lec)):
     127            target[i] = lec[i].target
    132128
    133         @staticmethod
    134         def prop_stype(lec):
    135                 if type(lec) not in [list,np.ndarray]:
    136                         return lec.scale_type
     129        target = allequal(target, 0.)
    137130
    138                 stype = ['' for i in range(np.size(lec))]
    139                 for i in range(np.size(lec)):
    140                         stype[i] = str(lec[i].scale_type)
    141                
    142                 stype = allequal(stype,'none')
     131        return target
    143132
    144                 return stype
     133    @staticmethod
     134    def prop_stype(lec):
     135        if type(lec) not in [list, np.ndarray]:
     136            return lec.scale_type
    145137
    146         @staticmethod
    147         def prop_scale(lec):
    148                 if type(lec) not in [list,np.ndarray]:
    149                         return lec.scale
     138        stype = ['' for i in range(np.size(lec))]
     139        for i in range(np.size(lec)):
     140            stype[i] = str(lec[i].scale_type)
    150141
    151                 scale = np.zeros(np.shape(lec))
    152                 for i in range(np.size(lec)):
    153                         scale[i] = lec[i].scale
    154                
    155                 scale = allequal(scale,1.)
     142        stype = allequal(stype, 'none')
    156143
    157                 return scale
    158    
    159         @staticmethod
    160         def dakota_write(fidi,dvar):
    161                 # collect only the variables of the appropriate class
    162                 lec = [struc_type(i,'linear_equality_constraint','lec') for i in dvar]
     144        return stype
    163145
    164                 # write constraints
    165                 lclist_write(fidi,'linear_equality_constraints','linear_equality',lec)
     146    @staticmethod
     147    def prop_scale(lec):
     148        if type(lec) not in [list, np.ndarray]:
     149            return lec.scale
     150
     151        scale = np.zeros(np.shape(lec))
     152        for i in range(np.size(lec)):
     153            scale[i] = lec[i].scale
     154
     155        scale = allequal(scale, 1.)
     156
     157        return scale
     158
     159    @staticmethod
     160    def dakota_write(fidi, dvar):
     161        # collect only the variables of the appropriate class
     162        lec = [struc_type(i, 'linear_equality_constraint', 'lec') for i in dvar]
     163
     164        # write constraints
     165        lclist_write(fidi, 'linear_equality_constraints', 'linear_equality', lec)
  • issm/trunk-jpl/src/m/classes/qmu/linear_inequality_constraint.py

    r23716 r24213  
    33from MatlabArray import *
    44
     5
    56class linear_inequality_constraint:
    6         '''
     7    '''
    78  constructor for the linear_inequality_constraint class.
    89
    910  [lic] = linear_inequality_constraint.linear_inequality_constraint(args)
    10    lic  = linear_inequality_constraint()
     11   lic = linear_inequality_constraint()
    1112
    1213  where the required args are:
    1314    matrix        (double row, variable coefficients, float('NaN'))
    14     lower         (double vector, lower bounds, -np.Inf)
     15    lower         (double vector, lower bounds, - np.Inf)
    1516    upper         (double vector, upper bounds, 0.)
    1617  and the optional args and defaults are:
     
    2223  arguments constructs a new instance from the arguments.
    2324'''
    24         def __init__(self):
    25                 self.matrix     = np.array([[float('NaN')]])
    26                 self.lower      = -np.Inf
    27                 self.upper      = 0.
    28                 self.scale_type = 'none'
    29                 self.scale      = 1.
     25    def __init__(self):
     26        self.matrix = np.array([[float('NaN')]])
     27        self.lower = - np.Inf
     28        self.upper = 0.
     29        self.scale_type = 'none'
     30        self.scale = 1.
    3031
    31         @staticmethod   
    32         def linear_inequality_constraint(*args):
    33                 nargin = len(args)
     32    @staticmethod
     33    def linear_inequality_constraint(*args):
     34        nargin = len(args)
    3435
    35                 # create a default object
    36                 if nargin == 0:
    37                         return linear_inequality_constraint()
     36        # create a default object
     37        if nargin == 0:
     38            return linear_inequality_constraint()
    3839
    39                 # copy the object
    40                 if nargin == 1:
    41                         if isinstance(args[0],linear_inequality_constraint):
    42                                 lic = args[0]
    43                         else:
    44                                 raise RuntimeError('Object is a '+str(type(args[0]))+' class object, not "linear_inequality_constraint".')
     40        # copy the object
     41        if nargin == 1:
     42            if isinstance(args[0], linear_inequality_constraint):
     43                lic = args[0]
     44            else:
     45                raise RuntimeError('Object is a ' + str(type(args[0])) + ' class object, not "linear_inequality_constraint".')
    4546
    46                 # not enough arguments
    47                 if nargin == 2:
    48                         raise RuntimeError('Construction of linear_inequality_constraint class object requires at least 3 inputs.')
     47        # not enough arguments
     48        if nargin == 2:
     49            raise RuntimeError('Construction of linear_inequality_constraint class object requires at least 3 inputs.')
    4950
    50                 # create the object from the input
    51                 else:
    52                         if (np.shape(args[0],1) == array_numel(args[1:min(nargin,5)]) or np.shape(args[0],1) == 1):
    53                                 asizec = array_size(args[1:min(nargin,5)])
    54                         elif (array_numel(args[1:min(nargin,5)]) == 1):
    55                                 asizec = [array_size(args[0],1),1]
    56                         else:
    57                                 raise RuntimeError('Matrix for object of class '+str(type(lic))+' has inconsistent number of rows.')
    58                    
    59                         lic = [linear_inequality_constraint() for i in range(asizec[0]) for j in range(asizec[1])]
     51        # create the object from the input
     52        else:
     53            if (np.shape(args[0], 1) == array_numel(args[1:min(nargin, 5)]) or np.shape(args[0], 1) == 1):
     54                asizec = array_size(args[1:min(nargin, 5)])
     55            elif (array_numel(args[1:min(nargin, 5)]) == 1):
     56                asizec = [array_size(args[0], 1), 1]
     57            else:
     58                raise RuntimeError('Matrix for object of class ' + str(type(lic)) + ' has inconsistent number of rows.')
    6059
    61                         for i in range(np.size(lic)):
    62                                 if (np.shape(args[0],1) > 1):
    63                                         lic[i].matrix             = args[0][i,:]
    64                                 else:
    65                                         lic[i].matrix             = args[0]
     60            lic = [linear_inequality_constraint() for i in range(asizec[0]) for j in range(asizec[1])]
    6661
    67                         if (nargin >= 2):
    68                                 for i in range(np.size(lic)):
    69                                         if (np.size(args[1]) > 1):
    70                                                 lic[i].lower      = args[1][i]
    71                                         else:
    72                                                 lic[i].lower      = args[1]
     62            for i in range(np.size(lic)):
     63                if (np.shape(args[0], 1) > 1):
     64                    lic[i].matrix = args[0][i, :]
     65                else:
     66                    lic[i].matrix = args[0]
    7367
    74                         if (nargin >= 3):
    75                                 for i in range(np.size(lic)):
    76                                         if (np.size(args[2]) > 1):
    77                                                 lic[i].upper      = args[2][i]
    78                                         else:
    79                                                 lic[i].upper      = args[2]
    80                                
    81                         if (nargin >= 4):
    82                                 for i in range(np.size(lic)):
    83                                         if (np.size(args[3]) > 1):
    84                                                 lic[i].scale_type = args[3][i]
    85                                         else:
    86                                                 lic[i].scale_type = str(args[3])
    87                                    
    88                         if (nargin >= 5):
    89                                 for i in range(np.size(lic)):
    90                                         if (np.size(args[4]) > 1):
    91                                                 lic[i].scale     = args[4][i]
    92                                         else:
    93                                                 lic[i].scale     = args[4]
     68            if (nargin >= 2):
     69                for i in range(np.size(lic)):
     70                    if (np.size(args[1]) > 1):
     71                        lic[i].lower = args[1][i]
     72                    else:
     73                        lic[i].lower = args[1]
    9474
    95                         if (nargin > 5):
    96                                 print('WARNING: linear_inequality_constraint:extra_arg: Extra arguments for object of class '+str(type(lic))+'.')
     75            if (nargin >= 3):
     76                for i in range(np.size(lic)):
     77                    if (np.size(args[2]) > 1):
     78                        lic[i].upper = args[2][i]
     79                    else:
     80                        lic[i].upper = args[2]
    9781
    98                 return lic
     82            if (nargin >= 4):
     83                for i in range(np.size(lic)):
     84                    if (np.size(args[3]) > 1):
     85                        lic[i].scale_type = args[3][i]
     86                    else:
     87                        lic[i].scale_type = str(args[3])
    9988
     89            if (nargin >= 5):
     90                for i in range(np.size(lic)):
     91                    if (np.size(args[4]) > 1):
     92                        lic[i].scale = args[4][i]
     93                    else:
     94                        lic[i].scale = args[4]
    10095
    101         def __repr__(self):
    102                 # display the object
    103                 string = '\n'
    104                 string += 'class "linear_inequality_constraint" object = \n'
    105                 string += '        matrix: '  +str(string_vec(self.matrix)) + '\n'
    106                 string += '         lower: '  +str(self.lower) + '\n'
    107                 string += '         upper: '  +str(self.upper) + '\n'
    108                 string += '    scale_type: '  +str(self.scale_type) + '\n'
    109                 string += '         scale: '  +str(self.scale) + '\n'
     96            if (nargin > 5):
     97                print('WARNING: linear_inequality_constraint:extra_arg: Extra arguments for object of class ' + str(type(lic)) + '.')
    11098
    111                 return string
     99        return lic
    112100
    113         @staticmethod
    114         def prop_matrix(lic):
    115                 if type(lic) not in [list,np.ndarray]:
    116                         return lic.matrix
     101    def __repr__(self):
     102        # display the object
     103        string = '\n'
     104        string += 'class "linear_inequality_constraint" object = \n'
     105        string += '        matrix: ' + str(string_vec(self.matrix)) + '\n'
     106        string += '         lower: ' + str(self.lower) + '\n'
     107        string += '         upper: ' + str(self.upper) + '\n'
     108        string += '    scale_type: ' + str(self.scale_type) + '\n'
     109        string += '         scale: ' + str(self.scale) + '\n'
    117110
    118                 matrix = np.zeros(np.size(lic))
    119                 for i in range(np.size(lic)):
    120                         matrix[i,0:np.shape(lic[i].matrix)[1]] = lic[i].matrix[0,:]
     111        return string
    121112
    122                 return matrix
     113    @staticmethod
     114    def prop_matrix(lic):
     115        if type(lic) not in [list, np.ndarray]:
     116            return lic.matrix
    123117
    124         @staticmethod
    125         def prop_lower(lic):
    126                 if type(lic) not in [list,np.ndarray]:
    127                         return lic.lower
     118        matrix = np.zeros(np.size(lic))
     119        for i in range(np.size(lic)):
     120            matrix[i, 0:np.shape(lic[i].matrix)[1]] = lic[i].matrix[0, :]
    128121
    129                 lower = np.zeros(np.shape(lic))
    130                 for i in range(np.size(lic)):
    131                         lower[i] = lic[i].lower
    132            
    133                 lower = allequal(lower,-np.Inf)
     122        return matrix
    134123
    135                 return lower
     124    @staticmethod
     125    def prop_lower(lic):
     126        if type(lic) not in [list, np.ndarray]:
     127            return lic.lower
    136128
    137         @staticmethod
    138         def prop_upper(lic):
    139                 if type(lic) not in [list,np.ndarray]:
    140                         return lic.upper
     129        lower = np.zeros(np.shape(lic))
     130        for i in range(np.size(lic)):
     131            lower[i] = lic[i].lower
    141132
    142                 upper = np.zeros(np.shape(lic))
    143                 for i in range(np.size(lic)):
    144                         upper[i] = lic[i].upper
    145            
    146                 upper = allequal(upper,0.)
     133        lower = allequal(lower, - np.Inf)
    147134
    148                 return upper
     135        return lower
    149136
    150         @staticmethod
    151         def prop_target(lic):
    152                 target=[]
    153                 return target
     137    @staticmethod
     138    def prop_upper(lic):
     139        if type(lic) not in [list, np.ndarray]:
     140            return lic.upper
    154141
    155         @staticmethod
    156         def prop_stype(lic):
    157                 if type(lic) not in [list,np.ndarray]:
    158                         return lic.scale_type
     142        upper = np.zeros(np.shape(lic))
     143        for i in range(np.size(lic)):
     144            upper[i] = lic[i].upper
    159145
    160                 stype = ['' for i in range(np.size(lic))]
    161                 for i in range(np.size(lic)):
    162                         stype[i] = str(lic[i].scale_type)
    163            
    164                 stype = allequal(stype,'none')
     146        upper = allequal(upper, 0.)
    165147
    166                 return stype
     148        return upper
    167149
    168         @staticmethod
    169         def prop_scale(lic):
    170                 if type(lic) not in [list,np.ndarray]:
    171                         return lic.scale
     150    @staticmethod
     151    def prop_target(lic):
     152        target = []
     153        return target
    172154
    173                 scale = np.zeros(np.shape(lic))
    174                 for i in range(np.size(lic)):
    175                         scale[i] = lic[i].scale
    176            
    177                 scale = allequal(scale,1.)
     155    @staticmethod
     156    def prop_stype(lic):
     157        if type(lic) not in [list, np.ndarray]:
     158            return lic.scale_type
    178159
    179                 return scale
    180        
    181         @staticmethod
    182         def dakota_write(fidi,dvar):
    183                 # collect only the variables of the appropriate class
    184                 lic = [struc_class(i,'linear_inequality_constraint','lic') for i in dvar]
     160        stype = ['' for i in range(np.size(lic))]
     161        for i in range(np.size(lic)):
     162            stype[i] = str(lic[i].scale_type)
    185163
    186                 # write constraints
    187                 lclist_write(fidi,'linear_inequality_constraints','linear_inequality',lic)
     164        stype = allequal(stype, 'none')
     165
     166        return stype
     167
     168    @staticmethod
     169    def prop_scale(lic):
     170        if type(lic) not in [list, np.ndarray]:
     171            return lic.scale
     172
     173        scale = np.zeros(np.shape(lic))
     174        for i in range(np.size(lic)):
     175            scale[i] = lic[i].scale
     176
     177        scale = allequal(scale, 1.)
     178
     179        return scale
     180
     181    @staticmethod
     182    def dakota_write(fidi, dvar):
     183        # collect only the variables of the appropriate class
     184        lic = [struc_class(i, 'linear_inequality_constraint', 'lic') for i in dvar]
     185
     186        # write constraints
     187        lclist_write(fidi, 'linear_inequality_constraints', 'linear_inequality', lic)
  • issm/trunk-jpl/src/m/classes/qmu/nonlinear_equality_constraint.py

    r23716 r24213  
    33from MatlabArray import *
    44
     5
    56class nonlinear_equality_constraint:
    6         '''
     7    '''
    78  constructor for the nonlinear_equality_constraint class.
    89
    910  [nec] = nonlinear_equality_constraint.nonlinear_equality_constraint(args)
    10    nec  = nonlinear_equality_constraint()
     11   nec = nonlinear_equality_constraint()
    1112
    1213  where the required args are:
     
    2122  arguments constructs a new instance from the arguments.
    2223'''
    23         def __init__(self):
    24                 self.descriptor = ''
    25                 self.target     = 0.
    26                 self.scale_type = 'none'
    27                 self.scale      = 1.
     24    def __init__(self):
     25        self.descriptor = ''
     26        self.target = 0.
     27        self.scale_type = 'none'
     28        self.scale = 1.
    2829
    29         @staticmethod
    30         def nonlinear_equality_constraint(*args):
    31                 nargin = len(args)
     30    @staticmethod
     31    def nonlinear_equality_constraint(*args):
     32        nargin = len(args)
    3233
    33                 # create a default object
    34                 if nargin == 0:
    35                         return nonlinear_equality_constraint()
     34    # create a default object
     35        if nargin == 0:
     36            return nonlinear_equality_constraint()
    3637
    37                 # copy the object
    38                 elif nargin == 1:
    39                         if isinstance(args[0],nonlinear_equality_constraint):
    40                                 nec = args[0]
    41                         else:
    42                                 raise RuntimeError('Object is a '+str(type(args[0]))+' class object, not "nonlinear_equality_constraint"')
     38    # copy the object
     39        elif nargin == 1:
     40            if isinstance(args[0], nonlinear_equality_constraint):
     41                nec = args[0]
     42            else:
     43                raise RuntimeError('Object is a ' + str(type(args[0])) + ' class object, not "nonlinear_equality_constraint"')
    4344
    44                 # create the object from the input
    45                 else:
    46                         asizec = array_size(*args[0:min(nargin,4)])
    47                         nec = [nonlinear_equality_constraint() for i in range(asizec[0]) for j in range(asizec[1])]
     45    # create the object from the input
     46        else:
     47            asizec = array_size(*args[0:min(nargin, 4)])
     48            nec = [nonlinear_equality_constraint() for i in range(asizec[0]) for j in range(asizec[1])]
    4849
    49                         for i in range(np.size(nec)):
    50                                 if (np.shape(args[0])[0] > 1):
    51                                         nec[i].descriptor        = args[0][i]
    52                                 else:
    53                                         nec[i].descriptor        = str(args[0])
    54                                 if (np.size(args[1]) > 1):
    55                                         nec[i].target            = args[1][i]
    56                                 else:
    57                                         nec[i].target            = args[1]
     50            for i in range(np.size(nec)):
     51                if (np.shape(args[0])[0] > 1):
     52                    nec[i].descriptor = args[0][i]
     53                else:
     54                    nec[i].descriptor = str(args[0])
     55                if (np.size(args[1]) > 1):
     56                    nec[i].target = args[1][i]
     57                else:
     58                    nec[i].target = args[1]
    5859
    59                         if (nargin >= 3):
    60                                 for i in range(np.size(nec)):
    61                                         if (np.size(args[2]) > 1):
    62                                                 nec[i].scale_type = args[2][i]
    63                                         else:
    64                                                 nec[i].scale_type = str(args[2])
    65                                            
    66                         if (nargin >= 4):
    67                                 for i in range(np.size(nec)):
    68                                         if (np.size(args[3]) > 1):
    69                                                 nec[i].scale      =args[3][i]
    70                                         else:
    71                                                 nec[i].scale      =args[3]
     60            if (nargin >= 3):
     61                for i in range(np.size(nec)):
     62                    if (np.size(args[2]) > 1):
     63                        nec[i].scale_type = args[2][i]
     64                    else:
     65                        nec[i].scale_type = str(args[2])
    7266
    73                         if (nargin > 4):
    74                                 print('WARNING: nonlinear_equality_constraint:extra_arg: Extra arguments for object of class '+str(type(nec))+'.')
     67            if (nargin >= 4):
     68                for i in range(np.size(nec)):
     69                    if (np.size(args[3]) > 1):
     70                        nec[i].scale = args[3][i]
     71                    else:
     72                        nec[i].scale = args[3]
    7573
    76                 return nec
    77                                            
     74            if (nargin > 4):
     75                print('WARNING: nonlinear_equality_constraint:extra_arg: Extra arguments for object of class ' + str(type(nec)) + '.')
    7876
    79         def __repr__(self):
    80                 # display the object
    81                 string = '\n'
    82                 string += 'class "nonlinear_equality_constraint" object = \n'
    83                 string += '    descriptor: '  +str(self.descriptor) + '\n'
    84                 string += '        target: '  +str(self.target) + '\n'
    85                 string += '    scale_type: '  +str(self.scale_type) + '\n'
    86                 string += '         scale: '  +str(self.scale) + '\n'
     77        return nec
    8778
    88                 return string
     79    def __repr__(self):
     80        # display the object
     81        string = '\n'
     82        string += 'class "nonlinear_equality_constraint" object = \n'
     83        string += '    descriptor: ' + str(self.descriptor) + '\n'
     84        string += '        target: ' + str(self.target) + '\n'
     85        string += '    scale_type: ' + str(self.scale_type) + '\n'
     86        string += '         scale: ' + str(self.scale) + '\n'
    8987
    90         @staticmethod
    91         def prop_desc(nec,dstr):
    92                 if type(nec) not in [list,np.ndarray]:
    93                         if nec.descriptor != '' or type(nec.descriptor) != str:
    94                                 desc = str(nec.descriptor)
    95                         elif dstr != '':
    96                                 desc = str(dstr)
    97                         else:
    98                                 desc = 'nec'
    99                         return desc
     88        return string
    10089
    101                 desc=['' for i in range(np.size(nec))]
    102                 for i in range(np.size(nec)):
    103                         if nec[i].descriptor != '' or type(nec[i].descriptor) != str:
    104                                 desc[i] = str(nec[i].descriptor)
    105                         elif dstr != '':
    106                                 desc[i] = str(dstr)+str(string_dim(nec,i,'vector'))
    107                         else:
    108                                 desc[i] = 'nec'+str(string_dim(nec,i,'vector'))
    109                
    110                 desc=allempty(desc)
     90    @staticmethod
     91    def prop_desc(nec, dstr):
     92        if type(nec) not in [list, np.ndarray]:
     93            if nec.descriptor != '' or type(nec.descriptor) != str:
     94                desc = str(nec.descriptor)
     95            elif dstr != '':
     96                desc = str(dstr)
     97            else:
     98                desc = 'nec'
     99            return desc
    111100
    112                 return desc
     101        desc = ['' for i in range(np.size(nec))]
     102        for i in range(np.size(nec)):
     103            if nec[i].descriptor != '' or type(nec[i].descriptor) != str:
     104                desc[i] = str(nec[i].descriptor)
     105            elif dstr != '':
     106                desc[i] = str(dstr) + str(string_dim(nec, i, 'vector'))
     107            else:
     108                desc[i] = 'nec' + str(string_dim(nec, i, 'vector'))
    113109
    114         @staticmethod
    115         def prop_lower(nec):
    116                 lower=[]
    117                 return lower
     110        desc = allempty(desc)
    118111
    119         @staticmethod
    120         def prop_upper(nec):
    121                 upper=[]
    122                 return upper
     112        return desc
    123113
    124         @staticmethod
    125         def prop_weight(nec):
    126                 weight=[]
    127                 return weight
     114    @staticmethod
     115    def prop_lower(nec):
     116        lower = []
     117        return lower
    128118
    129         @staticmethod
    130         def prop_target(nec):
    131                 if type(nec) not in [list,np.ndarray]:
    132                         return nec.target
     119    @staticmethod
     120    def prop_upper(nec):
     121        upper = []
     122        return upper
    133123
    134                 target = np.zeros(np.shape(nec))
    135                 for i in range(np.size(nec)):
    136                         target[i] = nec[i].target
    137                
    138                 target = allequal(target,0.)
     124    @staticmethod
     125    def prop_weight(nec):
     126        weight = []
     127        return weight
    139128
    140                 return target
     129    @staticmethod
     130    def prop_target(nec):
     131        if type(nec) not in [list, np.ndarray]:
     132            return nec.target
    141133
    142         @staticmethod
    143         def prop_stype(nec):
    144                 if type(nec) not in [list,np.ndarray]:
    145                         return nec.scale_type
     134        target = np.zeros(np.shape(nec))
     135        for i in range(np.size(nec)):
     136            target[i] = nec[i].target
    146137
    147                 stype = ['' for i in range(np.size(nec))]
    148                 for i in range(np.size(nec)):
    149                         stype[i] = str(nec[i].scale_type)
    150                
    151                 stype = allequal(stype,'none')
     138        target = allequal(target, 0.)
    152139
    153                 return stype
     140        return target
    154141
    155         @staticmethod
    156         def prop_scale(nec):
    157                 if type(nec) not in [list,np.ndarray]:
    158                         return nec.scale
     142    @staticmethod
     143    def prop_stype(nec):
     144        if type(nec) not in [list, np.ndarray]:
     145            return nec.scale_type
    159146
    160                 scale = np.zeros(np.shape(nec))
    161                 for i in range(np.size(nec)):
    162                         scale[i] = nec[i].scale
    163                
    164                 scale = allequal(scale,1.)
     147        stype = ['' for i in range(np.size(nec))]
     148        for i in range(np.size(nec)):
     149            stype[i] = str(nec[i].scale_type)
    165150
    166                 return scale
    167    
    168         @staticmethod
    169         def dakota_write(fidi,dresp,rdesc):
    170                 #  colnect only the variables of the appropriate class
    171                 nec = [struc_type(i,'nonlinear_equality_constraint','nec') for i in dresp]
     151        stype = allequal(stype, 'none')
    172152
    173                 #  write constraints
    174                 rdesc = rlist_write(fidi,'nonlinear_equality_constraints','nonlinear_equality',nec,rdesc)
    175                 return rdesc
     153        return stype
    176154
    177         @staticmethod
    178         def dakota_rlev_write(fidi,dresp,params):
    179                 return
     155    @staticmethod
     156    def prop_scale(nec):
     157        if type(nec) not in [list, np.ndarray]:
     158            return nec.scale
     159
     160        scale = np.zeros(np.shape(nec))
     161        for i in range(np.size(nec)):
     162            scale[i] = nec[i].scale
     163
     164        scale = allequal(scale, 1.)
     165
     166        return scale
     167
     168    @staticmethod
     169    def dakota_write(fidi, dresp, rdesc):
     170        #  colnect only the variables of the appropriate class
     171        nec = [struc_type(i, 'nonlinear_equality_constraint', 'nec') for i in dresp]
     172
     173        #  write constraints
     174        rdesc = rlist_write(fidi, 'nonlinear_equality_constraints', 'nonlinear_equality', nec, rdesc)
     175        return rdesc
     176
     177    @staticmethod
     178    def dakota_rlev_write(fidi, dresp, params):
     179        return
  • issm/trunk-jpl/src/m/classes/qmu/nonlinear_inequality_constraint.py

    r23716 r24213  
    33from MatlabArray import *
    44
     5
    56class nonlinear_inequality_constraint:
    6         '''
     7    '''
    78  constructor for the nonlinear_inequality_constraint class.
    89
    910  [nic] = nonlinear_inequality_constraint.nonlinear_inequality_constraint(args)
    10    nic  = nonlinear_inequality_constraint()
     11   nic = nonlinear_inequality_constraint()
    1112
    1213  where the required args are:
    1314    descriptor    (char, description, '')
    14     lower         (double, lower bound, -np.inf)
     15    lower         (double, lower bound, - np.inf)
    1516    upper         (double, upper bound, 0.)
    1617  and the optional args and defaults are:
     
    2223  arguments constructs a new instance from the arguments.
    2324'''
    24         def __init__(self):
    25                 self.descriptor = ''
    26                 self.lower      = -np.inf
    27                 self.upper      = 0.
    28                 self.scale_type = 'none'
    29                 self.scale      = 1.
     25    def __init__(self):
     26        self.descriptor = ''
     27        self.lower = - np.inf
     28        self.upper = 0.
     29        self.scale_type = 'none'
     30        self.scale = 1.
    3031
    31         @staticmethod   
    32         def nonlinear_inequality_constraint(*args):
    33                 nargin = len(args)
     32    @staticmethod
     33    def nonlinear_inequality_constraint(*args):
     34        nargin = len(args)
    3435
    35                 # create a default object
    36                 if nargin == 0:
    37                         return nonlinear_inequality_constraint()
     36        # create a default object
     37        if nargin == 0:
     38            return nonlinear_inequality_constraint()
    3839
    39                 # copy the object
    40                 if nargin == 1:
    41                         if isinstance(args[0],nonlinear_inequality_constraint):
    42                                 nic = args[0]
    43                         else:
    44                                 raise RuntimeError('Object is a '+str(type(args[0]))+' class object, not "nonlinear_inequality_constraint".')
     40        # copy the object
     41        if nargin == 1:
     42            if isinstance(args[0], nonlinear_inequality_constraint):
     43                nic = args[0]
     44            else:
     45                raise RuntimeError('Object is a ' + str(type(args[0])) + ' class object, not "nonlinear_inequality_constraint".')
    4546
    46                 # not enough arguments
    47                 if nargin == 2:
    48                         raise RuntimeError('Construction of nonlinear_inequality_constraint class object requires at least 3 inputs.')
     47        # not enough arguments
     48        if nargin == 2:
     49            raise RuntimeError('Construction of nonlinear_inequality_constraint class object requires at least 3 inputs.')
    4950
    50                 # create the object from the input
    51                 else:
    52                         asizec = array_size(*args[0:min(nargin,3)])
    53                         nic = [nonlinear_inequality_constraint() for i in range(asizec[0]) for j in range(asizec[1])]
     51        # create the object from the input
     52        else:
     53            asizec = array_size(*args[0:min(nargin, 3)])
     54            nic = [nonlinear_inequality_constraint() for i in range(asizec[0]) for j in range(asizec[1])]
    5455
    55                         for i in range(np.size(nic)):
    56                                 if (np.size(args[0]) > 1):
    57                                         nic[i].descriptor      = args[0][i];
    58                                 else:
    59                                         nic[i].descriptor      = str(args[0])+string_dim(nic,i,'vector')
    60                                 if (np.size(args[1]) > 1):
    61                                         nic[i].lower          = args[1][i]
    62                                 else:
    63                                         nic[i].lower          = args[1]
     56            for i in range(np.size(nic)):
     57                if (np.size(args[0]) > 1):
     58                    nic[i].descriptor = args[0][i]
     59                else:
     60                    nic[i].descriptor = str(args[0]) + string_dim(nic, i, 'vector')
     61                if (np.size(args[1]) > 1):
     62                    nic[i].lower = args[1][i]
     63                else:
     64                    nic[i].lower = args[1]
    6465
    65                                 if (np.size(args[2]) > 1):
    66                                         nic[i].upper          = args[2][i]
    67                                 else:
    68                                         nic[i].upper          = args[2]
     66                if (np.size(args[2]) > 1):
     67                    nic[i].upper = args[2][i]
     68                else:
     69                    nic[i].upper = args[2]
    6970
    70                         if (nargin >= 4):
    71                                 for i in range(np.size(nic)):
    72                                         if (np.size(args[3]) > 1):
    73                                                 nic[i].scale_type = args[3][i]
    74                                         else:
    75                                                 nic[i].scale_type = str(args[3])
     71            if (nargin >= 4):
     72                for i in range(np.size(nic)):
     73                    if (np.size(args[3]) > 1):
     74                        nic[i].scale_type = args[3][i]
     75                    else:
     76                        nic[i].scale_type = str(args[3])
    7677
    77                         if (nargin >= 5):
    78                                 for i in range(np.size(nic)):
    79                                         if (np.size(args[4]) > 1):
    80                                                 nic[i].upper      = args[4][i]
    81                                         else:
    82                                                 nic[i].upper      = args[4]
    83                                
    84                         if (nargin > 5):
    85                                 print('WARNING: nonlinear_inequality_constraint:extra_arg: Extra arguments for object of class '+str(type(nic))+'.')
     78            if (nargin >= 5):
     79                for i in range(np.size(nic)):
     80                    if (np.size(args[4]) > 1):
     81                        nic[i].upper = args[4][i]
     82                    else:
     83                        nic[i].upper = args[4]
    8684
    87                 return nic
     85            if (nargin > 5):
     86                print('WARNING: nonlinear_inequality_constraint:extra_arg: Extra arguments for object of class ' + str(type(nic)) + '.')
    8887
    89         def __repr__(self):
    90                 # display the object
    91                 string = '\n'
    92                 string += 'class "nonlinear_inequality_constraint" object = \n'
    93                 string += '    descriptor: '  +str(self.descriptor) + '\n'
    94                 string += '         lower: '  +str(self.lower) + '\n'
    95                 string += '         upper: '  +str(self.upper) + '\n'
    96                 string += '    scale_type: '  +str(self.scale_type) + '\n'
    97                 string += '         scale: '  +str(self.scale) + '\n'
     88        return nic
    9889
    99                 return string
     90    def __repr__(self):
     91        # display the object
     92        string = '\n'
     93        string += 'class "nonlinear_inequality_constraint" object = \n'
     94        string += '    descriptor: ' + str(self.descriptor) + '\n'
     95        string += '         lower: ' + str(self.lower) + '\n'
     96        string += '         upper: ' + str(self.upper) + '\n'
     97        string += '    scale_type: ' + str(self.scale_type) + '\n'
     98        string += '         scale: ' + str(self.scale) + '\n'
    10099
    101         @staticmethod
    102         def prop_desc(nic,dstr):
    103                 if type(nic) not in [list,np.ndarray]:
    104                         if nic.descriptor != '' or type(nic.descriptor) != str:
    105                                 desc = str(nic.descriptor)
    106                         elif dstr != '':
    107                                 desc = str(dstr)
    108                         else:
    109                                 desc = 'nic'
    110                         return desc
     100        return string
    111101
    112                 desc = ['' for i in range(np.size(nic))]
    113                 for i in range(np.size(nic)):
    114                         if nic[i].descriptor != '' or type(nic[i].descriptor) != str:
    115                                 desc[i] = str(nic[i].descriptor)
    116                         elif dstr != '':
    117                                 desc[i] = str(dstr)+str(string_dim(nic,i,'vector'))
    118                         else:
    119                                 desc[i] = 'nic'+str(string_dim(nic,i,'vector'))
    120                
    121                 desc = allempty(desc)
     102    @staticmethod
     103    def prop_desc(nic, dstr):
     104        if type(nic) not in [list, np.ndarray]:
     105            if nic.descriptor != '' or type(nic.descriptor) != str:
     106                desc = str(nic.descriptor)
     107            elif dstr != '':
     108                desc = str(dstr)
     109            else:
     110                desc = 'nic'
     111            return desc
    122112
    123                 return desc
     113        desc = ['' for i in range(np.size(nic))]
     114        for i in range(np.size(nic)):
     115            if nic[i].descriptor != '' or type(nic[i].descriptor) != str:
     116                desc[i] = str(nic[i].descriptor)
     117            elif dstr != '':
     118                desc[i] = str(dstr) + str(string_dim(nic, i, 'vector'))
     119            else:
     120                desc[i] = 'nic' + str(string_dim(nic, i, 'vector'))
    124121
    125         @staticmethod
    126         def prop_stype(nic):
    127                 if type(nic) not in [list,np.ndarray]:
    128                         return nic.scale_type
     122        desc = allempty(desc)
    129123
    130                 stype = ['' for i in range(np.size(nic))]
    131                 for i in range(np.size(nic)):
    132                         stype[i] = str(nic[i].scale_type)
    133            
    134                 stype = allequal(stype,'none')
     124        return desc
    135125
    136                 return stype
     126    @staticmethod
     127    def prop_stype(nic):
     128        if type(nic) not in [list, np.ndarray]:
     129            return nic.scale_type
    137130
    138         @staticmethod
    139         def prop_scale(nic):
    140                 if type(nic) not in [list,np.ndarray]:
    141                         return nic.scale
     131        stype = ['' for i in range(np.size(nic))]
     132        for i in range(np.size(nic)):
     133            stype[i] = str(nic[i].scale_type)
    142134
    143                 scale = np.zeros(np.shape(nic))
    144                 for i in range(np.size(nic)):
    145                         scale[i] = nic[i].scale
    146            
    147                 scale = allequal(scale,1.)
     135        stype = allequal(stype, 'none')
    148136
    149                 return scale
     137        return stype
    150138
    151         @staticmethod
    152         def prop_weight(nic):
    153                 weight=[]
    154                 return weight
     139    @staticmethod
     140    def prop_scale(nic):
     141        if type(nic) not in [list, np.ndarray]:
     142            return nic.scale
    155143
    156         @staticmethod
    157         def prop_lower(nic):
    158                 if type(nic) not in [list,np.ndarray]:
    159                         return nic.lower
     144        scale = np.zeros(np.shape(nic))
     145        for i in range(np.size(nic)):
     146            scale[i] = nic[i].scale
    160147
    161                 lower = np.zeros(np.shape(nic))
    162                 for i in range(np.size(nic)):
    163                         lower[i] = nic[i].lower
    164            
    165                 lower = allequal(lower,-np.inf)
     148        scale = allequal(scale, 1.)
    166149
    167                 return lower
     150        return scale
    168151
    169         @staticmethod
    170         def prop_upper(nic):
    171                 if type(nic) not in [list,np.ndarray]:
    172                         return nic.upper
     152    @staticmethod
     153    def prop_weight(nic):
     154        weight = []
     155        return weight
    173156
    174                 upper = np.zeros(np.shape(nic))
    175                 for i in range(np.size(nic)):
    176                         upper[i] = nic[i].upper
    177            
    178                 upper = allequal(upper,0.)
     157    @staticmethod
     158    def prop_lower(nic):
     159        if type(nic) not in [list, np.ndarray]:
     160            return nic.lower
    179161
    180                 return upper
     162        lower = np.zeros(np.shape(nic))
     163        for i in range(np.size(nic)):
     164            lower[i] = nic[i].lower
    181165
    182         @staticmethod
    183         def prop_target(nic):
    184                 target=[]
    185                 return target
    186        
    187         @staticmethod
    188         def dakota_write(fidi,dresp,rdesc):
    189                 # collect only the variables of the appropriate class
    190                 nic = [struc_class(i,'nonlinear_inequality_constraint','nic') for i in dresp]
     166        lower = allequal(lower, - np.inf)
    191167
    192                 # write constraints
    193                 rdesc = rlist_write(fidi,'nonlinear_inequality_constrants','nonlinear_inequality',nic,rdesc)
    194                 return rdesc
     168        return lower
    195169
    196         @staticmethod
    197         def dakota_rlev_write(fidi,dresp,params):
    198                 return
     170    @staticmethod
     171    def prop_upper(nic):
     172        if type(nic) not in [list, np.ndarray]:
     173            return nic.upper
     174
     175        upper = np.zeros(np.shape(nic))
     176        for i in range(np.size(nic)):
     177            upper[i] = nic[i].upper
     178
     179        upper = allequal(upper, 0.)
     180
     181        return upper
     182
     183    @staticmethod
     184    def prop_target(nic):
     185        target = []
     186        return target
     187
     188    @staticmethod
     189    def dakota_write(fidi, dresp, rdesc):
     190        # collect only the variables of the appropriate class
     191        nic = [struc_class(i, 'nonlinear_inequality_constraint', 'nic') for i in dresp]
     192
     193        # write constraints
     194        rdesc = rlist_write(fidi, 'nonlinear_inequality_constrants', 'nonlinear_inequality', nic, rdesc)
     195        return rdesc
     196
     197    @staticmethod
     198    def dakota_rlev_write(fidi, dresp, params):
     199        return
  • issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.py

    r23716 r24213  
    11import numpy as np
    2 #from vlist_write import *
    32from MatlabArray import *
    43
     4
    55class normal_uncertain(object):
    6         '''
     6    '''
    77  definition for the normal_uncertain class.
    88
    99  [nuv] = normal_uncertain.normal_uncertain(args)
    10    nuv  = normal_uncertain()
     10   nuv = normal_uncertain()
    1111
    1212  where the required args are:
     
    1515    stddev        (float, standard deviation, float('NaN'))
    1616  and the optional args and defaults are:
    17     lower         (float, lower bound, -np.Inf)
    18     upper         (float, upper bound,  np.Inf)
     17    lower         (float, lower bound, - np.Inf)
     18    upper         (float, upper bound, np.Inf)
    1919
    2020  note that zero arguments constructs a default instance, one
     
    2222  arguments constructs a new instance from the arguments.
    2323'''
    24         def __init__(self):
    25                 self.descriptor = ''
    26                 self.mean      = float('NaN')
    27                 self.stddev    = float('NaN')
    28                 self.lower      =-np.Inf
    29                 self.upper      = np.Inf
     24    def __init__(self):
     25        self.descriptor = ''
     26        self.mean = float('NaN')
     27        self.stddev = float('NaN')
     28        self.lower = - np.Inf
     29        self.upper = np.Inf
    3030
    31         @staticmethod
    32         def normal_uncertain(*args):
    33                 nargin = len(args)
     31    @staticmethod
     32    def normal_uncertain(*args):
     33        nargin = len(args)
    3434
    35                 # create a default object
    36                 if nargin == 0:
    37                         return normal_uncertain()
     35        # create a default object
     36        if nargin == 0:
     37            return normal_uncertain()
    3838
    39                 # copy the object
    40                 elif nargin == 1:
    41                         if isinstance(args[0],normal_uncertain):
    42                                 nuv = args[0]
    43                         else:
    44                                 raise RuntimeError('Object '+str(args[0])+' is a '+str(type(args[0]))+' class object, not "normal_uncertain".')
     39        # copy the object
     40        elif nargin == 1:
     41            if isinstance(args[0], normal_uncertain):
     42                nuv = args[0]
     43            else:
     44                raise RuntimeError('Object ' + str(args[0]) + ' is a ' + str(type(args[0])) + ' class object, not "normal_uncertain".')
    4545
    46                 # not enough arguments
    47                 elif nargin == 2:
    48                         raise RuntimeError('Construction of "normal_uncertain" class object requires at least 3 inputs.')
     46        # not enough arguments
     47        elif nargin == 2:
     48            raise RuntimeError('Construction of "normal_uncertain" class object requires at least 3 inputs.')
    4949
    50                 # create the object from the input
    51                 else:
    52                         # lines differ here in other classes/tests; see asizec problem in notes
    53                         nuv=normal_uncertain()
    54                         nuv.descriptor = str(args[0])
    55                         nuv.mean  = args[1]
    56                         nuv.stddev = args[2]
    57                         if nargin >= 4:
    58                                 nuv.lower = args[3]
    59                         if nargin >= 5:
    60                                 nuv.upper = args[4]
    61                         if nargin > 5:
    62                                 print('WARNING: normal_uncertain:extra_arg: Extra arguments for object of class '+str(type(nuv))+'.')
     50    # create the object from the input
     51        else:
     52            # lines differ here in other classes / tests; see asizec problem in notes
     53            nuv = normal_uncertain()
     54            nuv.descriptor = str(args[0])
     55            nuv.mean = args[1]
     56            nuv.stddev = args[2]
     57            if nargin >= 4:
     58                nuv.lower = args[3]
     59            if nargin >= 5:
     60                nuv.upper = args[4]
     61            if nargin > 5:
     62                print('WARNING: normal_uncertain:extra_arg: Extra arguments for object of class ' + str(type(nuv)) + '.')
    6363
    64                 return [nuv]
     64        return [nuv]
    6565
    66         def __repr__(self):
    67                 # display an individual object
    68                 string = '\n'
    69                 string += 'class "normal_uncertain" object = \n'
    70                 string += '    descriptor: '+str(self.descriptor) + '\n'
    71                 string += '          mean: '+str(self.mean) + '\n'
    72                 string += '        stddev: '+str(self.stddev) + '\n'
    73                 string += '         lower: '+str(self.lower) + '\n'
    74                 string += '         upper: '+str(self.upper) + '\n'
     66    def __repr__(self):
     67        # display an individual object
     68        string = '\n'
     69        string += 'class "normal_uncertain" object = \n'
     70        string += '    descriptor: ' + str(self.descriptor) + '\n'
     71        string += '          mean: ' + str(self.mean) + '\n'
     72        string += '        stddev: ' + str(self.stddev) + '\n'
     73        string += '         lower: ' + str(self.lower) + '\n'
     74        string += '         upper: ' + str(self.upper) + '\n'
    7575
    76                 return string
     76        return string
    7777
    78         # from here on, nuv is either a single, or a 1d vector of, normal_uncertain
     78    # from here on, nuv is either a single, or a 1d vector of, normal_uncertain
    7979
    80         @staticmethod
    81         def prop_desc(nuv,dstr):
    82                 if type(nuv) not in [list,np.ndarray]:
    83                         if nuv.descriptor != '' or type(nuv.descriptor) != str:
    84                                 desc = str(nuv.descriptor)
    85                         elif dstr != '':
    86                                 desc = str(dstr)
    87                         else:
    88                                 desc = 'nuv'
    89                         return desc
     80    @staticmethod
     81    def prop_desc(nuv, dstr):
     82        if type(nuv) not in [list, np.ndarray]:
     83            if nuv.descriptor != '' or type(nuv.descriptor) != str:
     84                desc = str(nuv.descriptor)
     85            elif dstr != '':
     86                desc = str(dstr)
     87            else:
     88                desc = 'nuv'
     89            return desc
    9090
    91                 desc = ['' for i in range(np.size(nuv))]
    92                 for i in range(np.size(nuv)):
    93                         if nuv[i].descriptor != '' or type(nuv[i].descriptor) != str:
    94                                 desc[i] = str(nuv[i].descriptor)
    95                         elif dstr != '':
    96                                 desc[i] = str(dstr)+str(string_dim(nuv,i,'vector'))
    97                         else:
    98                                 desc[i] = 'nuv'+str(string_dim(nuv,i,'vector'))
     91        desc = ['' for i in range(np.size(nuv))]
     92        for i in range(np.size(nuv)):
     93            if nuv[i].descriptor != '' or type(nuv[i].descriptor) != str:
     94                desc[i] = str(nuv[i].descriptor)
     95            elif dstr != '':
     96                desc[i] = str(dstr) + str(string_dim(nuv, i, 'vector'))
     97            else:
     98                desc[i] = 'nuv' + str(string_dim(nuv, i, 'vector'))
    9999
    100                 desc = allempty(desc)
     100        desc = allempty(desc)
    101101
    102                 return desc
     102        return desc
    103103
    104         @staticmethod
    105         def prop_initpt(nuv):
    106                 initpt=[]
    107                 return initpt
     104    @staticmethod
     105    def prop_initpt(nuv):
     106        initpt = []
     107        return initpt
    108108
    109         @staticmethod
    110         def prop_lower(nuv):
    111                 if type(nuv) not in [list,np.ndarray]:
    112                         return nuv.lower
     109    @staticmethod
     110    def prop_lower(nuv):
     111        if type(nuv) not in [list, np.ndarray]:
     112            return nuv.lower
    113113
    114                 lower = np.zeros(np.size(nuv))
    115                 for i in range(np.size(nuv)):
    116                         lower[i] = nuv[i].lower
     114        lower = np.zeros(np.size(nuv))
     115        for i in range(np.size(nuv)):
     116            lower[i] = nuv[i].lower
    117117
    118                 lower = allequal(lower,-np.inf)
     118        lower = allequal(lower, - np.inf)
    119119
    120                 return lower
     120        return lower
    121121
    122         @staticmethod
    123         def prop_upper(nuv):
    124                 if type(nuv) not in [list,np.ndarray]:
    125                         return nuv.upper
     122    @staticmethod
     123    def prop_upper(nuv):
     124        if type(nuv) not in [list, np.ndarray]:
     125            return nuv.upper
    126126
    127                 upper = np.zeros(np.size(nuv))
    128                 for i in range(np.size(nuv)):
    129                         upper[i] = nuv[i].upper
     127        upper = np.zeros(np.size(nuv))
     128        for i in range(np.size(nuv)):
     129            upper[i] = nuv[i].upper
    130130
    131                 upper = allequal(upper,-np.inf)
    132                 return upper
     131        upper = allequal(upper, - np.inf)
     132        return upper
    133133
    134         @staticmethod
    135         def prop_mean(nuv):
    136                 if type(nuv) not in [list,np.ndarray]:
    137                         return nuv.mean
     134    @staticmethod
     135    def prop_mean(nuv):
     136        if type(nuv) not in [list, np.ndarray]:
     137            return nuv.mean
    138138
    139                 mean = np.zeros(np.size(nuv))
    140                 for i in range(np.size(nuv)):
    141                         mean[i] = nuv[i].mean
     139        mean = np.zeros(np.size(nuv))
     140        for i in range(np.size(nuv)):
     141            mean[i] = nuv[i].mean
    142142
    143                 return mean
     143        return mean
    144144
    145         @staticmethod
    146         def prop_stddev(nuv):
    147                 if type(nuv) not in [list,np.ndarray]:
    148                         return nuv.stddev
     145    @staticmethod
     146    def prop_stddev(nuv):
     147        if type(nuv) not in [list, np.ndarray]:
     148            return nuv.stddev
    149149
    150                 stddev = np.zeros(np.size(nuv))
    151                 for i in range(np.size(nuv)):
    152                         stddev[i] = nuv[i].stddev
     150        stddev = np.zeros(np.size(nuv))
     151        for i in range(np.size(nuv)):
     152            stddev[i] = nuv[i].stddev
    153153
    154                 return stddev
     154        return stddev
    155155
    156         @staticmethod
    157         def prop_initst(nuv):
    158                 initst=[]
    159                 return initst
     156    @staticmethod
     157    def prop_initst(nuv):
     158        initst = []
     159        return initst
    160160
    161         @staticmethod
    162         def prop_stype(nuv):
    163                 stype=[]
    164                 return stype
     161    @staticmethod
     162    def prop_stype(nuv):
     163        stype = []
     164        return stype
    165165
    166         @staticmethod
    167         def prop_scale(nuv):
    168                 scale=[]
    169                 return scale
     166    @staticmethod
     167    def prop_scale(nuv):
     168        scale = []
     169        return scale
    170170
    171         @staticmethod
    172         def dakota_write(fidi,dvar):
    173                 # collect only the variables of the appropriate class
    174                 nuv = [struc_class(i,'normal_uncertain','nuv') for i in dvar]
     171    @staticmethod
     172    def dakota_write(fidi, dvar):
     173        # collect only the variables of the appropriate class
     174        nuv = [struc_class(i, 'normal_uncertain', 'nuv') for i in dvar]
    175175
    176                 # possible namespace pollution, the above import seems not to work
    177                 from vlist_write import vlist_write
    178                 # write variables
    179                 vlist_write(fidi,'normal_uncertain','nuv',nuv)
     176    # possible namespace pollution, the above import seems not to work
     177        from vlist_write import vlist_write
     178    # write variables
     179        vlist_write(fidi, 'normal_uncertain', 'nuv', nuv)
  • issm/trunk-jpl/src/m/classes/qmu/objective_function.py

    r23716 r24213  
    33from MatlabArray import *
    44
     5
    56class objective_function(object):
    6         '''
     7    '''
    78  definition for the objective_function class.
    89
    910  [of] = objective_function.objective_function(args)
    10    of  = objective_function()
     11   of = objective_function()
    1112
    1213  where the required args are:
     
    2122  arguments constructs a new instance from the arguments.
    2223'''
    23         def __init__(self):
    24                 self.descriptor = ''
    25                 self.scale_type = 'none'
    26                 self.scale      = 1.
    27                 self.weight     = 1.
     24    def __init__(self):
     25        self.descriptor = ''
     26        self.scale_type = 'none'
     27        self.scale = 1.
     28        self.weight = 1.
    2829
    29         @staticmethod
    30         def objective_function(*args):
    31                 nargin = len(args)
     30    @staticmethod
     31    def objective_function(*args):
     32        nargin = len(args)
    3233
    33                 #  create a default object
    34                 if nargin == 0:
    35                         return objective_function()
     34    #  create a default object
     35        if nargin == 0:
     36            return objective_function()
    3637
    37                 #  copy the object or create the object from the input
    38                 else:
    39                         if  (nargin == 1) and isinstance(args[0],objective_function):
    40                                 of = args[0]
    41                         else:
    42                                 shapec = array_size(*args[0:min(nargin,4)])
    43                                 of = [objective_function() for i in range(shapec[0]) for j in range(shapec[1])]
     38    #  copy the object or create the object from the input
     39        else:
     40            if (nargin == 1) and isinstance(args[0], objective_function):
     41                of = args[0]
     42            else:
     43                shapec = array_size(*args[0:min(nargin, 4)])
     44                of = [objective_function() for i in range(shapec[0]) for j in range(shapec[1])]
    4445
    45                                 for i in range(np.size(of)):
    46                                         if (np.size(args[0]) > 1):
    47                                                 of[i].descriptor = args[0][i]
    48                                         else:
    49                                                 of[i].descriptor = str(args[0])+string_dim(of,i,'vector')
     46                for i in range(np.size(of)):
     47                    if (np.size(args[0]) > 1):
     48                        of[i].descriptor = args[0][i]
     49                    else:
     50                        of[i].descriptor = str(args[0]) + string_dim(of, i, 'vector')
    5051
    51                                 if (nargin >= 2):
    52                                         for i in range(np.size(of)):
    53                                                 if (np.size(args[1]) > 1):
    54                                                         of[i].scale_type = args[1][i]
    55                                                 else:
    56                                                         of[i].scale_type = str(args[1])
     52                if (nargin >= 2):
     53                    for i in range(np.size(of)):
     54                        if (np.size(args[1]) > 1):
     55                            of[i].scale_type = args[1][i]
     56                        else:
     57                            of[i].scale_type = str(args[1])
    5758
    58                                 if (nargin >= 3):
    59                                         for i in range(np.size(of)):
    60                                                 if (np.size(args[2]) > 1):
    61                                                         of[i].scale = args[2][i]
    62                                                 else:
    63                                                         of[i].scale = args[2]
     59                if (nargin >= 3):
     60                    for i in range(np.size(of)):
     61                        if (np.size(args[2]) > 1):
     62                            of[i].scale = args[2][i]
     63                        else:
     64                            of[i].scale = args[2]
    6465
    65                                 if (nargin >= 4):
    66                                         for i in range(np.size(of)):
    67                                                 if (np.size(args[3]) > 1):
    68                                                         of[i].weight = args[3][i]
    69                                                 else:
    70                                                         of[i].weight = args[3]
     66                if (nargin >= 4):
     67                    for i in range(np.size(of)):
     68                        if (np.size(args[3]) > 1):
     69                            of[i].weight = args[3][i]
     70                        else:
     71                            of[i].weight = args[3]
    7172
    72                                 if (nargin > 4):
    73                                         print('WARNING: objective_function:extra_arg Extra arguments for object of class '+str(type(of))+'.')
     73                if (nargin > 4):
     74                    print('WARNING: objective_function:extra_arg Extra arguments for object of class ' + str(type(of)) + '.')
    7475
    75                 return of
     76        return of
    7677
     78    def __repr__(self):
     79        #  display the object
     80        string = '\n'
     81        string += 'class "objective_function" object = \n'
     82        string += '    descriptor: ' + str(self.descriptor) + '\n'
     83        string += '    scale_type: ' + str(self.scale_type) + '\n'
     84        string += '         scale: ' + str(self.scale) + '\n'
     85        string += '        weight: ' + str(self.weight) + '\n'
     86        return string
    7787
    78         def __repr__(self):
    79                 #  display the object
    80                 string  = '\n'
    81                 string += 'class "objective_function" object = \n'
    82                 string += '    descriptor: '  +str(self.descriptor) + '\n'
    83                 string += '    scale_type: '  +str(self.scale_type) + '\n'
    84                 string += '         scale: '  +str(self.scale) + '\n'
    85                 string += '        weight: '  +str(self.weight) + '\n'
    86                 return string
     88    @staticmethod
     89    def prop_desc(of, dstr):
     90        if type(of) not in [list, np.ndarray]:
     91            if of.descriptor != '' or type(of.descriptor) != str:
     92                desc = str(of.descriptor)
     93            elif dstr != '':
     94                desc = str(dstr)
     95            else:
     96                desc = 'of'
     97            return desc
    8798
    88         @staticmethod
    89         def prop_desc(of,dstr):
    90                 if type(of) not in [list,np.ndarray]:
    91                         if of.descriptor != '' or type(of.descriptor) != str:
    92                                 desc = str(of.descriptor)
    93                         elif dstr != '':
    94                                 desc = str(dstr)
    95                         else:
    96                                 desc = 'of'
    97                         return desc
     99        desc = ['' for i in range(np.size(of))]
     100        for i in range(np.size(of)):
     101            if of[i].descriptor != '' or type(of[i].descriptor) != str:
     102                desc[i] = str(of[i].descriptor)
     103            elif dstr != '':
     104                desc[i] = str(dstr) + str(string_dim(of, i, 'vector'))
     105            else:
     106                desc[i] = 'of' + str(string_dim(of, i, 'vector'))
    98107
    99                 desc = ['' for i in range(np.size(of))]
    100                 for i in range(np.size(of)):
    101                         if of[i].descriptor != '' or type(of[i].descriptor) != str:
    102                                 desc[i] = str(of[i].descriptor)
    103                         elif dstr != '':
    104                                 desc[i] = str(dstr)+str(string_dim(of,i,'vector'))
    105                         else:
    106                                 desc[i] = 'of'+str(string_dim(of,i,'vector'))
     108        desc = allempty(desc)
     109        return desc
    107110
    108                 desc = allempty(desc)
    109                 return desc
     111    @staticmethod
     112    def prop_lower(of):
     113        lower = []
     114        return lower
    110115
    111         @staticmethod
    112         def prop_lower(of):
    113                 lower=[]
    114                 return lower
     116    @staticmethod
     117    def prop_upper(of):
     118        upper = []
     119        return upper
    115120
    116         @staticmethod
    117         def prop_upper(of):
    118                 upper=[]
    119                 return upper
     121    @staticmethod
     122    def prop_target(of):
     123        target = []
     124        return target
    120125
    121         @staticmethod
    122         def prop_target(of):
    123                 target=[]
    124                 return target
     126    @staticmethod
     127    def prop_weight(of):
     128        if type(of) not in [list, np.ndarray]:
     129            return of.weight
    125130
    126         @staticmethod
    127         def prop_weight(of):
    128                 if type(of) not in [list,np.ndarray]:
    129                         return of.weight
     131        weight = np.zeros(np.shape(of))
     132        for i in range(np.size(of)):
     133            weight[i] = of[i].weight
    130134
    131                 weight = np.zeros(np.shape(of))
    132                 for i in range(np.size(of)):
    133                         weight[i] = of[i].weight
     135        weight = allequal(weight, 1.)
     136        return weight
    134137
    135                 weight = allequal(weight,1.)
    136                 return weight
     138    @staticmethod
     139    def prop_stype(of):
     140        if type(of) not in [list, np.ndarray]:
     141            return of.scale_type
    137142
    138         @staticmethod
    139         def prop_stype(of):
    140                 if type(of) not in [list,np.ndarray]:
    141                         return of.scale_type
     143        stype = ['' for i in range(np.size(of))]
     144        for i in range(np.size(of)):
     145            stype[i] = str(of[i].scale_type)
    142146
    143                 stype = ['' for i in range(np.size(of))]
    144                 for i in range(np.size(of)):
    145                         stype[i] = str(of[i].scale_type)
     147        stype = allequal(stype, 'none')
     148        return stype
    146149
    147                 stype = allequal(stype,'none')
    148                 return stype
     150    @staticmethod
     151    def prop_scale(of):
     152        if type(of) not in [list, np.ndarray]:
     153            return of.scale
    149154
    150         @staticmethod
    151         def prop_scale(of):
    152                 if type(of) not in [list,np.ndarray]:
    153                         return of.scale
     155        scale = np.zeros(np.shape(of))
     156        for i in range(np.size(of)):
     157            scale[i] = of[i].scale
    154158
    155                 scale = np.zeros(np.shape(of))
    156                 for i in range(np.size(of)):
    157                         scale[i] = of[i].scale
     159        scale = allequal(scale, 1.)
     160        return scale
    158161
    159                 scale = allequal(scale,1.)
    160                 return scale
     162    @staticmethod
     163    def dakota_write(fidi, dresp, rdesc):
     164        # coloft only the variables of the appropriate class
     165        of = [struc_class(i, 'objective_functions', 'of') for i in dresp]
    161166
    162         @staticmethod
    163         def dakota_write(fidi,dresp,rdesc):
    164                 # coloft only the variables of the appropriate class
    165                 of = [struc_class(i,'objective_functions','of') for i in dresp]
     167        # write constraints
     168        rdesc = rlist_write(fidi, 'objective_functions', 'objective_function', of, rdesc)
     169        return rdesc
    166170
    167                 # write constraints
    168                 rdesc = rlist_write(fidi,'objective_functions','objective_function',of,rdesc)
    169                 return rdesc
    170 
    171         @staticmethod
    172         def dakota_rlev_write(fidi,dresp,params):
    173                 return
     171    @staticmethod
     172    def dakota_rlev_write(fidi, dresp, params):
     173        return
  • issm/trunk-jpl/src/m/classes/qmu/response_function.py

    r23716 r24213  
    33from rlev_write import *
    44from MatlabArray import *
    5 
    65#move this later
    76from helpers import *
    87
     8
    99class response_function(object):
    10         '''
     10    '''
    1111  definition for the response_function class.
    1212
    1313  [rf] = response_function.response_function(args)
    14    rf  = response_function()
     14   rf = response_function()
    1515
    1616  where the required args are:
     
    2727'''
    2828
    29         def __init__(self):
    30                 self.descriptor = ''
    31                 self.respl      = []
    32                 self.probl      = []
    33                 self.rell      = []
    34                 self.grell      = []
     29    def __init__(self):
     30        self.descriptor = ''
     31        self.respl = []
     32        self.probl = []
     33        self.rell = []
     34        self.grell = []
    3535
    36         @staticmethod
    37         def response_function(*args):
     36    @staticmethod
     37    def response_function(*args):
    3838
    39                 nargin = len(args)
    40                 # create a default object
    41                 if nargin == 0:
    42                         return response_function()
     39        nargin = len(args)
     40        # create a default object
     41        if nargin == 0:
     42            return response_function()
    4343
    44                 # copy the object or create the object from the input
    45                 else:
    46                         if  nargin == 1 and isinstance(args[0],response_function):
    47                                 rf = args[0]
    48                         else:
    49                                 asizec = array_size(*args[0:min(nargin,1)])
    50                                 rf = [response_function() for i in range(asizec[0]) for j in range(asizec[1])]
     44        # copy the object or create the object from the input
     45        else:
     46            if nargin == 1 and isinstance(args[0], response_function):
     47                rf = args[0]
     48            else:
     49                asizec = array_size(*args[0:min(nargin, 1)])
     50                rf = [response_function() for i in range(asizec[0]) for j in range(asizec[1])]
    5151
    52                                 for i in range(np.size(rf)):
    53                                         if (np.size(args[0]) > 1):
    54                                                 rf[i].descriptor = args[0][i]
    55                                         else:
    56                                                 rf[i].descriptor = str(args[0])+string_dim(rf,i,'vector')
     52                for i in range(np.size(rf)):
     53                    if (np.size(args[0]) > 1):
     54                        rf[i].descriptor = args[0][i]
     55                    else:
     56                        rf[i].descriptor = str(args[0]) + string_dim(rf, i, 'vector')
    5757
    58                                 if nargin >= 2:
    59                                         for i in range(np.size(rf)):
    60                                                 rf[i].respl = args[1]
     58                if nargin >= 2:
     59                    for i in range(np.size(rf)):
     60                        rf[i].respl = args[1]
    6161
    62                                 if nargin >= 3:
    63                                         for i in range(np.size(rf)):
    64                                                 rf[i].probl = args[2]
     62                if nargin >= 3:
     63                    for i in range(np.size(rf)):
     64                        rf[i].probl = args[2]
    6565
    66                                 if nargin >= 4:
    67                                         for i in range(np.size(rf)):
    68                                                 rf[i].rell = args[3]
     66                if nargin >= 4:
     67                    for i in range(np.size(rf)):
     68                        rf[i].rell = args[3]
    6969
    70                                 if nargin >= 5:
    71                                         for i in range(np.size(rf)):
    72                                                 rf[i].grell = args[4]
     70                if nargin >= 5:
     71                    for i in range(np.size(rf)):
     72                        rf[i].grell = args[4]
    7373
    74                                 if nargin > 5:
    75                                         print('WARNING: response_function:extra_arg: Extra arguments for object of class '+str(type(rf))+'.')
     74                if nargin > 5:
     75                    print('WARNING: response_function:extra_arg: Extra arguments for object of class ' + str(type(rf)) + '.')
    7676
    77                 return rf
     77        return rf
    7878
    79         def __repr__(self):
    80                 #  display the object
    81                 string = '\n'
    82                 string += 'class "response_function" object = \n'
    83                 string += '    descriptor: '  +str(self.descriptor) + '\n'
    84                 string += '         respl: '  +str(self.respl) + '\n'
    85                 string += '         probl: '  +str(self.probl) + '\n'
    86                 string += '          rell: '  +str(self.rell) + '\n'
    87                 string += '         grell: '  +str(self.grell) + '\n'
     79    def __repr__(self):
     80        #  display the object
     81        string = '\n'
     82        string += 'class "response_function" object = \n'
     83        string += '    descriptor: ' + str(self.descriptor) + '\n'
     84        string += '         respl: ' + str(self.respl) + '\n'
     85        string += '         probl: ' + str(self.probl) + '\n'
     86        string += '          rell: ' + str(self.rell) + '\n'
     87        string += '         grell: ' + str(self.grell) + '\n'
    8888
    89                 return string
     89        return string
    9090
    91         def __len__(self):
    92                 return max(len(self.respl),len(self.probl),len(self.rell),len(self.grell))
     91    def __len__(self):
     92        return max(len(self.respl), len(self.probl), len(self.rell), len(self.grell))
    9393
    94         # from here on, rf is either a single, or a 1d vector of, response_function
     94    # from here on, rf is either a single, or a 1d vector of, response_function
    9595
    96         @staticmethod
    97         def prop_desc(rf,dstr):
    98                 # response_function is always a vector, or should be, even with just 1
    99                 if type(rf) not in [list,np.ndarray]:
    100                         rf = [rf]
     96    @staticmethod
     97    def prop_desc(rf, dstr):
     98        # response_function is always a vector, or should be, even with just 1
     99        if type(rf) not in [list, np.ndarray]:
     100            rf = [rf]
    101101
    102                 desc = ['' for i in range(np.size(rf))]
    103                 for i in range(np.size(rf)):
    104                         if rf[i].descriptor != '' or type(rf[i].descriptor) != str:
    105                                 desc[i] = str(rf[i].descriptor)
    106                         elif dstr != '':
    107                                 desc[i] = str(dstr)+str(string_dim(rf,i,'vector'))
    108                         else:
    109                                 desc[i] = 'rf'+str(string_dim(rf,i,'vector'))
     102        desc = ['' for i in range(np.size(rf))]
     103        for i in range(np.size(rf)):
     104            if rf[i].descriptor != '' or type(rf[i].descriptor) != str:
     105                desc[i] = str(rf[i].descriptor)
     106            elif dstr != '':
     107                desc[i] = str(dstr) + str(string_dim(rf, i, 'vector'))
     108            else:
     109                desc[i] = 'rf' + str(string_dim(rf, i, 'vector'))
    110110
    111                 desc = allempty(desc)
    112                 return desc
     111        desc = allempty(desc)
     112        return desc
    113113
    114         @staticmethod
    115         def prop_stype(rf):
    116                 stype=[]
    117                 return stype
     114    @staticmethod
     115    def prop_stype(rf):
     116        stype = []
     117        return stype
    118118
    119         @staticmethod
    120         def prop_scale(rf):
    121                 scale=[]
    122                 return scale
     119    @staticmethod
     120    def prop_scale(rf):
     121        scale = []
     122        return scale
    123123
    124         @staticmethod
    125         def prop_weight(rf):
    126                 weight=[]
    127                 return weight
     124    @staticmethod
     125    def prop_weight(rf):
     126        weight = []
     127        return weight
    128128
    129         @staticmethod
    130         def prop_lower(rf):
    131                 lower=[]
    132                 return lower
     129    @staticmethod
     130    def prop_lower(rf):
     131        lower = []
     132        return lower
    133133
    134         @staticmethod
    135         def prop_upper(rf):
    136                 upper=[]
    137                 return upper
     134    @staticmethod
     135    def prop_upper(rf):
     136        upper = []
     137        return upper
    138138
    139         @staticmethod
    140         def prop_target(rf):
    141                 target=[]
    142                 return target
     139    @staticmethod
     140    def prop_target(rf):
     141        target = []
     142        return target
    143143
    144         @staticmethod
    145         def prop_levels(rf):
    146                 # response_function is always a vector, or should be, even with just 1
    147                 if type(rf) not in [list,np.ndarray]:
    148                         rf = [rf]
     144    @staticmethod
     145    def prop_levels(rf):
     146        # response_function is always a vector, or should be, even with just 1
     147        if type(rf) not in [list, np.ndarray]:
     148            rf = [rf]
    149149
    150                 respl = empty_nd_list(np.size(rf))
    151                 probl = empty_nd_list(np.size(rf))
    152                 rell = empty_nd_list(np.size(rf))
    153                 grell = empty_nd_list(np.size(rf))
     150        respl = empty_nd_list(np.size(rf))
     151        probl = empty_nd_list(np.size(rf))
     152        rell = empty_nd_list(np.size(rf))
     153        grell = empty_nd_list(np.size(rf))
    154154
    155                 for i in range(np.size(rf)):
    156                         respl[i] = rf[i].respl
    157                         probl[i] = rf[i].probl
    158                         rell [i] = rf[i].rell
    159                         grell[i] = rf[i].grell
     155        for i in range(np.size(rf)):
     156            respl[i] = rf[i].respl
     157            probl[i] = rf[i].probl
     158            rell[i] = rf[i].rell
     159            grell[i] = rf[i].grell
    160160
    161                 respl = allempty(respl)
    162                 probl = allempty(probl)
    163                 rell = allempty(rell)
    164                 grell = allempty(grell)
    165                 return [respl,probl,rell,grell]
     161        respl = allempty(respl)
     162        probl = allempty(probl)
     163        rell = allempty(rell)
     164        grell = allempty(grell)
     165        return [respl, probl, rell, grell]
    166166
    167         @staticmethod
    168         def dakota_write(fidi,dresp,rdesc):
    169                 # collect only the responses of the appropriate class
    170                 rf = [struc_class(vars(dresp)[i][j],'response_function','rf') for i in fieldnames(dresp) for j in range(len(vars(dresp)[i]))]
     167    @staticmethod
     168    def dakota_write(fidi, dresp, rdesc):
     169        # collect only the responses of the appropriate class
     170        rf = [struc_class(vars(dresp)[i][j], 'response_function', 'rf') for i in fieldnames(dresp) for j in range(len(vars(dresp)[i]))]
    171171
    172                 #possible namespace pollution here
    173                 from rlist_write import rlist_write
    174                 # write responses
    175                 rdesc = rlist_write(fidi,'response_function','rf',rf,rdesc)
     172        #possible namespace pollution here
     173        from rlist_write import rlist_write
     174        # write responses
     175        rdesc = rlist_write(fidi, 'response_function', 'rf', rf, rdesc)
    176176
    177                 return rdesc
     177        return rdesc
    178178
    179         @staticmethod
    180         def dakota_rlev_write(fidi,dresp,params):
    181                 # collect only the responses of the appropriate class
    182                 rf = [struc_class(vars(dresp)[i][j],'response_function','rf') for i in fieldnames(dresp) for j in range(len(vars(dresp)[i]))]
     179    @staticmethod
     180    def dakota_rlev_write(fidi, dresp, params):
     181        # collect only the responses of the appropriate class
     182        rf = [struc_class(vars(dresp)[i][j], 'response_function', 'rf') for i in fieldnames(dresp) for j in range(len(vars(dresp)[i]))]
    183183
    184                 # write response levels
    185                 rlev_write(fidi,rf,'response_function',params)
     184        # write response levels
     185        rlev_write(fidi, rf, 'response_function', params)
  • issm/trunk-jpl/src/m/classes/qmu/uniform_uncertain.py

    r23716 r24213  
    33from MatlabArray import *
    44
     5
    56class uniform_uncertain(object):
    6         '''
     7    '''
    78  definition for the uniform_uncertain class.
    89
    910  [uuv] = uniform_uncertain.uniform_uncertain(args)
    10    uuv  = uniform_uncertain()
     11   uuv = uniform_uncertain()
    1112
    1213  where the required args are:
    1314    descriptor    (str, description, '')
    14     lower         (float, lower bound, -np.Inf)
    15     upper         (float, upper bound,  np.Inf)
     15    lower         (float, lower bound, - np.Inf)
     16    upper         (float, upper bound, np.Inf)
    1617
    1718  note that zero arguments constructs a default instance, one
     
    2021'''
    2122
    22         def __init__(self):
    23                 self.descriptor = ''
    24                 self.lower      = -np.Inf
    25                 self.upper      = np.Inf
     23    def __init__(self):
     24        self.descriptor = ''
     25        self.lower = - np.Inf
     26        self.upper = np.Inf
    2627
    27         @staticmethod
    28         def uniform_uncertain(*args):
    29                 nargin = len(args)
     28    @staticmethod
     29    def uniform_uncertain(*args):
     30        nargin = len(args)
    3031
    31                 # create a default object
    32                 if nargin == 0:
    33                         return uniform_uncertain()
     32        # create a default object
     33        if nargin == 0:
     34            return uniform_uncertain()
    3435
    35                 # copy the object
    36                 elif nargin == 1:
    37                         if isinstance(args[0],uniform_uncertain):
    38                                 uuv = args[0]
    39                         else:
    40                                 raise RuntimeError('Object '+str(args[0])+' is a '+str(type(args[0]))+' class object, not "uniform_uncertain".')
     36        # copy the object
     37        elif nargin == 1:
     38            if isinstance(args[0], uniform_uncertain):
     39                uuv = args[0]
     40            else:
     41                raise RuntimeError('Object ' + str(args[0]) + ' is a ' + str(type(args[0])) + ' class object, not "uniform_uncertain".')
    4142
    42                 # not enough arguments
    43                 elif nargin == 2:
    44                         raise RuntimeError('Construction of "uniform_uncertain" class object requires at least 3 inputs.')
     43        # not enough arguments
     44        elif nargin == 2:
     45            raise RuntimeError('Construction of "uniform_uncertain" class object requires at least 3 inputs.')
    4546
    46                 # create the object from the input
    47                 else:
    48                         # leaving this here in case it becomes important in the future
    49                         #asizec=array_size(*args[0:min(nargin,3)])
    50                         #uuv = [uniform_uncertain() for i in range(asizec[0]) for j in range(asizec[1])]
    51                         uuv = uniform_uncertain()
    52                         uuv.descriptor = str(args[0])
    53                         uuv.lower      = args[1]
    54                         uuv.upper      = args[2]
    55                 if (nargin > 3):
    56                         print('WARNING: uniform_uncertain:extra_arg: Extra arguments for object of class '+type(uuv)+'.')
     47        # create the object from the input
     48        else:
     49            # leaving this here in case it becomes important in the future
     50            #asizec = array_size(*args[0:min(nargin, 3)])
     51            #uuv = [uniform_uncertain() for i in range(asizec[0]) for j in range(asizec[1])]
     52            uuv = uniform_uncertain()
     53            uuv.descriptor = str(args[0])
     54            uuv.lower = args[1]
     55            uuv.upper = args[2]
     56        if (nargin > 3):
     57            print('WARNING: uniform_uncertain:extra_arg: Extra arguments for object of class ' + type(uuv) + '.')
    5758
    58                 return [uuv]
     59        return [uuv]
    5960
    60         def __repr__(self):
    61                 # display an individual object
    62                 string = '\n'
    63                 string += 'class "uniform_uncertain" object = \n'
    64                 string += '    descriptor: ' + str(self.descriptor) + '\n'
    65                 string += '         lower: ' + str(self.lower) + '\n'
    66                 string += '         upper: ' + str(self.upper) + '\n'
     61    def __repr__(self):
     62        # display an individual object
     63        string = '\n'
     64        string += 'class "uniform_uncertain" object = \n'
     65        string += '    descriptor: ' + str(self.descriptor) + '\n'
     66        string += '         lower: ' + str(self.lower) + '\n'
     67        string += '         upper: ' + str(self.upper) + '\n'
    6768
    68                 return string
     69        return string
    6970
    70         # from here on, uuv is either a single, or a 1d vector of, uniform_uncertain
     71    # from here on, uuv is either a single, or a 1d vector of, uniform_uncertain
    7172
    72         @staticmethod
    73         def prop_desc(uuv,dstr):
    74                 if type(uuv) not in [list,np.ndarray]:
    75                         if uuv.descriptor != '' or type(uuv.descriptor) != str:
    76                                 desc = str(uuv.descriptor)
    77                         elif dstr != '':
    78                                 desc = str(dstr)
    79                         else:
    80                                 desc = 'uuv'
    81                         return desc
     73    @staticmethod
     74    def prop_desc(uuv, dstr):
     75        if type(uuv) not in [list, np.ndarray]:
     76            if uuv.descriptor != '' or type(uuv.descriptor) != str:
     77                desc = str(uuv.descriptor)
     78            elif dstr != '':
     79                desc = str(dstr)
     80            else:
     81                desc = 'uuv'
     82            return desc
    8283
    83                 desc = ['' for i in range(np.size(uuv))]
    84                 for i in range(np.size(uuv)):
    85                         if uuv[i].descriptor != '' or type(uuv[i].descriptor) != str:
    86                                 desc[i] = str(uuv[i].descriptor)
    87                         elif dstr != '':
    88                                 desc[i] = str(dstr)+str(string_dim(uuv,i,'vector'))
    89                         else:
    90                                 desc[i] = 'uuv'+str(string_dim(uuv,i,'vector'))
     84        desc = ['' for i in range(np.size(uuv))]
     85        for i in range(np.size(uuv)):
     86            if uuv[i].descriptor != '' or type(uuv[i].descriptor) != str:
     87                desc[i] = str(uuv[i].descriptor)
     88            elif dstr != '':
     89                desc[i] = str(dstr) + str(string_dim(uuv, i, 'vector'))
     90            else:
     91                desc[i] = 'uuv' + str(string_dim(uuv, i, 'vector'))
    9192
    92                         desc = allempty(desc)
     93            desc = allempty(desc)
    9394
    94                 return desc
     95        return desc
    9596
    96         @staticmethod
    97         def prop_initpt(uuv):
    98                 initpt=[]
    99                 return initpt
     97    @staticmethod
     98    def prop_initpt(uuv):
     99        initpt = []
     100        return initpt
    100101
    101         @staticmethod
    102         def prop_lower(uuv):
    103                 if type(uuv) not in [list,np.ndarray]:
    104                         return uuv.lower
     102    @staticmethod
     103    def prop_lower(uuv):
     104        if type(uuv) not in [list, np.ndarray]:
     105            return uuv.lower
    105106
    106                 lower = np.zeros(np.size(uuv))
    107                 for i in range(np.size(uuv)):
    108                         lower[i] = uuv[i].lower
     107        lower = np.zeros(np.size(uuv))
     108        for i in range(np.size(uuv)):
     109            lower[i] = uuv[i].lower
    109110
    110                 lower = allequal(lower,-np.Inf)
     111        lower = allequal(lower, - np.Inf)
    111112
    112                 return lower
     113        return lower
    113114
    114         @staticmethod
    115         def prop_upper(uuv):
    116                 if type(uuv) not in [list,np.ndarray]:
    117                         return uuv.upper
     115    @staticmethod
     116    def prop_upper(uuv):
     117        if type(uuv) not in [list, np.ndarray]:
     118            return uuv.upper
    118119
    119                 upper = np.zeros(np.size(uuv))
    120                 for i in range(np.size(uuv)):
    121                         upper[i] = uuv[i].upper
     120        upper = np.zeros(np.size(uuv))
     121        for i in range(np.size(uuv)):
     122            upper[i] = uuv[i].upper
    122123
    123                 upper = allequal(upper, np.Inf)
     124        upper = allequal(upper, np.Inf)
    124125
    125                 return upper
     126        return upper
    126127
    127         @staticmethod
    128         def prop_mean(uuv):
    129                 mean=[]
    130                 return mean
     128    @staticmethod
     129    def prop_mean(uuv):
     130        mean = []
     131        return mean
    131132
    132         @staticmethod
    133         def prop_stddev(uuv):
    134                 stddev=[]
    135                 return stddev
     133    @staticmethod
     134    def prop_stddev(uuv):
     135        stddev = []
     136        return stddev
    136137
    137         @staticmethod
    138         def prop_initst(uuv):
    139                 initst=[]
    140                 return initst
     138    @staticmethod
     139    def prop_initst(uuv):
     140        initst = []
     141        return initst
    141142
    142         @staticmethod
    143         def prop_stype(uuv):
    144                 stype=[]
    145                 return stype
     143    @staticmethod
     144    def prop_stype(uuv):
     145        stype = []
     146        return stype
    146147
    147         @staticmethod
    148         def prop_scale(uuv):
    149                 scale=[]
    150                 return scale
     148    @staticmethod
     149    def prop_scale(uuv):
     150        scale = []
     151        return scale
    151152
    152         @staticmethod
    153         def dakota_write(fidi,dvar):
    154                 # collect only the variables of the appropriate class
    155                 uuv = [struc_class(i,'uniform_uncertain','uuv') for i in dvar]
    156                 # possible namespace pollution, the above import seems not to work
    157                 from vlist_write import vlist_write
    158                 # write variables
    159                 vlist_write(fidi,'uniform_uncertain','uuv',uuv)
     153    @staticmethod
     154    def dakota_write(fidi, dvar):
     155        # collect only the variables of the appropriate class
     156        uuv = [struc_class(i, 'uniform_uncertain', 'uuv') for i in dvar]
     157        # possible namespace pollution, the above import seems not to work
     158        from vlist_write import vlist_write
     159        # write variables
     160        vlist_write(fidi, 'uniform_uncertain', 'uuv', uuv)
  • issm/trunk-jpl/src/m/classes/radaroverlay.py

    r14640 r24213  
    11from fielddisplay import fielddisplay
    22
     3
    34class radaroverlay(object):
    4         """
    5         RADAROVERLAY class definition
     5    """
     6    RADAROVERLAY class definition
    67
    7            Usage:
    8               radaroverlay=radaroverlay();
    9         """
     8       Usage:
     9          radaroverlay = radaroverlay()
     10    """
    1011
    11         def __init__(self): # {{{
    12                 self.pwr = float('NaN')
    13                 self.x  = float('NaN')
    14                 self.y  = float('NaN')
     12    def __init__(self): # {{{
     13        self.pwr = float('NaN')
     14        self.x = float('NaN')
     15        self.y = float('NaN')
    1516
    16                 #set defaults
    17                 self.setdefaultparameters()
     17    #set defaults
     18        self.setdefaultparameters()
    1819
    19                 #}}}
    20         def __repr__(self): # {{{
    21                 string='   radaroverlay parameters:'
    22                 string="%s\n%s"%(string,fielddisplay(self,'pwr','radar power image (matrix)'))
    23                 string="%s\n%s"%(string,fielddisplay(self,'x','corresponding x coordinates [m]'))
    24                 string="%s\n%s"%(string,fielddisplay(self,'y','corresponding y coordinates [m]'))
    25                 return string
    26                 #}}}
    27         def setdefaultparameters(self): # {{{
    28                 return self
    29         #}}}
     20    #}}}
     21
     22    def __repr__(self):  # {{{
     23        string = '   radaroverlay parameters:'
     24        string = "%s\n%s" % (string, fielddisplay(self, 'pwr', 'radar power image (matrix)'))
     25        string = "%s\n%s" % (string, fielddisplay(self, 'x', 'corresponding x coordinates [m]'))
     26        string = "%s\n%s" % (string, fielddisplay(self, 'y', 'corresponding y coordinates [m]'))
     27        return string
     28    #}}}
     29
     30    def setdefaultparameters(self):  # {{{
     31        return self
     32    #}}}
  • issm/trunk-jpl/src/m/classes/regionaloutput.py

    r23716 r24213  
    44from checkfield import checkfield
    55from WriteData import WriteData
    6 from MeshProfileIntersection import MeshProfileIntersection
    76from ContourToMesh import ContourToMesh
    87import numpy as np
    98import os
    109
     10
    1111class regionaloutput(object):
    12         """
    13         REGIONALOUTPUT class definition
    14        
    15            Usage:
    16               regionaloutput=regionaloutput();
    17               regionaloutput=regionaloutput('name','Volume1','definitionstring','Outputdefinition1','outputnamestring','IceVolume','mask',mask);
    18               regionaloutput=regionaloutput('name','Volume1','definitionstring','Outputdefinition1','outputnamestring','IceVolume','maskexpstring','Exp/Mask.exp','model',md)
    19        
    20            where mask is a vectorial field of size md.mesh.numberofvertices,1 : where vertices with values > 1 are to be included in the calculated region.
    21            Alternatively, the user can pass in an Argus file and model object instead of a mask, and mask will be calculated for the user
    22         """
     12    """
     13    REGIONALOUTPUT class definition
    2314
    24         def __init__(self,*args): # {{{
     15       Usage:
     16          regionaloutput = regionaloutput()
     17          regionaloutput = regionaloutput('name', 'Volume1', 'definitionstring', 'Outputdefinition1', 'outputnamestring', 'IceVolume', 'mask', mask)
     18          regionaloutput = regionaloutput('name', 'Volume1', 'definitionstring', 'Outputdefinition1', 'outputnamestring', 'IceVolume', 'maskexpstring', 'Exp/Mask.exp', 'model', md)
    2519
    26                 self.name              = ''
    27                 self.definitionstring  = ''
    28                 self.outputnamestring  = ''
    29                 self.mask              = float('NaN')
    30                 self.maskexpstring     = ''
     20       where mask is a vectorial field of size md.mesh.numberofvertices, 1 : where vertices with values > 1 are to be included in the calculated region.
     21       Alternatively, the user can pass in an Argus file and model object instead of a mask, and mask will be calculated for the user
     22    """
    3123
    32                 #set defaults
    33                 self.setdefaultparameters()
     24    def __init__(self, *args):  # {{{
    3425
    35                 #use provided options to change fields
    36                 options=pairoptions(*args)
     26        self.name = ''
     27        self.definitionstring = ''
     28        self.outputnamestring = ''
     29        self.mask = float('NaN')
     30        self.maskexpstring = ''
    3731
    38                 #OK get other fields
    39                 self=options.AssignObjectFields(self)
     32    #set defaults
     33        self.setdefaultparameters()
    4034
    41                 #get name
    42                 if options.getfieldvalue('model',0):
    43                         if options.getfieldvalue('maskexpstring',0):
    44                                 modelname=options.getfieldvalue('model')
    45                                 self.maskexpstring=options.getfieldvalue('maskexpstring')
    46                                 self.setmaskfromexp(modelname)
    47                        
    48                 if (len(self.mask)<=1 & np.any(np.isnan(self.mask))):
    49                         error('regionaloutput error message: ''mask'' field or ''maskexpstring'' and ''model'' fields should be defined!');
     35    #use provided options to change fields
     36        options = pairoptions(*args)
    5037
    51                 #}}}
    52         def __repr__(self): # {{{
     38    #OK get other fields
     39        self = options.AssignObjectFields(self)
    5340
    54                 string="   Regionaloutput:"
    55                 string="%s\n%s"%(string,fielddisplay(self,'name','identifier for this regional response'))
    56                 string="%s\n%s"%(string,fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from Outputdefinition[1-100]'))
    57                 string="%s\n%s"%(string,fielddisplay(self,'outputnamestring','string that identifies the type of output you want, eg. IceVolume, TotalSmb, GroudedArea'))
    58                 string="%s\n%s"%(string,fielddisplay(self,'mask','mask vectorial field which identifies the region of interest (value > 0 will be included)'))
    59                 string="%s\n%s"%(string,fielddisplay(self,'maskexpstring','name of Argus file that can be passed in to define the regional mask'))
    60                 return string
    61                 #}}}
    62         def extrude(self,md): # {{{
    63                 self.mask=project3d(md,'vector',self.mask,'type','node')
    64                 return self
    65            #}}}
    66         def setdefaultparameters(self): # {{{
    67                 return self
    68         #}}}
    69         def setmaskfromexp(self,md):    # {{{
    70                 if len(self.maskexpstring) > 0:
    71                         self.mask=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,self.maskexpstring,'node',1)
    72                        
    73                 return self
    74          # }}}
    75         def checkconsistency(self,md,solution,analyses):    # {{{
    76                
    77                 if  not isinstance(self.name, str):
    78                         raise RuntimeError("regionaloutput error message: 'name' field should be a string!")
    79                        
    80                 if  not isinstance(self.outputnamestring, str):
    81                         raise RuntimeError("regionaloutput error message: 'outputnamestring' field should be a string!")
    82                
    83                 if len(self.maskexpstring) > 0:
    84                         if not os.path.isfile(self.maskexpstring):
    85                                 raise RuntimeError("regionaloutput error message: file name for mask exp does not point to a legitimate file on disk!")
    86                         else:
    87                                 self.setmaskfromexp(md)
     41    #get name
     42        if options.getfieldvalue('model', 0):
     43            if options.getfieldvalue('maskexpstring', 0):
     44                modelname = options.getfieldvalue('model')
     45                self.maskexpstring = options.getfieldvalue('maskexpstring')
     46                self.setmaskfromexp(modelname)
    8847
    89                 OutputdefinitionStringArray=[]
    90                 for i in range(1,100):
    91                         x='Outputdefinition'+str(i)
    92                         OutputdefinitionStringArray.append(x)
     48        if (len(self.mask) <= 1 & np.any(np.isnan(self.mask))):
     49            error('regionaloutput error message: ''mask'' field or ''maskexpstring'' and ''model'' fields should be defined!')
    9350
    94                 md = checkfield(md,'field',self.definitionstring,'values',OutputdefinitionStringArray)
    95                 md = checkfield(md,'field',self.mask,'size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    96                 return md
    97         # }}}
    98         def marshall(self,prefix,md,fid):    # {{{
     51    #}}}
    9952
    100                 #before marshalling, make sure mask is set:
    101                 self.setmaskfromexp(md)
     53    def __repr__(self):  # {{{
     54        string = "   Regionaloutput:"
     55        string = "%s\n%s" % (string, fielddisplay(self, 'name', 'identifier for this regional response'))
     56        string = "%s\n%s" % (string, fielddisplay(self, 'definitionstring', 'string that identifies this output definition uniquely, from Outputdefinition[1 - 100]'))
     57        string = "%s\n%s" % (string, fielddisplay(self, 'outputnamestring', 'string that identifies the type of output you want, eg. IceVolume, TotalSmb, GroudedArea'))
     58        string = "%s\n%s" % (string, fielddisplay(self, 'mask', 'mask vectorial field which identifies the region of interest (value > 0 will be included)'))
     59        string = "%s\n%s" % (string, fielddisplay(self, 'maskexpstring', 'name of Argus file that can be passed in to define the regional mask'))
     60        return string
     61    #}}}
    10262
    103                 #ok, marshall strings and mask:
    104                 WriteData(fid,prefix,'data',self.name,'name','md.regionaloutput.name','format','String')
    105                 WriteData(fid,prefix,'data',self.definitionstring,'name','md.regionaloutput.definitionstring','format','String')
    106                 WriteData(fid,prefix,'data',self.outputnamestring,'name','md.regionaloutput.outputnamestring','format','String');
    107                 WriteData(fid,prefix,'data',self.mask,'name','md.regionaloutput.mask','format','DoubleMat','mattype',1);
     63    def extrude(self, md):  # {{{
     64        self.mask = project3d(md, 'vector', self.mask, 'type', 'node')
     65        return self
     66    #}}}
    10867
    109         # }}}
     68    def setdefaultparameters(self):  # {{{
     69        return self
     70    #}}}
     71
     72    def setmaskfromexp(self, md):  # {{{
     73        if len(self.maskexpstring) > 0:
     74            self.mask = ContourToMesh(md.mesh.elements, md.mesh.x, md.mesh.y, self.maskexpstring, 'node', 1)
     75
     76        return self
     77    # }}}
     78    def checkconsistency(self, md, solution, analyses):  # {{{
     79
     80        if not isinstance(self.name, str):
     81            raise RuntimeError("regionaloutput error message: 'name' field should be a string!")
     82
     83        if not isinstance(self.outputnamestring, str):
     84            raise RuntimeError("regionaloutput error message: 'outputnamestring' field should be a string!")
     85
     86        if len(self.maskexpstring) > 0:
     87            if not os.path.isfile(self.maskexpstring):
     88                raise RuntimeError("regionaloutput error message: file name for mask exp does not point to a legitimate file on disk!")
     89            else:
     90                self.setmaskfromexp(md)
     91
     92        OutputdefinitionStringArray = []
     93        for i in range(1, 100):
     94            x = 'Outputdefinition' + str(i)
     95            OutputdefinitionStringArray.append(x)
     96
     97        md = checkfield(md, 'field', self.definitionstring, 'values', OutputdefinitionStringArray)
     98        md = checkfield(md, 'field', self.mask, 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
     99        return md
     100    # }}}
     101    def marshall(self, prefix, md, fid):  # {{{
     102
     103        #before marshalling, make sure mask is set:
     104        self.setmaskfromexp(md)
     105
     106    #ok, marshall strings and mask:
     107        WriteData(fid, prefix, 'data', self.name, 'name', 'md.regionaloutput.name', 'format', 'String')
     108        WriteData(fid, prefix, 'data', self.definitionstring, 'name', 'md.regionaloutput.definitionstring', 'format', 'String')
     109        WriteData(fid, prefix, 'data', self.outputnamestring, 'name', 'md.regionaloutput.outputnamestring', 'format', 'String')
     110        WriteData(fid, prefix, 'data', self.mask, 'name', 'md.regionaloutput.mask', 'format', 'DoubleMat', 'mattype', 1)
     111
     112    # }}}
  • issm/trunk-jpl/src/m/classes/results.py

    r23716 r24213  
    1 import numpy as np
    2 from pairoptions import pairoptions
    31from fielddisplay import fielddisplay
    4 import MatlabFuncs as m
     2
    53
    64class results(object):
    7         """
    8         RESULTS class definition
     5    """
     6    RESULTS class definition
    97
    10            Usage:
    11               results=results();
    12         """
     8       Usage:
     9          results = results()
     10    """
    1311
    14         def __init__(self,*args):    # {{{
    15                 pass
    16         # }}}
    17         def __repr__(self):    # {{{
    18                 s ="   Model results:\n"
     12    def __init__(self, *args):  # {{{
     13        pass
     14    # }}}
    1915
    20                 if 'step' in self.__dict__:
    21                         s+="%s\n" % fielddisplay(self,'step',"step number")
    22                 if 'time' in self.__dict__:
    23                         s+="%s\n" % fielddisplay(self,'time',"time value")
    24                 if 'SolutionType' in self.__dict__:
    25                         s+="%s\n" % fielddisplay(self,'SolutionType',"solution type")
     16    def __repr__(self):  # {{{
     17        s = "   Model results:\n"
    2618
    27                 for name in list(self.__dict__.keys()):
    28                         if name not in ['step','time','SolutionType','errlog','outlog']:
    29                                 if   isinstance(getattr(self,name),list):
    30                                         s+="%s\n" % fielddisplay(self,name,"model results list")
    31                                 elif isinstance(getattr(self,name),results):
    32                                         s+="%s\n" % fielddisplay(self,name,"model results case")
    33                                 else:
    34                                         s+="%s\n" % fielddisplay(self,name,"")
     19        if 'step' in self.__dict__:
     20            s += "%s\n" % fielddisplay(self, 'step', "step number")
     21        if 'time' in self.__dict__:
     22            s += "%s\n" % fielddisplay(self, 'time', "time value")
     23        if 'SolutionType' in self.__dict__:
     24            s += "%s\n" % fielddisplay(self, 'SolutionType', "solution type")
    3525
    36                 if 'errlog' in self.__dict__:
    37                         s+="%s\n" % fielddisplay(self,'errlog',"error log file")
    38                 if 'outlog' in self.__dict__:
    39                         s+="%s\n" % fielddisplay(self,'outlog',"output log file")
     26        for name in list(self.__dict__.keys()):
     27            if name not in ['step', 'time', 'SolutionType', 'errlog', 'outlog']:
     28                if isinstance(getattr(self, name), list):
     29                    s += "%s\n" % fielddisplay(self, name, "model results list")
     30                elif isinstance(getattr(self, name), results):
     31                    s += "%s\n" % fielddisplay(self, name, "model results case")
     32                else:
     33                    s += "%s\n" % fielddisplay(self, name, "")
    4034
    41                 return s
    42         # }}}
    43         def setdefaultparameters(self):    # {{{
    44                 #do nothing
    45                 return self
    46         # }}}
    47         def checkconsistency(self,md,solution,analyses):    # {{{
    48                 return md
    49         # }}}
    50         def marshall(self,prefix,md,fid):    # {{{
    51                 pass
    52         # }}}
     35        if 'errlog' in self.__dict__:
     36            s += "%s\n" % fielddisplay(self, 'errlog', "error log file")
     37        if 'outlog' in self.__dict__:
     38            s += "%s\n" % fielddisplay(self, 'outlog', "output log file")
     39
     40        return s
     41    # }}}
     42
     43    def setdefaultparameters(self):  # {{{
     44        #do nothing
     45        return self
     46    # }}}
     47
     48    def checkconsistency(self, md, solution, analyses):  # {{{
     49        return md
     50    # }}}
     51
     52    def marshall(self, prefix, md, fid):  # {{{
     53        pass
     54    # }}}
  • issm/trunk-jpl/src/m/classes/rifts.py

    r23716 r24213  
    66import MatlabFuncs as m
    77
     8
    89class rifts(object):
    9         """
    10         RIFTS class definition
     10    """
     11    RIFTS class definition
    1112
    12            Usage:
    13               rifts=rifts();
    14         """
     13       Usage:
     14          rifts = rifts()
     15    """
    1516
    16         def __init__(self): # {{{
    17                 self.riftstruct    = []
    18                 self.riftproperties = []
     17    def __init__(self): # {{{
     18        self.riftstruct = []
     19        self.riftproperties = []
    1920
    20                 #set defaults
    21                 self.setdefaultparameters()
     21    #set defaults
     22        self.setdefaultparameters()
    2223
    23                 #}}}
    24         def __repr__(self): # {{{
    25                 string='   rifts parameters:'
     24    #}}}
    2625
    27                 string="%s\n%s"%(string,fielddisplay(self,'riftstruct','structure containing all rift information (vertices coordinates, segments, type of melange, ...)'))
    28                 string="%s\n%s"%(string,fielddisplay(self,'riftproperties',''))
    29                 return string
    30                 #}}}
    31         def setdefaultparameters(self): # {{{
    32                 return self
    33         #}}}
    34         def checkconsistency(self,md,solution,analyses):    # {{{
    35                 if (not self.riftstruct) or np.any(isnans(self.riftstruct)):
    36                         numrifts=0
    37                 else:
    38                         numrifts=len(self.riftstruct)
     26    def __repr__(self):  # {{{
     27        string = '   rifts parameters:'
    3928
    40                 if numrifts:
    41                         if not m.strcmp(md.mesh.domaintype(),'2Dhorizontal'):
    42                                 md.checkmessage("models with rifts are only supported in 2d for now!")
    43                         if not isinstance(self.riftstruct,list):
    44                                 md.checkmessage("rifts.riftstruct should be a structure!")
    45                         if np.any(md.mesh.segmentmarkers>=2):
    46                                 #We have segments with rift markers, but no rift structure!
    47                                 md.checkmessage("model should be processed for rifts (run meshprocessrifts)!")
    48                         for i,rift in enumerate(self.riftstruct):
    49                                 md = checkfield(md,'fieldname',"rifts.riftstruct[{}]['fill']".format(i),'values',['Water','Air','Ice','Melange',0,1,2,3])
    50                 else:
    51                         if self.riftstruct and np.any(np.logical_not(isnans(self.riftstruct))):
    52                                 md.checkmessage("riftstruct should be NaN since numrifts is 0!")
     29        string = "%s\n%s" % (string, fielddisplay(self, 'riftstruct', 'structure containing all rift information (vertices coordinates, segments, type of melange, ...)'))
     30        string = "%s\n%s" % (string, fielddisplay(self, 'riftproperties', ''))
     31        return string
     32    #}}}
    5333
    54                 return md
    55         # }}}
    56         def marshall(self,prefix,md,fid):    # {{{
     34    def setdefaultparameters(self):  # {{{
     35        return self
     36    #}}}
    5737
    58                 #Process rift info
    59                 if (not self.riftstruct) or np.any(isnans(self.riftstruct)):
    60                         numrifts=0
    61                 else:
    62                         numrifts=len(self.riftstruct)
     38    def checkconsistency(self, md, solution, analyses):  # {{{
     39        if (not self.riftstruct) or np.any(isnans(self.riftstruct)):
     40            numrifts = 0
     41        else:
     42            numrifts = len(self.riftstruct)
    6343
    64                 numpairs=0
    65                 for rift in self.riftstruct:
    66                         numpairs+=np.size(rift['penaltypairs'],axis=0)
     44        if numrifts:
     45            if not m.strcmp(md.mesh.domaintype(), '2Dhorizontal'):
     46                md.checkmessage("models with rifts are only supported in 2d for now!")
     47            if not isinstance(self.riftstruct, list):
     48                md.checkmessage("rifts.riftstruct should be a structure!")
     49            if np.any(md.mesh.segmentmarkers >= 2):
     50                #We have segments with rift markers, but no rift structure!
     51                md.checkmessage("model should be processed for rifts (run meshprocessrifts)!")
     52            for i, rift in enumerate(self.riftstruct):
     53                md = checkfield(md, 'fieldname', "rifts.riftstruct[{}]['fill']".format(i), 'values', ['Water', 'Air', 'Ice', 'Melange', 0, 1, 2, 3])
     54        else:
     55            if self.riftstruct and np.any(np.logical_not(isnans(self.riftstruct))):
     56                md.checkmessage("riftstruct should be NaN since numrifts is 0!")
    6757
    68                 # Convert strings in riftstruct to hard coded numbers
    69                 FillDict={'Air':0,
    70                                                         'Ice':1,
    71                                                         'Melange':2,
    72                                                         'Water':3}
    73                 for rift in self.riftstruct:
    74                         if rift['fill'] in ['Air','Ice','Melange','Water']:
    75                                 rift['fill'] = FillDict[rift['fill']]
     58        return md
     59    # }}}
    7660
    77                 # 2 for nodes + 2 for elements+ 2 for  normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state.
    78                 data=np.zeros((numpairs,12))
    79                 count=0
    80                 for rift in self.riftstruct:
    81                         numpairsforthisrift=np.size(rift['penaltypairs'],0)
    82                         data[count:count+numpairsforthisrift,0:7]=rift['penaltypairs']
    83                         data[count:count+numpairsforthisrift,7]=rift['fill']
    84                         data[count:count+numpairsforthisrift,8]=rift['friction']
    85                         data[count:count+numpairsforthisrift,9]=rift['fraction']
    86                         data[count:count+numpairsforthisrift,10]=rift['fractionincrement']
    87                         data[count:count+numpairsforthisrift,11]=rift['state'].reshape(-1)
    88                         count+=numpairsforthisrift
     61    def marshall(self, prefix, md, fid):  # {{{
     62        #Process rift info
     63        if (not self.riftstruct) or np.any(isnans(self.riftstruct)):
     64            numrifts = 0
     65        else:
     66            numrifts = len(self.riftstruct)
    8967
    90                 WriteData(fid,prefix,'data',numrifts,'name','md.rifts.numrifts','format','Integer')
    91                 WriteData(fid,prefix,'data',data,'name','md.rifts.riftstruct','format','DoubleMat','mattype',3)
    92         # }}}
     68        numpairs = 0
     69        for rift in self.riftstruct:
     70            numpairs += np.size(rift['penaltypairs'], axis=0)
     71
     72    # Convert strings in riftstruct to hard coded numbers
     73        FillDict = {'Air': 0,
     74                    'Ice': 1,
     75                    'Melange': 2,
     76                    'Water': 3}
     77        for rift in self.riftstruct:
     78            if rift['fill'] in ['Air', 'Ice', 'Melange', 'Water']:
     79                rift['fill'] = FillDict[rift['fill']]
     80
     81    # 2 for nodes + 2 for elements + 2 for  normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state.
     82        data = np.zeros((numpairs, 12))
     83        count = 0
     84        for rift in self.riftstruct:
     85            numpairsforthisrift = np.size(rift['penaltypairs'], 0)
     86            data[count:count + numpairsforthisrift, 0:7] = rift['penaltypairs']
     87            data[count:count + numpairsforthisrift, 7] = rift['fill']
     88            data[count:count + numpairsforthisrift, 8] = rift['friction']
     89            data[count:count + numpairsforthisrift, 9] = rift['fraction']
     90            data[count:count + numpairsforthisrift, 10] = rift['fractionincrement']
     91            data[count:count + numpairsforthisrift, 11] = rift['state'].reshape(- 1)
     92            count += numpairsforthisrift
     93
     94        WriteData(fid, prefix, 'data', numrifts, 'name', 'md.rifts.numrifts', 'format', 'Integer')
     95        WriteData(fid, prefix, 'data', data, 'name', 'md.rifts.riftstruct', 'format', 'DoubleMat', 'mattype', 3)
     96    # }}}
  • issm/trunk-jpl/src/m/classes/slr.py

    r23716 r24213  
    66from WriteData import WriteData
    77
     8
    89class slr(object):
    9         """
    10         SLR class definition
    11 
    12                 Usage:
    13                   slr=slr()
    14         """
    15         def __init__(self): # {{{
    16                 self.deltathickness         = float('NaN')
    17                 self.sealevel               = float('NaN')
    18                 self.spcthickness                                               = float('NaN')
    19                 self.maxiter                = 0
    20                 self.reltol                 = 0
    21                 self.abstol                 = 0
    22                 self.love_h                 = 0 #provided by PREM model()
    23                 self.love_k                 = 0 #ideam
    24                 self.love_l                 = 0 #ideam
    25                 self.tide_love_k            = 0 #ideam
    26                 self.tide_love_h            = 0 #ideam
    27                 self.fluid_love             = 0
    28                 self.equatorial_moi         = 0
    29                 self.polar_moi              = 0
    30                 self.angular_velocity       = 0
    31                 self.rigid                  = 0
    32                 self.elastic                = 0
    33                 self.rotation               = 0
    34                 self.ocean_area_scaling     = 0
    35                 self.steric_rate            = 0 #rate of ocean expansion from steric effects.
    36                 self.geodetic_run_frequency = 1 #how many time steps we skip before we run the geodetic part of the solver during transient
    37                 self.geodetic               = 0 #compute geodetic SLR? (in addition to steric?)
    38                 self.degacc                 = 0
    39                 self.loop_increment         = 0
    40                 self.horiz                  = 0
    41                 self.Ngia                   = float('NaN')
    42                 self.Ugia                   = float('NaN')
    43                 self.requested_outputs      = []
    44                 self.transitions            = []
    45 
    46                 #set defaults
    47                 self.setdefaultparameters()
    48                 #}}}
    49 
    50         def __repr__(self): # {{{
    51                         string='   slr parameters:'
    52                         string="%s\n%s"%(string,fielddisplay(self,'deltathickness','thickness change: ice height equivalent [m]'))
    53                         string="%s\n%s"%(string,fielddisplay(self,'sealevel','current sea level (prior to computation) [m]'))
    54                         string="%s\n%s"%(string,fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]'))
    55                         string="%s\n%s"%(string,fielddisplay(self,'reltol','sea level rise relative convergence criterion, (NaN: not applied)'))
    56                         string="%s\n%s"%(string,fielddisplay(self,'abstol','sea level rise absolute convergence criterion, (default, NaN: not applied)'))
    57                         string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of nonlinear iterations'))
    58                         string="%s\n%s"%(string,fielddisplay(self,'love_h','load Love number for radial displacement'))
    59                         string="%s\n%s"%(string,fielddisplay(self,'love_k','load Love number for gravitational potential perturbation'))
    60                         string="%s\n%s"%(string,fielddisplay(self,'love_l','load Love number for horizontal displaements'))
    61                         string="%s\n%s"%(string,fielddisplay(self,'tide_love_k','tidal load Love number (degree 2)'))
    62                         string="%s\n%s"%(string,fielddisplay(self,'tide_love_h','tidal load Love number (degree 2)'))
    63                         string="%s\n%s"%(string,fielddisplay(self,'fluid_love','secular fluid Love number'))
    64                         string="%s\n%s"%(string,fielddisplay(self,'equatorial_moi','mean equatorial moment of inertia [kg m^2]'))
    65                         string="%s\n%s"%(string,fielddisplay(self,'polar_moi','polar moment of inertia [kg m^2]'))
    66                         string="%s\n%s"%(string,fielddisplay(self,'angular_velocity','mean rotational velocity of earth [per second]'))
    67                         string="%s\n%s"%(string,fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area [default: No correction]'))
    68                         string="%s\n%s"%(string,fielddisplay(self,'steric_rate','rate of steric ocean expansion [mm/yr]'))
    69                         string="%s\n%s"%(string,fielddisplay(self,'Ngia','rate of viscous (GIA) geoid expansion (in mm/yr)'))
    70                         string="%s\n%s"%(string,fielddisplay(self,'Ugia','rate of viscous (GIA) bedrock uplift (in mm/yr)'))
    71                         string="%s\n%s"%(string,fielddisplay(self,'loop_increment','vector assembly (in the convolution) framentation'))
    72                         string="%s\n%s"%(string,fielddisplay(self,'geodetic','compute geodetic SLR? ( in addition to steric?) default 0'))
    73                         string="%s\n%s"%(string,fielddisplay(self,'geodetic_run_frequency','how many time steps we skip before we run SLR solver during transient (default: 1)'))
    74                         string="%s\n%s"%(string,fielddisplay(self,'rigid','rigid earth graviational potential perturbation'))
    75                         string="%s\n%s"%(string,fielddisplay(self,'elastic','elastic earth graviational potential perturbation'))
    76                         string="%s\n%s"%(string,fielddisplay(self,'rotation','earth rotational potential perturbation'))
    77                         string="%s\n%s"%(string,fielddisplay(self,'degacc','accuracy (default .01 deg) for numerical discretization of the Green''s functions'))
    78                         string="%s\n%s"%(string,fielddisplay(self,'transitions','indices into parts of the mesh that will be icecaps'))
    79                         string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
    80 
    81                         return string
    82                 # }}}
    83 
    84         def setdefaultparameters(self): # {{{
    85                 #Convergence criterion: absolute, relative and residual
    86                 self.reltol     =       0.01 #default
    87                 self.abstol     =       float('NaN') #1 mm of sea level rise
    88 
    89                 #maximum of non-linear iterations.
    90                 self.maxiter                            =       5
    91                 self.loop_increment     =       200
    92 
    93                 #computational flags:
    94                 self.geodetic                                           =       0
    95                 self.rigid                                                      =       1
    96                 self.elastic                                            =       1
    97                 self.ocean_area_scaling =       0
    98                 self.rotation                                           =       1
    99 
    100                 #tidal love numbers:
    101                 self.tide_love_h = 0.6149 #degree 2
    102                 self.tide_love_k = 0.3055 #degree 2
    103 
    104       #secular fluid love number:
    105                 self.fluid_love =       0.942
    106 
    107                 #moment of inertia:
    108                 self.equatorial_moi     =       8.0077*10**37 # [kg m^2]
    109                 self.polar_moi      =   8.0345*10**37 # [kg m^2]
    110 
    111                 #mean rotational velocity of earth
    112                 self.angular_velocity   =       7.2921*10**-5 # [s^-1]
    113 
    114                 #numerical discretization accuracy
    115                 self.degacc     =       .01
    116 
    117                 #steric:
    118                 self.steric_rate = 0
    119 
    120                 #how many time steps we skip before we run SLR solver during transient
    121                 self.geodetic_run_frequency     =       1
    122 
    123                 #output default:
    124                 self.requested_outputs = ['default']
    125 
    126                 #transitions should be a cell array of vectors:
    127                 self.transitions = []
    128 
    129                 #horizontal displacement?  (not by default)
    130                 self.horiz = 0
    131 
    132                 return self
    133                 #}}}
    134 
    135         def checkconsistency(self,md,solution,analyses):    # {{{
    136                 #Early return
    137                 if (solution!='SealevelriseAnalysis'):
    138                         return md
    139 
    140                 md = checkfield(md,'fieldname','slr.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
    141                 md = checkfield(md,'fieldname','slr.sealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    142                 md = checkfield(md,'fieldname','slr.spcthickness','Inf',1,'timeseries',1)
    143                 md = checkfield(md,'fieldname','slr.love_h','NaN',1,'Inf',1)
    144                 md = checkfield(md,'fieldname','slr.love_k','NaN',1,'Inf',1)
    145                 md = checkfield(md,'fieldname','slr.love_l','NaN',1,'Inf',1)
    146                 md = checkfield(md,'fieldname','slr.tide_love_h','NaN',1,'Inf',1)
    147                 md = checkfield(md,'fieldname','slr.tide_love_k','NaN',1,'Inf',1)
    148                 md = checkfield(md,'fieldname','slr.fluid_love','NaN',1,'Inf',1)
    149                 md = checkfield(md,'fieldname','slr.equatorial_moi','NaN',1,'Inf',1)
    150                 md = checkfield(md,'fieldname','slr.polar_moi','NaN',1,'Inf',1)
    151                 md = checkfield(md,'fieldname','slr.angular_velocity','NaN',1,'Inf',1)
    152                 md = checkfield(md,'fieldname','slr.reltol','size',[1,1])
    153                 md = checkfield(md,'fieldname','slr.abstol','size',[1,1])
    154                 md = checkfield(md,'fieldname','slr.maxiter','size',[1,1],'>=',1)
    155                 md = checkfield(md,'fieldname','slr.geodetic_run_frequency','size',[1,1],'>=',1)
    156                 md = checkfield(md,'fieldname','slr.steric_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    157                 md = checkfield(md,'fieldname','slr.degacc','size',[1,1],'>=',1e-10)
    158                 md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1)
    159                 md = checkfield(md,'fieldname','slr.loop_increment','NaN',1,'Inf',1,'>=',1)
    160                 md = checkfield(md,'fieldname','slr.horiz','NaN',1,'Inf',1,'values',[0,1])
    161                 md = checkfield(md,'fieldname','slr.Ngia','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    162                 md = checkfield(md,'fieldname','slr.Ugia','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
    163 
    164                 #check that love numbers are provided at the same level of accuracy:
    165                 if (size(self.love_h,0) != size(self.love_k,0) | size(self.love_h,0) != size(self.love_l,0)):
    166                         error('slr error message: love numbers should be provided at the same level of accuracy')
    167 
    168                 #cross check that whereever we have an ice load, the mask is <0 on each vertex:
    169                 pos=np.where(self.deltathickness)
    170                 maskpos=md.mask.ice_levelset[md.mesh.elements[pos,:]]
    171                 els=np.where(maskpos>0)
    172                 if len(els[0])>0:
    173                         warnings.warn('slr checkconsistency fail: there are elements with ice loads where some vertices are not on the ice!')
    174 
    175                 #check that  if geodetic is requested, we are a mesh3dsurface model (planet), or if we are not,
    176                 #a coupler to a planet model is provided.
    177                 if self.geodetic and not md.transient.iscoupler and domaintype(md.mesh)!='mesh3dsurface':
    178                         error('model is requesting geodetic computations without being a mesh3dsurface, or being coupled to one!')
    179                 return md
    180         # }}}
    181 
    182         def defaultoutputs(self,md): # {{{
    183                 return ['Sealevel']
    184         # }}}
    185 
    186         def marshall(self,prefix,md,fid): # {{{
    187                 WriteData(fid,prefix,'object',self,'fieldname','deltathickness','format','DoubleMat','mattype',2)
    188                 WriteData(fid,prefix,'object',self,'fieldname','sealevel','mattype',1,'format','DoubleMat','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    189                 WriteData(fid,prefix,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    190                 WriteData(fid,prefix,'object',self,'fieldname','reltol','format','Double')
    191                 WriteData(fid,prefix,'object',self,'fieldname','abstol','format','Double')
    192                 WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer')
    193                 WriteData(fid,prefix,'object',self,'fieldname','love_h','format','DoubleMat','mattype',1)
    194                 WriteData(fid,prefix,'object',self,'fieldname','love_k','format','DoubleMat','mattype',1)
    195                 WriteData(fid,prefix,'object',self,'fieldname','love_l','format','DoubleMat','mattype',1)
    196                 WriteData(fid,prefix,'object',self,'fieldname','tide_love_h','format','Double')
    197                 WriteData(fid,prefix,'object',self,'fieldname','tide_love_k','format','Double')
    198                 WriteData(fid,prefix,'object',self,'fieldname','fluid_love','format','Double')
    199                 WriteData(fid,prefix,'object',self,'fieldname','equatorial_moi','format','Double')
    200                 WriteData(fid,prefix,'object',self,'fieldname','polar_moi','format','Double')
    201                 WriteData(fid,prefix,'object',self,'fieldname','angular_velocity','format','Double')
    202                 WriteData(fid,prefix,'object',self,'fieldname','rigid','format','Boolean')
    203                 WriteData(fid,prefix,'object',self,'fieldname','elastic','format','Boolean')
    204                 WriteData(fid,prefix,'object',self,'fieldname','rotation','format','Boolean')
    205                 WriteData(fid,prefix,'object',self,'fieldname','ocean_area_scaling','format','Boolean')
    206                 WriteData(fid,prefix,'object',self,'fieldname','geodetic_run_frequency','format','Integer')
    207                 WriteData(fid,prefix,'object',self,'fieldname','steric_rate','format','DoubleMat','mattype',1,'scale',1e-3/md.constants.yts)
    208                 WriteData(fid,prefix,'object',self,'fieldname','Ngia','format','DoubleMat','mattype',1,'scale',1e-3/md.constants.yts)
    209                 WriteData(fid,prefix,'object',self,'fieldname','Ugia','format','DoubleMat','mattype',1,'scale',1e-3/md.constants.yts)
    210                 WriteData(fid,prefix,'object',self,'fieldname','degacc','format','Double')
    211                 WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray')
    212                 WriteData(fid,prefix,'object',self,'fieldname','loop_increment','format','Integer')
    213                 WriteData(fid,prefix,'object',self,'fieldname','horiz','format','Integer')
    214                 WriteData(fid,prefix,'object',self,'fieldname','geodetic','format','Integer')
    215 
    216                 #process requested outputs
    217                 outputs = self.requested_outputs
    218                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    219                 if len(indices) > 0:
    220                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    221                         outputs    =outputscopy
    222                 WriteData(fid,prefix,'data',outputs,'name','md.slr.requested_outputs','format','StringArray')
    223         # }}}
     10    """
     11    SLR class definition
     12
     13        Usage:
     14          slr = slr()
     15    """
     16    def __init__(self):  # {{{
     17        self.deltathickness = float('NaN')
     18        self.sealevel = float('NaN')
     19        self.spcthickness = float('NaN')
     20        self.maxiter = 0
     21        self.reltol = 0
     22        self.abstol = 0
     23        self.love_h = 0  #provided by PREM model()
     24        self.love_k = 0  #ideam
     25        self.love_l = 0  #ideam
     26        self.tide_love_k = 0  #ideam
     27        self.tide_love_h = 0  #ideam
     28        self.fluid_love = 0
     29        self.equatorial_moi = 0
     30        self.polar_moi = 0
     31        self.angular_velocity = 0
     32        self.rigid = 0
     33        self.elastic = 0
     34        self.rotation = 0
     35        self.ocean_area_scaling = 0
     36        self.steric_rate = 0  #rate of ocean expansion from steric effects.
     37        self.geodetic_run_frequency = 1  #how many time steps we skip before we run the geodetic part of the solver during transient
     38        self.geodetic = 0  #compute geodetic SLR? (in addition to steric?)
     39        self.degacc = 0
     40        self.loop_increment = 0
     41        self.horiz = 0
     42        self.Ngia = float('NaN')
     43        self.Ugia = float('NaN')
     44        self.requested_outputs = []
     45        self.transitions = []
     46
     47        #set defaults
     48        self.setdefaultparameters()
     49    #}}}
     50
     51    def __repr__(self):  # {{{
     52        string = '   slr parameters:'
     53        string = "%s\n%s" % (string, fielddisplay(self, 'deltathickness', 'thickness change: ice height equivalent [m]'))
     54        string = "%s\n%s" % (string, fielddisplay(self, 'sealevel', 'current sea level (prior to computation) [m]'))
     55        string = "%s\n%s" % (string, fielddisplay(self, 'spcthickness', 'thickness constraints (NaN means no constraint) [m]'))
     56        string = "%s\n%s" % (string, fielddisplay(self, 'reltol', 'sea level rise relative convergence criterion, (NaN: not applied)'))
     57        string = "%s\n%s" % (string, fielddisplay(self, 'abstol', 'sea level rise absolute convergence criterion, (default, NaN: not applied)'))
     58        string = "%s\n%s" % (string, fielddisplay(self, 'maxiter', 'maximum number of nonlinear iterations'))
     59        string = "%s\n%s" % (string, fielddisplay(self, 'love_h', 'load Love number for radial displacement'))
     60        string = "%s\n%s" % (string, fielddisplay(self, 'love_k', 'load Love number for gravitational potential perturbation'))
     61        string = "%s\n%s" % (string, fielddisplay(self, 'love_l', 'load Love number for horizontal displaements'))
     62        string = "%s\n%s" % (string, fielddisplay(self, 'tide_love_k', 'tidal load Love number (degree 2)'))
     63        string = "%s\n%s" % (string, fielddisplay(self, 'tide_love_h', 'tidal load Love number (degree 2)'))
     64        string = "%s\n%s" % (string, fielddisplay(self, 'fluid_love', 'secular fluid Love number'))
     65        string = "%s\n%s" % (string, fielddisplay(self, 'equatorial_moi', 'mean equatorial moment of inertia [kg m^2]'))
     66        string = "%s\n%s" % (string, fielddisplay(self, 'polar_moi', 'polar moment of inertia [kg m^2]'))
     67        string = "%s\n%s" % (string, fielddisplay(self, 'angular_velocity', 'mean rotational velocity of earth [per second]'))
     68        string = "%s\n%s" % (string, fielddisplay(self, 'ocean_area_scaling', 'correction for model representation of ocean area [default: No correction]'))
     69        string = "%s\n%s" % (string, fielddisplay(self, 'steric_rate', 'rate of steric ocean expansion [mm / yr]'))
     70        string = "%s\n%s" % (string, fielddisplay(self, 'Ngia', 'rate of viscous (GIA) geoid expansion (in mm / yr)'))
     71        string = "%s\n%s" % (string, fielddisplay(self, 'Ugia', 'rate of viscous (GIA) bedrock uplift (in mm / yr)'))
     72        string = "%s\n%s" % (string, fielddisplay(self, 'loop_increment', 'vector assembly (in the convolution) framentation'))
     73        string = "%s\n%s" % (string, fielddisplay(self, 'geodetic', 'compute geodetic SLR? (in addition to steric?) default 0'))
     74        string = "%s\n%s" % (string, fielddisplay(self, 'geodetic_run_frequency', 'how many time steps we skip before we run SLR solver during transient (default: 1)'))
     75        string = "%s\n%s" % (string, fielddisplay(self, 'rigid', 'rigid earth graviational potential perturbation'))
     76        string = "%s\n%s" % (string, fielddisplay(self, 'elastic', 'elastic earth graviational potential perturbation'))
     77        string = "%s\n%s" % (string, fielddisplay(self, 'rotation', 'earth rotational potential perturbation'))
     78        string = "%s\n%s" % (string, fielddisplay(self, 'degacc', 'accuracy (default .01 deg) for numerical discretization of the Green''s functions'))
     79        string = "%s\n%s" % (string, fielddisplay(self, 'transitions', 'indices into parts of the mesh that will be icecaps'))
     80        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
     81
     82        return string
     83    # }}}
     84
     85    def setdefaultparameters(self):  # {{{
     86        #Convergence criterion: absolute, relative and residual
     87        self.reltol = 0.01  #default
     88        self.abstol = float('NaN')  #1 mm of sea level rise
     89        #maximum of non - linear iterations.
     90        self.maxiter = 5
     91        self.loop_increment = 200
     92        #computational flags:
     93        self.geodetic = 0
     94        self.rigid = 1
     95        self.elastic = 1
     96        self.ocean_area_scaling = 0
     97        self.rotation = 1
     98        #tidal love numbers:
     99        self.tide_love_h = 0.6149  #degree 2
     100        self.tide_love_k = 0.3055  #degree 2
     101        #secular fluid love number:
     102        self.fluid_love = 0.942
     103        #moment of inertia:
     104        self.equatorial_moi = 8.0077 * 1.0e37  # [kg m^2]
     105        self.polar_moi = 8.0345 * 1.0e37  # [kg m^2]
     106        #mean rotational velocity of earth
     107        self.angular_velocity = 7.2921 * 1.0e-5  # [s^ - 1]
     108        #numerical discretization accuracy
     109        self.degacc = 0.01
     110        #steric:
     111        self.steric_rate = 0
     112        #how many time steps we skip before we run SLR solver during transient
     113        self.geodetic_run_frequency = 1
     114        #output default:
     115        self.requested_outputs = ['default']
     116        #transitions should be a cell array of vectors:
     117        self.transitions = []
     118        #horizontal displacement?  (not by default)
     119        self.horiz = 0
     120
     121        return self
     122    #}}}
     123
     124    def checkconsistency(self, md, solution, analyses):  # {{{
     125        #Early return
     126        if (solution != 'SealevelriseAnalysis'):
     127            return md
     128
     129        md = checkfield(md, 'fieldname', 'slr.deltathickness', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
     130        md = checkfield(md, 'fieldname', 'slr.sealevel', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     131        md = checkfield(md, 'fieldname', 'slr.spcthickness', 'Inf', 1, 'timeseries', 1)
     132        md = checkfield(md, 'fieldname', 'slr.love_h', 'NaN', 1, 'Inf', 1)
     133        md = checkfield(md, 'fieldname', 'slr.love_k', 'NaN', 1, 'Inf', 1)
     134        md = checkfield(md, 'fieldname', 'slr.love_l', 'NaN', 1, 'Inf', 1)
     135        md = checkfield(md, 'fieldname', 'slr.tide_love_h', 'NaN', 1, 'Inf', 1)
     136        md = checkfield(md, 'fieldname', 'slr.tide_love_k', 'NaN', 1, 'Inf', 1)
     137        md = checkfield(md, 'fieldname', 'slr.fluid_love', 'NaN', 1, 'Inf', 1)
     138        md = checkfield(md, 'fieldname', 'slr.equatorial_moi', 'NaN', 1, 'Inf', 1)
     139        md = checkfield(md, 'fieldname', 'slr.polar_moi', 'NaN', 1, 'Inf', 1)
     140        md = checkfield(md, 'fieldname', 'slr.angular_velocity', 'NaN', 1, 'Inf', 1)
     141        md = checkfield(md, 'fieldname', 'slr.reltol', 'size', [1, 1])
     142        md = checkfield(md, 'fieldname', 'slr.abstol', 'size', [1, 1])
     143        md = checkfield(md, 'fieldname', 'slr.maxiter', 'size', [1, 1], '>=', 1)
     144        md = checkfield(md, 'fieldname', 'slr.geodetic_run_frequency', 'size', [1, 1], '>=', 1)
     145        md = checkfield(md, 'fieldname', 'slr.steric_rate', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     146        md = checkfield(md, 'fieldname', 'slr.degacc', 'size', [1, 1], '>=', 1e-10)
     147        md = checkfield(md, 'fieldname', 'slr.requested_outputs', 'stringrow', 1)
     148        md = checkfield(md, 'fieldname', 'slr.loop_increment', 'NaN', 1, 'Inf', 1, '>=', 1)
     149        md = checkfield(md, 'fieldname', 'slr.horiz', 'NaN', 1, 'Inf', 1, 'values', [0, 1])
     150        md = checkfield(md, 'fieldname', 'slr.Ngia', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     151        md = checkfield(md, 'fieldname', 'slr.Ugia', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
     152
     153        #check that love numbers are provided at the same level of accuracy:
     154        if (size(self.love_h, 0) != size(self.love_k, 0) | size(self.love_h, 0) != size(self.love_l, 0)):
     155            error('slr error message: love numbers should be provided at the same level of accuracy')
     156
     157        #cross check that whereever we have an ice load, the mask is < 0 on each vertex:
     158        pos = np.where(self.deltathickness)
     159        maskpos = md.mask.ice_levelset[md.mesh.elements[pos, :]]
     160        els = np.where(maskpos > 0)
     161        if len(els[0]) > 0:
     162            warnings.warn('slr checkconsistency fail: there are elements with ice loads where some vertices are not on the ice!')
     163
     164        #check that  if geodetic is requested, we are a mesh3dsurface model (planet), or if we are not,
     165        #a coupler to a planet model is provided.
     166        if self.geodetic and not md.transient.iscoupler and domaintype(md.mesh) != 'mesh3dsurface':
     167            error('model is requesting geodetic computations without being a mesh3dsurface, or being coupled to one!')
     168        return md
     169    # }}}
     170
     171    def defaultoutputs(self, md):  # {{{
     172        return ['Sealevel']
     173    # }}}
     174
     175    def marshall(self, prefix, md, fid):  # {{{
     176        WriteData(fid, prefix, 'object', self, 'fieldname', 'deltathickness', 'format', 'DoubleMat', 'mattype', 2)
     177        WriteData(fid, prefix, 'object', self, 'fieldname', 'sealevel', 'mattype', 1, 'format', 'DoubleMat', 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     178        WriteData(fid, prefix, 'object', self, 'fieldname', 'spcthickness', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     179        WriteData(fid, prefix, 'object', self, 'fieldname', 'reltol', 'format', 'Double')
     180        WriteData(fid, prefix, 'object', self, 'fieldname', 'abstol', 'format', 'Double')
     181        WriteData(fid, prefix, 'object', self, 'fieldname', 'maxiter', 'format', 'Integer')
     182        WriteData(fid, prefix, 'object', self, 'fieldname', 'love_h', 'format', 'DoubleMat', 'mattype', 1)
     183        WriteData(fid, prefix, 'object', self, 'fieldname', 'love_k', 'format', 'DoubleMat', 'mattype', 1)
     184        WriteData(fid, prefix, 'object', self, 'fieldname', 'love_l', 'format', 'DoubleMat', 'mattype', 1)
     185        WriteData(fid, prefix, 'object', self, 'fieldname', 'tide_love_h', 'format', 'Double')
     186        WriteData(fid, prefix, 'object', self, 'fieldname', 'tide_love_k', 'format', 'Double')
     187        WriteData(fid, prefix, 'object', self, 'fieldname', 'fluid_love', 'format', 'Double')
     188        WriteData(fid, prefix, 'object', self, 'fieldname', 'equatorial_moi', 'format', 'Double')
     189        WriteData(fid, prefix, 'object', self, 'fieldname', 'polar_moi', 'format', 'Double')
     190        WriteData(fid, prefix, 'object', self, 'fieldname', 'angular_velocity', 'format', 'Double')
     191        WriteData(fid, prefix, 'object', self, 'fieldname', 'rigid', 'format', 'Boolean')
     192        WriteData(fid, prefix, 'object', self, 'fieldname', 'elastic', 'format', 'Boolean')
     193        WriteData(fid, prefix, 'object', self, 'fieldname', 'rotation', 'format', 'Boolean')
     194        WriteData(fid, prefix, 'object', self, 'fieldname', 'ocean_area_scaling', 'format', 'Boolean')
     195        WriteData(fid, prefix, 'object', self, 'fieldname', 'geodetic_run_frequency', 'format', 'Integer')
     196        WriteData(fid, prefix, 'object', self, 'fieldname', 'steric_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1e-3 / md.constants.yts)
     197        WriteData(fid, prefix, 'object', self, 'fieldname', 'Ngia', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1e-3 / md.constants.yts)
     198        WriteData(fid, prefix, 'object', self, 'fieldname', 'Ugia', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1e-3 / md.constants.yts)
     199        WriteData(fid, prefix, 'object', self, 'fieldname', 'degacc', 'format', 'Double')
     200        WriteData(fid, prefix, 'object', self, 'fieldname', 'transitions', 'format', 'MatArray')
     201        WriteData(fid, prefix, 'object', self, 'fieldname', 'loop_increment', 'format', 'Integer')
     202        WriteData(fid, prefix, 'object', self, 'fieldname', 'horiz', 'format', 'Integer')
     203        WriteData(fid, prefix, 'object', self, 'fieldname', 'geodetic', 'format', 'Integer')
     204
     205    #process requested outputs
     206        outputs = self.requested_outputs
     207        indices = [i for i, x in enumerate(outputs) if x == 'default']
     208        if len(indices) > 0:
     209            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     210            outputs = outputscopy
     211        WriteData(fid, prefix, 'data', outputs, 'name', 'md.slr.requested_outputs', 'format', 'StringArray')
     212    # }}}
  • issm/trunk-jpl/src/m/classes/steadystate.py

    r21303 r24213  
    44from WriteData import WriteData
    55
     6
    67class steadystate(object):
    7         """
    8         STEADYSTATE class definition
     8    """
     9    STEADYSTATE class definition
    910
    10            Usage:
    11               steadystate=steadystate();
    12         """
     11       Usage:
     12          steadystate = steadystate()
     13    """
    1314
    14         def __init__(self): # {{{
    15                 self.reltol            = 0
    16                 self.maxiter          = 0
    17                 self.requested_outputs = []
     15    def __init__(self): # {{{
     16        self.reltol = 0
     17        self.maxiter = 0
     18        self.requested_outputs = []
    1819
    19                 #set defaults
    20                 self.setdefaultparameters()
     20    #set defaults
     21        self.setdefaultparameters()
    2122
    22                 #}}}
    23         def __repr__(self): # {{{
    24                 string='   steadystate solution parameters:'
    25                 string="%s\n%s"%(string,fielddisplay(self,'reltol','relative tolerance criterion'))
    26                 string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of iterations'))
    27                 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional requested outputs'))
    28                 return string
    29                 #}}}
    30         def defaultoutputs(self,md): # {{{
     23    #}}}
     24    def __repr__(self):  # {{{
     25        string = '   steadystate solution parameters:'
     26        string = "%s\n%s" % (string, fielddisplay(self, 'reltol', 'relative tolerance criterion'))
     27        string = "%s\n%s" % (string, fielddisplay(self, 'maxiter', 'maximum number of iterations'))
     28        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional requested outputs'))
     29        return string
     30    #}}}
    3131
    32                 return md.stressbalance.defaultoutputs(md)+md.thermal.defaultoutputs(md)
     32    def defaultoutputs(self, md):  # {{{
     33        return md.stressbalance.defaultoutputs(md) + md.thermal.defaultoutputs(md)
    3334
    34         #}}}
    35         def setdefaultparameters(self): # {{{
    36                
    37                 #maximum of steady state iterations
    38                 self.maxiter=100
     35    #}}}
     36    def setdefaultparameters(self):  # {{{
     37        #maximum of steady state iterations
     38        self.maxiter = 100
     39        #Relative tolerance for the steadystate convertgence
     40        self.reltol = 0.01
     41        #default output
     42        self.requested_outputs = ['default']
     43        return self
     44    #}}}
    3945
    40                 #Relative tolerance for the steadystate convertgence
    41                 self.reltol=0.01
     46    def checkconsistency(self, md, solution, analyses):  # {{{
     47        #Early return
     48        if not solution == 'SteadystateSolution':
     49            return md
    4250
    43                 #default output
    44                 self.requested_outputs=['default']
    45                 return self
    46         #}}}
    47         def checkconsistency(self,md,solution,analyses):    # {{{
     51        if not md.timestepping.time_step == 0:
     52            md.checkmessage("for a steadystate computation, timestepping.time_step must be zero.")
    4853
    49                 #Early return
    50                 if not solution=='SteadystateSolution':
    51                         return md
     54        if np.isnan(md.stressbalance.reltol):
     55            md.checkmessage("for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!")
    5256
    53                 if not md.timestepping.time_step==0:
    54                         md.checkmessage("for a steadystate computation, timestepping.time_step must be zero.")
     57        md = checkfield(md, 'fieldname', 'steadystate.requested_outputs', 'stringrow', 1)
    5558
    56                 if np.isnan(md.stressbalance.reltol):
    57                         md.checkmessage("for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!")
     59        return md
     60    # }}}
    5861
    59                 md = checkfield(md,'fieldname','steadystate.requested_outputs','stringrow',1)
     62    def marshall(self, prefix, md, fid):  # {{{
     63        WriteData(fid, prefix, 'object', self, 'fieldname', 'reltol', 'format', 'Double')
     64        WriteData(fid, prefix, 'object', self, 'fieldname', 'maxiter', 'format', 'Integer')
    6065
    61                 return md
    62         # }}}
    63         def marshall(self,prefix,md,fid):    # {{{
    64                 WriteData(fid,prefix,'object',self,'fieldname','reltol','format','Double')
    65                 WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer')
    66 
    67                 #process requested outputs
    68                 outputs = self.requested_outputs
    69                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    70                 if len(indices) > 0:
    71                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    72                         outputs    =outputscopy
    73                 WriteData(fid,prefix,'data',outputs,'name','md.steadystate.requested_outputs','format','StringArray')
    74         # }}}
     66    #process requested outputs
     67        outputs = self.requested_outputs
     68        indices = [i for i, x in enumerate(outputs) if x == 'default']
     69        if len(indices) > 0:
     70            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     71            outputs = outputscopy
     72        WriteData(fid, prefix, 'data', outputs, 'name', 'md.steadystate.requested_outputs', 'format', 'StringArray')
     73    # }}}
  • issm/trunk-jpl/src/m/classes/stressbalance.py

    r23716 r24213  
    11import numpy as np
    22import sys
    3 import copy
    43from project3d import project3d
    54from fielddisplay import fielddisplay
     
    87import MatlabFuncs as m
    98
     9
    1010class stressbalance(object):
    11         """
    12         STRESSBALANCE class definition
     11    """
     12    STRESSBALANCE class definition
    1313
    14            Usage:
    15               stressbalance=stressbalance();
    16         """
     14       Usage:
     15          stressbalance = stressbalance()
     16    """
    1717
    18         def __init__(self): # {{{
    19                 self.spcvx                  = float('NaN')
    20                 self.spcvy                  = float('NaN')
    21                 self.spcvz                  = float('NaN')
    22                 self.restol                = 0
    23                 self.reltol                = 0
    24                 self.abstol                = 0
    25                 self.isnewton              = 0
    26                 self.FSreconditioning      = 0
    27                 self.icefront              = float('NaN')
    28                 self.maxiter                = 0
    29                 self.shelf_dampening        = 0
    30                 self.vertex_pairing        = float('NaN')
    31                 self.penalty_factor        = float('NaN')
    32                 self.rift_penalty_lock      = float('NaN')
    33                 self.rift_penalty_threshold = 0
    34                 self.referential            = float('NaN')
    35                 self.loadingforce          = float('NaN')
    36                 self.requested_outputs      = []
     18    def __init__(self): # {{{
     19        self.spcvx = float('NaN')
     20        self.spcvy = float('NaN')
     21        self.spcvz = float('NaN')
     22        self.restol = 0
     23        self.reltol = 0
     24        self.abstol = 0
     25        self.isnewton = 0
     26        self.FSreconditioning = 0
     27        self.icefront = float('NaN')
     28        self.maxiter = 0
     29        self.shelf_dampening = 0
     30        self.vertex_pairing = float('NaN')
     31        self.penalty_factor = float('NaN')
     32        self.rift_penalty_lock = float('NaN')
     33        self.rift_penalty_threshold = 0
     34        self.referential = float('NaN')
     35        self.loadingforce = float('NaN')
     36        self.requested_outputs = []
    3737
    38                 #set defaults
    39                 self.setdefaultparameters()
     38    #set defaults
     39        self.setdefaultparameters()
    4040
    41                 #}}}
    42         def __repr__(self): # {{{
    43                
    44                 string='   StressBalance solution parameters:'
    45                 string="%s\n%s"%(string,'      Convergence criteria:')
    46                 string="%s\n%s"%(string,fielddisplay(self,'restol','mechanical equilibrium residual convergence criterion'))
    47                 string="%s\n%s"%(string,fielddisplay(self,'reltol','velocity relative convergence criterion, NaN: not applied'))
    48                 string="%s\n%s"%(string,fielddisplay(self,'abstol','velocity absolute convergence criterion, NaN: not applied'))
    49                 string="%s\n%s"%(string,fielddisplay(self,'isnewton',"0: Picard's fixed point, 1: Newton's method, 2: hybrid"))
    50                 string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of nonlinear iterations'))
     41    #}}}
     42    def __repr__(self):  # {{{
    5143
    52                 string="%s\n%s"%(string,'\n      boundary conditions:')
    53                 string="%s\n%s"%(string,fielddisplay(self,'spcvx','x-axis velocity constraint (NaN means no constraint) [m/yr]'))
    54                 string="%s\n%s"%(string,fielddisplay(self,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]'))
    55                 string="%s\n%s"%(string,fielddisplay(self,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]'))
    56                 string="%s\n%s"%(string,fielddisplay(self,'icefront','segments on ice front list (last column 0: Air, 1: Water, 2: Ice'))
     44        string = '   StressBalance solution parameters:'
     45        string = "%s\n%s" % (string, '      Convergence criteria:')
     46        string = "%s\n%s" % (string, fielddisplay(self, 'restol', 'mechanical equilibrium residual convergence criterion'))
     47        string = "%s\n%s" % (string, fielddisplay(self, 'reltol', 'velocity relative convergence criterion, NaN: not applied'))
     48        string = "%s\n%s" % (string, fielddisplay(self, 'abstol', 'velocity absolute convergence criterion, NaN: not applied'))
     49        string = "%s\n%s" % (string, fielddisplay(self, 'isnewton', "0: Picard's fixed point, 1: Newton's method, 2: hybrid"))
     50        string = "%s\n%s" % (string, fielddisplay(self, 'maxiter', 'maximum number of nonlinear iterations'))
    5751
    58                 string="%s\n%s"%(string,'\n      Rift options:')
    59                 string="%s\n%s"%(string,fielddisplay(self,'rift_penalty_threshold','threshold for instability of mechanical constraints'))
    60                 string="%s\n%s"%(string,fielddisplay(self,'rift_penalty_lock','number of iterations before rift penalties are locked'))
     52        string = "%s\n%s" % (string, '\n      boundary conditions:')
     53        string = "%s\n%s" % (string, fielddisplay(self, 'spcvx', 'x - axis velocity constraint (NaN means no constraint) [m / yr]'))
     54        string = "%s\n%s" % (string, fielddisplay(self, 'spcvy', 'y - axis velocity constraint (NaN means no constraint) [m / yr]'))
     55        string = "%s\n%s" % (string, fielddisplay(self, 'spcvz', 'z - axis velocity constraint (NaN means no constraint) [m / yr]'))
     56        string = "%s\n%s" % (string, fielddisplay(self, 'icefront', 'segments on ice front list (last column 0: Air, 1: Water, 2: Ice'))
    6157
    62                 string="%s\n%s"%(string,'\n      Penalty options:')
    63                 string="%s\n%s"%(string,fielddisplay(self,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset'))
    64                 string="%s\n%s"%(string,fielddisplay(self,'vertex_pairing','pairs of vertices that are penalized'))
     58        string = "%s\n%s" % (string, '\n      Rift options:')
     59        string = "%s\n%s" % (string, fielddisplay(self, 'rift_penalty_threshold', 'threshold for instability of mechanical constraints'))
     60        string = "%s\n%s" % (string, fielddisplay(self, 'rift_penalty_lock', 'number of iterations before rift penalties are locked'))
    6561
    66                 string="%s\n%s"%(string,'\n      Other:')
    67                 string="%s\n%s"%(string,fielddisplay(self,'shelf_dampening','use dampening for floating ice ? Only for FS model'))
    68                 string="%s\n%s"%(string,fielddisplay(self,'FSreconditioning','multiplier for incompressibility equation. Only for FS model'))
    69                 string="%s\n%s"%(string,fielddisplay(self,'referential','local referential'))
    70                 string="%s\n%s"%(string,fielddisplay(self,'loadingforce','loading force applied on each point [N/m^3]'))
    71                 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
     62        string = "%s\n%s" % (string, '\n      Penalty options:')
     63        string = "%s\n%s" % (string, fielddisplay(self, 'penalty_factor', 'offset used by penalties: penalty = Kmax * 10^offset'))
     64        string = "%s\n%s" % (string, fielddisplay(self, 'vertex_pairing', 'pairs of vertices that are penalized'))
    7265
    73                 return string
    74                 #}}}
    75         def extrude(self,md): # {{{
    76                 self.spcvx=project3d(md,'vector',self.spcvx,'type','node')
    77                 self.spcvy=project3d(md,'vector',self.spcvy,'type','node')
    78                 self.spcvz=project3d(md,'vector',self.spcvz,'type','node')
    79                 self.referential=project3d(md,'vector',self.referential,'type','node')
    80                 self.loadingforce=project3d(md,'vector',self.loadingforce,'type','node')
     66        string = "%s\n%s" % (string, '\n      Other:')
     67        string = "%s\n%s" % (string, fielddisplay(self, 'shelf_dampening', 'use dampening for floating ice ? Only for FS model'))
     68        string = "%s\n%s" % (string, fielddisplay(self, 'FSreconditioning', 'multiplier for incompressibility equation. Only for FS model'))
     69        string = "%s\n%s" % (string, fielddisplay(self, 'referential', 'local referential'))
     70        string = "%s\n%s" % (string, fielddisplay(self, 'loadingforce', 'loading force applied on each point [N / m^3]'))
     71        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
    8172
    82                 return self
    83         #}}}
    84         def setdefaultparameters(self): # {{{
    85                 #maximum of non-linear iterations.
    86                 self.maxiter=100
     73        return string
     74    #}}}
    8775
    88                 #Convergence criterion: absolute, relative and residual
    89                 self.restol=10**-4
    90                 self.reltol=0.01
    91                 self.abstol=10
     76    def extrude(self, md):  # {{{
     77        self.spcvx = project3d(md, 'vector', self.spcvx, 'type', 'node')
     78        self.spcvy = project3d(md, 'vector', self.spcvy, 'type', 'node')
     79        self.spcvz = project3d(md, 'vector', self.spcvz, 'type', 'node')
     80        self.referential = project3d(md, 'vector', self.referential, 'type', 'node')
     81        self.loadingforce = project3d(md, 'vector', self.loadingforce, 'type', 'node')
    9282
    93                 self.FSreconditioning=10**13
    94                 self.shelf_dampening=0
     83        return self
     84    #}}}
    9585
    96                 #Penalty factor applied kappa=max(stiffness matrix)*10^penalty_factor
    97                 self.penalty_factor=3
     86    def setdefaultparameters(self):  # {{{
     87        #maximum of non - linear iterations.
     88        self.maxiter = 100
     89        #Convergence criterion: absolute, relative and residual
     90        self.restol = 10**- 4
     91        self.reltol = 0.01
     92        self.abstol = 10
     93        self.FSreconditioning = 10**13
     94        self.shelf_dampening = 0
     95        #Penalty factor applied kappa = max(stiffness matrix) * 10^penalty_factor
     96        self.penalty_factor = 3
     97        #Stop the iterations of rift if below a threshold
     98        self.rift_penalty_threshold = 0
     99        #in some solutions, it might be needed to stop a run when only
     100        #a few constraints remain unstable. For thermal computation, this
     101        #parameter is often used.
     102        self.rift_penalty_lock = 10
     103        #output default:
     104        self.requested_outputs = ['default']
    98105
    99                 #Stop the iterations of rift if below a threshold
    100                 self.rift_penalty_threshold=0
     106        return self
     107    #}}}
    101108
    102                 #in some solutions, it might be needed to stop a run when only
    103                 #a few constraints remain unstable. For thermal computation, this
    104                 #parameter is often used.
    105                 self.rift_penalty_lock=10
     109    def defaultoutputs(self, md):  # {{{
     110        if md.mesh.dimension() == 3:
     111            list = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
     112        else:
     113            list = ['Vx', 'Vy', 'Vel', 'Pressure']
     114        return list
    106115
    107                 #output default:
    108                 self.requested_outputs=['default']
     116    #}}}
    109117
    110                 return self
    111         #}}}
    112         def defaultoutputs(self,md): # {{{
     118    def checkconsistency(self, md, solution, analyses):  # {{{
     119        #Early return
     120        if 'StressbalanceAnalysis' not in analyses:
     121            return md
    113122
    114                 if md.mesh.dimension()==3:
    115                         list = ['Vx','Vy','Vz','Vel','Pressure']
    116                 else:
    117                         list = ['Vx','Vy','Vel','Pressure']
    118                 return list
     123        md = checkfield(md, 'fieldname', 'stressbalance.spcvx', 'Inf', 1, 'timeseries', 1)
     124        md = checkfield(md, 'fieldname', 'stressbalance.spcvy', 'Inf', 1, 'timeseries', 1)
     125        if m.strcmp(md.mesh.domaintype(), '3D'):
     126            md = checkfield(md, 'fieldname', 'stressbalance.spcvz', 'Inf', 1, 'timeseries', 1)
     127        md = checkfield(md, 'fieldname', 'stressbalance.restol', 'size', [1], '>', 0)
     128        md = checkfield(md, 'fieldname', 'stressbalance.reltol', 'size', [1])
     129        md = checkfield(md, 'fieldname', 'stressbalance.abstol', 'size', [1])
     130        md = checkfield(md, 'fieldname', 'stressbalance.isnewton', 'numel', [1], 'values', [0, 1, 2])
     131        md = checkfield(md, 'fieldname', 'stressbalance.FSreconditioning', 'size', [1], 'NaN', 1, 'Inf', 1)
     132        md = checkfield(md, 'fieldname', 'stressbalance.maxiter', 'size', [1], '>=', 1)
     133        md = checkfield(md, 'fieldname', 'stressbalance.referential', 'size', [md.mesh.numberofvertices, 6])
     134        md = checkfield(md, 'fieldname', 'stressbalance.loadingforce', 'size', [md.mesh.numberofvertices, 3])
     135        md = checkfield(md, 'fieldname', 'stressbalance.requested_outputs', 'stringrow', 1)
    119136
    120         #}}}
    121         def checkconsistency(self,md,solution,analyses):    # {{{
     137        #singular solution
     138        #        if ~any((~isnan(md.stressbalance.spcvx) + ~isnan(md.stressbalance.spcvy)) == 2),
     139        if not np.any(np.logical_and(np.logical_not(np.isnan(md.stressbalance.spcvx)), np.logical_not(np.isnan(md.stressbalance.spcvy)))):
     140            print("\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n")
     141        #CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES
     142        #        if any(sum(isnan(md.stressbalance.referential), 2)~=0 & sum(isnan(md.stressbalance.referential), 2)~=6),
     143        if np.any(np.logical_and(np.sum(np.isnan(md.stressbalance.referential), axis=1) != 0, np.sum(np.isnan(md.stressbalance.referential), axis=1) != 6)):
     144            md.checkmessage("Each line of stressbalance.referential should contain either only NaN values or no NaN values")
     145        #CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL
     146        #        if any(sum(isnan(md.stressbalance.referential), 2) == 0),
     147        if np.any(np.sum(np.isnan(md.stressbalance.referential), axis=1) == 0):
     148            pos = [i for i, item in enumerate(np.sum(np.isnan(md.stressbalance.referential), axis=1)) if item == 0]
     149        #            np.inner (and np.dot) calculate all the dot product permutations, resulting in a full matrix multiply
     150        #            if np.any(np.abs(np.inner(md.stressbalance.referential[pos, 0:2], md.stressbalance.referential[pos, 3:5]).diagonal()) > sys.float_info.epsilon):
     151        #                md.checkmessage("Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal")
     152            for item in md.stressbalance.referential[pos, :]:
     153                if np.abs(np.inner(item[0:2], item[3:5])) > sys.float_info.epsilon:
     154                    md.checkmessage("Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal")
     155        #CHECK THAT NO rotation specified for FS Grounded ice at base
     156        if m.strcmp(md.mesh.domaintype(), '3D') and md.flowequation.isFS:
     157            pos = np.nonzero(np.logical_and(md.mask.groundedice_levelset, md.mesh.vertexonbase))
     158            if np.any(np.logical_not(np.isnan(md.stressbalance.referential[pos, :]))):
     159                md.checkmessage("no referential should be specified for basal vertices of grounded ice")
    122160
    123                 #Early return
    124                 if 'StressbalanceAnalysis' not in analyses:
    125                         return md
     161        return md
     162    # }}}
    126163
    127                 md = checkfield(md,'fieldname','stressbalance.spcvx','Inf',1,'timeseries',1)
    128                 md = checkfield(md,'fieldname','stressbalance.spcvy','Inf',1,'timeseries',1)
    129                 if m.strcmp(md.mesh.domaintype(),'3D'):
    130                         md = checkfield(md,'fieldname','stressbalance.spcvz','Inf',1,'timeseries',1)
    131                 md = checkfield(md,'fieldname','stressbalance.restol','size',[1],'>',0)
    132                 md = checkfield(md,'fieldname','stressbalance.reltol','size',[1])
    133                 md = checkfield(md,'fieldname','stressbalance.abstol','size',[1])
    134                 md = checkfield(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0,1,2])
    135                 md = checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1],'NaN',1,'Inf',1)
    136                 md = checkfield(md,'fieldname','stressbalance.maxiter','size',[1],'>=',1)
    137                 md = checkfield(md,'fieldname','stressbalance.referential','size',[md.mesh.numberofvertices,6])
    138                 md = checkfield(md,'fieldname','stressbalance.loadingforce','size',[md.mesh.numberofvertices,3])
    139                 md = checkfield(md,'fieldname','stressbalance.requested_outputs','stringrow',1);
     164    def marshall(self, prefix, md, fid):  # {{{
    140165
    141                 #singular solution
    142 #               if ~any((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy))==2),
    143                 if not np.any(np.logical_and(np.logical_not(np.isnan(md.stressbalance.spcvx)),np.logical_not(np.isnan(md.stressbalance.spcvy)))):
    144                         print("\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n")
    145                 #CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES
    146 #               if any(sum(isnan(md.stressbalance.referential),2)~=0 & sum(isnan(md.stressbalance.referential),2)~=6),
    147                 if np.any(np.logical_and(np.sum(np.isnan(md.stressbalance.referential),axis=1)!=0,np.sum(np.isnan(md.stressbalance.referential),axis=1)!=6)):
    148                         md.checkmessage("Each line of stressbalance.referential should contain either only NaN values or no NaN values")
    149                 #CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL
    150 #               if any(sum(isnan(md.stressbalance.referential),2)==0),
    151                 if np.any(np.sum(np.isnan(md.stressbalance.referential),axis=1)==0):
    152                         pos=[i for i,item in enumerate(np.sum(np.isnan(md.stressbalance.referential),axis=1)) if item==0]
    153 #                       np.inner (and np.dot) calculate all the dot product permutations, resulting in a full matrix multiply
    154 #                       if np.any(np.abs(np.inner(md.stressbalance.referential[pos,0:2],md.stressbalance.referential[pos,3:5]).diagonal())>sys.float_info.epsilon):
    155 #                               md.checkmessage("Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal")
    156                         for item in md.stressbalance.referential[pos,:]:
    157                                 if np.abs(np.inner(item[0:2],item[3:5]))>sys.float_info.epsilon:
    158                                         md.checkmessage("Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal")
    159                 #CHECK THAT NO rotation specified for FS Grounded ice at base
    160                 if m.strcmp(md.mesh.domaintype(),'3D') and md.flowequation.isFS:
    161                         pos=np.nonzero(np.logical_and(md.mask.groundedice_levelset,md.mesh.vertexonbase))
    162                         if np.any(np.logical_not(np.isnan(md.stressbalance.referential[pos,:]))):
    163                                 md.checkmessage("no referential should be specified for basal vertices of grounded ice")
     166        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'vertex_pairing', 'format', 'DoubleMat', 'mattype', 3)
    164167
    165                 return md
    166         # }}}
    167         def marshall(self,prefix,md,fid):    # {{{
     168        yts = md.constants.yts
    168169
    169                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3)
     170        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvx', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     171        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvy', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     172        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvz', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
     173        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'restol', 'format', 'Double')
     174        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'reltol', 'format', 'Double')
     175        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'abstol', 'format', 'Double', 'scale', 1. / yts)
     176        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'isnewton', 'format', 'Integer')
     177        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'FSreconditioning', 'format', 'Double')
     178        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'maxiter', 'format', 'Integer')
     179        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'shelf_dampening', 'format', 'Integer')
     180        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'penalty_factor', 'format', 'Double')
     181        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'rift_penalty_lock', 'format', 'Integer')
     182        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'rift_penalty_threshold', 'format', 'Integer')
     183        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'referential', 'format', 'DoubleMat', 'mattype', 1)
    170184
    171                 yts=md.constants.yts
     185        if isinstance(self.loadingforce, (list, tuple, np.ndarray)) and np.size(self.loadingforce, 1) == 3:
     186            WriteData(fid, prefix, 'data', self.loadingforce[:, 0], 'format', 'DoubleMat', 'mattype', 1, 'name', 'md.stressbalance.loadingforcex')
     187            WriteData(fid, prefix, 'data', self.loadingforce[:, 1], 'format', 'DoubleMat', 'mattype', 1, 'name', 'md.stressbalance.loadingforcey')
     188            WriteData(fid, prefix, 'data', self.loadingforce[:, 2], 'format', 'DoubleMat', 'mattype', 1, 'name', 'md.stressbalance.loadingforcez')
    172189
    173                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    174                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    175                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    176                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','restol','format','Double')
    177                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','reltol','format','Double')
    178                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts)
    179                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','isnewton','format','Integer')
    180                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','FSreconditioning','format','Double')
    181                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','maxiter','format','Integer')
    182                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','shelf_dampening','format','Integer')
    183                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','penalty_factor','format','Double')
    184                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer')
    185                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer')
    186                 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1)
    187 
    188                 if isinstance(self.loadingforce, (list, tuple, np.ndarray)) and np.size(self.loadingforce,1) == 3:
    189                         WriteData(fid,prefix,'data',self.loadingforce[:,0],'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcex')
    190                         WriteData(fid,prefix,'data',self.loadingforce[:,1],'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcey')
    191                         WriteData(fid,prefix,'data',self.loadingforce[:,2],'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcez')
    192 
    193                 #process requested outputs
    194                 outputs = self.requested_outputs
    195                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    196                 if len(indices) > 0:
    197                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    198                         outputs    =outputscopy
    199                 WriteData(fid,prefix,'data',outputs,'name','md.stressbalance.requested_outputs','format','StringArray')
    200         # }}}
     190    #process requested outputs
     191        outputs = self.requested_outputs
     192        indices = [i for i, x in enumerate(outputs) if x == 'default']
     193        if len(indices) > 0:
     194            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     195            outputs = outputscopy
     196        WriteData(fid, prefix, 'data', outputs, 'name', 'md.stressbalance.requested_outputs', 'format', 'StringArray')
     197    # }}}
  • issm/trunk-jpl/src/m/classes/taoinversion.py

    r23365 r24213  
    33from WriteData import WriteData
    44from checkfield import checkfield
    5 from fielddisplay import fielddisplay
    65from IssmConfig import IssmConfig
    76from marshallcostfunctions import marshallcostfunctions
     
    98from supportedcostfunctions import *
    109
     10
    1111class taoinversion(object):
    12         def __init__(self):
    13                 self.iscontrol                  = 0
    14                 self.incomplete_adjoint          = 0
    15                 self.control_parameters          = float('NaN')
    16                 self.maxsteps                    = 0
    17                 self.maxiter                    = 0
    18                 self.fatol                      = 0
    19                 self.frtol                      = 0
    20                 self.gatol                      = 0
    21                 self.grtol                      = 0
    22                 self.gttol                      = 0
    23                 self.algorithm                  = ''
    24                 self.cost_functions              = float('NaN')
    25                 self.cost_functions_coefficients = float('NaN')
    26                 self.min_parameters              = float('NaN')
    27                 self.max_parameters              = float('NaN')
    28                 self.vx_obs                      = float('NaN')
    29                 self.vy_obs                      = float('NaN')
    30                 self.vz_obs                      = float('NaN')
    31                 self.vel_obs                    = float('NaN')
    32                 self.thickness_obs              = float('NaN')
    33                 self.surface_obs                = float('NaN')
    34                 self.setdefaultparameters()
     12    def __init__(self):
     13        self.iscontrol = 0
     14        self.incomplete_adjoint = 0
     15        self.control_parameters = float('NaN')
     16        self.maxsteps = 0
     17        self.maxiter = 0
     18        self.fatol = 0
     19        self.frtol = 0
     20        self.gatol = 0
     21        self.grtol = 0
     22        self.gttol = 0
     23        self.algorithm = ''
     24        self.cost_functions = float('NaN')
     25        self.cost_functions_coefficients = float('NaN')
     26        self.min_parameters = float('NaN')
     27        self.max_parameters = float('NaN')
     28        self.vx_obs = float('NaN')
     29        self.vy_obs = float('NaN')
     30        self.vz_obs = float('NaN')
     31        self.vel_obs = float('NaN')
     32        self.thickness_obs = float('NaN')
     33        self.surface_obs = float('NaN')
     34        self.setdefaultparameters()
    3535
    36         def __repr__(self):
    37                 string = '   taoinversion parameters:'
    38                 string = "%s\n\%s"%(string, fieldstring(self,'iscontrol','is inversion activated?'))
    39                 string="%s\n%s"%(string,fieldstring(self,'mantle_viscosity','mantle viscosity constraints (NaN means no constraint) (Pa s)'))
    40                 string="%s\n%s"%(string,fieldstring(self,'lithosphere_thickness','lithosphere thickness constraints (NaN means no constraint) (m)'))
    41                 string="%s\n%s"%(string,fieldstring(self,'cross_section_shape',"1: square-edged, 2: elliptical-edged surface"))
    42                 string="%s\n%s"%(string,fieldstring(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity'))
    43                 string="%s\n%s"%(string,fieldstring(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
    44                 string="%s\n%s"%(string,fieldstring(self,'maxsteps','maximum number of iterations (gradient computation)'))
    45                 string="%s\n%s"%(string,fieldstring(self,'maxiter','maximum number of Function evaluation (forward run)'))
    46                 string="%s\n%s"%(string,fieldstring(self,'fatol','convergence criterion: f(X)-f(X*) (X: current iteration, X*: "true" solution, f: cost function)'))
    47                 string="%s\n%s"%(string,fieldstring(self,'frtol','convergence criterion: |f(X)-f(X*)|/|f(X*)|'))
    48                 string="%s\n%s"%(string,fieldstring(self,'gatol','convergence criterion: ||g(X)|| (g: gradient of the cost function)'))
    49                 string="%s\n%s"%(string,fieldstring(self,'grtol','convergence criterion: ||g(X)||/|f(X)|'))
    50                 string="%s\n%s"%(string,fieldstring(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
    51                 string="%s\n%s"%(string,fieldstring(self,'algorithm','minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm'''))
    52                 string="%s\n%s"%(string,fieldstring(self,'cost_functions','indicate the type of response for each optimization step'))
    53                 string="%s\n%s"%(string,fieldstring(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
    54                 string="%s\n%s"%(string,fieldstring(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
    55                 string="%s\n%s"%(string,fieldstring(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
    56                 string="%s\n%s"%(string,fieldstring(self,'vx_obs','observed velocity x component [m/yr]'))
    57                 string="%s\n%s"%(string,fieldstring(self,'vy_obs','observed velocity y component [m/yr]'))
    58                 string="%s\n%s"%(string,fieldstring(self,'vel_obs','observed velocity magnitude [m/yr]'))
    59                 string="%s\n%s"%(string,fieldstring(self,'thickness_obs','observed thickness [m]'))
    60                 string="%s\n%s"%(string,fieldstring(self,'surface_obs','observed surface elevation [m]'))
    61                 string="%s\n%s"%(string,'Available cost functions:')
    62                 string="%s\n%s"%(string, '   101: SurfaceAbsVelMisfit')
    63                 string="%s\n%s"%(string, '   102: SurfaceRelVelMisfit')
    64                 string="%s\n%s"%(string, '   103: SurfaceLogVelMisfit')
    65                 string="%s\n%s"%(string, '   104: SurfaceLogVxVyMisfit')
    66                 string="%s\n%s"%(string, '   105: SurfaceAverageVelMisfit')
    67                 string="%s\n%s"%(string, '   201: ThicknessAbsMisfit')
    68                 string="%s\n%s"%(string, '   501: DragCoefficientAbsGradient')
    69                 string="%s\n%s"%(string, '   502: RheologyBbarAbsGradient')
    70                 string="%s\n%s"%(string, '   503: ThicknessAbsGradient')
    71                 return string
    72         def setdefaultparameters(self):
     36    def __repr__(self):
     37        string = '   taoinversion parameters:'
     38        string = "%s\n%s" % (string, fieldstring(self, 'iscontrol', 'is inversion activated?'))
     39        string = "%s\n%s" % (string, fieldstring(self, 'mantle_viscosity', 'mantle viscosity constraints (NaN means no constraint) (Pa s)'))
     40        string = "%s\n%s" % (string, fieldstring(self, 'lithosphere_thickness', 'lithosphere thickness constraints (NaN means no constraint) (m)'))
     41        string = "%s\n%s" % (string, fieldstring(self, 'cross_section_shape', "1: square-edged, 2: elliptical - edged surface"))
     42        string = "%s\n%s" % (string, fieldstring(self, 'incomplete_adjoint', '1: linear viscosity, 0: non - linear viscosity'))
     43        string = "%s\n%s" % (string, fieldstring(self, 'control_parameters', 'ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
     44        string = "%s\n%s" % (string, fieldstring(self, 'maxsteps', 'maximum number of iterations (gradient computation)'))
     45        string = "%s\n%s" % (string, fieldstring(self, 'maxiter', 'maximum number of Function evaluation (forward run)'))
     46        string = "%s\n%s" % (string, fieldstring(self, 'fatol', 'convergence criterion: f(X) - f(X * ) (X: current iteration, X * : "true" solution, f: cost function)'))
     47        string = "%s\n%s" % (string, fieldstring(self, 'frtol', 'convergence criterion: |f(X) - f(X * )| / |f(X * )|'))
     48        string = "%s\n%s" % (string, fieldstring(self, 'gatol', 'convergence criterion: ||g(X)|| (g: gradient of the cost function)'))
     49        string = "%s\n%s" % (string, fieldstring(self, 'grtol', 'convergence criterion: ||g(X)|| / |f(X)|'))
     50        string = "%s\n%s" % (string, fieldstring(self, 'gttol', 'convergence criterion: ||g(X)|| / ||g(X0)|| (g(X0): gradient at initial guess X0)'))
     51        string = "%s\n%s" % (string, fieldstring(self, 'algorithm', 'minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm'''))
     52        string = "%s\n%s" % (string, fieldstring(self, 'cost_functions', 'indicate the type of response for each optimization step'))
     53        string = "%s\n%s" % (string, fieldstring(self, 'cost_functions_coefficients', 'cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
     54        string = "%s\n%s" % (string, fieldstring(self, 'min_parameters', 'absolute minimum acceptable value of the inversed parameter on each vertex'))
     55        string = "%s\n%s" % (string, fieldstring(self, 'max_parameters', 'absolute maximum acceptable value of the inversed parameter on each vertex'))
     56        string = "%s\n%s" % (string, fieldstring(self, 'vx_obs', 'observed velocity x component [m / yr]'))
     57        string = "%s\n%s" % (string, fieldstring(self, 'vy_obs', 'observed velocity y component [m / yr]'))
     58        string = "%s\n%s" % (string, fieldstring(self, 'vel_obs', 'observed velocity magnitude [m / yr]'))
     59        string = "%s\n%s" % (string, fieldstring(self, 'thickness_obs', 'observed thickness [m]'))
     60        string = "%s\n%s" % (string, fieldstring(self, 'surface_obs', 'observed surface elevation [m]'))
     61        string = "%s\n%s" % (string, 'Available cost functions:')
     62        string = "%s\n%s" % (string, '   101: SurfaceAbsVelMisfit')
     63        string = "%s\n%s" % (string, '   102: SurfaceRelVelMisfit')
     64        string = "%s\n%s" % (string, '   103: SurfaceLogVelMisfit')
     65        string = "%s\n%s" % (string, '   104: SurfaceLogVxVyMisfit')
     66        string = "%s\n%s" % (string, '   105: SurfaceAverageVelMisfit')
     67        string = "%s\n%s" % (string, '   201: ThicknessAbsMisfit')
     68        string = "%s\n%s" % (string, '   501: DragCoefficientAbsGradient')
     69        string = "%s\n%s" % (string, '   502: RheologyBbarAbsGradient')
     70        string = "%s\n%s" % (string, '   503: ThicknessAbsGradient')
     71        return string
    7372
    74                 #default is incomplete adjoint for now
    75                 self.incomplete_adjoint=1
     73    def setdefaultparameters(self):
     74        #default is incomplete adjoint for now
     75        self.incomplete_adjoint = 1
     76        #parameter to be inferred by control methods (only
     77        #drag and B are supported yet)
     78        self.control_parameters = ['FrictionCoefficient']
     79        #number of iterations and steps
     80        self.maxsteps = 20
     81        self.maxiter = 30
     82        #default tolerances
     83        self.fatol = 0
     84        self.frtol = 0
     85        self.gatol = 0
     86        self.grtol = 0
     87        self.gttol = 1e-4
     88        #minimization algorithm
     89        PETSCMAJOR = IssmConfig('_PETSC_MAJOR_')[0]
     90        PETSCMINOR = IssmConfig('_PETSC_MINOR_')[0]
     91        if(PETSCMAJOR > 3 or (PETSCMAJOR == 3 and PETSCMINOR >= 5)):
     92            self.algorithm = 'blmvm'
     93        else:
     94            self.algorithm = 'tao_blmvm'
     95        #several responses can be used:
     96        self.cost_functions = 101
     97        return self
    7698
    77                 #parameter to be inferred by control methods (only
    78                 #drag and B are supported yet)
    79                 self.control_parameters=['FrictionCoefficient']
     99    def extrude(self, md):
     100        self.vx_obs = project3d(md, 'vector', self.vx_obs, 'type', 'node')
     101        self.vy_obs = project3d(md, 'vector', self.vy_obs, 'type', 'node')
     102        self.vel_obs = project3d(md, 'vector', self.vel_obs, 'type', 'node')
     103        self.thickness_obs = project3d(md, 'vector', self.thickness_obs, 'type', 'node')
    80104
    81                 #number of iterations and steps
    82                 self.maxsteps=20;
    83                 self.maxiter =30;
     105        if numel(self.cost_functions_coefficients) > 1:
     106            self.cost_functions_coefficients = project3d(md, 'vector', self.cost_functions_coefficients, 'type', 'node')
    84107
    85                 #default tolerances
    86                 self.fatol = 0;
    87                 self.frtol = 0;
    88                 self.gatol = 0;
    89                 self.grtol = 0;
    90                 self.gttol = 1e-4;
     108        if numel(self.min_parameters) > 1:
     109            self.min_parameters = project3d(md, 'vector', self.min_parameters, 'type', 'node')
    91110
    92                 #minimization algorithm
    93                 PETSCMAJOR = IssmConfig('_PETSC_MAJOR_')[0]
    94                 PETSCMINOR = IssmConfig('_PETSC_MINOR_')[0]
    95                 if(PETSCMAJOR>3 or (PETSCMAJOR==3 and PETSCMINOR>=5)):
    96                         self.algorithm = 'blmvm';
    97                 else:
    98                         self.algorithm = 'tao_blmvm';
     111        if numel(self.max_parameters) > 1:
     112            self.max_parameters = project3d(md, 'vector', self.max_parameters, 'type', 'node')
    99113
    100                 #several responses can be used:
    101                 self.cost_functions=101;
    102                 return self
     114        return self
    103115
    104         def extrude(self,md):
    105                 self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node')
    106                 self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node')
    107                 self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node')
    108                 self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node')
     116    def checkconsistency(self, md, solution, analyses):
     117        if not self.iscontrol:
     118            return md
     119        if not IssmConfig('_HAVE_TAO_')[0]:
     120            md = md.checkmessage('TAO has not been installed, ISSM needs to be reconfigured and recompiled with TAO')
    109121
    110                 if numel(self.cost_functions_coefficients) > 1:
    111                         self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node')
     122        num_controls = np.size(md.inversion.control_parameters)
     123        num_costfunc = np.size(md.inversion.cost_functions)
    112124
    113                 if numel(self.min_parameters) > 1:
    114                         self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node')
     125        md = checkfield(md, 'fieldname', 'inversion.iscontrol', 'values', [0, 1])
     126        md = checkfield(md, 'fieldname', 'inversion.incomplete_adjoint', 'values', [0, 1])
     127        md = checkfield(md, 'fieldname', 'inversion.control_parameters', 'cell', 1, 'values', supportedcontrols())
     128        md = checkfield(md, 'fieldname', 'inversion.maxsteps', 'numel', 1, '>=', 0)
     129        md = checkfield(md, 'fieldname', 'inversion.maxiter', 'numel', 1, '>=', 0)
     130        md = checkfield(md, 'fieldname', 'inversion.fatol', 'numel', 1, '>=', 0)
     131        md = checkfield(md, 'fieldname', 'inversion.frtol', 'numel', 1, '>=', 0)
     132        md = checkfield(md, 'fieldname', 'inversion.gatol', 'numel', 1, '>=', 0)
     133        md = checkfield(md, 'fieldname', 'inversion.grtol', 'numel', 1, '>=', 0)
     134        md = checkfield(md, 'fieldname', 'inversion.gttol', 'numel', 1, '>=', 0)
    115135
    116                 if numel(self.max_parameters)>1:
    117                         self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node')
     136        PETSCMAJOR = IssmConfig('_PETSC_MAJOR_')[0]
     137        PETSCMINOR = IssmConfig('_PETSC_MINOR_')[0]
     138        if(PETSCMAJOR > 3 or (PETSCMAJOR == 3 and PETSCMINOR >= 5)):
     139            md = checkfield(md, 'fieldname', 'inversion.algorithm', 'values', ['blmvm', 'cg', 'lmvm'])
     140        else:
     141            md = checkfield(md, 'fieldname', 'inversion.algorithm', 'values', ['tao_blmvm', 'tao_cg', 'tao_lmvm'])
    118142
    119                 return self
     143        md = checkfield(md, 'fieldname', 'inversion.cost_functions', 'size', [num_costfunc], 'values', supportedcostfunctions())
     144        md = checkfield(md, 'fieldname', 'inversion.cost_functions_coefficients', 'size', [md.mesh.numberofvertices, num_costfunc], '>=', 0)
     145        md = checkfield(md, 'fieldname', 'inversion.min_parameters', 'size', [md.mesh.numberofvertices, num_controls])
     146        md = checkfield(md, 'fieldname', 'inversion.max_parameters', 'size', [md.mesh.numberofvertices, num_controls])
    120147
    121         def checkconsistency(self,md,solution,analyses):
    122                 if not self.iscontrol:
    123                         return md
    124                 if not IssmConfig('_HAVE_TAO_')[0]:
    125                         md = md.checkmessage('TAO has not been installed, ISSM needs to be reconfigured and recompiled with TAO')
     148        if solution == 'BalancethicknessSolution':
     149            md = checkfield(md, 'fieldname', 'inversion.thickness_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
     150        elif solution == 'BalancethicknessSoftSolution':
     151            md = checkfield(md, 'fieldname', 'inversion.thickness_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
     152        else:
     153            md = checkfield(md, 'fieldname', 'inversion.vx_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
     154            md = checkfield(md, 'fieldname', 'inversion.vy_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
    126155
     156    def marshall(self, prefix, md, fid):
    127157
    128                 num_controls= np.size(md.inversion.control_parameters)
    129                 num_costfunc= np.size(md.inversion.cost_functions)
     158        yts = md.constants.yts
     159        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'iscontrol', 'format', 'Boolean')
     160        WriteData(fid, prefix, 'name', 'md.inversion.type', 'data', 1, 'format', 'Integer')
     161        if not self.iscontrol:
     162            return
     163        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'incomplete_adjoint', 'format', 'Boolean')
     164        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'maxsteps', 'format', 'Integer')
     165        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'maxiter', 'format', 'Integer')
     166        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'fatol', 'format', 'Double')
     167        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'frtol', 'format', 'Double')
     168        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'gatol', 'format', 'Double')
     169        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'grtol', 'format', 'Double')
     170        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'gttol', 'format', 'Double')
     171        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'algorithm', 'format', 'String')
     172        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'cost_functions_coefficients', 'format', 'DoubleMat', 'mattype', 1)
     173        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'min_parameters', 'format', 'DoubleMat', 'mattype', 3)
     174        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'max_parameters', 'format', 'DoubleMat', 'mattype', 3)
     175        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'vx_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
     176        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'vy_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
     177        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'vz_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
     178        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'thickness_obs', 'format', 'DoubleMat', 'mattype', 1)
     179        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'surface_obs', 'format', 'DoubleMat', 'mattype', 1)
    130180
    131                 md = checkfield(md,'fieldname','inversion.iscontrol','values',[0, 1])
    132                 md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])
    133                 md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())
    134                 md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0)
    135                 md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0)
    136                 md = checkfield(md,'fieldname','inversion.fatol','numel',1,'>=',0)
    137                 md = checkfield(md,'fieldname','inversion.frtol','numel',1,'>=',0)
    138                 md = checkfield(md,'fieldname','inversion.gatol','numel',1,'>=',0)
    139                 md = checkfield(md,'fieldname','inversion.grtol','numel',1,'>=',0)
    140                 md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>=',0)
     181    #process control parameters
     182        num_control_parameters = np.size(self.control_parameters)
     183        WriteData(fid, prefix, 'object', self, 'fieldname', 'control_parameters', 'format', 'StringArray')
     184        WriteData(fid, prefix, 'data', num_control_parameters, 'name', 'md.inversion.num_control_parameters', 'format', 'Integer')
    141185
    142 
    143                 PETSCMAJOR = IssmConfig('_PETSC_MAJOR_')[0]
    144                 PETSCMINOR = IssmConfig('_PETSC_MINOR_')[0]
    145                 if(PETSCMAJOR>3 or (PETSCMAJOR==3 and PETSCMINOR>=5)):
    146                         md = checkfield(md,'fieldname','inversion.algorithm','values',['blmvm','cg','lmvm'])
    147                 else:
    148                         md = checkfield(md,'fieldname','inversion.algorithm','values',['tao_blmvm','tao_cg','tao_lmvm'])
    149 
    150 
    151                 md = checkfield(md,'fieldname','inversion.cost_functions','size', [num_costfunc],'values',supportedcostfunctions())
    152                 md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0)
    153                 md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices, num_controls])
    154                 md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices, num_controls])
    155 
    156 
    157                 if solution=='BalancethicknessSolution':
    158                         md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    159                 elif solution=='BalancethicknessSoftSolution':
    160                         md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    161                 else:
    162                         md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    163                         md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
    164 
    165         def marshall(self,prefix,md,fid):
    166 
    167                 yts=md.constants.yts;
    168                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean')
    169                 WriteData(fid,prefix,'name','md.inversion.type','data',1,'format','Integer')
    170                 if not self.iscontrol:
    171                         return
    172                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean')
    173                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxsteps','format','Integer')
    174                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxiter','format','Integer')
    175                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','fatol','format','Double')
    176                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','frtol','format','Double')
    177                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gatol','format','Double')
    178                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','grtol','format','Double')
    179                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gttol','format','Double')
    180                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','algorithm','format','String')
    181                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1)
    182                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3)
    183                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3)
    184                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts)
    185                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts)
    186                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts)
    187                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',1)
    188                 WriteData(fid,prefix,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',1)
    189 
    190                 #process control parameters
    191                 num_control_parameters = np.size(self.control_parameters)
    192                 WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray')
    193                 WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer')
    194 
    195                 #process cost functions
    196                 num_cost_functions = np.size(self.cost_functions)
    197                 data= marshallcostfunctions(self.cost_functions)
    198                 WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray')
    199                 WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer')
     186    #process cost functions
     187        num_cost_functions = np.size(self.cost_functions)
     188        data = marshallcostfunctions(self.cost_functions)
     189        WriteData(fid, prefix, 'data', data, 'name', 'md.inversion.cost_functions', 'format', 'StringArray')
     190        WriteData(fid, prefix, 'data', num_cost_functions, 'name', 'md.inversion.num_cost_functions', 'format', 'Integer')
  • issm/trunk-jpl/src/m/classes/thermal.py

    r24141 r24213  
    1 import numpy as  np
     1import numpy as np
    22from project3d import project3d
    33from fielddisplay import fielddisplay
     
    55from WriteData import WriteData
    66
     7
    78class thermal(object):
    8         """
    9         THERMAL class definition
     9    """
     10    THERMAL class definition
    1011
    11            Usage:
    12               thermal=thermal();
    13         """
     12       Usage:
     13          thermal = thermal()
     14    """
    1415
    15         def __init__(self): # {{{
    16                 self.spctemperature    = float('NaN')
    17                 self.penalty_threshold = 0
    18                 self.stabilization    = 0
    19                 self.reltol            = 0
    20                 self.maxiter          = 0
    21                 self.penalty_lock      = 0
    22                 self.penalty_factor    = 0
    23                 self.isenthalpy        = 0
    24                 self.isdynamicbasalspc = 0
    25                 isdrainicecolumn      = 0
    26                 watercolumn_upperlimit = 0
    27                 self.fe                = 'P1'
    28                 self.requested_outputs = []
     16    def __init__(self): # {{{
     17        self.spctemperature = float('NaN')
     18        self.penalty_threshold = 0
     19        self.stabilization = 0
     20        self.reltol = 0
     21        self.maxiter = 0
     22        self.penalty_lock = 0
     23        self.penalty_factor = 0
     24        self.isenthalpy = 0
     25        self.isdynamicbasalspc = 0
     26        self.isdrainicecolumn = 0
     27        self.watercolumn_upperlimit = 0
     28        self.fe = 'P1'
     29        self.requested_outputs = []
    2930
    30                 #set defaults
    31                 self.setdefaultparameters()
     31    #set defaults
     32        self.setdefaultparameters()
    3233
    33                 #}}}
    34         def __repr__(self): # {{{
    35                 string='   Thermal solution parameters:'
    36                 string="%s\n%s"%(string,fielddisplay(self,'spctemperature','temperature constraints (NaN means no constraint) [K]'))
    37                 string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG'))
    38                 string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of non linear iterations'))
    39                 string="%s\n%s"%(string,fielddisplay(self,'reltol','relative tolerance criterion'))
    40                 string="%s\n%s"%(string,fielddisplay(self,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)'))
    41                 string="%s\n%s"%(string,fielddisplay(self,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)'))
    42                 string="%s\n%s"%(string,fielddisplay(self,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)'))
    43                 string="%s\n%s"%(string,fielddisplay(self,'isdynamicbasalspc','enable dynamic setting of basal forcing. required for enthalpy formulation (default is 0)'))
    44                 string="%s\n%s"%(string,fielddisplay(self,'isdrainicecolumn','wether waterfraction drainage is enabled for enthalpy formulation (default is 1)'))
    45                 string="%s\n%s"%(string,fielddisplay(self,'watercolumn_upperlimit','upper limit of basal watercolumn for enthalpy formulation (default is 1000m)'))
    46                 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
    47                 return string
    48                 #}}}
    49         def extrude(self,md): # {{{
    50                 self.spctemperature=project3d(md,'vector',self.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',np.nan)
    51                 if isinstance(md.initialization.temperature,np.ndarray) and np.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
    52                         self.spctemperature=float('NaN')*np.ones((md.mesh.numberofvertices))
    53                         pos=np.where(md.mesh.vertexonsurface)[0]
    54                         self.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
    55                 return self
    56         #}}}
    57         def defaultoutputs(self,md): # {{{
     34    #}}}
    5835
    59                 if self.isenthalpy:
    60                         return ['Enthalpy','Temperature','Waterfraction','Watercolumn','BasalforcingsGroundediceMeltingRate']
    61                 else:
    62                         return ['Temperature','BasalforcingsGroundediceMeltingRate']
     36    def __repr__(self):  # {{{
     37        string = '   Thermal solution parameters:'
     38        string = "%s\n%s" % (string, fielddisplay(self, 'spctemperature', 'temperature constraints (NaN means no constraint) [K]'))
     39        string = "%s\n%s" % (string, fielddisplay(self, 'stabilization', '0: no, 1: artificial_diffusivity, 2: SUPG'))
     40        string = "%s\n%s" % (string, fielddisplay(self, 'maxiter', 'maximum number of non linear iterations'))
     41        string = "%s\n%s" % (string, fielddisplay(self, 'reltol', 'relative tolerance criterion'))
     42        string = "%s\n%s" % (string, fielddisplay(self, 'penalty_lock', 'stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)'))
     43        string = "%s\n%s" % (string, fielddisplay(self, 'penalty_threshold', 'threshold to declare convergence of thermal solution (default is 0)'))
     44        string = "%s\n%s" % (string, fielddisplay(self, 'isenthalpy', 'use an enthalpy formulation to include temperate ice (default is 0)'))
     45        string = "%s\n%s" % (string, fielddisplay(self, 'isdynamicbasalspc', 'enable dynamic setting of basal forcing. required for enthalpy formulation (default is 0)'))
     46        string = "%s\n%s" % (string, fielddisplay(self, 'isdrainicecolumn', 'wether waterfraction drainage is enabled for enthalpy formulation (default is 1)'))
     47        string = "%s\n%s" % (string, fielddisplay(self, 'watercolumn_upperlimit', 'upper limit of basal watercolumn for enthalpy formulation (default is 1000m)'))
     48        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
     49        return string
     50    #}}}
    6351
    64         #}}}
    65         def setdefaultparameters(self): # {{{
    66                
    67                 #Number of unstable constraints acceptable
    68                 self.penalty_threshold=0
     52    def extrude(self, md):  # {{{
     53        self.spctemperature = project3d(md, 'vector', self.spctemperature, 'type', 'node', 'layer', md.mesh.numberoflayers, 'padding', np.nan)
     54        if isinstance(md.initialization.temperature, np.ndarray) and np.size(md.initialization.temperature, axis=0) == md.mesh.numberofvertices:
     55            self.spctemperature = float('NaN') * np.ones((md.mesh.numberofvertices))
     56            pos = np.where(md.mesh.vertexonsurface)[0]
     57            self.spctemperature[pos] = md.initialization.temperature[pos]  #impose observed temperature on surface
     58        return self
     59    #}}}
    6960
    70                 #Type of stabilization used
    71                 self.stabilization=1
     61    def defaultoutputs(self, md):  # {{{
     62        if self.isenthalpy:
     63            return ['Enthalpy', 'Temperature', 'Waterfraction', 'Watercolumn', 'BasalforcingsGroundediceMeltingRate']
     64        else:
     65            return ['Temperature', 'BasalforcingsGroundediceMeltingRate']
    7266
    73                 #Relative tolerance for the enthalpy convergence
    74                 self.reltol=0.01
     67    #}}}
    7568
    76                 #Maximum number of iterations
    77                 self.maxiter=100
     69    def setdefaultparameters(self):  # {{{
     70        #Number of unstable constraints acceptable
     71        self.penalty_threshold = 0
     72        #Type of stabilization used
     73        self.stabilization = 1
     74        #Relative tolerance for the enthalpy convergence
     75        self.reltol = 0.01
     76        #Maximum number of iterations
     77        self.maxiter = 100
     78        #factor used to compute the values of the penalties: kappa = max(stiffness matrix) * 10^penalty_factor
     79        self.penalty_factor = 3
     80        #Should we use cold ice (default) or enthalpy formulation
     81        self.isenthalpy = 0
     82        #will basal boundary conditions be set dynamically
     83        self.isdynamicbasalspc = 0
     84        #wether waterfraction drainage is enabled
     85        self.isdrainicecolumn = 1
     86        #set an upper limit for local stored watercolumn
     87        self.watercolumn_upperlimit = 1000
     88        #Finite element interpolation
     89        self.fe = 'P1'
     90        #default output
     91        self.requested_outputs = ['default']
     92        return self
    7893
    79                 #factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
    80                 self.penalty_factor=3
     94    #}}}
    8195
    82                 #Should we use cold ice (default) or enthalpy formulation
    83                 self.isenthalpy=0
     96    def checkconsistency(self, md, solution, analyses):  # {{{
     97        #Early return
     98        if ('ThermalAnalysis' not in analyses and 'EnthalpyAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isthermal):
     99            return md
    84100
    85                 #will basal boundary conditions be set dynamically
    86                 self.isdynamicbasalspc=0
     101        md = checkfield(md, 'fieldname', 'thermal.stabilization', 'numel', [1], 'values', [0, 1, 2])
     102        md = checkfield(md, 'fieldname', 'thermal.spctemperature', 'Inf', 1, 'timeseries', 1)
     103        md = checkfield(md, 'fieldname', 'thermal.requested_outputs', 'stringrow', 1)
    87104
    88                 #wether waterfraction drainage is enabled
    89                 self.isdrainicecolumn=1
     105        if 'EnthalpyAnalysis' in analyses and md.thermal.isenthalpy and md.mesh.dimension() == 3:
     106            md = checkfield(md, 'fieldname', 'thermal.isdrainicecolumn', 'numel', [1], 'values', [0, 1])
     107            md = checkfield(md, 'fieldname', 'thermal.watercolumn_upperlimit', '>=', 0)
    90108
    91                 #set an upper limit for local stored watercolumn
    92                 self.watercolumn_upperlimit=1000
     109            TEMP = md.thermal.spctemperature[: - 1].flatten(- 1)
     110            pos = np.where(~np.isnan(TEMP))
     111            try:
     112                spccol = np.size(md.thermal.spctemperature, 1)
     113            except IndexError:
     114                spccol = 1
    93115
    94                 #Finite element interpolation
    95                 self.fe='P1'
     116            replicate = np.tile(md.geometry.surface - md.mesh.z, (spccol)).flatten(-1)
     117            control = md.materials.meltingpoint - md.materials.beta * md.materials.rho_ice * md.constants.g * replicate + 1.0e-5
     118            md = checkfield(md, 'fieldname', 'thermal.spctemperature', 'field', md.thermal.spctemperature.flatten(- 1)[pos], '<=', control[pos], 'message', "spctemperature should be below the adjusted melting point")
     119            md = checkfield(md, 'fieldname', 'thermal.isenthalpy', 'numel', [1], 'values', [0, 1])
     120            md = checkfield(md, 'fieldname', 'thermal.isdynamicbasalspc', 'numel', [1], 'values', [0, 1])
     121            if(md.thermal.isenthalpy):
     122                if np.isnan(md.stressbalance.reltol):
     123                    md.checkmessage("for a steadystate computation, thermal.reltol (relative convergence criterion) must be defined!")
     124                md = checkfield(md, 'fieldname', 'thermal.reltol', '>', 0., 'message', "reltol must be larger than zero")
    96125
    97                 #default output
    98                 self.requested_outputs=['default']
    99                 return self
     126        return md
     127    # }}}
    100128
    101         #}}}
    102         def checkconsistency(self,md,solution,analyses):    # {{{
     129    def marshall(self, prefix, md, fid):  # {{{
     130        WriteData(fid, prefix, 'object', self, 'fieldname', 'spctemperature', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     131        WriteData(fid, prefix, 'object', self, 'fieldname', 'penalty_threshold', 'format', 'Integer')
     132        WriteData(fid, prefix, 'object', self, 'fieldname', 'stabilization', 'format', 'Integer')
     133        WriteData(fid, prefix, 'object', self, 'fieldname', 'reltol', 'format', 'Double')
     134        WriteData(fid, prefix, 'object', self, 'fieldname', 'maxiter', 'format', 'Integer')
     135        WriteData(fid, prefix, 'object', self, 'fieldname', 'penalty_lock', 'format', 'Integer')
     136        WriteData(fid, prefix, 'object', self, 'fieldname', 'penalty_factor', 'format', 'Double')
     137        WriteData(fid, prefix, 'object', self, 'fieldname', 'isenthalpy', 'format', 'Boolean')
     138        WriteData(fid, prefix, 'object', self, 'fieldname', 'isdrainicecolumn', 'format', 'Boolean')
     139        WriteData(fid, prefix, 'object', self, 'fieldname', 'watercolumn_upperlimit', 'format', 'Double')
     140        WriteData(fid, prefix, 'object', self, 'fieldname', 'fe', 'format', 'String')
     141        WriteData(fid, prefix, 'object', self, 'fieldname', 'isdynamicbasalspc', 'format', 'Boolean')
    103142
    104                 #Early return
    105                 if ('ThermalAnalysis' not in analyses and 'EnthalpyAnalysis' not in analyses) or (solution=='TransientSolution' and not md.transient.isthermal):
    106                         return md
    107 
    108                 md = checkfield(md,'fieldname','thermal.stabilization','numel',[1],'values',[0,1,2])
    109                 md = checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1)
    110                 md = checkfield(md,'fieldname','thermal.requested_outputs','stringrow',1)
    111 
    112                 if 'EnthalpyAnalysis' in analyses and md.thermal.isenthalpy and md.mesh.dimension()==3:
    113                         md = checkfield(md,'fieldname','thermal.isdrainicecolumn','numel',[1],'values',[0,1])
    114                         md = checkfield(md,'fieldname','thermal.watercolumn_upperlimit','>=',0)
    115 
    116                         TEMP = md.thermal.spctemperature[:-1].flatten(-1)
    117                         pos=np.where(~np.isnan(TEMP))
    118                         try:
    119                                 spccol=np.size(md.thermal.spctemperature,1)
    120                         except IndexError:
    121                                 spccol=1
    122 
    123                         replicate=np.tile(md.geometry.surface-md.mesh.z,(spccol)).flatten(-1)
    124 
    125                         control=md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*replicate+10**-5
    126 
    127                         md = checkfield(md,'fieldname','thermal.spctemperature','field',md.thermal.spctemperature.flatten(-1)[pos],'<=',control[pos],'message',"spctemperature should be below the adjusted melting point")
    128                         md = checkfield(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0,1])
    129                         md = checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel',[1],'values',[0,1])
    130                         if(md.thermal.isenthalpy):
    131                                 if np.isnan(md.stressbalance.reltol):
    132                                         md.checkmessage("for a steadystate computation, thermal.reltol (relative convergence criterion) must be defined!")
    133                                 md = checkfield(md,'fieldname','thermal.reltol','>',0.,'message',"reltol must be larger than zero")
    134 
    135 
    136                 return md
    137         # }}}
    138         def marshall(self,prefix,md,fid):    # {{{
    139                 WriteData(fid,prefix,'object',self,'fieldname','spctemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    140                 WriteData(fid,prefix,'object',self,'fieldname','penalty_threshold','format','Integer')
    141                 WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer')
    142                 WriteData(fid,prefix,'object',self,'fieldname','reltol','format','Double')
    143                 WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer')
    144                 WriteData(fid,prefix,'object',self,'fieldname','penalty_lock','format','Integer')
    145                 WriteData(fid,prefix,'object',self,'fieldname','penalty_factor','format','Double')
    146                 WriteData(fid,prefix,'object',self,'fieldname','isenthalpy','format','Boolean')
    147                 WriteData(fid,prefix,'object',self,'fieldname','isdrainicecolumn','format','Boolean')
    148                 WriteData(fid,prefix,'object',self,'fieldname','watercolumn_upperlimit','format','Double')
    149                 WriteData(fid,prefix,'object',self,'fieldname','fe','format','String')
    150                 WriteData(fid,prefix,'object',self,'fieldname','isdynamicbasalspc','format','Boolean')
    151 
    152                 #process requested outputs
    153                 outputs = self.requested_outputs
    154                 indices = [i for i, x in enumerate(outputs) if x == 'default']
    155                 if len(indices) > 0:
    156                         outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    157                         outputs    =outputscopy
    158                 WriteData(fid,prefix,'data',outputs,'name','md.thermal.requested_outputs','format','StringArray')
    159         # }}}
     143    #process requested outputs
     144        outputs = self.requested_outputs
     145        indices = [i for i, x in enumerate(outputs) if x == 'default']
     146        if len(indices) > 0:
     147            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     148            outputs = outputscopy
     149        WriteData(fid, prefix, 'data', outputs, 'name', 'md.thermal.requested_outputs', 'format', 'StringArray')
     150    # }}}
  • issm/trunk-jpl/src/m/classes/timestepping.py

    r22459 r24213  
    33from WriteData import WriteData
    44
     5
    56class timestepping(object):
    6         """
    7         TIMESTEPPING Class definition
     7    """
     8    TIMESTEPPING Class definition
    89
    9            Usage:
    10               timestepping=timestepping();
    11         """
     10       Usage:
     11          timestepping = timestepping()
     12    """
    1213
    13         def __init__(self): # {{{
    14                 self.start_time      = 0.
    15                 self.final_time      = 0.
    16                 self.time_step       = 0.
    17                 self.interp_forcings = 1
    18                 self.coupling_time   = 0.
    19                
    20                 #set defaults
    21                 self.setdefaultparameters()
     14    def __init__(self):  # {{{
     15        self.start_time = 0.
     16        self.final_time = 0.
     17        self.time_step = 0.
     18        self.interp_forcings = 1
     19        self.coupling_time = 0.
    2220
    23                 #}}}
    24         def __repr__(self): # {{{
    25                 string="   timestepping parameters:"
    26                 string="%s\n%s"%(string,fielddisplay(self,"start_time","simulation starting time [yr]"))
    27                 string="%s\n%s"%(string,fielddisplay(self,"final_time","final time to stop the simulation [yr]"))
    28                 string="%s\n%s"%(string,fielddisplay(self,"time_step","length of time steps [yr]"))
    29                 string="%s\n%s"%(string,fielddisplay(self,"interp_forcings","interpolate in time between requested forcing values ? (0 or 1)"))
    30                 string="%s\n%s"%(string,fielddisplay(self,"coupling_time","length of coupling time steps with ocean model [yr]"))
    31                 return string
    32                 #}}}
    33         def setdefaultparameters(self): # {{{
    34                
    35                 #time between 2 time steps
    36                 self.time_step=1./2.
     21    #set defaults
     22        self.setdefaultparameters()
    3723
    38                 #final time
    39                 self.final_time=10.*self.time_step
     24    #}}}
    4025
    41                 #should we interpolate forcings between timesteps?
    42                 self.interp_forcings=1
     26    def __repr__(self):  # {{{
     27        string = "   timestepping parameters:"
     28        string = "%s\n%s" % (string, fielddisplay(self, "start_time", "simulation starting time [yr]"))
     29        string = "%s\n%s" % (string, fielddisplay(self, "final_time", "final time to stop the simulation [yr]"))
     30        string = "%s\n%s" % (string, fielddisplay(self, "time_step", "length of time steps [yr]"))
     31        string = "%s\n%s" % (string, fielddisplay(self, "interp_forcings", "interpolate in time between requested forcing values ? (0 or 1)"))
     32        string = "%s\n%s" % (string, fielddisplay(self, "coupling_time", "length of coupling time steps with ocean model [yr]"))
     33        return string
     34    #}}}
    4335
    44                 return self
    45         #}}}
    46         def checkconsistency(self,md,solution,analyses):    # {{{
     36    def setdefaultparameters(self):  # {{{
     37        #time between 2 time steps
     38        self.time_step = 1. / 2.
     39        #final time
     40        self.final_time = 10. * self.time_step
     41        #should we interpolate forcings between timesteps?
     42        self.interp_forcings = 1
    4743
    48                 md = checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1,'Inf',1)
    49                 md = checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1,'Inf',1)
    50                 md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1)
    51                 if self.final_time-self.start_time<0:
    52                         md.checkmessage("timestepping.final_time should be larger than timestepping.start_time")
    53                         md = checkfield(md,'fieldname','timestepping.coupling_time','numel',[1],'>=',0,'NaN',1,'Inf',1)
    54                 md = checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1])
     44        return self
     45    #}}}
    5546
    56                 return md
    57         # }}}
    58         def marshall(self,prefix,md,fid):    # {{{
     47    def checkconsistency(self, md, solution, analyses):  # {{{
    5948
    60                 yts=md.constants.yts
    61                 WriteData(fid,prefix,'name','md.timestepping.type','data',1,'format','Integer');
    62                 WriteData(fid,prefix,'object',self,'fieldname','start_time','format','Double','scale',yts)
    63                 WriteData(fid,prefix,'object',self,'fieldname','final_time','format','Double','scale',yts)
    64                 WriteData(fid,prefix,'object',self,'fieldname','time_step','format','Double','scale',yts)
    65                 WriteData(fid,prefix,'object',self,'fieldname','interp_forcings','format','Boolean')
    66                 WriteData(fid,prefix,'object',self,'fieldname','coupling_time','format','Double','scale',yts)
    67         # }}}
     49        md = checkfield(md, 'fieldname', 'timestepping.start_time', 'numel', [1], 'NaN', 1, 'Inf', 1)
     50        md = checkfield(md, 'fieldname', 'timestepping.final_time', 'numel', [1], 'NaN', 1, 'Inf', 1)
     51        md = checkfield(md, 'fieldname', 'timestepping.time_step', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
     52        if self.final_time - self.start_time < 0:
     53            md.checkmessage("timestepping.final_time should be larger than timestepping.start_time")
     54            md = checkfield(md, 'fieldname', 'timestepping.coupling_time', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
     55        md = checkfield(md, 'fieldname', 'timestepping.interp_forcings', 'numel', [1], 'values', [0, 1])
     56
     57        return md
     58    # }}}
     59
     60    def marshall(self, prefix, md, fid):  # {{{
     61
     62        yts = md.constants.yts
     63        WriteData(fid, prefix, 'name', 'md.timestepping.type', 'data', 1, 'format', 'Integer')
     64        WriteData(fid, prefix, 'object', self, 'fieldname', 'start_time', 'format', 'Double', 'scale', yts)
     65        WriteData(fid, prefix, 'object', self, 'fieldname', 'final_time', 'format', 'Double', 'scale', yts)
     66        WriteData(fid, prefix, 'object', self, 'fieldname', 'time_step', 'format', 'Double', 'scale', yts)
     67        WriteData(fid, prefix, 'object', self, 'fieldname', 'interp_forcings', 'format', 'Boolean')
     68        WriteData(fid, prefix, 'object', self, 'fieldname', 'coupling_time', 'format', 'Double', 'scale', yts)
     69    # }}}
  • issm/trunk-jpl/src/m/classes/timesteppingadaptive.py

    r23716 r24213  
    33from WriteData import WriteData
    44
     5
    56class timesteppingadaptive(object):
    6         """
    7         TIMESTEPPINGADAPTIVE Class definition
     7    """
     8    TIMESTEPPINGADAPTIVE Class definition
    89
    9            Usage:
    10               timesteppingadaptive=timesteppingadaptive();
    11         """
     10       Usage:
     11          timesteppingadaptive = timesteppingadaptive()
     12    """
    1213
    13         def __init__(self,*args): # {{{
    14                 if not len(args):
    15                         self.start_time      = 0.
    16                         self.final_time      = 0.
    17                         self.time_step_min  = 0.
    18                         self.time_step_max  = 0.
    19                         self.cfl_coefficient = 0.
    20                         self.interp_forcings = 1
    21                         self.coupling_time  = 0.
     14    def __init__(self, *args): # {{{
     15        if not len(args):
     16            self.start_time = 0.
     17            self.final_time = 0.
     18            self.time_step_min = 0.
     19            self.time_step_max = 0.
     20            self.cfl_coefficient = 0.
     21            self.interp_forcings = 1
     22            self.coupling_time = 0.
    2223
    23                         #set defaults
    24                         self.setdefaultparameters()
     24            #set defaults
     25            self.setdefaultparameters()
    2526
    26                 elif len(args)==1 and args[0].__module__=='timestepping':
    27                         old=args[0]
    28                         #first call setdefaultparameters:
    29                         self.setdefaultparameters()
    30                         self.start_time      = old.start_time
    31                         self.final_time      = old.final_time
    32                         self.interp_forcings = old.interp_forcings
    33                         self.coupling_time  = old.coupling_time
     27        elif len(args) == 1 and args[0].__module__ == 'timestepping':
     28            old = args[0]
     29            #first call setdefaultparameters:
     30            self.setdefaultparameters()
     31            self.start_time = old.start_time
     32            self.final_time = old.final_time
     33            self.interp_forcings = old.interp_forcings
     34            self.coupling_time = old.coupling_time
    3435
    35                 else:
    36                         raise Exception('constructor not supported')
    37         #}}}
     36        else:
     37            raise Exception('constructor not supported')
     38    #}}}
    3839
    39         def __repr__(self): # {{{
    40                 string="   timesteppingadaptive parameters:"
    41                 string="%s\n%s"%(string,fielddisplay(self,"start_time","simulation starting time [yr]"))
    42                 string="%s\n%s"%(string,fielddisplay(self,"final_time","final time to stop the simulation [yr]"))
    43                 string="%s\n%s"%(string,fielddisplay(self,"time_step_min","minimum length of time steps [yr]"))
    44                 string="%s\n%s"%(string,fielddisplay(self,"time_step_max","maximum length of time steps [yr]"))
    45                 string="%s\n%s"%(string,fielddisplay(self,"cfl_coefficient","coefficient applied to cfl condition"))
    46                 string="%s\n%s"%(string,fielddisplay(self,"interp_forcings","interpolate in time between requested forcing values ? (0 or 1)"))
    47                 string="%s\n%s"%(string,fielddisplay(self,"coupling_time","coupling time steps with ocean model [yr]"))
    48                 return string
    49         # }}}
     40    def __repr__(self): # {{{
     41        string = "   timesteppingadaptive parameters:"
     42        string = "%s\n%s" % (string, fielddisplay(self, "start_time", "simulation starting time [yr]"))
     43        string = "%s\n%s" % (string, fielddisplay(self, "final_time", "final time to stop the simulation [yr]"))
     44        string = "%s\n%s" % (string, fielddisplay(self, "time_step_min", "minimum length of time steps [yr]"))
     45        string = "%s\n%s" % (string, fielddisplay(self, "time_step_max", "maximum length of time steps [yr]"))
     46        string = "%s\n%s" % (string, fielddisplay(self, "cfl_coefficient", "coefficient applied to cfl condition"))
     47        string = "%s\n%s" % (string, fielddisplay(self, "interp_forcings", "interpolate in time between requested forcing values ? (0 or 1)"))
     48        string = "%s\n%s" % (string, fielddisplay(self, "coupling_time", "coupling time steps with ocean model [yr]"))
     49        return string
     50    # }}}
    5051
    51         def setdefaultparameters(self): # {{{
     52    def setdefaultparameters(self):  # {{{
     53        #time between 2 time steps
     54        self.time_step_min = 0.01
     55        self.time_step_max = 10.
     56        #final time
     57        self.final_time = 10. * self.time_step_max
     58        #time adaptation?
     59        self.cfl_coefficient = 0.5
     60        #should we interpolate forcings between timesteps?
     61        self.interp_forcings = 1
     62        return self
     63    #}}}
    5264
    53                 #time between 2 time steps
    54                 self.time_step_min=0.01
    55                 self.time_step_max=10.
     65    def checkconsistency(self, md, solution, analyses):  # {{{
     66        md = checkfield(md, 'fieldname', 'timestepping.start_time', 'numel', [1], 'NaN', 1, 'Inf', 1)
     67        md = checkfield(md, 'fieldname', 'timestepping.final_time', 'numel', [1], 'NaN', 1, 'Inf', 1)
     68        md = checkfield(md, 'fieldname', 'timestepping.time_step_min', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
     69        md = checkfield(md, 'fieldname', 'timestepping.time_step_max', 'numel', [1], '>=', md.timestepping.time_step_min, 'NaN', 1, 'Inf', 1)
     70        md = checkfield(md, 'fieldname', 'timestepping.cfl_coefficient', 'numel', [1], '>', 0, '<=', 1)
     71        if self.final_time - self.start_time < 0:
     72            md.checkmessage("timestepping.final_time should be larger than timestepping.start_time")
     73        md = checkfield(md, 'fieldname', 'timestepping.interp_forcings', 'numel', [1], 'values', [0, 1])
     74        md = checkfield(md, 'fieldname', 'timestepping.coupling_time', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
    5675
    57                 #final time
    58                 self.final_time=10.*self.time_step_max
     76        return md
     77    # }}}
    5978
    60                 #time adaptation?
    61                 self.cfl_coefficient=0.5
    62 
    63                 #should we interpolate forcings between timesteps?
    64                 self.interp_forcings=1
    65 
    66                 return self
    67         #}}}
    68 
    69         def checkconsistency(self,md,solution,analyses):    # {{{
    70                 md = checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1,'Inf',1)
    71                 md = checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1,'Inf',1)
    72                 md = checkfield(md,'fieldname','timestepping.time_step_min','numel',[1],'>=',0,'NaN',1,'Inf',1)
    73                 md = checkfield(md,'fieldname','timestepping.time_step_max','numel',[1],'>=',md.timestepping.time_step_min,'NaN',1,'Inf',1)
    74                 md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1)
    75                 if self.final_time-self.start_time<0:
    76                         md.checkmessage("timestepping.final_time should be larger than timestepping.start_time")
    77                 md = checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1])
    78                 md = checkfield(md,'fieldname','timestepping.coupling_time','numel',[1],'>=',0,'NaN',1,'Inf',1)
    79 
    80                 return md
    81         # }}}
    82 
    83         def marshall(self,prefix,md,fid):    # {{{
    84                 yts=md.constants.yts
    85                 WriteData(fid,prefix,'name','md.timestepping.type','data',2,'format','Integer');
    86                 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','start_time','format','Double','scale',yts)
    87                 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','final_time','format','Double','scale',yts)
    88                 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','time_step_min','format','Double','scale',yts)
    89                 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','time_step_max','format','Double','scale',yts)
    90                 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cfl_coefficient','format','Double')
    91                 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','interp_forcings','format','Boolean')
    92                 WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','coupling_time','format','Double','scale',yts)
    93         # }}}
     79    def marshall(self, prefix, md, fid):  # {{{
     80        yts = md.constants.yts
     81        WriteData(fid, prefix, 'name', 'md.timestepping.type', 'data', 2, 'format', 'Integer')
     82        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'start_time', 'format', 'Double', 'scale', yts)
     83        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'final_time', 'format', 'Double', 'scale', yts)
     84        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'time_step_min', 'format', 'Double', 'scale', yts)
     85        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'time_step_max', 'format', 'Double', 'scale', yts)
     86        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cfl_coefficient', 'format', 'Double')
     87        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'interp_forcings', 'format', 'Boolean')
     88        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'coupling_time', 'format', 'Double', 'scale', yts)
     89    # }}}
  • issm/trunk-jpl/src/m/classes/toolkits.py

    r24115 r24213  
    1212
    1313       Usage:
    14           self=toolkits();
     14          self = toolkits()
    1515    """
    1616
    17     def __init__(self):    # {{{
     17    def __init__(self):  # {{{
    1818        #default toolkits
    1919        if IssmConfig('_HAVE_PETSC_')[0]:
     
    3434        self.RecoveryAnalysis = self.DefaultAnalysis
    3535
    36         #The other properties are dynamic
     36    #The other properties are dynamic
    3737    # }}}
    38     def __repr__(self):    # {{{
     38
     39    def __repr__(self):  # {{{
    3940        s = "List of toolkits options per analysis:\n\n"
    4041        for analysis in list(vars(self).keys()):
     
    4445    # }}}
    4546
    46     def addoptions(self, analysis, *args):    # {{{
     47    def addoptions(self, analysis, *args):  # {{{
    4748        # Usage example:
    48         #    md.toolkits=addoptions(md.toolkits,'StressbalanceAnalysis',FSoptions());
    49         #    md.toolkits=addoptions(md.toolkits,'StressbalanceAnalysis');
     49        #    md.toolkits = addoptions(md.toolkits, 'StressbalanceAnalysis', FSoptions())
     50        #    md.toolkits = addoptions(md.toolkits, 'StressbalanceAnalysis')
    5051
    5152        #Create dynamic property if property does not exist yet
     
    6061    # }}}
    6162
    62     def checkconsistency(self, md, solution, analyses):    # {{{
     63    def checkconsistency(self, md, solution, analyses):  # {{{
    6364        for analysis in list(vars(self).keys()):
    6465            if not getattr(self, analysis):
     
    6869    # }}}
    6970
    70     def ToolkitsFile(self, filename):    # {{{
     71    def ToolkitsFile(self, filename):  # {{{
    7172        """
    72         TOOLKITSFILE- build toolkits file
     73        TOOLKITSFILE - build toolkits file
    7374
    74            Build a Petsc compatible options file, from the toolkits model field  + return options string
     75           Build a Petsc compatible options file, from the toolkits model field + return options string
    7576           This file will also be used when the toolkit used is 'issm' instead of 'petsc'
    7677
    7778
    78            Usage:     ToolkitsFile(toolkits,filename);
     79           Usage:     ToolkitsFile(toolkits, filename)
    7980        """
    8081
    81         #open file for writing
     82    #open file for writing
    8283        try:
    8384            fid = open(filename, 'w')
    8485        except IOError as e:
    85             raise IOError("ToolkitsFile error: could not open '%s' for writing." % filename)
     86            raise IOError("ToolkitsFile error: could not open {}' for writing due to".format(filename), e)
    8687
    87         #write header
     88    #write header
    8889        fid.write("%s%s%s\n" % ('%Toolkits options file: ', filename, ' written from Python toolkits array'))
    8990
    90         #start writing options
     91    #start writing options
    9192        for analysis in list(vars(self).keys()):
    9293            options = getattr(self, analysis)
    9394
    94             #first write analysis:
    95             fid.write("\n+%s\n" % analysis)    #append a + to recognize it's an analysis enum
    96             #now, write options
     95    #first write analysis:
     96            fid.write("\n+{}\n".format(analysis))  #append a + to recognize it's an analysis enum
     97    #now, write options
    9798            for optionname, optionvalue in list(options.items()):
    9899
    99100                if not optionvalue:
    100101                    #this option has only one argument
    101                     fid.write("-%s\n" % optionname)
     102                    fid.write("-{}\n".format(optionname))
    102103                else:
    103104                    #option with value. value can be string or scalar
    104105                    if isinstance(optionvalue, (bool, int, float)):
    105                         fid.write("-%s %g\n" % (optionname, optionvalue))
     106                        fid.write("-{} {}\n".format(optionname, optionvalue))
    106107                    elif isinstance(optionvalue, str):
    107                         fid.write("-%s %s\n" % (optionname, optionvalue))
     108                        fid.write("-{} {}\n".format(optionname, optionvalue))
    108109                    else:
    109                         raise TypeError("ToolkitsFile error: option '%s' is not well formatted." % optionname)
     110                        raise TypeError("ToolkitsFile error: option '{}' is not well formatted.".format(optionname))
    110111
    111112        fid.close()
  • issm/trunk-jpl/src/m/classes/transient.py

    r23783 r24213  
    22from checkfield import checkfield
    33from WriteData import WriteData
     4
    45
    56class transient(object):
     
    89
    910       Usage:
    10           transient=transient();
     11          transient = transient()
    1112    """
    1213
    13     def __init__(self): # {{{
    14         self.issmb              = False
    15         self.ismasstransport   = False
    16         self.isstressbalance   = False
    17         self.isthermal         = False
    18         self.isgroundingline   = False
    19         self.isgia             = False
    20         self.isesa             = False
     14    def __init__(self):  # {{{
     15        self.issmb = False
     16        self.ismasstransport = False
     17        self.isstressbalance = False
     18        self.isthermal = False
     19        self.isgroundingline = False
     20        self.isgia = False
     21        self.isesa = False
    2122        self.isdamageevolution = False
    22         self.ismovingfront     = False
    23         self.ishydrology       = False
    24         self.isslr             = False
    25         self.iscoupler         = False
    26         self.amr_frequency     = 0
    27         self.isoceancoupling   = False
     23        self.ismovingfront = False
     24        self.ishydrology = False
     25        self.isslr = False
     26        self.iscoupler = False
     27        self.amr_frequency = 0
     28        self.isoceancoupling = False
    2829        self.requested_outputs = []
    2930
    30         #set defaults
     31    #set defaults
    3132        self.setdefaultparameters()
    3233
    33         #}}}
    34     def __repr__(self): # {{{
    35         string='   transient solution parameters:'
    36         string="%s\n%s"%(string,fielddisplay(self,'issmb','indicates if a surface mass balance solution is used in the transient'))
    37         string="%s\n%s"%(string,fielddisplay(self,'ismasstransport','indicates if a masstransport solution is used in the transient'))
    38         string="%s\n%s"%(string,fielddisplay(self,'isstressbalance','indicates if a stressbalance solution is used in the transient'))
    39         string="%s\n%s"%(string,fielddisplay(self,'isthermal','indicates if a thermal solution is used in the transient'))
    40         string="%s\n%s"%(string,fielddisplay(self,'isgroundingline','indicates if a groundingline migration is used in the transient'))
    41         string="%s\n%s"%(string,fielddisplay(self,'isgia','indicates if a postglacial rebound is used in the transient'))
    42         string="%s\n%s"%(string,fielddisplay(self,'isesa','indicates whether an elastic adjustment model is used in the transient'))
    43         string="%s\n%s"%(string,fielddisplay(self,'isdamageevolution','indicates whether damage evolution is used in the transient'))
    44         string="%s\n%s"%(string,fielddisplay(self,'ismovingfront','indicates whether a moving front capability is used in the transient'))
    45         string="%s\n%s"%(string,fielddisplay(self,'ishydrology','indicates whether an hydrology model is used'))
    46         string="%s\n%s"%(string,fielddisplay(self,'isslr','indicates if a sea level rise solution is used in the transient'))
    47         string="%s\n%s"%(string,fielddisplay(self,'isoceancoupling','indicates whether coupling with an ocean model is used in the transient'))
    48         string="%s\n%s"%(string,fielddisplay(self,'iscoupler','indicates whether different models are being run with need for coupling'))
    49         string="%s\n%s"%(string,fielddisplay(self,'amr_frequency','frequency at which mesh is refined in simulations with multiple time_steps'))
    50         string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','list of additional outputs requested'))
     34    #}}}
     35    def __repr__(self):  # {{{
     36        string = '   transient solution parameters:'
     37        string = "%s\n%s" % (string, fielddisplay(self, 'issmb', 'indicates if a surface mass balance solution is used in the transient'))
     38        string = "%s\n%s" % (string, fielddisplay(self, 'ismasstransport', 'indicates if a masstransport solution is used in the transient'))
     39        string = "%s\n%s" % (string, fielddisplay(self, 'isstressbalance', 'indicates if a stressbalance solution is used in the transient'))
     40        string = "%s\n%s" % (string, fielddisplay(self, 'isthermal', 'indicates if a thermal solution is used in the transient'))
     41        string = "%s\n%s" % (string, fielddisplay(self, 'isgroundingline', 'indicates if a groundingline migration is used in the transient'))
     42        string = "%s\n%s" % (string, fielddisplay(self, 'isgia', 'indicates if a postglacial rebound is used in the transient'))
     43        string = "%s\n%s" % (string, fielddisplay(self, 'isesa', 'indicates whether an elastic adjustment model is used in the transient'))
     44        string = "%s\n%s" % (string, fielddisplay(self, 'isdamageevolution', 'indicates whether damage evolution is used in the transient'))
     45        string = "%s\n%s" % (string, fielddisplay(self, 'ismovingfront', 'indicates whether a moving front capability is used in the transient'))
     46        string = "%s\n%s" % (string, fielddisplay(self, 'ishydrology', 'indicates whether an hydrology model is used'))
     47        string = "%s\n%s" % (string, fielddisplay(self, 'isslr', 'indicates if a sea level rise solution is used in the transient'))
     48        string = "%s\n%s" % (string, fielddisplay(self, 'isoceancoupling', 'indicates whether coupling with an ocean model is used in the transient'))
     49        string = "%s\n%s" % (string, fielddisplay(self, 'iscoupler', 'indicates whether different models are being run with need for coupling'))
     50        string = "%s\n%s" % (string, fielddisplay(self, 'amr_frequency', 'frequency at which mesh is refined in simulations with multiple time_steps'))
     51        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'list of additional outputs requested'))
    5152        return string
    52         #}}}
    53     def defaultoutputs(self,md): # {{{
     53    #}}}
     54
     55    def defaultoutputs(self, md):  # {{{
    5456
    5557        if self.issmb:
     
    5961
    6062    #}}}
    61     def setallnullparameters(self): # {{{
    62        
     63
     64    def setallnullparameters(self):  # {{{
    6365        #Nothing done
    64         self.issmb   = False
    65         self.ismasstransport   = False
    66         self.isstressbalance   = False
    67         self.isthermal         = False
    68         self.isgroundingline   = False
    69         self.isgia             = False
    70         self.isesa             = False
     66        self.issmb = False
     67        self.ismasstransport = False
     68        self.isstressbalance = False
     69        self.isthermal = False
     70        self.isgroundingline = False
     71        self.isgia = False
     72        self.isesa = False
    7173        self.isdamageevolution = False
    72         self.ismovingfront     = False
    73         self.ishydrology       = False
    74         self.isoceancoupling   = False
    75         self.isslr             = False
    76         self.iscoupler         = False
    77         self.amr_frequency      = 0
     74        self.ismovingfront = False
     75        self.ishydrology = False
     76        self.isoceancoupling = False
     77        self.isslr = False
     78        self.iscoupler = False
     79        self.amr_frequency = 0
    7880
    79         #default output
    80         self.requested_outputs=[]
     81    #default output
     82        self.requested_outputs = []
    8183        return self
    8284    #}}}
    83     def deactivateall(self):#{{{
    84         self.issmb             = False
    85         self.ismasstransport   = False
    86         self.isstressbalance   = False
    87         self.isthermal         = False
    88         self.isgroundingline   = False
    89         self.isgia             = False
    90         self.isesa             = False
     85
     86    def deactivateall(self):  #{{{
     87        self.issmb = False
     88        self.ismasstransport = False
     89        self.isstressbalance = False
     90        self.isthermal = False
     91        self.isgroundingline = False
     92        self.isgia = False
     93        self.isesa = False
    9194        self.isdamageevolution = False
    92         self.ismovingfront     = False
    93         self.ishydrology       = False
    94         self.isslr             = False
    95         self.isoceancoupling   = False
    96         self.iscoupler         = False
    97         self.amr_frequency     = 0
     95        self.ismovingfront = False
     96        self.ishydrology = False
     97        self.isslr = False
     98        self.isoceancoupling = False
     99        self.iscoupler = False
     100        self.amr_frequency = 0
    98101
    99         #default output
    100         self.requested_outputs=[]
     102    #default output
     103        self.requested_outputs = []
    101104        return self
    102105    #}}}
    103     def setdefaultparameters(self): # {{{
    104        
     106
     107    def setdefaultparameters(self):  # {{{
    105108        #full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
    106         self.issmb             = True
    107         self.ismasstransport   = True
    108         self.isstressbalance   = True
    109         self.isthermal         = True
    110         self.isgroundingline   = False
    111         self.isgia             = False
    112         self.isesa             = False
     109        self.issmb = True
     110        self.ismasstransport = True
     111        self.isstressbalance = True
     112        self.isthermal = True
     113        self.isgroundingline = False
     114        self.isgia = False
     115        self.isesa = False
    113116        self.isdamageevolution = False
    114         self.ismovingfront     = False
    115         self.ishydrology       = False
    116         self.isslr             = False
    117         self.isoceancoupling   = False
    118         self.iscoupler         = False
    119         self.amr_frequency     = 0
     117        self.ismovingfront = False
     118        self.ishydrology = False
     119        self.isslr = False
     120        self.isoceancoupling = False
     121        self.iscoupler = False
     122        self.amr_frequency = 0
    120123
    121         #default output
    122         self.requested_outputs=['default']
     124    #default output
     125        self.requested_outputs = ['default']
    123126        return self
    124127    #}}}
    125     def checkconsistency(self,md,solution,analyses):    # {{{
    126128
     129    def checkconsistency(self, md, solution, analyses):  # {{{
    127130        #Early return
    128         if not solution=='TransientSolution':
     131        if not solution == 'TransientSolution':
    129132            return md
    130133
    131         md = checkfield(md,'fieldname','transient.issmb','numel',[1],'values',[0,1])
    132         md = checkfield(md,'fieldname','transient.ismasstransport','numel',[1],'values',[0,1])
    133         md = checkfield(md,'fieldname','transient.isstressbalance','numel',[1],'values',[0,1])
    134         md = checkfield(md,'fieldname','transient.isthermal','numel',[1],'values',[0,1])
    135         md = checkfield(md,'fieldname','transient.isgroundingline','numel',[1],'values',[0,1])
    136         md = checkfield(md,'fieldname','transient.isgia','numel',[1],'values',[0,1])
    137         md = checkfield(md,'fieldname','transient.isesa','numel',[1],'values',[0,1])
    138         md = checkfield(md,'fieldname','transient.isdamageevolution','numel',[1],'values',[0,1])
    139         md = checkfield(md,'fieldname','transient.ishydrology','numel',[1],'values',[0,1])
    140         md = checkfield(md,'fieldname','transient.ismovingfront','numel',[1],'values',[0,1]);
    141         md = checkfield(md,'fieldname','transient.isslr','numel',[1],'values',[0,1])
    142         md = checkfield(md,'fieldname','transient.isoceancoupling','numel',[1],'values',[0,1])
    143         md = checkfield(md,'fieldname','transient.iscoupler','numel',[1],'values',[0,1])
    144         md = checkfield(md,'fieldname','transient.amr_frequency','numel',[1],'>=',0,'NaN',1,'Inf',1)
    145         md = checkfield(md,'fieldname','transient.requested_outputs','stringrow',1)
     134        md = checkfield(md, 'fieldname', 'transient.issmb', 'numel', [1], 'values', [0, 1])
     135        md = checkfield(md, 'fieldname', 'transient.ismasstransport', 'numel', [1], 'values', [0, 1])
     136        md = checkfield(md, 'fieldname', 'transient.isstressbalance', 'numel', [1], 'values', [0, 1])
     137        md = checkfield(md, 'fieldname', 'transient.isthermal', 'numel', [1], 'values', [0, 1])
     138        md = checkfield(md, 'fieldname', 'transient.isgroundingline', 'numel', [1], 'values', [0, 1])
     139        md = checkfield(md, 'fieldname', 'transient.isgia', 'numel', [1], 'values', [0, 1])
     140        md = checkfield(md, 'fieldname', 'transient.isesa', 'numel', [1], 'values', [0, 1])
     141        md = checkfield(md, 'fieldname', 'transient.isdamageevolution', 'numel', [1], 'values', [0, 1])
     142        md = checkfield(md, 'fieldname', 'transient.ishydrology', 'numel', [1], 'values', [0, 1])
     143        md = checkfield(md, 'fieldname', 'transient.ismovingfront', 'numel', [1], 'values', [0, 1])
     144        md = checkfield(md, 'fieldname', 'transient.isslr', 'numel', [1], 'values', [0, 1])
     145        md = checkfield(md, 'fieldname', 'transient.isoceancoupling', 'numel', [1], 'values', [0, 1])
     146        md = checkfield(md, 'fieldname', 'transient.iscoupler', 'numel', [1], 'values', [0, 1])
     147        md = checkfield(md, 'fieldname', 'transient.amr_frequency', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
     148        md = checkfield(md, 'fieldname', 'transient.requested_outputs', 'stringrow', 1)
    146149
    147         if (solution!='TransientSolution') and (md.transient.iscoupling):
     150        if (solution != 'TransientSolution') and (md.transient.iscoupling):
    148151            md.checkmessage("Coupling with ocean can only be done in transient simulations!")
    149         if (md.transient.isdamageevolution and not hasattr(md.materials,'matdamageice')):
     152        if (md.transient.isdamageevolution and not hasattr(md.materials, 'matdamageice')):
    150153            md.checkmessage("requesting damage evolution but md.materials is not of class matdamageice")
    151154
    152155        return md
    153156    # }}}
    154     def marshall(self,prefix,md,fid):    # {{{
    155         WriteData(fid,prefix,'object',self,'fieldname','issmb','format','Boolean')
    156         WriteData(fid,prefix,'object',self,'fieldname','ismasstransport','format','Boolean')
    157         WriteData(fid,prefix,'object',self,'fieldname','isstressbalance','format','Boolean')
    158         WriteData(fid,prefix,'object',self,'fieldname','isthermal','format','Boolean')
    159         WriteData(fid,prefix,'object',self,'fieldname','isgroundingline','format','Boolean')
    160         WriteData(fid,prefix,'object',self,'fieldname','isgia','format','Boolean')
    161         WriteData(fid,prefix,'object',self,'fieldname','isesa','format','Boolean')
    162         WriteData(fid,prefix,'object',self,'fieldname','isdamageevolution','format','Boolean')
    163         WriteData(fid,prefix,'object',self,'fieldname','ishydrology','format','Boolean')
    164         WriteData(fid,prefix,'object',self,'fieldname','ismovingfront','format','Boolean')
    165         WriteData(fid,prefix,'object',self,'fieldname','isslr','format','Boolean')
    166         WriteData(fid,prefix,'object',self,'fieldname','isoceancoupling','format','Boolean')
    167         WriteData(fid,prefix,'object',self,'fieldname','iscoupler','format','Boolean')
    168         WriteData(fid,prefix,'object',self,'fieldname','amr_frequency','format','Integer')
    169157
    170         #process requested outputs
     158    def marshall(self, prefix, md, fid):  # {{{
     159        WriteData(fid, prefix, 'object', self, 'fieldname', 'issmb', 'format', 'Boolean')
     160        WriteData(fid, prefix, 'object', self, 'fieldname', 'ismasstransport', 'format', 'Boolean')
     161        WriteData(fid, prefix, 'object', self, 'fieldname', 'isstressbalance', 'format', 'Boolean')
     162        WriteData(fid, prefix, 'object', self, 'fieldname', 'isthermal', 'format', 'Boolean')
     163        WriteData(fid, prefix, 'object', self, 'fieldname', 'isgroundingline', 'format', 'Boolean')
     164        WriteData(fid, prefix, 'object', self, 'fieldname', 'isgia', 'format', 'Boolean')
     165        WriteData(fid, prefix, 'object', self, 'fieldname', 'isesa', 'format', 'Boolean')
     166        WriteData(fid, prefix, 'object', self, 'fieldname', 'isdamageevolution', 'format', 'Boolean')
     167        WriteData(fid, prefix, 'object', self, 'fieldname', 'ishydrology', 'format', 'Boolean')
     168        WriteData(fid, prefix, 'object', self, 'fieldname', 'ismovingfront', 'format', 'Boolean')
     169        WriteData(fid, prefix, 'object', self, 'fieldname', 'isslr', 'format', 'Boolean')
     170        WriteData(fid, prefix, 'object', self, 'fieldname', 'isoceancoupling', 'format', 'Boolean')
     171        WriteData(fid, prefix, 'object', self, 'fieldname', 'iscoupler', 'format', 'Boolean')
     172        WriteData(fid, prefix, 'object', self, 'fieldname', 'amr_frequency', 'format', 'Integer')
     173
     174    #process requested outputs
    171175        outputs = self.requested_outputs
    172176        indices = [i for i, x in enumerate(outputs) if x == 'default']
    173177        if len(indices) > 0:
    174             outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
    175             outputs    =outputscopy
    176         WriteData(fid,prefix,'data',outputs,'name','md.transient.requested_outputs','format','StringArray')
     178            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
     179            outputs = outputscopy
     180        WriteData(fid, prefix, 'data', outputs, 'name', 'md.transient.requested_outputs', 'format', 'StringArray')
    177181    # }}}
  • issm/trunk-jpl/src/m/classes/verbose.py

    r23716 r24213  
    11from pairoptions import pairoptions
    2 import MatlabFuncs as m
    32from WriteData import WriteData
    43
     4
    55class verbose(object):
    6         """
    7         VERBOSE class definition
     6    """
     7    VERBOSE class definition
    88
    9            Available verbosity levels:
    10               mprocessor  : model processing
    11               module      : modules
    12               solution    : solution sequence
    13               solver      : solver info (extensive)
    14               convergence : convergence criteria
    15               control     : control method
    16               qmu         : sensitivity analysis
    17               autodiff    : AD analysis
    18               smb         : SMB analysis
     9       Available verbosity levels:
     10          mprocessor  : model processing
     11          module      : modules
     12          solution    : solution sequence
     13          solver      : solver info (extensive)
     14          convergence : convergence criteria
     15          control     : control method
     16          qmu         : sensitivity analysis
     17          autodiff    : AD analysis
     18          smb         : SMB analysis
    1919
    20            Usage:
    21               verbose=verbose();
    22               verbose=verbose(3);
    23               verbose=verbose('001100');
    24               verbose=verbose('module',True,'solver',False);
     20       Usage:
     21          verbose = verbose()
     22          verbose = verbose(3)
     23          verbose = verbose('001100')
     24          verbose = verbose('module', True, 'solver', False)
    2525
    26         WARNING: some parts of this file are Synchronized with src/c/shared/Numerics/Verbosity.h
    27                  Do not modify these sections. See src/c/shared/Numerics/README for more info
    28         """
     26    WARNING: some parts of this file are Synchronized with src / c / shared / Numerics / Verbosity.h
     27             Do not modify these sections. See src / c / shared / Numerics / README for more info
     28    """
    2929
    30         def __init__(self,*args):    # {{{
    31                 #BEGINFIELDS
    32                 self.mprocessor = False
    33                 self.module      = False
    34                 self.solution    = False
    35                 self.solver      = False
    36                 self.convergence = False
    37                 self.control    = False
    38                 self.qmu        = False
    39                 self.autodiff    = False
    40                 self.smb        = False
    41                 #ENDFIELDS
     30    def __init__(self, *args):  # {{{
     31        #BEGINFIELDS
     32        self.mprocessor = False
     33        self.module = False
     34        self.solution = False
     35        self.solver = False
     36        self.convergence = False
     37        self.control = False
     38        self.qmu = False
     39        self.autodiff = False
     40        self.smb = False
     41        #ENDFIELDS
    4242
    43                 if not len(args):
    44                         #Don't do anything
    45                         self.solution=True;
    46                         self.qmu=True;
    47                         self.control=True;
    48                         pass
     43        if not len(args):
     44            #Don't do anything
     45            self.solution = True
     46            self.qmu = True
     47            self.control = True
     48            pass
    4949
    50                 elif len(args) == 1:
    51                         binary=args[0]
    52                         if   isinstance(binary,str):
    53                                 if binary.lower()=='all':
    54                                         binary=2**11-1    #all ones
    55                                         self.BinaryToVerbose(binary)
    56                                         self.solver=False    #Do not use by default
    57                                 else:
    58                                         binary=int(binary,2)
    59                                         self.BinaryToVerbose(binary)
    60                         elif isinstance(binary,(int,float)):
    61                                 self.BinaryToVerbose(int(binary))
     50        elif len(args) == 1:
     51            binary = args[0]
     52            if isinstance(binary, str):
     53                if binary.lower() == 'all':
     54                    binary = 2**11 - 1  #all ones
     55                    self.BinaryToVerbose(binary)
     56                    self.solver = False  #Do not use by default
     57                else:
     58                    binary = int(binary, 2)
     59                    self.BinaryToVerbose(binary)
     60            elif isinstance(binary, (int, float)):
     61                self.BinaryToVerbose(int(binary))
    6262
    63                 else:
    64                         #Use options to initialize object
    65                         self=pairoptions(*args).AssignObjectFields(self)
     63        else:
     64            #Use options to initialize object
     65            self = pairoptions(*args).AssignObjectFields(self)
    6666
    67                         #Cast to logicals
    68                         listproperties=vars(self)
    69                         for fieldname,fieldvalue in list(listproperties.items()):
    70                                 if isinstance(fieldvalue,bool) or isinstance(fieldvalue,(int,float)):
    71                                         setattr(self,fieldname,bool(fieldvalue))
    72                                 else:
    73                                         raise TypeError("verbose supported field values are logicals only (True or False)")
    74         # }}}
    75         def __repr__(self):    # {{{
    76                        
    77                 #BEGINDISP
    78                 s ="class '%s'  = \n" % type(self)
    79                 s+="   %15s : %s\n" % ('mprocessor',self.mprocessor)
    80                 s+="   %15s : %s\n" % ('module',self.module)
    81                 s+="   %15s : %s\n" % ('solution',self.solution)
    82                 s+="   %15s : %s\n" % ('solver',self.solver)
    83                 s+="   %15s : %s\n" % ('convergence',self.convergence)
    84                 s+="   %15s : %s\n" % ('control',self.control)
    85                 s+="   %15s : %s\n" % ('qmu',self.qmu)
    86                 s+="   %15s : %s\n" % ('autodiff',self.autodiff)
    87                 s+="   %15s : %s\n" % ('smb',self.smb)
    88                 #ENDDISP
     67            #Cast to logicals
     68            listproperties = vars(self)
     69            for fieldname, fieldvalue in list(listproperties.items()):
     70                if isinstance(fieldvalue, bool) or isinstance(fieldvalue, (int, float)):
     71                    setattr(self, fieldname, bool(fieldvalue))
     72                else:
     73                    raise TypeError("verbose supported field values are logicals only (True or False)")
     74    # }}}
    8975
    90                 return s
    91         # }}}
    92         def VerboseToBinary(self):    # {{{
     76    def __repr__(self):  # {{{
    9377
    94                 #BEGINVERB2BIN
    95                 binary=0
    96                 if self.mprocessor:
    97                         binary=binary |  1
    98                 if self.module:
    99                         binary=binary |  2
    100                 if self.solution:
    101                         binary=binary |  4
    102                 if self.solver:
    103                         binary=binary |  8
    104                 if self.convergence:
    105                         binary=binary | 16
    106                 if self.control:
    107                         binary=binary | 32
    108                 if self.qmu:
    109                         binary=binary | 64
    110                 if self.autodiff:
    111                         binary=binary | 128
    112                 if self.smb:
    113                         binary=binary | 256
    114                 #ENDVERB2BIN
     78        #BEGINDISP
     79        s = "class '%s' = \n" % type(self)
     80        s += "   %15s : %s\n" % ('mprocessor', self.mprocessor)
     81        s += "   %15s : %s\n" % ('module', self.module)
     82        s += "   %15s : %s\n" % ('solution', self.solution)
     83        s += "   %15s : %s\n" % ('solver', self.solver)
     84        s += "   %15s : %s\n" % ('convergence', self.convergence)
     85        s += "   %15s : %s\n" % ('control', self.control)
     86        s += "   %15s : %s\n" % ('qmu', self.qmu)
     87        s += "   %15s : %s\n" % ('autodiff', self.autodiff)
     88        s += "   %15s : %s\n" % ('smb', self.smb)
     89        #ENDDISP
    11590
    116                 return binary
    117         # }}}
    118         def BinaryToVerbose(self,binary):    # {{{
     91        return s
     92    # }}}
    11993
    120                 #BEGINBIN2VERB
    121                 self.mprocessor =bool(binary &   1)
    122                 self.module     =bool(binary &   2)
    123                 self.solution   =bool(binary &   4)
    124                 self.solver     =bool(binary &   8)
    125                 self.convergence=bool(binary &  16)
    126                 self.control    =bool(binary &  32)
    127                 self.qmu        =bool(binary &  64)
    128                 self.autodiff   =bool(binary & 128)
    129                 self.smb        =bool(binary & 256)
    130                 #ENDBIN2VERB
    131         # }}}
    132         def checkconsistency(self,md,solution,analyses):    # {{{
    133                 return md
    134         # }}}
    135         def marshall(self,prefix,md,fid):    # {{{
    136                 WriteData(fid,prefix,'data',self.VerboseToBinary(),'name','md.verbose','format','Integer')
    137         # }}}
     94    def VerboseToBinary(self):  # {{{
     95        #BEGINVERB2BIN
     96        binary = 0
     97        if self.mprocessor:
     98            binary = binary | 1
     99        if self.module:
     100            binary = binary | 2
     101        if self.solution:
     102            binary = binary | 4
     103        if self.solver:
     104            binary = binary | 8
     105        if self.convergence:
     106            binary = binary | 16
     107        if self.control:
     108            binary = binary | 32
     109        if self.qmu:
     110            binary = binary | 64
     111        if self.autodiff:
     112            binary = binary | 128
     113        if self.smb:
     114            binary = binary | 256
     115        #ENDVERB2BIN
     116
     117        return binary
     118    # }}}
     119
     120    def BinaryToVerbose(self, binary):  # {{{
     121
     122        #BEGINBIN2VERB
     123        self.mprocessor = bool(binary & 1)
     124        self.module = bool(binary & 2)
     125        self.solution = bool(binary & 4)
     126        self.solver = bool(binary & 8)
     127        self.convergence = bool(binary & 16)
     128        self.control = bool(binary & 32)
     129        self.qmu = bool(binary & 64)
     130        self.autodiff = bool(binary & 128)
     131        self.smb = bool(binary & 256)
     132    #ENDBIN2VERB
     133    # }}}
     134
     135    def checkconsistency(self, md, solution, analyses):  # {{{
     136        return md
     137    # }}}
     138
     139    def marshall(self, prefix, md, fid):  # {{{
     140        WriteData(fid, prefix, 'data', self.VerboseToBinary(), 'name', 'md.verbose', 'format', 'Integer')
     141    # }}}
  • issm/trunk-jpl/src/m/consistency/QueueRequirements.py

    r19157 r24213  
    1 def QueueRequirements(queudict,queue,np,time):
    2         #QUEUEREQUIREMENTS - queue requirements in time, number of cpus, by name of queue.
    3         #
    4         #   Usage:
    5         #      QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,np,time)
     1def QueueRequirements(queudict, queue, np, time):
     2    #QUEUEREQUIREMENTS - queue requirements in time, number of cpus, by name of queue.
     3    #
     4    #   Usage:
     5    #      QueueRequirements(available_queues, queue_requirements_time, queue_requirements_np, np, time)
    66
    7         #Ok, go through requirements for current queue:
    8         try:
    9                 rtime=queudict[queue][0]
    10         except KeyError:
    11                 raise Exception('QueueRequirements error message: availables queues are '+ queuedict.keys)
    12                
    13         if time<=0:
    14                 raise Exception('QueueRequirements: time should be a positive number')
    15         if time>rtime:
    16                 raise Exception('QueueRequirements: time should be < '+ str(rtime)+ ' for queue: '+ queue)
     7    #Ok, go through requirements for current queue:
     8    try:
     9        rtime = queudict[queue][0]
     10    except KeyError:
     11        raise Exception('QueueRequirements error message: availables queues are ' + queudict.keys)
    1712
    18         #check on np requirements
    19         if np<=0:
    20                 raise Exception('QueueRequirements: np should be a positive number')
     13    if time <= 0:
     14        raise Exception('QueueRequirements: time should be a positive number')
     15    if time > rtime:
     16        raise Exception('QueueRequirements: time should be < ' + str(rtime) + ' for queue: ' + queue)
     17
     18    #check on np requirements
     19    if np <= 0:
     20        raise Exception('QueueRequirements: np should be a positive number')
  • issm/trunk-jpl/src/m/consistency/checkfield.py

    r23784 r24213  
    11import numpy as np
    22import os
    3 from re import findall,split
     3from re import findall, split
    44from pairoptions import pairoptions
    55from operator import attrgetter
    66import MatlabFuncs as m
    77
    8 def checkfield(md,*args):
     8
     9def checkfield(md, *args):
    910    """
    1011    CHECKFIELD - check field consistency
     
    1617
    1718       Available options:
    18           - NaN: 1 if check that there is no NaN
    19           - size: [lines cols], NaN for non checked dimensions, or 'universal' for any input type (nodal, element, time series, etc)
    20           - >:  greater than provided value
    21           - >=: greater or equal to provided value
    22           - <:  smallerthan provided value
    23           - <=: smaller or equal to provided value
    24           - < vec:  smallerthan provided values on each vertex
    25           - timeseries: 1 if check time series consistency (size and time)
    26           - values: cell of strings or vector of acceptable values
    27           - numel: list of acceptable number of elements
    28           - cell: 1 if check that is cell
    29           - empty: 1 if check that non empty
    30           - message: overloaded error message
     19 - NaN: 1 if check that there is no NaN
     20 - size: [lines cols], NaN for non checked dimensions, or 'universal' for any input type (nodal, element, time series, etc)
     21 - > :  greater than provided value
     22 - >= : greater or equal to provided value
     23 - < :  smallerthan provided value
     24 - <=: smaller or equal to provided value
     25 - < vec:  smallerthan provided values on each vertex
     26 - timeseries: 1 if check time series consistency (size and time)
     27 - values: cell of strings or vector of acceptable values
     28 - numel: list of acceptable number of elements
     29 - cell: 1 if check that is cell
     30 - empty: 1 if check that non empty
     31 - message: overloaded error message
    3132
    3233       Usage:
    33           md = checkfield(md,fieldname,options);
     34          md = checkfield(md, fieldname, options)
    3435    """
    3536
    3637    #get options
    37     options=pairoptions(*args)
     38    options = pairoptions(*args)
    3839
    3940    #get field from model
    4041    if options.exist('field'):
    41         field=options.getfieldvalue('field')
    42         fieldname=options.getfieldvalue('fieldname','no fieldname')
     42        field = options.getfieldvalue('field')
     43        fieldname = options.getfieldvalue('fieldname', 'no fieldname')
    4344    else:
    44         fieldname=options.getfieldvalue('fieldname')
    45         fieldprefix=split(r'\[(.*?)\]',fieldname)[0]
    46         fieldindexes=findall(r'\[(.*?)\]',fieldname)
    47         field=attrgetter(fieldprefix)(md)
     45        fieldname = options.getfieldvalue('fieldname')
     46        fieldprefix = split(r'\[(.*?)\]', fieldname)[0]
     47        fieldindexes = findall(r'\[(.*?)\]', fieldname)
     48        field = attrgetter(fieldprefix)(md)
    4849        for index in fieldindexes:
    4950            try:
    50                 field=field[index.strip("\'")]
     51                field = field[index.strip("\'")]
    5152            except TypeError:
    52                 field=field[int(index)] #looking for an index and not a key
    53 
    54 # that works for py2
    55 #        exec("field=md.{}".format(fieldname))
    56 #        exec("field=md.{}".format(fieldname),namespace)
    57 
    58 
    59     if isinstance(field,(bool,int,float)):
    60         field=np.array([field])
     53                field = field[int(index)]  #looking for an index and not a key
     54
     55    # that works for py2
     56    #        exec("field = md.{}".format(fieldname))
     57    #        exec("field = md.{}".format(fieldname), namespace)
     58
     59    if isinstance(field, (bool, int, float)):
     60        field = np.array([field])
    6161
    6262    #check empty
    6363    if options.exist('empty'):
    6464        if not field:
    65             md = md.checkmessage(options.getfieldvalue('message',
    66                 "field '%s' is empty" % fieldname))
     65            md = md.checkmessage(options.getfieldvalue('message', "field '{}' is empty".format(fieldname)))
    6766
    6867    #Check size
    6968    if options.exist('size'):
    70         fieldsize=options.getfieldvalue('size')
     69        fieldsize = options.getfieldvalue('size')
    7170        if type(fieldsize) == str:
    72             if m.strcmp(fieldsize,'universal'):
     71            if m.strcmp(fieldsize, 'universal'):
    7372
    7473                #Check that vector size will not be confusing for ModelProcessorx
    75                 if (md.mesh.numberofvertices==md.mesh.numberofelements):
     74                if (md.mesh.numberofvertices == md.mesh.numberofelements):
    7675                    raise RuntimeError('number of vertices is the same as number of elements')
    77                 elif (md.mesh.numberofvertices+1==md.mesh.numberofelements):
    78                     raise RuntimeError('number of vertices +1 is the same as number of elements')
    79                 elif (md.mesh.numberofvertices==md.mesh.numberofelements+1):
    80                     raise RuntimeError('number of vertices is the same as number of elements +1')
    81                
     76                elif (md.mesh.numberofvertices + 1 == md.mesh.numberofelements):
     77                    raise RuntimeError('number of vertices + 1 is the same as number of elements')
     78                elif (md.mesh.numberofvertices == md.mesh.numberofelements + 1):
     79                    raise RuntimeError('number of vertices is the same as number of elements + 1')
     80
    8281                #Uniform field
    83                 if (np.size(field,0)==1):
    84                     if (np.shape(field)[1]!=1):
    85                         md = md.checkmessage(options.getfieldvalue('message',"field '{}' is not supported".format(fieldname)))
     82                if (np.size(field, 0) == 1):
     83                    if (np.shape(field)[1] != 1):
     84                        md = md.checkmessage(options.getfieldvalue('message', "field '{}' is not supported".format(fieldname)))
    8685
    8786                #vertex oriented input, only one column allowed
    88                 elif (np.shape(field)[0]==md.mesh.numberofvertices):
    89                     if (np.shape(field)[1]!=1):
    90                         md = md.checkmessage(options.getfieldvalue('message',"field '{}' is not supported".format(fieldname)))
    91 
    92                 #element oriented input, one or more column (patch) is ok
    93                 elif (np.shape(field)[0]==md.mesh.numberofelements):
     87                elif (np.shape(field)[0] == md.mesh.numberofvertices):
     88                    if (np.shape(field)[1] != 1):
     89                        md = md.checkmessage(options.getfieldvalue('message', "field '{}' is not supported".format(fieldname)))
     90
     91                #element oriented input, one or more column (patch) is ok
     92                elif (np.shape(field)[0] == md.mesh.numberofelements):
     93                    #nothing to do here (either constant per element, or defined on nodes)
    9494                    pass
    95                     #nothing to do here (either constant per element, or defined on nodes)
    9695
    9796                #vertex time series
    98                 elif (np.shape(field)[0]==md.mesh.numberofvertices+1):
    99                     if (np.shape(field)[1]<=1):
    100                         md = md.checkmessage(options.getfieldvalue('message',"field '{}' is not supported".format(fieldname)))
     97                elif (np.shape(field)[0] == md.mesh.numberofvertices + 1):
     98                    if (np.shape(field)[1] <= 1):
     99                        md = md.checkmessage(options.getfieldvalue('message', "field '{}' is not supported".format(fieldname)))
    101100
    102101                #element time series
    103                 elif (np.shape(field)[0]==md.mesh.numberofelements+1):
    104                     if (np.shape(field)[1]<=1):
    105                         md = md.checkmessage(options.getfieldvalue('message',"field '{}' is not supported".format(fieldname)))
     102                elif (np.shape(field)[0] == md.mesh.numberofelements + 1):
     103                    if (np.shape(field)[1] <= 1):
     104                        md = md.checkmessage(options.getfieldvalue('message', "field '{}' is not supported".format(fieldname)))
    106105
    107106                #else not supported
    108107                else:
    109                     md = md.checkmessage(options.getfieldvalue('message',"field '{}' is not supported".format(fieldname)))
     108                    md = md.checkmessage(options.getfieldvalue('message', "field '{}' is not supported".format(fieldname)))
    110109
    111110            else:
     
    114113        else:
    115114            if len(np.shape(field)) < len(fieldsize):
    116                     md = md.checkmessage(options.getfieldvalue('message',"field {} has size {} but should be size {}".format(fieldname,np.shape(field),fieldsize)))
     115                md = md.checkmessage(options.getfieldvalue('message', "field {} has size {} but should be size {}".format(fieldname, np.shape(field), fieldsize)))
    117116            else:
    118117                for i in range(np.size(fieldsize)):
    119118                    if (not np.isnan(fieldsize[i])) and (np.shape(field)[i] != fieldsize[i]):
    120                         md = md.checkmessage(options.getfieldvalue('message',"field {} dimension # {} should be of size {}".format(fieldname,i,fieldsize[i])))
     119                        md = md.checkmessage(options.getfieldvalue('message', "field {} dimension  # {} should be of size {}".format(fieldname, i, fieldsize[i])))
    121120
    122121    #Check numel
    123122    if options.exist('numel'):
    124         fieldnumel=options.getfieldvalue('numel')
     123        fieldnumel = options.getfieldvalue('numel')
    125124        if (type(fieldnumel) == int and np.size(field) != fieldnumel) or (type(fieldnumel) == list and np.size(field) not in fieldnumel):
    126             if   len(fieldnumel)==1:
    127                 md = md.checkmessage(options.getfieldvalue('message',\
    128                     "field '%s' size should be %d" % (fieldname,fieldnumel)))
    129             elif len(fieldnumel)==2:
    130                 md = md.checkmessage(options.getfieldvalue('message',\
    131                     "field '%s' size should be %d or %d" % (fieldname,fieldnumel[0],fieldnumel[1])))
    132             else:
    133                 md = md.checkmessage(options.getfieldvalue('message',\
    134                     "field '%s' size should be %s" % (fieldname,fieldnumel)))
     125            if len(fieldnumel) == 1:
     126                md = md.checkmessage(options.getfieldvalue('message', "field '{}' size should be {}".format(fieldname, fieldnumel)))
     127            elif len(fieldnumel) == 2:
     128                md = md.checkmessage(options.getfieldvalue('message', "field '{}' size should be {} or {}".format(fieldname, fieldnumel[0], fieldnumel[1])))
     129            else:
     130                md = md.checkmessage(options.getfieldvalue('message', "field '{}' size should be {}".format(fieldname, fieldnumel)))
    135131
    136132    #check NaN
    137     if options.getfieldvalue('NaN',0):
     133    if options.getfieldvalue('NaN', 0):
    138134        if np.any(np.isnan(field)):
    139             md = md.checkmessage(options.getfieldvalue('message',\
    140                 "NaN values found in field '%s'" % fieldname))
    141 
     135            md = md.checkmessage(options.getfieldvalue('message', "NaN values found in field '{}'".format(fieldname)))
    142136
    143137    #check Inf
    144     if options.getfieldvalue('Inf',0):
     138    if options.getfieldvalue('Inf', 0):
    145139        if np.any(np.isinf(field)):
    146             md = md.checkmessage(options.getfieldvalue('message',\
    147                 "Inf values found in field '%s'" % fieldname))
    148 
     140            md = md.checkmessage(options.getfieldvalue('message', "Inf values found in field '{}'".format(fieldname)))
    149141
    150142    #check cell
    151     if options.getfieldvalue('cell',0):
    152         if not isinstance(field,(tuple,list,dict)):
    153             md = md.checkmessage(options.getfieldvalue('message',\
    154                 "field '%s' should be a cell" % fieldname))
     143    if options.getfieldvalue('cell', 0):
     144        if not isinstance(field, (tuple, list, dict)):
     145            md = md.checkmessage(options.getfieldvalue('message', "field '{}' should be a cell".format(fieldname)))
    155146
    156147    #check values
    157148    if options.exist('values'):
    158         fieldvalues=options.getfieldvalue('values')
    159         if False in m.ismember(field,fieldvalues):
    160             if   len(fieldvalues)==1:
    161                 md = md.checkmessage(options.getfieldvalue('message',\
    162                     "field '%s' value should be '%s'"  % (fieldname,fieldvalues[0])))
    163             elif len(fieldvalues)==2:
    164                 md = md.checkmessage(options.getfieldvalue('message',\
    165                     "field '%s' values should be '%s' or '%s'"  % (fieldname,fieldvalues[0],fieldvalues[1])))
    166             else:
    167                 md = md.checkmessage(options.getfieldvalue('message',\
    168                     "field '%s' should have values in %s" % (fieldname,fieldvalues)))
     149        fieldvalues = options.getfieldvalue('values')
     150        if False in m.ismember(field, fieldvalues):
     151            if len(fieldvalues) == 1:
     152                md = md.checkmessage(options.getfieldvalue('message', "field '{}' value should be '{}'".format(fieldname, fieldvalues[0])))
     153            elif len(fieldvalues) == 2:
     154                md = md.checkmessage(options.getfieldvalue('message', "field '{}' values should be '{}' or '%s'".format(fieldname, fieldvalues[0], fieldvalues[1])))
     155            else:
     156                md = md.checkmessage(options.getfieldvalue('message', "field '{}' should have values in {}".format(fieldname, fieldvalues)))
    169157
    170158    #check greater
     
    172160        lowerbound = options.getfieldvalue('>=')
    173161        if type(lowerbound) is str:
    174             lowerbound=attrgetter(lowerbound)(md)
    175         if np.size(lowerbound)>1: #checking elementwise
    176             if any(field<upperbound):
    177                 md = md.checkmessage(options.getfieldvalue('message',"field '%s' should have values below %d" % (fieldname,upperbound)))
    178         else:
    179             minval=np.nanmin(field)
    180             if options.getfieldvalue('timeseries',0):
    181                 minval=np.nanmin(field[:-1])
    182             elif options.getfieldvalue('singletimeseries',0):
    183                 if np.size(field)==1: #some singletimeseries are just one value
    184                     minval=field
    185                 else:
    186                     minval=np.nanmin(field[0])
    187 
    188             if minval<lowerbound:
    189                 md = md.checkmessage(options.getfieldvalue('message',"field '%s' should have values above %d" % (fieldname,lowerbound)))
     162            lowerbound = attrgetter(lowerbound)(md)
     163        if np.size(lowerbound) > 1: #checking elementwise
     164            if any(field < lowerbound):
     165                md = md.checkmessage(options.getfieldvalue('message', "field '%s' should have values above %d" % (fieldname, lowerbound)))
     166        else:
     167            minval = np.nanmin(field)
     168            if options.getfieldvalue('timeseries', 0):
     169                minval = np.nanmin(field[: - 1])
     170            elif options.getfieldvalue('singletimeseries', 0):
     171                if np.size(field) == 1: #some singletimeseries are just one value
     172                    minval = field
     173                else:
     174                    minval = np.nanmin(field[0])
     175
     176            if minval < lowerbound:
     177                md = md.checkmessage(options.getfieldvalue('message', "field '%s' should have values above %d" % (fieldname, lowerbound)))
    190178
    191179    if options.exist('>'):
    192         lowerbound=options.getfieldvalue('>')
     180        lowerbound = options.getfieldvalue('>')
    193181        if type(lowerbound) is str:
    194             lowerbound=attrgetter(lowerbound)(md)
    195         if np.size(lowerbound)>1: #checking elementwise
    196             if any(field<=upperbound):
    197                 md = md.checkmessage(options.getfieldvalue('message',"field '%s' should have values below %d" % (fieldname,upperbound)))
    198         else:
    199             minval=np.nanmin(field)
    200             if options.getfieldvalue('timeseries',0) :
    201                 minval=np.nanmin(field[:-1])
    202             elif options.getfieldvalue('singletimeseries',0):
    203                 if np.size(field)==1: #some singletimeseries are just one value
    204                     minval=field
    205                 else:
    206                     minval=np.nanmin(field[0])
    207 
    208             if minval<=lowerbound:
    209                 md = md.checkmessage(options.getfieldvalue('message',"field '%s' should have values above %d" % (fieldname,lowerbound)))
     182            lowerbound = attrgetter(lowerbound)(md)
     183        if np.size(lowerbound) > 1: #checking elementwise
     184            if any(field <= lowerbound):
     185                md = md.checkmessage(options.getfieldvalue('message', "field '%s' should have values above %d" % (fieldname, lowerbound)))
     186        else:
     187            minval = np.nanmin(field)
     188            if options.getfieldvalue('timeseries', 0):
     189                minval = np.nanmin(field[: - 1])
     190            elif options.getfieldvalue('singletimeseries', 0):
     191                if np.size(field) == 1: #some singletimeseries are just one value
     192                    minval = field
     193                else:
     194                    minval = np.nanmin(field[0])
     195
     196            if minval <= lowerbound:
     197                md = md.checkmessage(options.getfieldvalue('message', "field '%s' should have values above %d" % (fieldname, lowerbound)))
    210198
    211199    #check smaller
    212200    if options.exist('<='):
    213         upperbound=options.getfieldvalue('<=')
     201        upperbound = options.getfieldvalue('<=')
    214202        if type(upperbound) is str:
    215             upperbound=attrgetter(upperbound)(md)
    216         if np.size(upperbound)>1: #checking elementwise
    217             if any(field>upperbound):
    218                 md = md.checkmessage(options.getfieldvalue('message',"field '%s' should have values below %d" % (fieldname,upperbound)))
    219         else:
    220             maxval=np.nanmax(field)
    221             if options.getfieldvalue('timeseries',0):
    222                 maxval=np.nanmax(field[:-1])
    223             elif  options.getfieldvalue('singletimeseries',0):
    224                 if np.size(field)==1: #some singletimeseries are just one value
    225                     maxval=field
    226                 else:
    227                     maxval=np.nanmax(field[0])
     203            upperbound = attrgetter(upperbound)(md)
     204        if np.size(upperbound) > 1: #checking elementwise
     205            if any(field > upperbound):
     206                md = md.checkmessage(options.getfieldvalue('message', "field '%s' should have values below %d" % (fieldname, upperbound)))
     207        else:
     208            maxval = np.nanmax(field)
     209            if options.getfieldvalue('timeseries', 0):
     210                maxval = np.nanmax(field[: - 1])
     211            elif options.getfieldvalue('singletimeseries', 0):
     212                if np.size(field) == 1: #some singletimeseries are just one value
     213                    maxval = field
     214                else:
     215                    maxval = np.nanmax(field[0])
    228216            elif hasattr(field, 'fov_forward_indices'):
    229                 maxval=field.fov_forward_indices[0]
    230             if maxval>upperbound:
    231                 md = md.checkmessage(options.getfieldvalue('message',"field '%s' should have values below %d" % (fieldname,upperbound)))
     217                maxval = field.fov_forward_indices[0]
     218            if maxval > upperbound:
     219                md = md.checkmessage(options.getfieldvalue('message', "field '%s' should have values below %d" % (fieldname, upperbound)))
    232220
    233221    if options.exist('<'):
    234         upperbound=options.getfieldvalue('<')
     222        upperbound = options.getfieldvalue('<')
    235223        if type(upperbound) is str:
    236             upperbound=attrgetter(upperbound)(md)
    237         if np.size(upperbound)>1: #checking elementwise
    238             if any(field>=upperbound):
    239                 md = md.checkmessage(options.getfieldvalue('message',"field '%s' should have values below %d" % (fieldname,upperbound)))
    240 
    241         else:
    242             maxval=np.nanmax(field)
    243             if options.getfieldvalue('timeseries',0):
    244                 maxval=np.nanmax(field[:-1])
    245             elif options.getfieldvalue('singletimeseries',0):
    246                 if np.size(field)==1: #some singletimeseries are just one value
    247                     maxval=field.copy()
    248                 else:
    249                     maxval=np.nanmax(field[0])
    250 
    251                 if maxval>=upperbound:
    252                     md = md.checkmessage(options.getfieldvalue('message',"field '%s' should have values below %d" % (fieldname,upperbound)))
     224            upperbound = attrgetter(upperbound)(md)
     225        if np.size(upperbound) > 1: #checking elementwise
     226            if any(field >= upperbound):
     227                md = md.checkmessage(options.getfieldvalue('message', "field '%s' should have values below %d" % (fieldname, upperbound)))
     228
     229        else:
     230            maxval = np.nanmax(field)
     231            if options.getfieldvalue('timeseries', 0):
     232                maxval = np.nanmax(field[: - 1])
     233            elif options.getfieldvalue('singletimeseries', 0):
     234                if np.size(field) == 1: #some singletimeseries are just one value
     235                    maxval = field.copy()
     236                else:
     237                    maxval = np.nanmax(field[0])
     238
     239                if maxval >= upperbound:
     240                    md = md.checkmessage(options.getfieldvalue('message', "field '%s' should have values below %d" % (fieldname, upperbound)))
    253241
    254242    #check file
    255     if options.getfieldvalue('file',0):
     243    if options.getfieldvalue('file', 0):
    256244        if not os.path.exists(field):
    257             md = md.checkmessage("file provided in '%s': '%s' does not exist" % (fieldname,field))
     245            md = md.checkmessage("file provided in '%s': '%s' does not exist" % (fieldname, field))
    258246
    259247    #Check row of strings
    260248    if options.exist('stringrow'):
    261         if not isinstance(field,list):
    262             md = md.checkmessage(options.getfieldvalue('message',\
    263                     "field '%s' should be a list" %fieldname))
     249        if not isinstance(field, list):
     250            md = md.checkmessage(options.getfieldvalue('message', "field '%s' should be a list" % fieldname))
    264251
    265252    #Check forcings (size and times)
    266     if options.getfieldvalue('timeseries',0):
    267         if np.size(field,0)==md.mesh.numberofvertices or np.size(field,0)==md.mesh.numberofelements:
    268             if np.ndim(field)>1 and not np.size(field,1)==1:
    269                 md = md.checkmessage(options.getfieldvalue('message',\
    270                     "field '%s' should have only one column as there are md.mesh.numberofvertices lines" % fieldname))
    271         elif np.size(field,0)==md.mesh.numberofvertices+1 or np.size(field,0)==md.mesh.numberofelements+1:
    272             if np.ndim(field) > 1 and not all(field[-1,:]==np.sort(field[-1,:])):
    273                 md = md.checkmessage(options.getfieldvalue('message',\
    274                     "field '%s' columns should be sorted chronologically" % fieldname))
    275             if np.ndim(field) > 1 and any(field[-1,0:-1]==field[-1,1:]):
    276                 md = md.checkmessage(options.getfieldvalue('message',\
    277                     "field '%s' columns must not contain duplicate timesteps" % fieldname))
    278         else:
    279             md = md.checkmessage(options.getfieldvalue('message',\
    280                 "field '%s' should have md.mesh.numberofvertices or md.mesh.numberofvertices+1 lines" % fieldname))
     253    if options.getfieldvalue('timeseries', 0):
     254        if np.size(field, 0) == md.mesh.numberofvertices or np.size(field, 0) == md.mesh.numberofelements:
     255            if np.ndim(field) > 1 and not np.size(field, 1) == 1:
     256                md = md.checkmessage(options.getfieldvalue('message', "field '%s' should have only one column as there are md.mesh.numberofvertices lines" % fieldname))
     257        elif np.size(field, 0) == md.mesh.numberofvertices + 1 or np.size(field, 0) == md.mesh.numberofelements + 1:
     258            if np.ndim(field) > 1 and not all(field[-1, :] == np.sort(field[-1, :])):
     259                md = md.checkmessage(options.getfieldvalue('message', "field '%s' columns should be sorted chronologically" % fieldname))
     260            if np.ndim(field) > 1 and any(field[-1, 0:-1] == field[-1, 1:]):
     261                md = md.checkmessage(options.getfieldvalue('message', "field '%s' columns must not contain duplicate timesteps" % fieldname))
     262        else:
     263            md = md.checkmessage(options.getfieldvalue('message', "field '%s' should have md.mesh.numberofvertices or md.mesh.numberofvertices + 1 lines" % fieldname))
    281264
    282265    #Check single value forcings (size and times)
    283     if options.getfieldvalue('singletimeseries',0):
    284         if np.size(field,0)==2:
    285             if not all(field[-1,:]==np.sort(field[-1,:])):
    286                 md = md.checkmessage(options.getfieldvalue('message',\
    287                         "field '%s' columns should be sorted chronologically" % fieldname))
    288             if any(field[-1,0:-1]==field[-1,1:]):
    289                 md = md.checkmessage(options.getfieldvalue('message',\
    290                         "field '%s' columns must not contain duplicate timesteps" % fieldname))
    291         elif np.size(field,0) == 1:
    292             if np.ndim(field) > 1 and not np.size(field,1) == 1:
    293                 md = md.checkmessage(options.getfieldvalue('message',\
    294                 "field '%s' should be either a scalar or have 2 lines" % fieldname))
    295         else:
    296                 md = md.checkmessage(options.getfieldvalue('message',\
    297                 "field '%s' should have 2 lines or be a scalar" % fieldname))
     266    if options.getfieldvalue('singletimeseries', 0):
     267        if np.size(field, 0) == 2:
     268            if not all(field[-1, :] == np.sort(field[-1, :])):
     269                md = md.checkmessage(options.getfieldvalue('message', "field '%s' columns should be sorted chronologically" % fieldname))
     270            if any(field[-1, 0:-1] == field[-1, 1:]):
     271                md = md.checkmessage(options.getfieldvalue('message', "field '%s' columns must not contain duplicate timesteps" % fieldname))
     272        elif np.size(field, 0) == 1:
     273            if np.ndim(field) > 1 and not np.size(field, 1) == 1:
     274                md = md.checkmessage(options.getfieldvalue('message', "field '%s' should be either a scalar or have 2 lines" % fieldname))
     275        else:
     276            md = md.checkmessage(options.getfieldvalue('message', "field '%s' should have 2 lines or be a scalar" % fieldname))
    298277
    299278    return md
  • issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.m

    r23935 r24213  
    3939
    4040function [analyses]=AnalysisConfiguration(solutiontype), % {{{
    41 %ANALYSISCONFIGURATION - return type of analyses, number of analyses 
     41%ANALYSISCONFIGURATION - return type of analyses, number of analyses
    4242%
    4343%   Usage:
     
    7171                analyses={'EsaAnalysis'};
    7272        elseif strcmp(solutiontype,'TransientSolution')
    73                 analyses={'StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis','EnthalpyAnalysis','MasstransportAnalysis','HydrologyShaktiAnalysis','HydrologyGladsAnalysis'};
     73                analyses={'StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis','EnthalpyAnalysis','MasstransportAnalysis','HydrologyShaktiAnalysis','HydrologyGladsAnalysis','HydrologyDCInefficientAnalysis','HydrologyDCEfficientAnalysis'};
    7474        elseif strcmp(solutiontype,'SealevelriseSolution')
    7575                analyses={'SealevelriseAnalysis'};
  • issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.py

    r23935 r24213  
    44
    55            Usage:
    6                     [analyses]=AnalysisConfiguration(solutiontype);
     6                    [analyses] = AnalysisConfiguration(solutiontype)
    77    """
    88
     
    2828        analyses = ['LoveAnalysis']
    2929    elif solutiontype == 'TransientSolution':
    30         analyses = ['StressbalanceAnalysis', 'StressbalanceVerticalAnalysis', 'StressbalanceSIAAnalysis', 'L2ProjectionBaseAnalysis', 'ThermalAnalysis', 'MeltingAnalysis', 'EnthalpyAnalysis', 'MasstransportAnalysis','HydrologyShaktiAnalysis','HydrologyGladsAnalysis']
     30        analyses = ['StressbalanceAnalysis', 'StressbalanceVerticalAnalysis', 'StressbalanceSIAAnalysis', 'L2ProjectionBaseAnalysis', 'ThermalAnalysis', 'MeltingAnalysis', 'EnthalpyAnalysis', 'MasstransportAnalysis', 'HydrologyShaktiAnalysis', 'HydrologyGladsAnalysis', 'HydrologyDCInefficientAnalysis', 'HydrologyDCEfficientAnalysis']
    3131    elif solutiontype == 'HydrologySolution':
    3232        analyses = ['L2ProjectionBaseAnalysis', 'HydrologyShreveAnalysis', 'HydrologyDCInefficientAnalysis', 'HydrologyDCEfficientAnalysis']
     
    3838
    3939    return analyses
    40 #}}}
     40    #}}}
    4141
    4242
     
    5555    solution = md.private.solution
    5656    analyses = AnalysisConfiguration(solution)
    57 
    58     #Go through a model fields,  check that it is a class,  and call checkconsistency
     57    #Go through a model fields, check that it is a class, and call checkconsistency
    5958    #fields = vars(md)
    6059    #for field in fields.iterkeys():
    6160    for field in md.properties():
    62 
    6361        #Some properties do not need to be checked
    6462        if field in ['results', 'debug', 'radaroverlay']:
     
    7068
    7169        #Check consistency of the object
    72         exec("md.{}.checkconsistency(md, solution, analyses)".format(field))
     70        exec("md.{}.checkconsistency(md, '{}', {})".format(field, solution, analyses))
    7371
    7472    #error message if mode is not consistent
    7573    if not md.private.isconsistent:
    76         raise RuntimeError('Model not consistent,  see messages above.')
     74        raise RuntimeError('Model not consistent, see messages above.')
  • issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py

    r23870 r24213  
    2727    dimindex = 1
    2828    dimlist = [2, md.mesh.numberofelements, md.mesh.numberofvertices, np.shape(md.mesh.elements)[1]]
    29     print('===Creating dimensions===')
     29    print(' == =Creating dimensions == = ')
    3030    for i in range(0, 4):
    3131        if dimlist[i] not in list(DimDict.keys()):
     
    3838    groups = dict.keys(md.__dict__)
    3939    # get all model classes and create respective groups
    40     print('===Creating and populating groups===')
     40    print(' == =Creating and populating groups == = ')
    4141    for group in groups:
    4242        NCgroup = NCData.createGroup(str(group))
    43         # In each group gather the fields of the class
     43    # In each group gather the fields of the class
    4444        fields = dict.keys(md.__dict__[group].__dict__)
    45         # looping on fields
     45    # looping on fields
    4646        for field in fields:
    4747            # Special treatment for list fields
     
    8080                                    Var = md.__dict__[group].__dict__[field].__getitem__(listindex)[subfield]
    8181                                DimDict = CreateVar(NCData, Var, subfield, Listgroup, DimDict, md.__dict__[group], field, listindex)
    82             # No subgroup, we directly treat the variable
     82    # No subgroup, we directly treat the variable
    8383            elif type(md.__dict__[group].__dict__[field]) in typelist or field == 'bamg':
    8484                NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
     
    8787            elif md.__dict__[group].__dict__[field] is None:
    8888                print('field md.{}.{} is None'.format(group, field))
    89                 # do nothing
    90                 # if it is a masked array
     89    # do nothing
     90    # if it is a masked array
    9191            elif type(md.__dict__[group].__dict__[field]) is np.ma.core.MaskedArray:
    9292                NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
     
    104104    NCData.close()
    105105
    106 # ============================================================================
    107 # Define the variables
    108 
    109 
    110 def CreateVar(NCData, var, field, Group, DimDict, *step_args):
     106    # == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == ==
     107    # Define the variables
     108
     109
     110def CreateVar(NCData, var, field, Group, DimDict, * step_args):
    111111    # grab type
    112112    try:
     
    136136    elif val_type == list:
    137137        dimensions, DimDict = GetDim(NCData, val_shape, val_type, DimDict, val_dim)
    138         # try to get the type from the first element
     138    # try to get the type from the first element
    139139        try:
    140140            nctype = TypeDict[type(var[0])]
     
    176176    return DimDict
    177177
    178 # ============================================================================
    179 # retriev the dimension tuple from a dictionnary
     178    # == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == ==
     179    # retriev the dimension tuple from a dictionnary
    180180
    181181
  • issm/trunk-jpl/src/m/contrib/defleurian/netCDF/read_netCDF.py

    r23772 r24213  
    11from netCDF4 import Dataset
     2from os import path
     3
    24
    35def netCDFRead(filename):
    4         def walktree(data):
    5             keys = list(data.groups.keys())
    6             yield keys
    7             for key in keys:
    8                     for children in walktree(data.groups[str(key)]):
    9                             yield children
     6    def walktree(data):
     7        keys = list(data.groups.keys())
     8        yield keys
     9        for key in keys:
     10            for children in walktree(data.groups[str(key)]):
     11                yield children
    1012
    11         if path.exists(filename):
    12                 print(('Opening {} for reading '.format(filename)))
    13                 NCData=Dataset(filename, 'r')
    14                 class_dict={}
     13    if path.exists(filename):
     14        print(('Opening {} for reading '.format(filename)))
     15        NCData = Dataset(filename, 'r')
     16        class_dict = {}
    1517
    16                 for children in walktree(NCData):
    17                         for child in children:
    18                                 class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype')+'()')
     18        for children in walktree(NCData):
     19            for child in children:
     20                class_dict[str(child)] = str(getattr(NCData.groups[str(child)], 'classtype') + '()')
    1921
    20                 print(class_dict)
     22        print(class_dict)
  • issm/trunk-jpl/src/m/contrib/defleurian/paraview/enveloppeVTK.py

    r23772 r24213  
    11import numpy as np
    22import os
    3 import model
    43import glob
    5 def enveloppeVTK(filename,model,*args):
    6         '''
    7         vtk export
    8         function exportVTK(filename,model)
    9         creates a directory with the vtk files for displays in paraview
    10         (only work for triangle and wedges based on their number of nodes)
    114
    12         Give only the results for nw but could be extended to geometry, mask...
    135
    14         input: filename   destination
    15         (string)
    16         ------------------------------------------------------------------
    17 model      this is md
    18         ------------------------------------------------------------------
    19         By default only the results are exported, you can add whichever
    20         field you need as a string:
    21         add 'geometry' to export md.geometry
     6def enveloppeVTK(filename, model, *args):
     7    '''
     8    vtk export
     9    function exportVTK(filename, model)
     10    creates a directory with the vtk files for displays in paraview
     11    (only work for triangle and wedges based on their number of nodes)
    2212
    23         Basile de Fleurian:
    24         '''
    25         Dir=os.path.basename(filename)
    26         Path=filename[:-len(Dir)]
     13    Give only the results for nw but could be extended to geometry, mask...
    2714
    28         if os.path.exists(filename):
    29                 print(('File {} allready exist'.format(filename)))
    30                 newname=input('Give a new name or "delete" to replace: ')
    31                 if newname=='delete':
    32                         filelist = glob.glob(filename+'/*')
    33                         for oldfile in filelist:
    34                                 os.remove(oldfile)
    35                 else:
    36                         print(('New file name is {}'.format(newname)))
    37                         filename=newname
    38                         os.mkdir(filename)
    39         else:
    40                 os.mkdir(filename)
     15    input: filename   destination
     16    (string)
     17     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     18    model      this is md
     19     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     20    By default only the results are exported, you can add whichever
     21    field you need as a string:
     22    add 'geometry' to export md.geometry
    4123
    42         # {{{get the element related variables
    43         if 'z' in dict.keys(model.mesh.__dict__):
    44                 is_enveloppe=np.logical_or(model.mesh.vertexonbase,model.mesh.vertexonsurface)
    45                 enveloppe_index=np.where(is_enveloppe)[0]
    46                 convert_index=np.nan*np.ones(np.shape(model.mesh.x))
    47                 convert_index=np.asarray([[i,np.where(enveloppe_index==i)[0][0]] for i,val in enumerate(convert_index) if any(enveloppe_index==i)])
    48                 points=np.column_stack((model.mesh.x[enveloppe_index],
    49                                                                                                                 model.mesh.y[enveloppe_index],
    50                                                                                                                 model.mesh.z[enveloppe_index]))
    51                 low_elt_num=np.size(np.where(np.isnan(model.mesh.lowerelements)))
    52                 top_elt_num=np.size(np.where(np.isnan(model.mesh.upperelements)))
    53                 num_of_elt=low_elt_num+top_elt_num
    54                 connect=model.mesh.elements[np.where(is_enveloppe[model.mesh.elements-1])].reshape(int(num_of_elt),3)-1
    55                 for elt in range(0, num_of_elt):
    56                         connect[elt,0]=convert_index[np.where(convert_index==connect[elt,0])[0],1][0]
    57                         connect[elt,1]=convert_index[np.where(convert_index==connect[elt,1])[0],1][0]
    58                         connect[elt,2]=convert_index[np.where(convert_index==connect[elt,2])[0],1][0]
     24    Basile de Fleurian:
     25    '''
     26    Dir = os.path.basename(filename)
     27    Path = filename[: - len(Dir)]
    5928
    60         else:
    61                 points=np.column_stack((model.mesh.x,
    62                                                                                                                 model.mesh.y,
    63                                                                                                                 np.zeros(np.shape(model.mesh.x))))
    64                 num_of_elt=np.shape(model.mesh.elements)[0]
    65                 connect=model.mesh.elements-1
    66                 enveloppe_index=np.arange(0,np.size(model.mesh.x))
     29    if os.path.exists(filename):
     30        print(('File {} allready exist'.format(filename)))
     31        newname = input('Give a new name or "delete" to replace: ')
     32        if newname == 'delete':
     33            filelist = glob.glob(filename + '/* ')
     34            for oldfile in filelist:
     35                os.remove(oldfile)
     36        else:
     37            print(('New file name is {}'.format(newname)))
     38            filename = newname
     39            os.mkdir(filename)
     40    else:
     41        os.mkdir(filename)
    6742
    68         every_nodes=np.size(model.mesh.x)
    69         num_of_points=np.size(enveloppe_index)
    70         dim=3
    71         point_per_elt=3
    72         celltype=5 #triangles
     43    # {{{get the element related variables
     44    if 'z' in dict.keys(model.mesh.__dict__):
     45        is_enveloppe = np.logical_or(model.mesh.vertexonbase, model.mesh.vertexonsurface)
     46        enveloppe_index = np.where(is_enveloppe)[0]
     47        convert_index = np.nan * np.ones(np.shape(model.mesh.x))
     48        convert_index = np.asarray([[i, np.where(enveloppe_index == i)[0][0]] for i, val in enumerate(convert_index) if any(enveloppe_index == i)])
     49        points = np.column_stack((model.mesh.x[enveloppe_index],
     50                                  model.mesh.y[enveloppe_index],
     51                                  model.mesh.z[enveloppe_index]))
     52        low_elt_num = np.size(np.where(np.isnan(model.mesh.lowerelements)))
     53        top_elt_num = np.size(np.where(np.isnan(model.mesh.upperelements)))
     54        num_of_elt = low_elt_num + top_elt_num
     55        connect = model.mesh.elements[np.where(is_enveloppe[model.mesh.elements - 1])].reshape(int(num_of_elt), 3) - 1
     56        for elt in range(0, num_of_elt):
     57            connect[elt, 0] = convert_index[np.where(convert_index == connect[elt, 0])[0], 1][0]
     58            connect[elt, 1] = convert_index[np.where(convert_index == connect[elt, 1])[0], 1][0]
     59            connect[elt, 2] = convert_index[np.where(convert_index == connect[elt, 2])[0], 1][0]
    7360
    74         # }}}
    75         # {{{this is the result structure
    76         res_struct=model.results
    77         if (len(res_struct.__dict__)>0):
    78                 #Getting all the solutions of the model
    79                 solnames=(dict.keys(res_struct.__dict__))
    80                 num_of_sols=len(solnames)
    81                 num_of_timesteps=1
    82                 #%building solutionstructure
    83                 for solution in solnames:
    84                         #looking for multiple time steps
    85                         if (np.size(res_struct.__dict__[solution])>num_of_timesteps):
    86                                 num_of_timesteps=np.size(res_struct.__dict__[solution])
    87                                 num_of_timesteps=int(num_of_timesteps)
    88         else:
    89                 num_of_timesteps=1
    90         # }}}
    91         # {{{write header and mesh
    92         for step in range(0,num_of_timesteps):
    93                 timestep=step
    94                 fid=open((filename +'/Timestep.vtk'+str(timestep)+'.vtk'),'w+')
    95                 fid.write('# vtk DataFile Version 2.0 \n')
    96                 fid.write('Data for run %s \n' % model.miscellaneous.name)
    97                 fid.write('ASCII \n')
    98                 fid.write('DATASET UNSTRUCTURED_GRID \n')
    99                 fid.write('POINTS %d float\n' % num_of_points)
    100                 for point in points:
    101                         fid.write('%f %f %f \n'%(point[0], point[1], point[2]))
     61    else:
     62        points = np.column_stack((model.mesh.x,
     63                                  model.mesh.y,
     64                                  np.zeros(np.shape(model.mesh.x))))
     65        num_of_elt = np.shape(model.mesh.elements)[0]
     66        connect = model.mesh.elements - 1
     67        enveloppe_index = np.arange(0, np.size(model.mesh.x))
    10268
    103                 fid.write('CELLS %d %d\n' %(num_of_elt, num_of_elt*(point_per_elt+1)))
     69    every_nodes = np.size(model.mesh.x)
     70    num_of_points = np.size(enveloppe_index)
     71    dim = 3
     72    point_per_elt = 3
     73    celltype = 5  #triangles
    10474
    105                 for elt in range(0, num_of_elt):
    106                         fid.write('3 %d %d %d\n' %(connect[elt,0],
    107                                                                                                                                  connect[elt,1],
    108                                                                                                                                  connect[elt,2]))
     75    # }}}
     76    # {{{this is the result structure
     77    res_struct = model.results
     78    if (len(res_struct.__dict__) > 0):
     79        #Getting all the solutions of the model
     80        solnames = (dict.keys(res_struct.__dict__))
     81        num_of_sols = len(solnames)
     82        num_of_timesteps = 1
     83        #%building solutionstructure
     84        for solution in solnames:
     85            #looking for multiple time steps
     86            if (np.size(res_struct.__dict__[solution]) > num_of_timesteps):
     87                num_of_timesteps = np.size(res_struct.__dict__[solution])
     88                num_of_timesteps = int(num_of_timesteps)
     89    else:
     90        num_of_timesteps = 1
     91    # }}}
     92    # {{{write header and mesh
     93    for step in range(0, num_of_timesteps):
     94        timestep = step
     95        fid = open((filename + '/Timestep.vtk' + str(timestep) + '.vtk'), 'w + ')
     96        fid.write('  # vtk DataFile Version 2.0 \n')
     97        fid.write('Data for run %s \n' % model.miscellaneous.name)
     98        fid.write('ASCII \n')
     99        fid.write('DATASET UNSTRUCTURED_GRID \n')
     100        fid.write('POINTS %d float\n' % num_of_points)
     101        for point in points:
     102            fid.write('%f %f %f \n' % (point[0], point[1], point[2]))
    109103
    110                 fid.write('CELL_TYPES %d\n' %num_of_elt)
    111                 for elt in range(0, num_of_elt):
    112                         fid.write('%d\n' %celltype)
     104        fid.write('CELLS %d %d\n' % (num_of_elt, num_of_elt * (point_per_elt + 1)))
    113105
    114                 fid.write('POINT_DATA %s \n' %str(num_of_points))
    115                 # }}}
    116                 # {{{loop over the different solution structures
    117                 if 'solnames' in locals():
    118                         for sol in solnames:
    119                                 #dealing with results on different timesteps
    120                                 if(np.size(res_struct.__dict__[sol])>timestep):
    121                                         timestep = step
    122                                 else:
    123                                         timestep = np.size(res_struct.__dict__[sol])
     106        for elt in range(0, num_of_elt):
     107            fid.write('3 %d %d %d\n' % (connect[elt, 0],
     108                                        connect[elt, 1],
     109                                        connect[elt, 2]))
    124110
    125                                 #getting the  fields in the solution
    126                                 if(type(res_struct.__dict__[sol])==list):
    127                                         fieldnames=dict.keys(res_struct.__dict__[sol].__getitem__(timestep).__dict__)
    128                                 else:
    129                                         fieldnames=dict.keys(res_struct.__dict__[sol].__dict__)
    130                                 #check which field is a real result and print
    131                                 for field in fieldnames:
    132                                         if(type(res_struct.__dict__[sol])==list):
    133                                                 fieldstruct=res_struct.__dict__[sol].__getitem__(timestep).__dict__[field]
    134                                         else:
    135                                                 fieldstruct=res_struct.__dict__[sol].__dict__[field]
     111        fid.write('CELL_TYPES %d\n' % num_of_elt)
     112        for elt in range(0, num_of_elt):
     113            fid.write('%d\n' % celltype)
    136114
    137                                         if ((np.size(fieldstruct))==every_nodes):
    138                                                 fid.write('SCALARS %s float 1 \n' % field)
    139                                                 fid.write('LOOKUP_TABLE default\n')
    140                                                 for node in range(0,num_of_points):
    141                                                         #paraview does not like NaN, replacing
    142                                                         if np.isnan(fieldstruct[enveloppe_index[node]]):
    143                                                                 fid.write('%e\n' % -9999.9999)
    144                                                         #also checking for verry small value that mess up
    145                                                         elif (abs(fieldstruct[enveloppe_index[node]])<1.0e-20):
    146                                                                 fid.write('%e\n' % 0.0)
    147                                                         else:
    148                                                                 fid.write('%e\n' % fieldstruct[enveloppe_index[node]])
    149                 # }}}
    150                 # {{{loop on arguments, if something other than result is asked, do it now
     115        fid.write('POINT_DATA %s \n' % str(num_of_points))
     116    # }}}
     117    # {{{loop over the different solution structures
     118        if 'solnames' in locals():
     119            for sol in solnames:
     120                #dealing with results on different timesteps
     121                if(np.size(res_struct.__dict__[sol]) > timestep):
     122                    timestep = step
     123                else:
     124                    timestep = np.size(res_struct.__dict__[sol])
    151125
    152                 for other in args:
    153                         other_struct=model.__dict__[other]
    154                         othernames=(dict.keys(other_struct.__dict__))
    155                         for field in othernames:
    156                                 if ((np.size(other_struct.__dict__[field]))==every_nodes):
    157                                         fid.write('SCALARS %s float 1 \n' % field)
    158                                         fid.write('LOOKUP_TABLE default\n')
    159                                         for node in range(0,num_of_points):
    160                                                 #paraview does not like NaN, replacing
    161                                                 if np.isnan(other_struct.__dict__[field][enveloppe_index[node]]):
    162                                                         fid.write('%e\n' % -9999.9999)
    163                                                 #also checking for verry small value that mess up
    164                                                 elif (abs(other_struct.__dict__[field][enveloppe_index[node]])<1.0e-20):
    165                                                         fid.write('%e\n' % 0.0)
    166                                                 else:
    167                                                         fid.write('%e\n' % other_struct.__dict__[field][enveloppe_index[node]])
     126    #getting the  fields in the solution
     127                if(type(res_struct.__dict__[sol]) == list):
     128                    fieldnames = dict.keys(res_struct.__dict__[sol].__getitem__(timestep).__dict__)
     129                else:
     130                    fieldnames = dict.keys(res_struct.__dict__[sol].__dict__)
     131    #check which field is a real result and print
     132                for field in fieldnames:
     133                    if(type(res_struct.__dict__[sol]) == list):
     134                        fieldstruct = res_struct.__dict__[sol].__getitem__(timestep).__dict__[field]
     135                    else:
     136                        fieldstruct = res_struct.__dict__[sol].__dict__[field]
    168137
    169                         # }}}
    170         fid.close();
     138                    if ((np.size(fieldstruct)) == every_nodes):
     139                        fid.write('SCALARS %s float 1 \n' % field)
     140                        fid.write('LOOKUP_TABLE default\n')
     141                        for node in range(0, num_of_points):
     142                            #paraview does not like NaN, replacing
     143                            if np.isnan(fieldstruct[enveloppe_index[node]]):
     144                                fid.write('%e\n' % - 9999.9999)
     145                                #also checking for verry small value that mess up
     146                            elif (abs(fieldstruct[enveloppe_index[node]]) < 1.0e-20):
     147                                fid.write('%e\n' % 0.0)
     148                            else:
     149                                fid.write('%e\n' % fieldstruct[enveloppe_index[node]])
     150    # }}}
     151    # {{{loop on arguments, if something other than result is asked, do it now
     152
     153        for other in args:
     154            other_struct = model.__dict__[other]
     155            othernames = (dict.keys(other_struct.__dict__))
     156            for field in othernames:
     157                if ((np.size(other_struct.__dict__[field])) == every_nodes):
     158                    fid.write('SCALARS %s float 1 \n' % field)
     159                    fid.write('LOOKUP_TABLE default\n')
     160                    for node in range(0, num_of_points):
     161                        #paraview does not like NaN, replacing
     162                        if np.isnan(other_struct.__dict__[field][enveloppe_index[node]]):
     163                            fid.write('%e\n' % - 9999.9999)
     164                            #also checking for verry small value that mess up
     165                        elif (abs(other_struct.__dict__[field][enveloppe_index[node]]) < 1.0e-20):
     166                            fid.write('%e\n' % 0.0)
     167                        else:
     168                            fid.write('%e\n' % other_struct.__dict__[field][enveloppe_index[node]])
     169
     170    # }}}
     171    fid.close()
  • issm/trunk-jpl/src/m/contrib/defleurian/paraview/exportVTK.py

    r24115 r24213  
    77    '''
    88    vtk export
    9     function exportVTK(filename,md)
     9    function exportVTK(filename, md)
    1010    creates a directory with the vtk files for displays in paraview
    1111    (only work for triangle and wedges based on their number of nodes)
    1212
    1313    Usage:
    14     exportVTK('DirName',md)
    15     exportVTK('DirName',md,'geometry','mesh')
    16     exportVTK('DirName',md,'geometry','mesh',enveloppe=True)
     14    exportVTK('DirName', md)
     15    exportVTK('DirName', md, 'geometry', 'mesh')
     16    exportVTK('DirName', md, 'geometry', 'mesh', enveloppe = True)
    1717
    1818    DirName is the name of the output directory, each timestep then has it
     
    2727    # File checking and creation {{{
    2828    Dir = path.basename(filename)
    29     Path = filename[:-len(Dir)]
     29    Path = filename[: - len(Dir)]
    3030    if path.exists(filename):
    3131        print(('File {} allready exist'.format(filename)))
    3232        newname = input('Give a new name or "delete" to replace: ')
    3333        if newname == 'delete':
    34             filelist = glob(filename + '/*')
     34            filelist = glob(filename + '/* ')
    3535            for oldfile in filelist:
    3636                remove(oldfile)
     
    102102
    103103    else:
    104         #we get all the mesh,  mainly defining dummies
     104        #we get all the mesh, mainly defining dummies
    105105        num_of_elt = every_cells
    106106        connect = md.mesh.elements - 1
     
    120120        saved_cells = {}
    121121        timestep = step
    122         fid = open((filename + '/Timestep.vtk' + str(timestep) + '.vtk'), 'w+')
    123         fid.write('# vtk DataFile Version 3.0 \n')
     122        fid = open((filename + '/Timestep.vtk' + str(timestep) + '.vtk'), 'w + ')
     123        fid.write('  # vtk DataFile Version 3.0 \n')
    124124        fid.write('Data for run {} \n'.format(md.miscellaneous.name))
    125125        fid.write('ASCII \n')
    126126        fid.write('DATASET UNSTRUCTURED_GRID \n')
    127127        fid.write('POINTS {:d} float\n'.format(num_of_points))
    128         #updating z for mesh evolution
     128    #updating z for mesh evolution
    129129        if moving_mesh:
    130130            base = np.squeeze(res_struct.__dict__['TransientSolution'][step].__dict__['Base'][enveloppe_index])
     
    157157
    158158        fid.write('POINT_DATA {:s} \n'.format(str(num_of_points)))
    159         # }}}
    160         # loop over the different solution structures{{{
    161         # first check if there are solutions to grab
     159    # }}}
     160    # {{{loop over the different solution structures
     161    # first check if there are solutions to grab
    162162        if 'solnames' in locals():
    163163            for sol in solnames:
    164164                treated_res = []
    165                 #dealing with results on different timesteps
     165    #dealing with results on different timesteps
    166166                if(np.size(res_struct.__dict__[sol]) > timestep):
    167167                    timestep = step
     
    169169                    timestep = np.size(res_struct.__dict__[sol])
    170170
    171                 #getting the  fields in the solution
     171    #getting the  fields in the solution
    172172                if(type(res_struct.__dict__[sol]) == list):
    173173                    spe_res_struct = res_struct.__dict__[sol].__getitem__(timestep)
     
    177177                    fieldnames = dict.keys(spe_res_struct.__dict__)
    178178
    179                 #Sorting scalars, vectors and tensors
     179    #Sorting scalars, vectors and tensors
    180180                tensors = [field for field in fieldnames if field[-2:] in ['xx', 'yy', 'xy', 'zz', 'xz', 'yz']]
    181181                non_tensor = [field for field in fieldnames if field not in tensors]
    182182                vectors = [field for field in non_tensor if field[-1] in ['x', 'y', 'z']]
    183183
    184                 #check which field is a real result and print
     184    #check which field is a real result and print
    185185                for field in fieldnames:
    186186                    if field in treated_res:
     
    214214                            Txystruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'xy'])
    215215                            Tyystruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'yy'])
    216                             treated_res += [field[:-2] + 'xx', field[:-2] + 'xy', field[:-2] + 'yy']
     216                            treated_res += [field[: - 2] + 'xx', field[: - 2] + 'xy', field[: - 2] + 'yy']
    217217                            if dim == 3:
    218218                                Tzzstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'zz'])
    219219                                Txzstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'xz'])
    220220                                Tyzstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'yz'])
    221                                 treated_res += [field[:-2] + 'zz', field[:-2] + 'xz', field[:-2] + 'yz']
     221                                treated_res += [field[: - 2] + 'zz', field[: - 2] + 'xz', field[: - 2] + 'yz']
    222222
    223223                        except KeyError:
     
    225225                            tensors.remove(field)
    226226
    227                         fid.write('TENSORS {} float \n'.format(field[:-2]))
     227                        fid.write('TENSORS {} float \n'.format(field[: - 2]))
    228228                        for node in range(0, num_of_points):
    229229                            Txx = cleanOutliers(Txxstruct[enveloppe_index[node]])
     
    250250                        elif ((np.size(spe_res_struct.__dict__[field])) == every_cells):
    251251                            saved_cells[field] = np.squeeze(spe_res_struct.__dict__[field])
    252         # }}}
    253         # loop on arguments,  if something other than result is asked, do it now {{{
     252    # }}}
     253    # loop on arguments, if something other than result is asked, do it now {{{
    254254        for other in args:
    255255            other_struct = md.__dict__[other]
     
    264264                elif (np.size(other_struct.__dict__[field]) == every_cells):
    265265                    saved_cells[field] = other_struct.__dict__[field]
    266                 # }}}
    267         # Now writting cell variables {{{
     266    # }}}
     267    # Now writting cell variables {{{
    268268        if np.size(list(saved_cells.keys())) > 0:
    269269            fid.write('CELL_DATA {:d} \n'.format(num_of_elt))
     
    274274                    outval = cleanOutliers(saved_cells[key][cell])
    275275                    fid.write('{:f}\n'.format(outval))
    276         # }}}
     276    # }}}
    277277    fid.close()
    278278
    279279
    280280def cleanOutliers(Val):
    281     #paraview does not like NaN,  replacing
     281    #paraview does not like NaN, replacing
    282282    if np.isnan(Val):
    283         CleanVal = -9999.999
    284         #also checking for very small value that mess up
     283        CleanVal = - 9999.999
     284    #also checking for very small value that mess up
    285285    elif (abs(Val) < 1.0e-20):
    286286        CleanVal = 0.0
  • issm/trunk-jpl/src/m/contrib/morlighem/bamg/YamsCall.py

    r23716 r24213  
    11import numpy as np
     2import MatlabFuncs as m
    23import time
    34import subprocess
     
    67from ComputeMetric import ComputeMetric
    78
    8 def YamsCall(md,field,hmin,hmax,gradation,epsilon):
    9         """
    10         YAMSCALL - call yams
    119
    12            build a metric using the Hessian of the given field
    13            call Yams and the output mesh is plugged onto the model
    14            -hmin = minimum edge length (m)
    15            -hmax = maximum edge length (m)
    16            -gradation = maximum edge length gradation between 2 elements
    17            -epsilon = average error on each element (m/yr)
     10def YamsCall(md, field, hmin, hmax, gradation, epsilon):
     11    """
     12    YAMSCALL - call yams
    1813
    19            Usage:
    20               md=YamsCall(md,field,hmin,hmax,gradation,epsilon);
     14       build a metric using the Hessian of the given field
     15       call Yams and the output mesh is plugged onto the model
     16     - hmin = minimum edge length (m)
     17     - hmax = maximum edge length (m)
     18     - gradation = maximum edge length gradation between 2 elements
     19     - epsilon = average error on each element (m / yr)
    2120
    22            Example:
    23               md=YamsCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
    24         """
     21       Usage:
     22          md = YamsCall(md, field, hmin, hmax, gradation, epsilon)
    2523
    26         #2d geometric parameter (do not change)
    27         scale=2./9.
     24       Example:
     25          md = YamsCall(md, md.inversion.vel_obs, 1500, 10^8, 1.3, 0.9)
     26    """
    2827
    29         #Compute Hessian
    30         t1=time.time()
    31         print(("%s" % '      computing Hessian...'))
    32         hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,field,'node')
    33         t2=time.time()
    34         print(("%s%d%s\n" % (' done (',t2-t1,' seconds)')))
     28    #2d geometric parameter (do not change)
     29    scale = 2. / 9.
    3530
    36         #Compute metric
    37         t1=time.time()
    38         print(("%s" % '      computing metric...'))
    39         metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,np.empty(0,int))
    40         t2=time.time()
    41         print(("%s%d%s\n" % (' done (',t2-t1,' seconds)')))
     31    #Compute Hessian
     32    t1 = time.time()
     33    print(("%s" % '      computing Hessian...'))
     34    hessian = ComputeHessian(md.mesh.elements, md.mesh.x, md.mesh.y, field, 'node')
     35    t2 = time.time()
     36    print(("%s%d%s\n" % (' done (', t2 - t1, ' seconds)')))
    4237
    43         #write files
    44         t1=time.time()
    45         print(("%s" % '      writing initial mesh files...'))
    46         np.savetxt('carre0.met',metric)
     38    #Compute metric
     39    t1 = time.time()
     40    print(("%s" % '      computing metric...'))
     41    metric = ComputeMetric(hessian, scale, epsilon, hmin, hmax, np.empty(0, int))
     42    t2 = time.time()
     43    print(("%s%d%s\n" % (' done (', t2 - t1, ' seconds)')))
    4744
    48         f=open('carre0.mesh','w')
     45    #write files
     46    t1 = time.time()
     47    print(("%s" % '      writing initial mesh files...'))
     48    np.savetxt('carre0.met', metric)
    4949
    50         #initialiation
    51         f.write("\n%s\n%i\n" % ('MeshVersionFormatted',1))
     50    f = open('carre0.mesh', 'w')
    5251
    53         #dimension
    54         f.write("\n%s\n%i\n" % ('Dimension',2))
     52    #initialiation
     53    f.write("\n%s\n%i\n" % ('MeshVersionFormatted', 1))
    5554
    56         #Vertices
    57         f.write("\n%s\n%i\n\n" % ('Vertices',md.mesh.numberofvertices))
    58         for i in range(0,md.mesh.numberofvertices):
    59                 f.write("%8g %8g %i\n" % (md.mesh.x[i],md.mesh.y[i],0))
     55    #dimension
     56    f.write("\n%s\n%i\n" % ('Dimension', 2))
    6057
    61         #Triangles
    62         f.write("\n\n%s\n%i\n\n" % ('Triangles',md.mesh.numberofelements))
    63         for i in range(0,md.mesh.numberofelements):
    64                 f.write("%i %i %i %i\n" % (md.mesh.elements[i,0],md.mesh.elements[i,1],md.mesh.elements[i,2],0))
    65         numberofelements1=md.mesh.numberofelements
     58    #Vertices
     59    f.write("\n%s\n%i\n\n" % ('Vertices', md.mesh.numberofvertices))
     60    for i in range(0, md.mesh.numberofvertices):
     61        f.write("%8g %8g %i\n" % (md.mesh.x[i], md.mesh.y[i], 0))
    6662
    67         #Deal with rifts
    68         if np.any(not np.isnan(md.rifts.riftstruct)):
     63    #Triangles
     64    f.write("\n\n%s\n%i\n\n" % ('Triangles', md.mesh.numberofelements))
     65    for i in range(0, md.mesh.numberofelements):
     66        f.write("%i %i %i %i\n" % (md.mesh.elements[i, 0], md.mesh.elements[i, 1], md.mesh.elements[i, 2], 0))
     67    numberofelements1 = md.mesh.numberofelements
    6968
    70                 #we have the list of triangles that make up the rift. keep those triangles around during refinement.
    71                 triangles=np.empty(0,int)
    72                 for riftstruct in md.rifts.riftstruct:
    73                         triangles=np.concatenate((triangles,riftstruct.segments[:,2]))
     69    #Deal with rifts
     70    if np.any(not np.isnan(md.rifts.riftstruct)):
    7471
    75                 f.write("\n\n%s\n%i\n\n" % ('RequiredTriangles',np.size(triangles)))
    76                 for triangle in triangles:
    77                         f.write("%i\n" % triangle)
     72        #we have the list of triangles that make up the rift. keep those triangles around during refinement.
     73        triangles = np.empty(0, int)
     74        for riftstruct in md.rifts.riftstruct:
     75            triangles = np.concatenate((triangles, riftstruct.segments[:, 2]))
    7876
    79         #close
    80         f.close()
    81         t2=time.time()
    82         print(("%s%d%s\n" % (' done (',t2-t1,' seconds)')))
     77        f.write("\n\n%s\n%i\n\n" % ('RequiredTriangles', np.size(triangles)))
     78        for triangle in triangles:
     79            f.write("%i\n" % triangle)
    8380
    84         #call yams
    85         print(("%s\n" % '      call Yams...'))
    86         if   m.ispc():
    87                 #windows
    88                 subprocess.call('yams2-win -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
    89         elif ismac():
    90                 #Macosx
    91                 subprocess.call('yams2-osx -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
    92         else:
    93                 #Linux
    94                 subprocess.call('yams2-linux -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
     81    #close
     82    f.close()
     83    t2 = time.time()
     84    print(("%s%d%s\n" % (' done (', t2 - t1, ' seconds)')))
    9585
    96         #plug new mesh
    97         t1=time.time()
    98         print(("\n%s" % '      reading final mesh files...'))
    99         Tria=np.loadtxt('carre1.tria',int)
    100         Coor=np.loadtxt('carre1.coor',float)
    101         md.mesh.x=Coor[:,0]
    102         md.mesh.y=Coor[:,1]
    103         md.mesh.z=np.zeros((np.size(Coor,axis=0),1))
    104         md.mesh.elements=Tria
    105         md.mesh.numberofvertices=np.size(Coor,axis=0)
    106         md.mesh.numberofelements=np.size(Tria,axis=0)
    107         numberofelements2=md.mesh.numberofelements
    108         t2=time.time()
    109         print(("%s%d%s\n\n" % (' done (',t2-t1,' seconds)')))
     86    #call yams
     87    print(("%s\n" % '      call Yams...'))
     88    if m.ispc():
     89        #windows
     90        subprocess.call('yams2 - win - O 1 - v - 0 - ecp - hgrad %g carre0 carre1' % gradation, shell=True)
     91    elif m.ismac():
     92        #Macosx
     93        subprocess.call('yams2 - osx - O 1 - v - 0 - ecp - hgrad %g carre0 carre1' % gradation, shell=True)
     94    else:
     95        #Linux
     96        subprocess.call('yams2 - linux - O 1 - v - 0 - ecp - hgrad %g carre0 carre1' % gradation, shell=True)
    11097
    111         #display number of elements
    112         print(("\n%s %i" % ('      inital number of elements:',numberofelements1)))
    113         print(("\n%s %i\n\n" % ('      new    number of elements:',numberofelements2)))
     98    #plug new mesh
     99    t1 = time.time()
     100    print(("\n%s" % '      reading final mesh files...'))
     101    Tria = np.loadtxt('carre1.tria', int)
     102    Coor = np.loadtxt('carre1.coor', float)
     103    md.mesh.x = Coor[:, 0]
     104    md.mesh.y = Coor[:, 1]
     105    md.mesh.z = np.zeros((np.size(Coor, axis=0), 1))
     106    md.mesh.elements = Tria
     107    md.mesh.numberofvertices = np.size(Coor, axis=0)
     108    md.mesh.numberofelements = np.size(Tria, axis=0)
     109    numberofelements2 = md.mesh.numberofelements
     110    t2 = time.time()
     111    print(("%s%d%s\n\n" % (' done (', t2 - t1, ' seconds)')))
    114112
    115         #clean up:
    116         os.remove('carre0.mesh')
    117         os.remove('carre0.met')
    118         os.remove('carre1.tria')
    119         os.remove('carre1.coor')
    120         os.remove('carre1.meshb')
     113    #display number of elements
     114    print(("\n%s %i" % ('      inital number of elements:', numberofelements1)))
     115    print(("\n%s %i\n\n" % ('      new    number of elements:', numberofelements2)))
    121116
    122         return md
     117    #clean up:
     118    os.remove('carre0.mesh')
     119    os.remove('carre0.met')
     120    os.remove('carre1.tria')
     121    os.remove('carre1.coor')
     122    os.remove('carre1.meshb')
    123123
     124    return md
  • issm/trunk-jpl/src/m/coordsystems/gmtmask.py

    r23737 r24213  
    55import subprocess
    66
    7 def gmtmask(lat,long,*varargin):
    8 #GMTMASK - figure out which lat,long points are on the ocean
    9 #
    10 #   Usage:
    11 #      mask.ocean = gmtmask(md.mesh.lat,md.mesh.long);
    12 #
    13         lenlat=len(lat)
    14         mask=np.empty(lenlat)
    15        
    16         #are we doing a recursive call?
    17         if len(varargin)==3:
    18                 recursive=1
    19         else:
    20                 recursive=0
    217
    22         if recursive:
    23                 print(('             recursing: num vertices #'+str(lenlat)))
    24         else:
    25                 print(('gmtmask: num vertices #'+str(lenlat)))
    26        
    27         #Check lat and long size is not more than 50,000 If so, recursively call gmtmask:
     8def gmtmask(lat, long, * varargin):
     9    '''GMTMASK - figure out which lat, long points are on the ocean
    2810
    29         if lenlat>50000:
    30                 for i in range(int(ceil(lenlat/50000))):
    31                         j=(i+1)*50000-1
    32                         if j>lenlat:
    33                                 j=lenlat
    34                         mask[i:j]=gmtmask(lat[i:j],int[i:j],1)
    35                 return mask
    36        
    37        
    38         #First, write our lat,long file for gmt:
    39         nv=lenlat
    40         #print(np.transpose([int, lat, np.arange(1,nv+1)]))
    41         np.savetxt('./all_vertices.txt',np.transpose([long, lat, np.arange(1,nv+1)]),delimiter='\t',fmt='%.10f')
     11    Usage:
     12      mask.ocean = gmtmask(md.mesh.lat, md.mesh.long)
     13    '''
     14    lenlat = len(lat)
     15    mask = np.empty(lenlat)
    4216
    43         #Avoid bypassing of the ld library path by Matlab (:()
    44         try:
    45                 issmdir
    46         except:
    47                 issmdir=getenv('ISSM_DIR')
    48         try:
    49                 ismac
    50         except:
    51                 ismac=False     
     17    #are we doing a recursive call?
     18    if len(varargin) == 3:
     19        recursive = 1
     20    else:
     21        recursive = 0
    5222
    53         if ismac:
    54                 dyld_library_path_old=getenv('DYLD_LIBRARY_PATH')
    55                 putenv('DYLD_LIBRARY_PATH',issmdir+'/externalpackages/curl/install/lib:'+issmdir+'/externalpackages/hdf5/install/lib:'+issmdir+'/externalpackages/netcdf/install/lib')
    56                
    57         #figure out which vertices are on the ocean, which one on the continent:
    58         subprocess.call(issmdir+'/externalpackages/gmt/install/bin/gmt gmtselect ./all_vertices.txt -h0 -Df -R0/360/-90/90  -A0 -JQ180/200 -Nk/s/s/k/s > ./oce_vertices.txt',shell=True)
     23    if recursive:
     24        print(('             recursing: num vertices  #' + str(lenlat)))
     25    else:
     26        print(('gmtmask: num vertices  #' + str(lenlat)))
    5927
    60         #reset DYLD_LIBRARY_PATH to what it was:
    61         if ismac:
    62                 putenv('DYLD_LIBRARY_PATH',dyld_library_path_old)
    63        
    64         #read the con_vertices.txt file and flag our mesh vertices on the continent
    65         fid=open('./oce_vertices.txt','r')
    66         line=fid.readline()
    67         line=fid.readline()
    68         oce_vertices=[]
    69         while line:
    70                 ind=int(float(line.split()[2]))-1;
    71                 oce_vertices.append(ind)
    72                 line=fid.readline()
    73         fid.close()
     28    #Check lat and long size is not more than 50, 000 If so, recursively call gmtmask:
    7429
    75         mask=np.zeros(nv)
    76         mask[oce_vertices]=1
    77        
    78         subprocess.call('rm -rf ./all_vertices.txt ./oce_vertices.txt ./gmt.history',shell=True)
    79         if not recursive:
    80                 print('gmtmask: done')
    81         return mask
     30    if lenlat > 50000:
     31        for i in range(int(ceil(lenlat / 50000))):
     32            j = (i + 1) * 50000 - 1
     33            if j > lenlat:
     34                j = lenlat
     35            mask[i:j] = gmtmask(lat[i:j], int[i:j], 1)
     36        return mask
     37
     38    #First, write our lat, long file for gmt:
     39    nv = lenlat
     40    #print(np.transpose([int, lat, np.arange(1, nv + 1)]))
     41    np.savetxt('./all_vertices.txt', np.transpose([long, lat, np.arange(1, nv + 1)]), delimiter='\t', fmt='%.10f')
     42
     43    #Avoid bypassing of the ld library path by Matlab (:()
     44    try:
     45        issmdir
     46    except NameError:
     47        issmdir = getenv('ISSM_DIR')
     48    try:
     49        ismac
     50    except NameError:
     51        ismac = False
     52
     53    if ismac:
     54        dyld_library_path_old = getenv('DYLD_LIBRARY_PATH')
     55        putenv('DYLD_LIBRARY_PATH', issmdir + '/externalpackages/curl/install/lib:' + issmdir + '/externalpackages/hdf5/install/lib:' + issmdir + '/externalpackages/netcdf/install/lib')
     56
     57    #figure out which vertices are on the ocean, which one on the continent:
     58    subprocess.call(issmdir + '/externalpackages/gmt/install/bin/gmt gmtselect ./ all_vertices.txt -h0 -Df -R0/360/-90/90 -A0- JQ180/200 - Nk/s/s/k/s > ./oce_vertices.txt', shell=True)
     59
     60    #reset DYLD_LIBRARY_PATH to what it was:
     61    if ismac:
     62        putenv('DYLD_LIBRARY_PATH', dyld_library_path_old)
     63
     64    #read the con_vertices.txt file and flag our mesh vertices on the continent
     65    fid = open('./oce_vertices.txt', 'r')
     66    line = fid.readline()
     67    line = fid.readline()
     68    oce_vertices = []
     69    while line:
     70        ind = int(float(line.split()[2])) - 1
     71        oce_vertices.append(ind)
     72        line = fid.readline()
     73    fid.close()
     74
     75    mask = np.zeros(nv)
     76    mask[oce_vertices] = 1
     77
     78    subprocess.call('rm -rf ./all_vertices.txt ./oce_vertices.txt ./gmt.history', shell=True)
     79    if not recursive:
     80        print('gmtmask: done')
     81    return mask
  • issm/trunk-jpl/src/m/coordsystems/ll2xy.py

    r23716 r24213  
    1 import numpy as  np
     1import numpy as np
    22
    3 def ll2xy(lat,lon,sgn=-1,central_meridian=0,standard_parallel=71):
    4         '''
    5         LL2XY - converts lat lon to polar stereographic
    63
    7    Converts from geodetic latitude and longitude to Polar
    8    Stereographic (X,Y) coordinates for the polar regions.
     4def ll2xy(lat, lon, sgn=-1, central_meridian=0, standard_parallel=71):
     5    '''
     6    LL2XY - converts lat lon to polar stereographic
     7
     8   Converts from geodetic latitude and longitude to Polar
     9   Stereographic (X, Y) coordinates for the polar regions.
    910   Author: Michael P. Schodlok, December 2003 (map2ll)
    1011
    1112   Usage:
    12       x,y = ll2xy(lat,lon,sgn)
    13       x,y = ll2xy(lat,lon,sgn,central_meridian,standard_parallel)
     13      x, y = ll2xy(lat, lon, sgn)
     14      x, y = ll2xy(lat, lon, sgn, central_meridian, standard_parallel)
    1415
    15       - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
    16                                -1 : south latitude (default is mer=0  lat=71)
    17         '''
     16 - sgn = Sign of latitude + 1 : north latitude (default is mer = 45 lat = 70)
     17 - 1 : south latitude (default is mer = 0  lat = 71)
     18    '''
    1819
    19         assert sgn==1 or sgn==-1, 'error: sgn should be either +1 or -1'
     20    assert sgn == 1 or sgn == - 1, 'error: sgn should be either + 1 or - 1'
    2021
    21         #Get central_meridian and standard_parallel depending on hemisphere
    22         if sgn == 1:
    23                 delta = 45
    24                 slat = 70
    25                 print('         ll2xy: creating coordinates in north polar stereographic (Std Latitude: 70N Meridian: 45)')
    26         else:
    27                 delta = central_meridian
    28                 slat = standard_parallel
    29                 print('         ll2xy: creating coordinates in south polar stereographic (Std Latitude: 71S Meridian: 0)')
    30        
    31         # Conversion constant from degrees to radians
    32         cde = 57.29577951
    33         # Radius of the earth in meters
    34         re = 6378.273*10**3
    35         # Eccentricity of the Hughes ellipsoid squared
    36         ex2 = .006693883
    37         # Eccentricity of the Hughes ellipsoid
    38         ex = np.sqrt(ex2)
    39        
    40         latitude = np.abs(lat) * np.pi/180.
    41         longitude = (lon + delta) * np.pi/180.
    42        
    43         # compute X and Y in grid coordinates.
    44         T = np.tan(np.pi/4-latitude/2) / ((1-ex*np.sin(latitude))/(1+ex*np.sin(latitude)))**(ex/2)
    45        
    46         if (90 - slat) <  1.e-5:
    47                 rho = 2.*re*T/np.sqrt((1.+ex)**(1.+ex)*(1.-ex)**(1.-ex))
    48         else:
    49                 sl  = slat*np.pi/180.
    50                 tc  = np.tan(np.pi/4.-sl/2.)/((1.-ex*np.sin(sl))/(1.+ex*np.sin(sl)))**(ex/2.)
    51                 mc  = np.cos(sl)/np.sqrt(1.0-ex2*(np.sin(sl)**2))
    52                 rho = re*mc*T/tc
    53        
    54         y = -rho * sgn * np.cos(sgn*longitude)
    55         x =  rho * sgn * np.sin(sgn*longitude)
     22    #Get central_meridian and standard_parallel depending on hemisphere
     23    if sgn == 1:
     24        delta = 45
     25        slat = 70
     26        print('        ll2xy: creating coordinates in north polar stereographic (Std Latitude: 70N Meridian: 45)')
     27    else:
     28        delta = central_meridian
     29        slat = standard_parallel
     30        print('        ll2xy: creating coordinates in south polar stereographic (Std Latitude: 71S Meridian: 0)')
    5631
    57         cnt1=np.nonzero(latitude>= np.pi/2.)[0]
    58        
    59         if cnt1:
    60                 x[cnt1,0] = 0.0
    61                 y[cnt1,0] = 0.0
    62         return x,y
     32    # Conversion constant from degrees to radians
     33    #cde = 57.29577951
     34    # Radius of the earth in meters
     35    re = 6378.273 * 10**3
     36    # Eccentricity of the Hughes ellipsoid squared
     37    ex2 = .006693883
     38    # Eccentricity of the Hughes ellipsoid
     39    ex = np.sqrt(ex2)
     40
     41    latitude = np.abs(lat) * np.pi / 180.
     42    longitude = (lon + delta) * np.pi / 180.
     43
     44    # compute X and Y in grid coordinates.
     45    T = np.tan(np.pi / 4 - latitude / 2) / ((1 - ex * np.sin(latitude)) / (1 + ex * np.sin(latitude)))**(ex / 2)
     46
     47    if (90 - slat) < 1.e-5:
     48        rho = 2. * re * T / np.sqrt((1. + ex)**(1. + ex) * (1. - ex)**(1. - ex))
     49    else:
     50        sl = slat * np.pi / 180.
     51        tc = np.tan(np.pi / 4. - sl / 2.) / ((1. - ex * np.sin(sl)) / (1. + ex * np.sin(sl)))**(ex / 2.)
     52        mc = np.cos(sl) / np.sqrt(1.0 - ex2 * (np.sin(sl)**2))
     53        rho = re * mc * T / tc
     54
     55    y = - rho * sgn * np.cos(sgn * longitude)
     56    x = rho * sgn * np.sin(sgn * longitude)
     57
     58    cnt1 = np.nonzero(latitude >= np.pi / 2.)[0]
     59
     60    if cnt1:
     61        x[cnt1, 0] = 0.0
     62        y[cnt1, 0] = 0.0
     63    return x, y
  • issm/trunk-jpl/src/m/coordsystems/xy2ll.py

    r23716 r24213  
    1 import numpy as  np
     1import numpy as np
    22from math import pi
    33
     4
    45def xy2ll(x, y, sgn, *args):
    5         '''
    6         XY2LL - converts xy to lat long
    7        
    8         Converts Polar  Stereographic (X, Y) coordinates for the polar regions to
    9         latitude and longitude Stereographic (X, Y) coordinates for the polar
    10         regions.
    11         Author: Michael P. Schodlok, December 2003 (map2xy.m)
    12        
    13         Usage:
    14            [lat, lon] = xy2ll(x, y, sgn);
    15            [lat, lon] = xy2ll(x, y, sgn, central_meridian, standard_parallel);
    16        
    17            - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
    18                                     -1 : south latitude (default is mer=0  lat=71)
    19         '''
     6    '''
     7    XY2LL - converts xy to lat long
    208
    21         #Get central_meridian and standard_parallel depending on hemisphere
    22         if len(args) == 2:
    23                 delta = args[0]
    24                 slat  = args[1]
    25         elif len(args) == 0:
    26                 if sgn == 1:
    27                         delta = 45.
    28                         slat = 70.
    29                         print('         xy2ll: creating coordinates in north polar stereographic (Std Latitude: 70degN Meridian: 45deg)')
    30                 elif sgn == -1:
    31                         delta = 0. 
    32                         slat = 71.
    33                         print('         xy2ll: creating coordinates in south polar stereographic (Std Latitude: 71degS Meridian: 0deg)')
    34                 else:
    35                         raise ValueError('sgn should be either +1 or -1')
    36         else:
    37                 raise Exception('bad usage: type "help(xy2ll)" for details')
     9    Converts Polar  Stereographic (X, Y) coordinates for the polar regions to
     10    latitude and longitude Stereographic (X, Y) coordinates for the polar
     11    regions.
     12    Author: Michael P. Schodlok, December 2003 (map2xy.m)
    3813
    39         # if x,y passed as lists, convert to np.arrays
    40         if type(x) != "np.ndarray":
    41                 x=np.array(x)
    42         if type(y) != "np.ndarray":
    43                 y=np.array(y)
     14    Usage:
     15       [lat, lon] = xy2ll(x, y, sgn)
     16       [lat, lon] = xy2ll(x, y, sgn, central_meridian, standard_parallel)
    4417
    45         ## Conversion constant from degrees to radians
    46         cde = 57.29577951
    47         ## Radius of the earth in meters
    48         re = 6378.273*10**3
    49         ## Eccentricity of the Hughes ellipsoid squared
    50         ex2 = .006693883
    51         ## Eccentricity of the Hughes ellipsoid
    52         ex = np.sqrt(ex2)
    53        
    54         sl = slat*pi/180.
    55         rho = np.sqrt(x**2 + y**2)
    56         cm = np.cos(sl) / np.sqrt(1.0 - ex2 * (np.sin(sl)**2))
    57         T = np.tan((pi/4.0) - (sl/2.0)) / ((1.0 - ex*np.sin(sl)) / (1.0 + ex*np.sin(sl)))**(ex / 2.0)
    58        
    59         if abs(slat-90.) < 1.e-5:
    60                 T = rho*np.sqrt((1. + ex)**(1. + ex) * (1. - ex)**(1. - ex)) / 2. / re
    61         else:
    62                 T = rho * T / (re * cm)
    63        
    64         chi = (pi / 2.0) - 2.0 * np.arctan(T)
    65         lat = chi + ((ex2 / 2.0) + (5.0 * ex2**2.0 / 24.0) + (ex2**3.0 / 12.0)) * \
    66                 np.sin(2 * chi) + ((7.0 * ex2**2.0 / 48.0) + (29.0 * ex2**3 / 240.0)) * \
    67                 np.sin(4.0 * chi) + (7.0 * ex2**3.0 / 120.0) * np.sin(6.0 * chi)
    68        
    69         lat = sgn * lat
    70         lon = np.arctan2(sgn * x,-sgn * y)
    71         lon = sgn * lon
    72        
    73         res1 = np.nonzero(rho <= 0.1)[0]
    74         if len(res1) > 0:
    75                 lat[res1] = pi/2. * sgn
    76                 lon[res1] = 0.0
    77        
    78         lon = lon * 180. / pi
    79         lat = lat * 180. / pi
    80         lon = lon - delta
     18     - sgn = Sign of latitude + 1 : north latitude (default is mer = 45 lat = 70)
     19     - 1 : south latitude (default is mer = 0  lat = 71)
     20    '''
    8121
    82         return lat, lon
     22    #Get central_meridian and standard_parallel depending on hemisphere
     23    if len(args) == 2:
     24        delta = args[0]
     25        slat = args[1]
     26    elif len(args) == 0:
     27        if sgn == 1:
     28            delta = 45.
     29            slat = 70.
     30            print('        xy2ll: creating coordinates in north polar stereographic (Std Latitude: 70degN Meridian: 45deg)')
     31        elif sgn == - 1:
     32            delta = 0.
     33            slat = 71.
     34            print('        xy2ll: creating coordinates in south polar stereographic (Std Latitude: 71degS Meridian: 0deg)')
     35        else:
     36            raise ValueError('sgn should be either + 1 or - 1')
     37    else:
     38        raise Exception('bad usage: type "help(xy2ll)" for details')
     39
     40    # if x, y passed as lists, convert to np.arrays
     41    if type(x) != "np.ndarray":
     42        x = np.array(x)
     43    if type(y) != "np.ndarray":
     44        y = np.array(y)
     45
     46    # Conversion constant from degrees to radians
     47    #cde = 57.29577951
     48    # Radius of the earth in meters
     49    re = 6378.273 * 10**3
     50    # Eccentricity of the Hughes ellipsoid squared
     51    ex2 = .006693883
     52    # Eccentricity of the Hughes ellipsoid
     53    ex = np.sqrt(ex2)
     54
     55    sl = slat * pi / 180.
     56    rho = np.sqrt(x**2 + y**2)
     57    cm = np.cos(sl) / np.sqrt(1.0 - ex2 * (np.sin(sl)**2))
     58    T = np.tan((pi / 4.0) - (sl / 2.0)) / ((1.0 - ex * np.sin(sl)) / (1.0 + ex * np.sin(sl)))**(ex / 2.0)
     59
     60    if abs(slat - 90.) < 1.e-5:
     61        T = rho * np.sqrt((1. + ex)**(1. + ex) * (1. - ex)**(1. - ex)) / 2. / re
     62    else:
     63        T = rho * T / (re * cm)
     64
     65    chi = (pi / 2.0) - 2.0 * np.arctan(T)
     66    lat = chi + ((ex2 / 2.0) + (5.0 * ex2**2.0 / 24.0) + (ex2**3.0 / 12.0)) * np.sin(2 * chi) + ((7.0 * ex2**2.0 / 48.0) + (29.0 * ex2**3 / 240.0)) * np.sin(4.0 * chi) + (7.0 * ex2**3.0 / 120.0) * np.sin(6.0 * chi)
     67
     68    lat = sgn * lat
     69    lon = np.arctan2(sgn * x, - sgn * y)
     70    lon = sgn * lon
     71
     72    res1 = np.nonzero(rho <= 0.1)[0]
     73    if len(res1) > 0:
     74        lat[res1] = pi / 2. * sgn
     75        lon[res1] = 0.0
     76
     77    lon = lon * 180. / pi
     78    lat = lat * 180. / pi
     79    lon = lon - delta
     80
     81    return lat, lon
  • issm/trunk-jpl/src/m/dev/ISSM.py

    r23716 r24213  
    11print('WARNING: EXPERIMENTAL FEATURE ISSM.py: universal Python ISSM import')
    2 
    32#Most common imports
    43import numpy as np
     
    3938from dmeth_params_write import *
    4039
     40
    4141#Helper functions
    4242def python_help():
    43         '''Prints out key code fragments that may be useful to users'''
    44         print('Differences between Python and Matlab code:')
    45         #...
     43    '''Prints out key code fragments that may be useful to users'''
     44    print('Differences between Python and Matlab code:')
     45    #...
     46
    4647
    4748def find(to_find):
    48         '''analagous to matlab's find function but requires separate and/or functions'''
    49         return np.array(np.where(to_find))
     49    '''analagous to matlab's find function but requires separate and / or functions'''
     50    return np.array(np.where(to_find))
     51
    5052
    5153def find_and(*args):
    52         '''analagous to matlab's a & b functionality when used in conjunction with find(),
    53                 returns overlap across a and b
    54                 takes an arbitrary number of arguments of similar shape'''
    55         result = args[0]
    56         for arg in args[1:]:
    57                 if type(arg) != np.ndarray:
    58                         arg = np.array(arg)
    59                 result = np.intersect1d(result,arg)
    60         return result
     54    '''analagous to matlab's a & b functionality when used in conjunction with find(),
     55        returns overlap across a and b
     56        takes an arbitrary number of arguments of similar shape'''
     57    result = args[0]
     58    for arg in args[1:]:
     59        if type(arg) != np.ndarray:
     60            arg = np.array(arg)
     61        result = np.intersect1d(result, arg)
     62    return result
     63
    6164
    6265def find_or(*args):
    63         '''analagous to matlab's a | b functionality when used in conjunction with find(),
    64                 returns all unique values across a and b
    65                 takes an arbitrary number of arguments of similar shape'''
    66         result = args[0]
    67         for arg in args[1:]:
    68                 if type(arg) != np.ndarray:
    69                         arg = np.array(arg)
    70                 result = np.unique(np.concatenate((result,arg)))
    71         return result
     66    '''analagous to matlab's a | b functionality when used in conjunction with find(),
     67        returns all unique values across a and b
     68        takes an arbitrary number of arguments of similar shape'''
     69    result = args[0]
     70    for arg in args[1:]:
     71        if type(arg) != np.ndarray:
     72            arg = np.array(arg)
     73        result = np.unique(np.concatenate((result, arg)))
     74    return result
  • issm/trunk-jpl/src/m/dev/devpath.py

    r23759 r24213  
    1 #!/usr/bin/env python
    2 import os, sys
     1#! / usr / bin / env python
     2import os
     3import sys
    34import warnings
    45
     
    1011    raise NameError('"ISSM_DIR" environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!')
    1112
    12 #Go through src/m and append any directory that contains a *.py file to PATH
     13    #Go through src / m and append any directory that contains a * .py file to PATH
    1314for root, dirs, files in os.walk(ISSM_DIR + '/src/m'):
    1415    if '.svn' in dirs:
    1516        dirs.remove('.svn')
    1617    for file in files:
    17         if file.find(".py") != -1:
    18             if file.find(".pyc") == -1:
     18        if file.find(".py") != - 1:
     19            if file.find(".pyc") == - 1:
    1920                if root not in sys.path:
    2021                    sys.path.append(root)
    2122
    22 #Also add the Nightly run directory
     23    #Also add the Nightly run directory
    2324if ISSM_DIR + '/test/NightlyRun' not in sys.path:
    2425    sys.path.append(ISSM_DIR + '/test/NightlyRun')
     
    2728if ISSM_DIR + '/src/wrappers/python/.libs' not in sys.path:
    2829    sys.path.append(ISSM_DIR + '/src/wrappers/python/.libs')
    29 # If using clusters, we need to have the path to the cluster settings directory
     30    # If using clusters, we need to have the path to the cluster settings directory
    3031if JPL_SVN is not None:
    3132    jpl_path = JPL_SVN + '/usr/' + USERNAME
     
    3435            sys.path.append(jpl_path)
    3536    else:
    36         warnings.warn('cluster settings should be in, {}/usr/{}'.format(JPL_SVN, USERNAME))
     37        warnings.warn('cluster settings should be in, {} / usr / {}'.format(JPL_SVN, USERNAME))
    3738
    38 #Manual imports for commonly used functions
    39 from runme import runme         #first because plotmodel may fail
     39    #Manual imports for commonly used functions
     40from runme import runme  #first because plotmodel may fail
    4041from plotmodel import plotmodel
    4142
  • issm/trunk-jpl/src/m/dev/issmversion.py

    r23716 r24213  
    11from IssmConfig import IssmConfig
    22
     3
    34def issmversion():
    4         """
    5         ISSMVERSION - display ISSM version
     5    """
     6    ISSMVERSION - display ISSM version
    67
    7                 Usage:
    8                         issmversion()
    9         """
     8        Usage:
     9            issmversion()
     10    """
    1011
    1112
    1213print(' ')
    13 print((IssmConfig('PACKAGE_NAME')[0]+' Version '+IssmConfig('PACKAGE_VERSION')[0]))
    14 print(('(website: '+IssmConfig('PACKAGE_URL')[0]+' contact: '+IssmConfig('PACKAGE_BUGREPORT')[0]+')'))
     14print((IssmConfig('PACKAGE_NAME')[0] + ' Version ' + IssmConfig('PACKAGE_VERSION')[0]))
     15print(('(website: ' + IssmConfig('PACKAGE_URL')[0] + ' contact: ' + IssmConfig('PACKAGE_BUGREPORT')[0] + ')'))
    1516print(' ')
    16 print(('Build date: '+IssmConfig('PACKAGE_BUILD_DATE')[0]))
    17 print('Copyright (c) 2009-2018 California Institute of Technology')
     17print(('Build date: ' + IssmConfig('PACKAGE_BUILD_DATE')[0]))
     18print('Copyright (c) 2009 - 2018 California Institute of Technology')
    1819print(' ')
    1920print('    to get started type: issmdoc')
  • issm/trunk-jpl/src/m/exp/expcoarsen.py

    r23716 r24213  
    11import os.path
    2 import numpy as  np
     2import numpy as np
    33from collections import OrderedDict
    44from expread import expread
    55from expwrite import expwrite
    66
    7 def expcoarsen(newfile,oldfile,resolution):
    8         """
    9         EXPCOARSEN - coarsen an exp contour
    107
    11         This routine read an Argus file and remove points with respect to
    12         the resolution (in meters) given in input.
     8def expcoarsen(newfile, oldfile, resolution):
     9    """
     10    EXPCOARSEN - coarsen an exp contour
    1311
    14         Usage:
    15           expcoarsen(newfile,oldfile,resolution)
     12    This routine read an Argus file and remove points with respect to
     13    the resolution (in meters) given in input.
    1614
    17         Example:
    18            expcoarsen('DomainOutline.exp','Antarctica.exp',4000)
    19         """
     15    Usage:
     16      expcoarsen(newfile, oldfile, resolution)
    2017
    21         #Some checks
    22         if not os.path.exists(oldfile):
    23                 raise OSError("expcoarsen error message: file '%s' not found!" % oldfile)
    24         if os.path.exists(newfile):
    25                 choice=eval(input('A file ' + newfile + ' already exists, do you want to modify it? (y/n)'))
    26                 if choice not in 'y':
    27                         print('no modification done ... exiting')
    28                         return 0
     18    Example:
     19       expcoarsen('DomainOutline.exp', 'Antarctica.exp', 4000)
     20    """
    2921
    30         #Get exp oldfile
    31         contours=expread(oldfile)
    32         newcontours=[]
     22    #Some checks
     23    if not os.path.exists(oldfile):
     24        raise OSError("expcoarsen error message: file '%s' not found!" % oldfile)
     25    if os.path.exists(newfile):
     26        choice = eval(input('A file ' + newfile + ' already exists, do you want to modify it? (y / n)'))
     27        if choice not in 'y':
     28            print('no modification done ... exiting')
     29            return 0
    3330
    34         for contour in  contours:
    35                
    36                 numpoints=np.size(contour['x'])
     31    #Get exp oldfile
     32    contours = expread(oldfile)
     33    newcontours = []
    3734
    38                 j=0
    39                 x=contour['x']
    40                 y=contour['y']
     35    for contour in contours:
     36        numpoints = np.size(contour['x'])
    4137
    42                 #stop if we have reached end of profile (always keep the last point)
    43                 while j<numpoints-1:
     38        j = 0
     39        x = contour['x']
     40        y = contour['y']
    4441
    45                         #see whether we keep this point or not
    46                         distance=np.sqrt((x[j]-x[j+1])**2+(y[j]-y[j+1])**2)
    47                         if distance<resolution and j<numpoints-2:   #do not remove last point
    48                                 x=np.delete(x,j+1,0)
    49                                 y=np.delete(y,j+1,0)
    50                                 numpoints=numpoints-1
    51                         else:
    52                                 division=int(np.floor(distance/resolution)+1)
    53                                 if division>=2:
    54                                         xi=np.linspace(x[j],x[j+1],division)
    55                                         yi=np.linspace(y[j],y[j+1],division)
    56                                        
    57                                         x=np.hstack((x[0:j+1],xi[1:-1],x[j+1:]))
    58                                         y=np.hstack((y[0:j+1],yi[1:-1],y[j+1:]))
     42        #stop if we have reached end of profile (always keep the last point)
     43        while j < numpoints - 1:
    5944
    60                                         #update current point
    61                                         j=j+1+division-2
    62                                         numpoints=numpoints+division-2
    63                                 else:
    64                                         #update current point
    65                                         j=j+1
    66                
    67                 if np.size(x)>1:
    68                         #keep the (x,y) contour arond
    69                         newcontour=OrderedDict()
    70                         newcontour['nods']=np.size(x)
    71                         newcontour['density']=contour['density']
    72                         newcontour['x']=x
    73                         newcontour['y']=y
    74                         newcontours.append(newcontour)
     45            #see whether we keep this point or not
     46            distance = np.sqrt((x[j] - x[j + 1])**2 + (y[j] - y[j + 1])**2)
     47            if distance < resolution and j < numpoints - 2:  #do not remove last point
     48                x = np.delete(x, j + 1, 0)
     49                y = np.delete(y, j + 1, 0)
     50                numpoints = numpoints - 1
     51            else:
     52                division = int(np.floor(distance / resolution) + 1)
     53                if division >= 2:
     54                    xi = np.linspace(x[j], x[j + 1], division)
     55                    yi = np.linspace(y[j], y[j + 1], division)
    7556
    76         #write output
    77         expwrite(newcontours,newfile)
     57                    x = np.hstack((x[0:j + 1], xi[1: - 1], x[j + 1:]))
     58                    y = np.hstack((y[0:j + 1], yi[1: - 1], y[j + 1:]))
     59
     60                    #update current point
     61                    j = j + 1 + division - 2
     62                    numpoints = numpoints + division - 2
     63                else:
     64                    #update current point
     65                    j = j + 1
     66
     67        if np.size(x) > 1:
     68            #keep the (x, y) contour arond
     69            newcontour = OrderedDict()
     70            newcontour['nods'] = np.size(x)
     71            newcontour['density'] = contour['density']
     72            newcontour['x'] = x
     73            newcontour['y'] = y
     74            newcontours.append(newcontour)
     75
     76    #write output
     77    expwrite(newcontours, newfile)
  • issm/trunk-jpl/src/m/exp/expdisp.py

    r23716 r24213  
    11from expread import expread
    2 import numpy as  np
     2import numpy as np
    33from matplotlib.path import Path
    44import matplotlib.patches as patches
    55
    6 def expdisp(ax,options):
    7         '''
    8         plot the contents of a domain outline file
    96
    10         This routine reads in an exp file and plots all of the x,y points/lines/patches
     7def expdisp(ax, options):
     8    '''
     9    plot the contents of a domain outline file
    1110
    12         'ax' is a handle to the current plot axes, onto which we want to plot
     11    This routine reads in an exp file and plots all of the x, y points / lines / patches
    1312
    14         Usage:
    15         expdisp(ax,options)
     13    'ax' is a handle to the current plot axes, onto which we want to plot
    1614
    17         List of options passable to plotmodel:
    18         'expdisp'      : path (or list of paths) to the exp file to be plotted
    19         'explinewidth' : linewidth
    20         'explinestyle' : matplotlib linestyle string
    21         'explinecolor' : matplotlib color string
    22         'expfill'      : (True/False) fill a closed contour
    23         'expfillcolor' : Color for a filled contour, only used if expfill is True
    24         'expfillalpha' : alpha transparency for filled contour
     15    Usage:
     16    expdisp(ax, options)
    2517
    26         All options should be passed as lists of length len(number of exp files passed)
    27         '''
     18    List of options passable to plotmodel:
     19    'expdisp'      : path (or list of paths) to the exp file to be plotted
     20    'explinewidth' : linewidth
     21    'explinestyle' : matplotlib linestyle string
     22    'explinecolor' : matplotlib color string
     23    'expfill'      : (True / False) fill a closed contour
     24    'expfillcolor' : Color for a filled contour, only used if expfill is True
     25    'expfillalpha' : alpha transparency for filled contour
    2826
    29         filenames=options.getfieldvalue('expdisp')
    30         linewidth=options.getfieldvalue('explinewidth',[1]*len(filenames))
    31         linestyle=options.getfieldvalue('explinestyle',['-']*len(filenames))
    32         linecolor=options.getfieldvalue('explinecolor',['k']*len(filenames))
    33         fill=options.getfieldvalue('expfill',[0]*len(filenames))
    34         alpha=options.getfieldvalue('expfillalpha',[1]*len(filenames))
    35         facecolor=options.getfieldvalue('expfillcolor',['r']*len(filenames))
    36         unitmultiplier=options.getfieldvalue('unit',1)
    37         for i in range(len(filenames)):
    38                 linestylei=linestyle[i]
    39                 linecolori=linecolor[i]
    40                 linewidthi=linewidth[i]
    41                 alphai=alpha[i]
    42                 facecolori=facecolor[i]
    43                 filenamei=filenames[i]
    44                 filli=fill[i]
    45                 domain=expread(filenamei)
    46                 for j in range(len(domain)):
    47                         if domain[j]['nods']==1:
    48                                 ax.plot(domain[j]['x']*unitmultiplier,domain[j]['y']*unitmultiplier,'o',mec='k',mfc='r',ms=10)
    49                         elif filli:
    50                                 verts=np.column_stack((domain[j]['x'],domain[j]['y']))
    51                                 codes=[Path.MOVETO] + [Path.LINETO]*(len(domain[j]['x'])-2) + [Path.CLOSEPOLY]
    52                                 path=Path(verts, codes)
    53                                 patch=patches.PathPatch(path,facecolor=facecolori,edgecolor=linecolori,alpha=alphai,
    54                                                                                                                                 lw=linewidthi)
    55                                 ax.add_patch(patch)
    56                         else:
    57                                 x=domain[j]['x'].tolist() # since expread returns a string representation of the arrays
    58                                 y=domain[j]['y'].tolist()
    59                                 ax.plot(x*unitmultiplier,y*unitmultiplier,ls=linestylei,lw=linewidthi,c=linecolori)
     27    All options should be passed as lists of length len(number of exp files passed)
     28    '''
     29
     30    filenames = options.getfieldvalue('expdisp')
     31    linewidth = options.getfieldvalue('explinewidth', [1] * len(filenames))
     32    linestyle = options.getfieldvalue('explinestyle', ['-'] * len(filenames))
     33    linecolor = options.getfieldvalue('explinecolor', ['k'] * len(filenames))
     34    fill = options.getfieldvalue('expfill', [0] * len(filenames))
     35    alpha = options.getfieldvalue('expfillalpha', [1] * len(filenames))
     36    facecolor = options.getfieldvalue('expfillcolor', ['r'] * len(filenames))
     37    unitmultiplier = options.getfieldvalue('unit', 1)
     38    for i in range(len(filenames)):
     39        linestylei = linestyle[i]
     40        linecolori = linecolor[i]
     41        linewidthi = linewidth[i]
     42        alphai = alpha[i]
     43        facecolori = facecolor[i]
     44        filenamei = filenames[i]
     45        filli = fill[i]
     46        domain = expread(filenamei)
     47        for j in range(len(domain)):
     48            if domain[j]['nods'] == 1:
     49                ax.plot(domain[j]['x'] * unitmultiplier, domain[j]['y'] * unitmultiplier, 'o', mec='k', mfc='r', ms=10)
     50            elif filli:
     51                verts = np.column_stack((domain[j]['x'], domain[j]['y']))
     52                codes = [Path.MOVETO] + [Path.LINETO] * (len(domain[j]['x']) - 2) + [Path.CLOSEPOLY]
     53                path = Path(verts, codes)
     54                patch = patches.PathPatch(path, facecolor=facecolori, edgecolor=linecolori, alpha=alphai,
     55                                          lw=linewidthi)
     56                ax.add_patch(patch)
     57            else:
     58                x = domain[j]['x'].tolist()  # since expread returns a string representation of the arrays
     59                y = domain[j]['y'].tolist()
     60                ax.plot(x * unitmultiplier, y * unitmultiplier, ls=linestylei, lw=linewidthi, c=linecolori)
  • issm/trunk-jpl/src/m/exp/expread.py

    r23716 r24213  
    44import MatlabFuncs as m
    55
     6
    67def expread(filename):
     8    """
    79
    8         """
     10    EXPREAD - read a file exp and build a Structure
    911
    10         EXPREAD - read a file exp and build a Structure
     12       This routine reads a file .exp and builds a list of dicts containing the
     13       fields x and y corresponding to the coordinates, one for the filename of
     14       the exp file, for the density, for the nodes, and a field closed to
     15       indicate if the domain is closed.
     16       The first argument is the .exp file to be read and the second one (optional)
     17       indicate if the last point shall be read (1 to read it, 0 not to).
    1118
    12            This routine reads a file .exp and builds a list of dicts containing the
    13            fields x and y corresponding to the coordinates, one for the filename of
    14            the exp file, for the density, for the nodes, and a field closed to
    15            indicate if the domain is closed.
    16            The first argument is the .exp file to be read and the second one (optional)
    17            indicate if the last point shall be read (1 to read it, 0 not to).
     19       Usage:
     20          contours = expread(filename)
    1821
    19            Usage:
    20               contours=expread(filename)
     22       Example:
     23          contours = expread('domainoutline.exp')
     24          contours = expread('domainoutline.exp')
    2125
    22            Example:
    23               contours=expread('domainoutline.exp')
    24               contours=expread('domainoutline.exp')
     26       See also EXPDOC, EXPWRITEASVERTICES
    2527
    26            See also EXPDOC, EXPWRITEASVERTICES
     28    """
     29    #some checks
     30    if not os.path.exists(filename):
     31        raise OSError("expread error message: file '%s' not found!" % filename)
    2732
    28         """
    29         #some checks
    30         if not os.path.exists(filename):
    31                 raise OSError("expread error message: file '%s' not found!" % filename)
     33    #initialize number of profile
     34    contours = []
     35    #open file
     36    fid = open(filename, 'r')
     37    #loop over the number of profiles
     38    while True:
     39        #update number of profiles
     40        contour = OrderedDict()
     41        #Get file name
     42        A = fid.readline()
     43        while A == '\n':
     44            A = fid.readline()
     45        if not A:
     46            break
     47        A = A.split(None, 1)
     48        if not (len(A) == 2 and m.strcmp(A[0], '##') and m.strncmp(A[1], 'Name:', 5)):
     49            break
    3250
    33         #initialize number of profile
    34         contours=[]
    35         #open file
    36         fid=open(filename,'r')
    37         #loop over the number of profiles
    38         while True:
    39                 #update number of profiles
    40                 contour=OrderedDict()
    41                 #Get file name
    42                 A=fid.readline()
    43                 while A=='\n':
    44                         A=fid.readline()
    45                 if not A:
    46                         break
    47                 A=A.split(None,1)
    48                 if not (len(A) == 2 and m.strcmp(A[0],'##') and m.strncmp(A[1],'Name:',5)):
    49                         break
     51        if len(A[1]) > 5:
     52            contour['name'] = A[1][5: - 1]
     53        else:
     54            contour['name'] = ''
    5055
    51                 if len(A[1])>5:
    52                         contour['name']=A[1][5:-1]
    53                 else:
    54                         contour['name']=''
     56        #Get Icon
     57        A = fid.readline().split(None, 1)
     58        if not (len(A) == 2 and m.strcmp(A[0], '##') and m.strncmp(A[1], 'Icon:', 5)):
     59            break
     60        #Get Info
     61        A = fid.readline().split()
     62        if not (len(A) == 4 and m.strcmp(A[0], '#') and m.strcmp(A[1], 'Points')):
     63            break
    5564
    56                 #Get Icon
    57                 A=fid.readline().split(None,1)
    58                 if not (len(A) == 2 and m.strcmp(A[0],'##') and m.strncmp(A[1],'Icon:',5)):
    59                         break
    60                 #Get Info
    61                 A=fid.readline().split()
    62                 if not (len(A) == 4 and m.strcmp(A[0],'#') and m.strcmp(A[1],'Points')):
    63                         break
     65        #Get number of nodes and density
     66        A = fid.readline().split()
     67        contour['nods'] = int(A[0])
     68        contour['density'] = float(A[1])
    6469
    65                 #Get number of nodes and density
    66                 A=fid.readline().split()
    67                 contour['nods']=int(A[0])
    68                 contour['density']=float(A[1])
     70        #Get Info
     71        A = fid.readline().split()
     72        if not (len(A) == 5 and m.strcmp(A[0], '#') and m.strcmp(A[1], 'X') and m.strcmp(A[2], 'pos') and m.strcmp(A[3], 'Y') and m.strcmp(A[4], 'pos')):
     73            break
     74    #Get Coordinates
     75        contour['x'] = np.empty(contour['nods'])
     76        contour['y'] = np.empty(contour['nods'])
     77        for i in range(int(contour['nods'])):
     78            A = fid.readline().split()
     79            contour['x'][i] = float(A[0])
     80            contour['y'][i] = float(A[1])
    6981
    70                 #Get Info
    71                 A=fid.readline().split()
    72                 if not (len(A) == 5 and m.strcmp(A[0],'#') and m.strcmp(A[1],'X') and m.strcmp(A[2],'pos')
    73                                                 and m.strcmp(A[3],'Y') and m.strcmp(A[4],'pos')):
    74                         break
    75                 #Get Coordinates
    76                 contour['x']=np.empty(contour['nods'])
    77                 contour['y']=np.empty(contour['nods'])
    78                 for i in range(int(contour['nods'])):
    79                         A=fid.readline().split()
    80                         contour['x'][i]=float(A[0])
    81                         contour['y'][i]=float(A[1])
     82    #Check if closed
     83        if (contour['nods'] > 1) and (contour['x'][-1] == contour['x'][0]) and (contour['y'][-1] == contour['y'][0]):
     84            contour['closed'] = True
     85        else:
     86            contour['closed'] = False
    8287
    83                 #Check if closed
    84                 if (contour['nods'] > 1) and \
    85                    (contour['x'][-1] == contour['x'][0]) and \
    86                    (contour['y'][-1] == contour['y'][0]):
    87                         contour['closed']=True
    88                 else:
    89                         contour['closed']=False
    90 
    91                 contours.append(contour)
    92         #close file
    93         fid.close()
    94         return contours
     88        contours.append(contour)
     89    #close file
     90    fid.close()
     91    return contours
  • issm/trunk-jpl/src/m/exp/expwrite.py

    r21303 r24213  
    11import numpy as np
    22
    3 def expwrite(contours,filename):
    4         """
    5         EXPWRITE - write an Argus file from a dictionary given in input
    63
    7            This routine writes an Argus file from a dict containing the fields:
    8            x and y of the coordinates of the points.
    9            The first argument is the list containing the points coordinates
    10            and the second one the file to be written.
     4def expwrite(contours, filename):
     5    """
     6    EXPWRITE - write an Argus file from a dictionary given in input
    117
    12            Usage:
    13               expwrite(contours,filename)
     8       This routine writes an Argus file from a dict containing the fields:
     9       x and y of the coordinates of the points.
     10       The first argument is the list containing the points coordinates
     11       and the second one the file to be written.
    1412
    15            Example:
    16               expwrite(coordstruct,'domainoutline.exp')
     13       Usage:
     14          expwrite(contours, filename)
    1715
    18            See also EXPDOC, EXPREAD, EXPWRITEASVERTICES
    19         """
     16       Example:
     17          expwrite(coordstruct, 'domainoutline.exp')
    2018
    21         fid=open(filename,'w')
    22         for x,y in zip(contours['x'],contours['y']):
    23                 #if np.size(contour['x'])!=np.size(contour['y']):
    24                 if len(x)!=len(y):
    25                         raise RuntimeError("contours x and y coordinates must be of identical size")
    26                 if 'name' in contours:
    27                         fid.write("%s%s\n" % ('## Name:',contours['name']))
    28                 else:
    29                         fid.write("%s%s\n" % ('## Name:',filename))
    30    
    31                 #Add density if it's not there FIXME what is this ever used for?
    32                 #if 'density' not in contours:
    33                 #       contours['density']=1
    34                 density=1
     19       See also EXPDOC, EXPREAD, EXPWRITEASVERTICES
     20    """
    3521
    36                 fid.write("%s\n" % '## Icon:0')
    37                 fid.write("%s\n" % '# Points Count Value')
    38                 #fid.write("%i %f\n" % (np.size(contour['x']),contour['density']))
    39                 fid.write("%i %f\n" % (np.size(x),density))
    40                 fid.write("%s\n" % '# X pos Y pos')
    41                 #for x,y in zip(contour['x'],contour['y']):
    42                 for xi,yi in zip(x,y):
    43                         fid.write("%10.10f %10.10f\n" % (xi,yi))
    44                 fid.write("\n")
     22    fid = open(filename, 'w')
     23    for x, y in zip(contours['x'], contours['y']):
     24        #if np.size(contour['x']) != np.size(contour['y']):
     25        if len(x) != len(y):
     26            raise RuntimeError("contours x and y coordinates must be of identical size")
     27        if 'name' in contours:
     28            fid.write("%s%s\n" % ('  # Name:', contours['name']))
     29        else:
     30            fid.write("%s%s\n" % ('  # Name:', filename))
    4531
    46         fid.close()
     32        #Add density if it's not there FIXME what is this ever used for?
     33        #if 'density' not in contours:
     34        #    contours['density'] = 1
     35        density = 1
    4736
     37        fid.write("%s\n" % '  # Icon:0')
     38        fid.write("%s\n" % '  # Points Count Value')
     39    #fid.write("%i %f\n" % (np.size(contour['x']), contour['density']))
     40        fid.write("%i %f\n" % (np.size(x), density))
     41        fid.write("%s\n" % '  # X pos Y pos')
     42    #for x, y in zip(contour['x'], contour['y']):
     43        for xi, yi in zip(x, y):
     44            fid.write("%10.10f %10.10f\n" % (xi, yi))
     45        fid.write("\n")
     46
     47    fid.close()
  • issm/trunk-jpl/src/m/exp/flowlines.py

    r24032 r24213  
    1111    #
    1212    #   Usage:
    13     #      flowpath=flowlines(index,x,y,u,v,x0,y0,varargin)
     13    #      flowpath = flowlines(index, x, y, u, v, x0, y0, varargin)
    1414    #
    15     #   the velocity field is given by the couple (u,v) and the coordinates
    16     #   of the seed points are (x0,y0). One can use one or several seed
     15    #   the velocity field is given by the couple (u, v) and the coordinates
     16    #   of the seed points are (x0, y0). One can use one or several seed
    1717    #   points
    1818    #
    1919    #   Example:
    20     #      flowpath=flowlines(md.mesh.elements,md.mesh.x,md.mesh.y,md.initialization.vx,md.initialization.vy,x0,y0)
     20    #      flowpath = flowlines(md.mesh.elements, md.mesh.x, md.mesh.y, md.initialization.vx, md.initialization.vy, x0, y0)
    2121    #
    2222    #   Options:
    23     #      - 'maxiter':   how many steps upstream and downstream of the seed points (default: 200)
    24     #      - 'precision': division of each segment (higer precision increases number of segments, default: 1)
    25     #      - 'downstream':flow line upstream of the seed points (default: 1)
    26     #      - 'upstream':  flow line upstream of the seed points (default: 1)
     23    # - 'maxiter':   how many steps upstream and downstream of the seed points (default: 200)
     24    # - 'precision': division of each segment (higer precision increases number of segments, default: 1)
     25    # - 'downstream':flow line upstream of the seed points (default: 1)
     26    # - 'upstream':  flow line upstream of the seed points (default: 1)
    2727
    2828    #check input
    2929    if (not len(x) == len(y) == len(u) == len(v)):
    30         raise IOError('flowlines error message: x,y,u and v must have the same length')
     30        raise IOError('flowlines error message: x, y, u and v must have the same length')
    3131
    3232    if len(x) < 3:
     
    7979    for flowdirection in ['downstream', 'upstream']:
    8080        print('Dealing with the {} flowlines'.format(flowdirection))
    81         #initialization:
     81    #initialization:
    8282        counter = 1
    8383        treatdirection = options.getfieldvalue(flowdirection, 1)
     
    9191                flowindex = 0
    9292            elif flowdirection == 'downstream':
    93                 flowindex = -1
     93                flowindex = - 1
    9494
    9595            while not all(done):
     
    112112                #velocity of the current triangle and norm it
    113113                if flowdirection == 'upstream':
    114                     ut = -u[tria]
    115                     vt = -v[tria]
     114                    ut = - u[tria]
     115                    vt = - v[tria]
    116116                if flowdirection == 'downstream':
    117117                    ut = u[tria]
  • issm/trunk-jpl/src/m/extrusion/DepthAverage.py

    r23805 r24213  
    99
    1010    Usage:
    11             vector_average=DepthAverage(md,vector)
     11            vector_average = DepthAverage(md, vector)
    1212
    1313    Example:
    14             vel_bar=DepthAverage(md,md.initialization.vel)
     14            vel_bar = DepthAverage(md, md.initialization.vel)
    1515    '''
    1616
     
    2727    if vector.ndim == 2:
    2828        vec2d = True
    29         vector = vector.reshape(-1,)
     29        vector = vector.reshape(- 1, )
    3030
    3131    #nods data
     
    4343            elements_dz = vertices_dz.mean(1)
    4444            vector_average = vector_average + project2d(md, vector, i) * elements_dz
    45             #vector_average = vector_average + project2d(md, vector, i) * (project2d(md, md.mesh.z, i + 1) - project2d(md, md.mesh.z, i))
     45    #vector_average = vector_average + project2d(md, vector, i) * (project2d(md, md.mesh.z, i + 1) - project2d(md, md.mesh.z, i))
    4646        vertices_thickness = project2d(md, md.geometry.thickness, 1)
    4747        elements_thickness = vertices_thickness.mean(1)
    4848        vector_average = vector_average / elements_thickness
    49         #vector_average = vector_average / project2d(md, md.geometry.thickness, 1)
     49    #vector_average = vector_average / project2d(md, md.geometry.thickness, 1)
    5050
    5151    else:
     
    5353
    5454    if vec2d:
    55         vector_average = vector_average.reshape(-1,)
     55        vector_average = vector_average.reshape(- 1, )
    5656
    5757    return vector_average
  • issm/trunk-jpl/src/m/extrusion/project2d.py

    r23787 r24213  
    11import numpy as np
    22
    3 def project2d(md3d,value,layer):
     3
     4def project2d(md3d, value, layer):
    45    '''
    56        returns the value of a field for a given layer of the mesh
     
    1011
    1112    Usage:
    12       projection_value=project2d(md3d,value,layer)
     13      projection_value = project2d(md3d, value, layer)
    1314
    1415    Example:
    15       vel2=project2d(md3d,md3d.initialization.vel,2);
     16      vel2 = project2d(md3d, md3d.initialization.vel, 2)
    1617      returns the velocity of the second layer (1 is the base)
    1718        '''
     
    3031    vec2d = False
    3132    if value.ndim == 2 and value.shape[1] == 1:
    32         value = value.reshape(-1,)
     33        value = value.reshape(- 1, )
    3334        vec2d = True
    3435
     
    3637        projection_value = value[(layer - 1) * md3d.mesh.numberofelements2d:layer * md3d.mesh.numberofelements2d]
    3738    elif value.shape[0] == md3d.mesh.numberofvertices:
    38         #print 'indices: ', (layer-1)*md3d.mesh.numberofvertices2d, layer*md3d.mesh.numberofvertices2d
     39        #print 'indices: ', (layer - 1) * md3d.mesh.numberofvertices2d, layer * md3d.mesh.numberofvertices2d
    3940        projection_value = value[(layer - 1) * md3d.mesh.numberofvertices2d:layer * md3d.mesh.numberofvertices2d]
    4041    elif value.shape[0] == md3d.mesh.numberofvertices + 1:
     
    4445
    4546    if vec2d:
    46         projection_value = projection_value.reshape(-1,)
     47        projection_value = projection_value.reshape(- 1, )
    4748
    4849    return projection_value
  • issm/trunk-jpl/src/m/extrusion/project3d.py

    r23870 r24213  
    22from pairoptions import pairoptions
    33
    4 def project3d(md,*args):
     4
     5def project3d(md, *args):
    56    """
    67    PROJECT3D - vertically project a vector from 2d mesh
    78
    89       vertically project a vector from 2d mesh (split in noncoll and coll areas) into a 3d mesh.
    9        This vector can be a node vector of size (md.mesh.numberofvertices2d,N/A) or an
    10        element vector of size (md.mesh.numberofelements2d,N/A).
     10       This vector can be a node vector of size (md.mesh.numberofvertices2d, N / A) or an
     11       element vector of size (md.mesh.numberofelements2d, N / A).
    1112       arguments:
    1213          'vector': 2d vector
     
    1819
    1920       Examples:
    20           extruded_vector=project3d(md,'vector',vector2d,'type','node','layer',1,'padding',NaN)
    21           extruded_vector=project3d(md,'vector',vector2d,'type','element','padding',0)
    22           extruded_vector=project3d(md,'vector',vector2d,'type','node')
     21          extruded_vector = project3d(md, 'vector', vector2d, 'type', 'node', 'layer', 1, 'padding', NaN)
     22          extruded_vector = project3d(md, 'vector', vector2d, 'type', 'element', 'padding', 0)
     23          extruded_vector = project3d(md, 'vector', vector2d, 'type', 'node')
    2324    """
    2425
     
    3132    #retrieve parameters from options.
    3233    options = pairoptions(*args)
    33     vector2d = options.getfieldvalue('vector')       #mandatory
    34     vectype = options.getfieldvalue('type')         #mandatory
    35     layer = options.getfieldvalue('layer', 0)      #optional (do all layers otherwise)
    36     paddingvalue = options.getfieldvalue('padding', 0)    #0 by default
     34    vector2d = options.getfieldvalue('vector')  #mandatory
     35    vectype = options.getfieldvalue('type')  #mandatory
     36    layer = options.getfieldvalue('layer', 0)  #optional (do all layers otherwise)
     37    paddingvalue = options.getfieldvalue('padding', 0)  #0 by default
    3738
    3839    vector1d = False
    3940    if isinstance(vector2d, np.ndarray) and np.ndim(vector2d) == 1:
    4041        vector1d = True
    41         vector2d = vector2d.reshape(-1,)
     42        vector2d = vector2d.reshape(- 1, )
    4243
    4344    if isinstance(vector2d, (bool, int, float)) or np.size(vector2d) == 1:
     
    5253                projected_vector = (paddingvalue * np.ones((md.mesh.numberofvertices + 1))).astype(vector2d.dtype)
    5354                projected_vector[-1] = vector2d[-1]
    54                 vector2d = vector2d[:-1]
     55                vector2d = vector2d[: - 1]
    5556            else:
    5657                raise TypeError("vector length not supported")
    57             #Fill in
     58    #Fill in
    5859            if layer == 0:
    5960                for i in range(md.mesh.numberoflayers):
     
    6768                projected_vector = (paddingvalue * np.ones((md.mesh.numberofvertices + 1, np.size(vector2d, axis=1)))).astype(vector2d.dtype)
    6869                projected_vector[-1, :] = vector2d[-1, :]
    69                 vector2d = vector2d[:-1, :]
     70                vector2d = vector2d[: - 1, :]
    7071            else:
    7172                raise TypeError("vector length not supported")
    72             #Fill in
     73    #Fill in
    7374            if layer == 0:
    7475                for i in range(md.mesh.numberoflayers):
     
    8586                projected_vector = (paddingvalue * np.ones((md.mesh.numberofelements + 1))).astype(vector2d.dtype)
    8687                projected_vector[-1] = vector2d[-1]
    87                 vector2d = vector2d[:-1]
     88                vector2d = vector2d[: - 1]
    8889            else:
    8990                raise TypeError("vector length not supported")
    90             #Fill in
     91    #Fill in
    9192            if layer == 0:
    9293                for i in range(md.mesh.numberoflayers - 1):
     
    100101                projected_vector = (paddingvalue * np.ones((md.mesh.numberofelements + 1, np.size(vector2d, axis=1)))).astype(vector2d.dtype)
    101102                projected_vector[-1, :] = vector2d[-1, :]
    102                 vector2d = vector2d[:-1, :]
     103                vector2d = vector2d[: - 1, :]
    103104            else:
    104105                raise TypeError("vector length not supported")
    105             #Fill in
     106    #Fill in
    106107            if layer == 0:
    107108                for i in range(md.mesh.numberoflayers - 1):
     
    114115
    115116    if vector1d:
    116         projected_vector = projected_vector.reshape(-1,)
     117        projected_vector = projected_vector.reshape(- 1, )
    117118
    118119    return projected_vector
  • issm/trunk-jpl/src/m/geometry/FlagElements.py

    r23716 r24213  
    11import numpy as np
    22import os
    3 #from basinzoom import basinzoon
    43from ContourToMesh import ContourToMesh
    54import MatlabFuncs as m
    65import PythonFuncs as p
    76
    8 def FlagElements(md,region):
    9         """
    10         FLAGELEMENTS - flag the elements in an region
    117
    12            The region can be given with an exp file, a list of elements or vertices
     8def FlagElements(md, region):
     9    """
     10    FLAGELEMENTS - flag the elements in an region
    1311
    14            Usage:
    15               flag=FlagElements(md,region);
     12       The region can be given with an exp file, a list of elements or vertices
    1613
    17            Example:
    18               flag=FlagElements(md,'all');
    19               flag=FlagElements(md,'');
    20               flag=FlagElements(md,'Domain.exp');
    21               flag=FlagElements(md,'~Domain.exp');
    22         """
     14       Usage:
     15          flag = FlagElements(md, region)
    2316
    24         if   isinstance(region,str):
    25                 if   not region:
    26                         flag=np.zeros(md.mesh.numberofelements,bool)
    27                         invert=0
    28                 elif m.strcmpi(region,'all'):
    29                         flag=np.ones(md.mesh.numberofelements,bool)
    30                         invert=0
    31                 else:
    32                         #make sure that we actually don't want the elements outside the domain outline!
    33                         if m.strcmpi(region[0],'~'):
    34                                 region=region[1:]
    35                                 invert=1
    36                         else:
    37                                 invert=0
     17       Example:
     18          flag = FlagElements(md, 'all')
     19          flag = FlagElements(md, '')
     20          flag = FlagElements(md, 'Domain.exp')
     21          flag = FlagElements(md, '~Domain.exp')
     22    """
    3823
    39                         #does the region domain outline exist or do we have to look for xlim,ylim in basinzoom?
    40                         if not os.path.exists(region):
    41                                 if len(region)>3 and not m.strcmp(region[-4:],'.exp'):
    42                                         raise IOError("Error: File 'region' not found!" % region)
    43                                 raise RuntimeError("FlagElements.py calling basinzoom.py is not complete.")
    44                                 xlim,ylim=basinzoom('basin',region)
    45                                 flag_nodes=p.logical_and_n(md.mesh.x<xlim[1],md.mesh.x>xlim[0],md.mesh.y<ylim[1],md.mesh.y>ylim[0])
    46                                 flag=np.prod(flag_nodes[md.mesh.elements],axis=1).astype(bool)
    47                         else:
    48                                 #ok, flag elements
    49                                 flag=ContourToMesh(md.mesh.elements[:,0:3].copy(),md.mesh.x,md.mesh.y,region,'element',1)
    50                                 flag=flag.astype(bool)
     24    if isinstance(region, str):
     25        if not region:
     26            flag = np.zeros(md.mesh.numberofelements, bool)
     27            invert = 0
     28        elif m.strcmpi(region, 'all'):
     29            flag = np.ones(md.mesh.numberofelements, bool)
     30            invert = 0
     31        else:
     32            #make sure that we actually don't want the elements outside the domain outline!
     33            if m.strcmpi(region[0], '~'):
     34                region = region[1:]
     35                invert = 1
     36            else:
     37                invert = 0
    5138
    52                 if invert:
    53                         flag=np.logical_not(flag)
     39                #does the region domain outline exist or do we have to look for xlim, ylim in basinzoom?
     40            if not os.path.exists(region):
     41                if len(region) > 3 and not m.strcmp(region[-4:], '.exp'):
     42                    raise IOError("Error: File 'region' not found!" % region)
     43                raise RuntimeError("FlagElements.py calling basinzoom.py is not complete.")
     44                xlim, ylim = basinzoom('basin', region)
     45                flag_nodes = p.logical_and_n(md.mesh.x < xlim[1], md.mesh.x > xlim[0], md.mesh.y < ylim[1], md.mesh.y > ylim[0])
     46                flag = np.prod(flag_nodes[md.mesh.elements], axis=1).astype(bool)
     47            else:
     48                #ok, flag elements
     49                flag = ContourToMesh(md.mesh.elements[:, 0:3].copy(), md.mesh.x, md.mesh.y, region, 'element', 1)
     50                flag = flag.astype(bool)
    5451
    55         elif isinstance(region,np.ndarray) or isinstance(region,bool):
    56                 if np.size(region,0)==md.mesh.numberofelements:
    57                         flag=region
    58                 elif np.size(region,0)==md.mesh.numberofvertices:
    59                         flag=(np.sum(region[md.mesh.elements-1]>0,axis=1)==np.size(md.mesh.elements,1))
    60                 else:
    61                         raise TypeError("Flaglist for region must be of same size as number of elements in model.")
     52        if invert:
     53            flag = np.logical_not(flag)
    6254
    63         else:
    64                 raise TypeError("Invalid region option")
     55    elif isinstance(region, np.ndarray) or isinstance(region, bool):
     56        if np.size(region, 0) == md.mesh.numberofelements:
     57            flag = region
     58        elif np.size(region, 0) == md.mesh.numberofvertices:
     59            flag = (np.sum(region[md.mesh.elements - 1] > 0, axis=1) == np.size(md.mesh.elements, 1))
     60        else:
     61            raise TypeError("Flaglist for region must be of same size as number of elements in model.")
    6562
    66         return flag
     63    else:
     64        raise TypeError("Invalid region option")
    6765
     66    return flag
  • issm/trunk-jpl/src/m/geometry/GetAreas.py

    r21303 r24213  
    11import numpy as np
    22
    3 def GetAreas(index,x,y,z=np.array([])):
    4         """
    5         GETAREAS - compute areas or volumes of elements
    63
    7            compute areas of triangular elements or volumes
    8            of pentahedrons
     4def GetAreas(index, x, y, z=np.array([])):
     5    """
     6    GETAREAS - compute areas or volumes of elements
    97
    10            Usage:
    11               areas  =GetAreas(index,x,y);
    12               volumes=GetAreas(index,x,y,z);
     8       compute areas of triangular elements or volumes
     9       of pentahedrons
    1310
    14            Examples:
    15               areas  =GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
    16               volumes=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y,md.z);
    17         """
     11       Usage:
     12          areas  =GetAreas(index, x, y)
     13          volumes = GetAreas(index, x, y, z)
    1814
    19         #get number of elements and number of nodes
    20         nels=np.size(index,axis=0)
    21         nods=np.size(x)
     15       Examples:
     16          areas  =GetAreas(md.mesh.elements, md.mesh.x, md.mesh.y)
     17          volumes = GetAreas(md.mesh.elements, md.mesh.x, md.mesh.y, md.z)
     18    """
    2219
    23         #some checks
    24         if np.size(y)!=nods or (z and np.size(z)!=nods):
    25                 raise TypeError("GetAreas error message: x,y and z do not have the same length.")
    26         if np.max(index)>nods:
    27                 raise TypeError("GetAreas error message: index should not have values above %d." % nods)
    28         if (not z and np.size(index,axis=1)!=3):
    29                 raise TypeError("GetAreas error message: index should have 3 columns for 2d meshes.")
    30         if (z and np.size(index,axis=1)!=6):
    31                 raise TypeError("GetAreas error message: index should have 6 columns for 3d meshes.")
     20    #get number of elements and number of nodes
     21    nels = np.size(index, axis=0)
     22    nods = np.size(x)
    3223
    33         #initialization
    34         areas=np.zeros(nels)
    35         x1=x[index[:,0]-1]
    36         x2=x[index[:,1]-1]
    37         x3=x[index[:,2]-1]
    38         y1=y[index[:,0]-1]
    39         y2=y[index[:,1]-1]
    40         y3=y[index[:,2]-1]
     24    #some checks
     25    if np.size(y) != nods or (z and np.size(z) != nods):
     26        raise TypeError("GetAreas error message: x, y and z do not have the same length.")
     27    if np.max(index) > nods:
     28        raise TypeError("GetAreas error message: index should not have values above %d." % nods)
     29    if (not z and np.size(index, axis=1) != 3):
     30        raise TypeError("GetAreas error message: index should have 3 columns for 2d meshes.")
     31    if (z and np.size(index, axis=1) != 6):
     32        raise TypeError("GetAreas error message: index should have 6 columns for 3d meshes.")
    4133
    42         #compute the volume of each element
    43         if not z:
    44                 #compute the surface of the triangle
    45                 areas=(0.5*((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)))
    46         else:
    47                 #V=area(triangle)*1/3(z1+z2+z3)
    48                 thickness=np.mean(z[index[:,3:6]-1])-np.mean(z[index[:,0:3]-1])
    49                 areas=(0.5*((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)))*thickness
     34    #initialization
     35    areas = np.zeros(nels)
     36    x1 = x[index[:, 0] - 1]
     37    x2 = x[index[:, 1] - 1]
     38    x3 = x[index[:, 2] - 1]
     39    y1 = y[index[:, 0] - 1]
     40    y2 = y[index[:, 1] - 1]
     41    y3 = y[index[:, 2] - 1]
    5042
    51         return areas
     43    #compute the volume of each element
     44    if not z:
     45        #compute the surface of the triangle
     46        areas = (0.5 * ((x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1)))
     47    else:
     48        #V = area(triangle) * 1 / 3(z1 + z2 + z3)
     49        thickness = np.mean(z[index[:, 3:6] - 1]) - np.mean(z[index[:, 0:3] - 1])
     50        areas = (0.5 * ((x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1))) * thickness
    5251
     52    return areas
  • issm/trunk-jpl/src/m/geometry/NowickiProfile.py

    r23716 r24213  
    11import numpy as np
    22
     3
    34def NowickiProfile(x):
    4         """
    5         NOWICKIPROFILE - Create profile at the transition zone based on Sophie Nowicki's thesis
     5    """
     6    NOWICKIPROFILE - Create profile at the transition zone based on Sophie Nowicki's thesis
    67
    7         Usage:
    8                 [b h] = NowickiProfile(x)
     8    Usage:
     9        [b h] = NowickiProfile(x)
    910
    10                 - h = ice thickness
    11                 - b = ice base
    12                 - x = along flow coordinate
    13         """
    14         #Constant for theoretical profile
    15         delta = 0.1             #ratio of water density and ice density -1
    16         hg    = 1.              #ice thickness at grounding line
    17         sea   = hg / (1+delta)  #sea level
    18         lamda = 0.1             #ration of deviatoric stress and water pressure
    19         beta  = 5.              #friction coefficient
    20         ms    = 0.005           #surface accumulation rat
    21         mu    = 5.              #viscosity
    22         q     = 0.801           #ice mass flux
     11         - h = ice thickness
     12         - b = ice base
     13         - x = along flow coordinate
     14    """
     15    #Constant for theoretical profile
     16    delta = 0.1  #ratio of water density and ice density - 1
     17    hg = 1.  #ice thickness at grounding line
     18    sea = hg / (1 + delta)  #sea level
     19    lamda = 0.1  #ration of deviatoric stress and water pressure
     20    beta = 5.  #friction coefficient
     21    ms = 0.005  #surface accumulation rat
     22    mu = 5.  #viscosity
     23    q = 0.801  #ice mass flux
    2324
    24         #mesh parameters
    25         b = np.zeros((np.size(x),))
    26         h = np.zeros((np.size(x),))
    27         s = np.zeros((np.size(x),))
     25    #mesh parameters
     26    b = np.zeros((np.size(x), ))
     27    h = np.zeros((np.size(x), ))
     28    s = np.zeros((np.size(x), ))
    2829
    29         #upstream of the GL
    30         for i in range(int(np.size(x)/2)):
    31                 ss = np.roots([1, 4 * lamda * beta, 0, 0, 6 * lamda * ms * x[i]**2 +
    32                                 12 * lamda * q * x[i] - hg**4 - 4 * lamda * beta * hg**3])
    33                 for j in range(4):
    34                         if (np.isreal(ss[j]) > 0) and (np.imag(ss[j]) == 0):
    35                                 s[i] = ss[j]
    36                 h[i] = s[i]
    37                 b[i] = 0.
     30    #upstream of the GL
     31    for i in range(int(np.size(x) / 2)):
     32        ss = np.roots([1, 4 * lamda * beta, 0, 0, 6 * lamda * ms * x[i]**2 + 12 * lamda * q * x[i] - hg**4 - 4 * lamda * beta * hg**3])
     33        for j in range(4):
     34            if (np.isreal(ss[j]) > 0) and (np.imag(ss[j]) == 0):
     35                s[i] = ss[j]
     36        h[i] = s[i]
     37        b[i] = 0.
    3838
    39         #downstream of the GL
    40         for i in range(int(np.size(x)/2), int(np.size(x))):
    41                 h[i] = (x[i] / (4. * (delta+1) * q) + hg**(-2))**(-0.5) # ice thickness for ice shelf from (3.1)
    42                 b[i] = sea - h[i] * (1. / (1+delta))
     39    #downstream of the GL
     40    for i in range(int(np.size(x) / 2), int(np.size(x))):
     41        h[i] = (x[i] / (4. * (delta + 1) * q) + hg**(- 2))**(- 0.5) # ice thickness for ice shelf from (3.1)
     42        b[i] = sea - h[i] * (1. / (1 + delta))
    4343
    44         return [b, h, sea]
     44    return [b, h, sea]
  • issm/trunk-jpl/src/m/geometry/SegIntersect.py

    r21303 r24213  
    11import numpy as np
    22
    3 def SegIntersect(seg1,seg2):
    4         """
    5         SEGINTERSECT - test of segments intersection
    63
    7            return 1 if the two segments intersect
    8            seg1=[x1 y1; x2 y2]
    9            seg2=[x1 y1; x2 y2]
     4def SegIntersect(seg1, seg2):
     5    """
     6    SEGINTERSECT - test of segments intersection
    107
    11            Usage:
    12               bval=SegIntersect(seg1,seg2)
    13         """
     8       return 1 if the two segments intersect
     9       seg1 = [x1 y1; x2 y2]
     10       seg2 = [x1 y1; x2 y2]
    1411
    15         bval=1
     12       Usage:
     13          bval = SegIntersect(seg1, seg2)
     14    """
    1615
    17         xA=seg1[0,0]
    18         yA=seg1[0,1]
    19         xB=seg1[1,0]
    20         yB=seg1[1,1]
    21         xC=seg2[0,0]
    22         yC=seg2[0,1]
    23         xD=seg2[1,0]
    24         yD=seg2[1,1]
     16    bval = 1
    2517
    26         O2A=np.array([xA,yA])-np.array([xD/2.+xC/2.,yD/2.+yC/2.])
    27         O2B=np.array([xB,yB])-np.array([xD/2.+xC/2.,yD/2.+yC/2.])
    28         O1C=np.array([xC,yC])-np.array([xA/2.+xB/2.,yB/2.+yA/2.])
    29         O1D=np.array([xD,yD])-np.array([xA/2.+xB/2.,yB/2.+yA/2.])
     18    xA = seg1[0, 0]
     19    yA = seg1[0, 1]
     20    xB = seg1[1, 0]
     21    yB = seg1[1, 1]
     22    xC = seg2[0, 0]
     23    yC = seg2[0, 1]
     24    xD = seg2[1, 0]
     25    yD = seg2[1, 1]
    3026
    31         n1=np.array([yA-yB,xB-xA])    #normal vector to segA
    32         n2=np.array([yC-yD,xD-xC])    #normal vector to segB
     27    O2A = np.array([xA, yA]) - np.array([xD / 2. + xC / 2., yD / 2. + yC / 2.])
     28    O2B = np.array([xB, yB]) - np.array([xD / 2. + xC / 2., yD / 2. + yC / 2.])
     29    O1C = np.array([xC, yC]) - np.array([xA / 2. + xB / 2., yB / 2. + yA / 2.])
     30    O1D = np.array([xD, yD]) - np.array([xA / 2. + xB / 2., yB / 2. + yA / 2.])
    3331
    34         test1=np.dot(n2,O2A)
    35         test2=np.dot(n2,O2B)
     32    n1 = np.array([yA - yB, xB - xA])  #normal vector to segA
     33    n2 = np.array([yC - yD, xD - xC])  #normal vector to segB
    3634
    37         if test1*test2>0:
    38                 bval=0
    39                 return bval
     35    test1 = np.dot(n2, O2A)
     36    test2 = np.dot(n2, O2B)
    4037
    41         test3=np.dot(n1,O1C)
    42         test4=np.dot(n1,O1D)
     38    if test1 * test2 > 0:
     39        bval = 0
     40        return bval
    4341
    44         if test3*test4>0:
    45                 bval=0
    46                 return bval
     42    test3 = np.dot(n1, O1C)
     43    test4 = np.dot(n1, O1D)
    4744
    48         #if colinear
    49         if test1*test2==0 and test3*test4==0 and np.linalg.det(np.hstack((n1.reshape((-1,)),n2.reshape(-1,))))==0:
     45    if test3 * test4 > 0:
     46        bval = 0
     47        return bval
    5048
    51                 #projection on the axis O1O2
    52                 O2O1=np.array([xA/2.+xB/2.,yB/2.+yA/2.])-np.array([xD/2.+xC/2.,yD/2.+yC/2.])
    53                 O1A=np.dot(O2O1,(O2A-O2O1))
    54                 O1B=np.dot(O2O1,(O2B-O2O1))
    55                 O1C=np.dot(O2O1,O1C)
    56                 O1D=np.dot(O2O1,O1D)
     49    #if colinear
     50    if test1 * test2 == 0 and test3 * test4 == 0 and np.linalg.det(np.hstack((n1.reshape((- 1, )), n2.reshape(- 1, )))) == 0:
    5751
    58                 #test if one point is included in the other segment (->bval=1)
    59                 if (O1C-O1A)*(O1D-O1A)<0:
    60                         bval=1
    61                         return bval
    62                 if (O1C-O1B)*(O1D-O1B)<0:
    63                         bval=1
    64                         return bval
    65                 if (O1A-O1C)*(O1B-O1C)<0:
    66                         bval=1
    67                         return bval
    68                 if (O1A-O1D)*(O1B-O1D)<0:
    69                         bval=1
    70                         return bval
     52        #projection on the axis O1O2
     53        O2O1 = np.array([xA / 2. + xB / 2., yB / 2. + yA / 2.]) - np.array([xD / 2. + xC / 2., yD / 2. + yC / 2.])
     54        O1A = np.dot(O2O1, (O2A - O2O1))
     55        O1B = np.dot(O2O1, (O2B - O2O1))
     56        O1C = np.dot(O2O1, O1C)
     57        O1D = np.dot(O2O1, O1D)
    7158
    72                 #test if the 2 segments have the same middle (->bval=1)
    73                 if O2O1==0:
    74                         bval=1
    75                         return bval
     59    #test if one point is included in the other segment (- > bval = 1)
     60        if (O1C - O1A) * (O1D - O1A) < 0:
     61            bval = 1
     62            return bval
     63        if (O1C - O1B) * (O1D - O1B) < 0:
     64            bval = 1
     65            return bval
     66        if (O1A - O1C) * (O1B - O1C) < 0:
     67            bval = 1
     68            return bval
     69        if (O1A - O1D) * (O1B - O1D) < 0:
     70            bval = 1
     71            return bval
    7672
    77                 #else
    78                 bval=0
    79                 return bval
     73    #test if the 2 segments have the same middle (- > bval = 1)
     74        if O2O1 == 0:
     75            bval = 1
     76            return bval
    8077
    81         return bval
     78    #else
     79        bval = 0
     80        return bval
    8281
     82    return bval
  • issm/trunk-jpl/src/m/geometry/slope.py

    r24115 r24213  
    99
    1010    Usage:
    11             sx,sy,s=slope(md)
    12             sx,sy,s=slope(md,md.results.TransientSolution(1).Surface)
     11            sx, sy, s = slope(md)
     12            sx, sy, s = slope(md, md.results.TransientSolution(1).Surface)
    1313    """
    1414
     
    3030        raise RuntimeError("slope.py usage error")
    3131
    32     #%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
     32    #%compute nodal functions coefficients N(x, y)=alpha x + beta y + gamma
    3333    alpha, beta = GetNodalFunctionsCoeff(index, x, y)[0:2]
    3434
    3535    summation = np.array([[1], [1], [1]])
    36     sx = np.dot(surf[index - 1, 0] * alpha, summation).reshape(-1,)
    37     sy = np.dot(surf[index - 1, 0] * beta, summation).reshape(-1,)
     36    sx = np.dot(surf[index - 1, 0] * alpha, summation).reshape(- 1, )
     37    sy = np.dot(surf[index - 1, 0] * beta, summation).reshape(- 1, )
    3838
    3939    s = np.sqrt(sx**2 + sy**2)
  • issm/trunk-jpl/src/m/interp/SectionValues.py

    r23716 r24213  
    11import os
    22from expread import expread
    3 import numpy as  np
     3import numpy as np
    44from project2d import project2d
    55#from InterpFromMesh2d import InterpFromMesh2d
     
    77from InterpFromMeshToMesh3d import InterpFromMeshToMesh3d
    88
    9 def SectionValues(md,data,infile,resolution):
    10         '''
    11         compute the value of a field on a section
    12        
    13         This routine gets the value of a given field of the model on points
    14         given in the file infile (Argus type file). Resolution must be a list
    15         [horizontal_resolution, vertical_resolution]
    16        
    17         Usage:
    18         [elements,x,y,z,s,data]=SectionValues(md,data,filename,resolution)
    19         [elements,x,y,z,s,data]=SectionValues(md,data,profile_structure,resolution)
    20         '''
    219
    22         if os.path.isfile(infile):
    23                 profile=expread(infile)[0]
    24                 nods=profile['nods']
    25                 x=profile['x']
    26                 y=profile['y']
    27         else:
    28                 raise IOError('file %s not found' % infile)
     10def SectionValues(md, data, infile, resolution):
     11    '''
     12    compute the value of a field on a section
    2913
    30         #get the specified resolution
    31         if len(resolution)!=2:
    32                 raise ValueError('SectionValues error message: Resolution must be a list [horizontal_resolution, vertical_resolution]')
    33         else:
    34                 res_h=resolution[0]
     14    This routine gets the value of a given field of the model on points
     15    given in the file infile (Argus type file). Resolution must be a list
     16    [horizontal_resolution, vertical_resolution]
    3517
    36         if md.mesh.domaintype().lower() == '3d':
    37                 if isinstance(resolution[1],int) or isinstance(resolution[1],float):
    38                         res_v=resolution[1]
    39                 else:
    40                         raise ValueError('SectionValues error: resolution must be a length-2 list of integers or floats')
     18    Usage:
     19    [elements, x, y, z, s, data] = SectionValues(md, data, filename, resolution)
     20    [elements, x, y, z, s, data] = SectionValues(md, data, profile_structure, resolution)
     21    '''
    4122
    42         #initialization
    43         X=np.array([]) #X-coordinate
    44         Y=np.array([]) #Y-coordinate
    45         S=np.array([0.])  #curvilinear coordinate
    46        
    47         for i in range(nods-1):
    48        
    49                 x_start=x[i]
    50                 x_end=x[i+1]
    51                 y_start=y[i]
    52                 y_end=y[i+1]
    53                 s_start=S[-1]
    54        
    55                 length_segment=np.sqrt((x_end-x_start)**2+(y_end-y_start)**2)
    56                 portion=np.ceil(length_segment/res_h)
    57        
    58                 x_segment=np.zeros(portion)
    59                 y_segment=np.zeros(portion)
    60                 s_segment=np.zeros(portion)
     23    if os.path.isfile(infile):
     24        profile = expread(infile)[0]
     25        nods = profile['nods']
     26        x = profile['x']
     27        y = profile['y']
     28    else:
     29        raise IOError('file %s not found' % infile)
    6130
    62                 for j in range(int(portion)):
    63                         x_segment[j]=x_start+(j)*(x_end-x_start)/portion
    64                         y_segment[j]=y_start+(j)*(y_end-y_start)/portion
    65                         s_segment[j]=s_start+j*length_segment/portion
    66        
    67                 #plug into X and Y
    68                 X=np.append(X,x_segment)
    69                 Y=np.append(Y,y_segment)
    70                 S=np.append(S,s_segment)
     31    #get the specified resolution
     32    if len(resolution) != 2:
     33        raise ValueError('SectionValues error message: Resolution must be a list [horizontal_resolution, vertical_resolution]')
     34    else:
     35        res_h = resolution[0]
    7136
    72         X=np.append(X,x[nods-1])
    73         Y=np.append(Y,y[nods-1])
    74        
    75         #Number of nodes:
    76         numberofnodes=X.shape[0]
    77        
    78         #Compute Z
    79         Z=np.zeros(numberofnodes)
    80        
    81         #New mesh and Data interpolation
    82         if '2d' in md.mesh.domaintype().lower():
    83        
    84                 #Interpolation of data on specified points
    85                 #data_interp=InterpFromMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X,Y)[0]
    86                 data_interp=InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X,Y)[0]
    87                 #data_interp=griddata(md.mesh.x,md.mesh.y,data,X,Y)
    88        
    89                 #Compute index
    90                 index=np.array([list(range(1,numberofnodes)),list(range(2,numberofnodes+1))]).T
    91        
    92         else:
    93        
    94                 #vertically extrude mesh
    95        
    96                 #Get base and surface for each 2d point, offset to make sure that it is inside the glacier system
    97                 offset=1.e-3
    98                 base=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.base,1),X,Y)[0]+offset
    99                 base=base.reshape(-1,)
    100                 surface=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.surface,1),X,Y)[0]-offset
    101                 surface=surface.reshape(-1,)
    102        
    103                 #Some useful parameters
    104                 layers=int(np.ceil(np.mean(md.geometry.thickness)/res_v))
    105                 nodesperlayer=int(numberofnodes)
    106                 nodestot=int(nodesperlayer*layers)
    107                 elementsperlayer=int(nodesperlayer-1)
    108                 elementstot=int((nodesperlayer-1)*(layers-1))
    109        
    110                 #initialization
    111                 X3=np.zeros(nodesperlayer*layers)
    112                 Y3=np.zeros(nodesperlayer*layers)
    113                 Z3=np.zeros(nodesperlayer*layers)
    114                 S3=np.zeros(nodesperlayer*layers)
    115                 index3=np.zeros((elementstot,4))
    116        
    117                 #Get new coordinates in 3d
    118                 for i in range(1,layers+1):
    119                         X3[i-1::layers]=X
    120                         Y3[i-1::layers]=Y
    121                         Z3[i-1::layers]=base+(i-1)*(surface-base)/(layers-1)
    122                         S3[i-1::layers]=S
    123        
    124                         if i<layers-1:  #Build index3 with quads
    125                                 ids=np.vstack((np.arange(i,nodestot-layers,layers),np.arange(i+1,nodestot-layers,layers),np.arange(i+layers+1,nodestot,layers),np.arange(i+layers,nodestot,layers))).T
    126                                 index3[(i-1)*elementsperlayer:i*elementsperlayer,:]=ids
     37    if md.mesh.domaintype().lower() == '3d':
     38        if isinstance(resolution[1], int) or isinstance(resolution[1], float):
     39            res_v = resolution[1]
     40        else:
     41            raise ValueError('SectionValues error: resolution must be a length - 2 list of integers or floats')
    12742
    128                 #Interpolation of data on specified points
    129                 data_interp=InterpFromMeshToMesh3d(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z,data,X3,Y3,Z3,np.nan)[0]
    130        
    131                 #build outputs
    132                 X=X3
    133                 Y=Y3
    134                 Z=Z3 
    135                 S=S3
     43    #initialization
     44    X = np.array([])  #X - coordinate
     45    Y = np.array([])  #Y - coordinate
     46    S = np.array([0.])  #curvilinear coordinate
    13647
    137                 index=index3
     48    for i in range(nods - 1):
    13849
    139         return index,X,Y,Z,S,data_interp
     50        x_start = x[i]
     51        x_end = x[i + 1]
     52        y_start = y[i]
     53        y_end = y[i + 1]
     54        s_start = S[-1]
     55
     56        length_segment = np.sqrt((x_end - x_start)**2 + (y_end - y_start)**2)
     57        portion = np.ceil(length_segment / res_h)
     58
     59        x_segment = np.zeros(portion)
     60        y_segment = np.zeros(portion)
     61        s_segment = np.zeros(portion)
     62
     63        for j in range(int(portion)):
     64            x_segment[j] = x_start + (j) * (x_end - x_start) / portion
     65            y_segment[j] = y_start + (j) * (y_end - y_start) / portion
     66            s_segment[j] = s_start + j * length_segment / portion
     67
     68    #plug into X and Y
     69        X = np.append(X, x_segment)
     70        Y = np.append(Y, y_segment)
     71        S = np.append(S, s_segment)
     72
     73    X = np.append(X, x[nods - 1])
     74    Y = np.append(Y, y[nods - 1])
     75
     76    #Number of nodes:
     77    numberofnodes = X.shape[0]
     78
     79    #Compute Z
     80    Z = np.zeros(numberofnodes)
     81
     82    #New mesh and Data interpolation
     83    if '2d' in md.mesh.domaintype().lower():
     84
     85        #Interpolation of data on specified points
     86        #data_interp = InterpFromMesh2d(md.mesh.elements, md.mesh.x, md.mesh.y, data, X, Y)[0]
     87        data_interp = InterpFromMeshToMesh2d(md.mesh.elements, md.mesh.x, md.mesh.y, data, X, Y)[0]
     88    #data_interp = griddata(md.mesh.x, md.mesh.y, data, X, Y)
     89
     90    #Compute index
     91        index = np.array([list(range(1, numberofnodes)), list(range(2, numberofnodes + 1))]).T
     92
     93    else:
     94        #vertically extrude mesh
     95        #Get base and surface for each 2d point, offset to make sure that it is inside the glacier system
     96        offset = 1.e-3
     97        base = InterpFromMeshToMesh2d(md.mesh.elements2d, md.mesh.x2d, md.mesh.y2d, project2d(md, md.geometry.base, 1), X, Y)[0] + offset
     98        base = base.reshape(- 1, )
     99        surface = InterpFromMeshToMesh2d(md.mesh.elements2d, md.mesh.x2d, md.mesh.y2d, project2d(md, md.geometry.surface, 1), X, Y)[0] - offset
     100        surface = surface.reshape(- 1, )
     101
     102    #Some useful parameters
     103        layers = int(np.ceil(np.mean(md.geometry.thickness) / res_v))
     104        nodesperlayer = int(numberofnodes)
     105        nodestot = int(nodesperlayer * layers)
     106        elementsperlayer = int(nodesperlayer - 1)
     107        elementstot = int((nodesperlayer - 1) * (layers - 1))
     108
     109    #initialization
     110        X3 = np.zeros(nodesperlayer * layers)
     111        Y3 = np.zeros(nodesperlayer * layers)
     112        Z3 = np.zeros(nodesperlayer * layers)
     113        S3 = np.zeros(nodesperlayer * layers)
     114        index3 = np.zeros((elementstot, 4))
     115
     116    #Get new coordinates in 3d
     117        for i in range(1, layers + 1):
     118            X3[i - 1::layers] = X
     119            Y3[i - 1::layers] = Y
     120            Z3[i - 1::layers] = base + (i - 1) * (surface - base) / (layers - 1)
     121            S3[i - 1::layers] = S
     122
     123            if i < layers - 1:  #Build index3 with quads
     124                ids = np.vstack((np.arange(i, nodestot - layers, layers), np.arange(i + 1, nodestot - layers, layers), np.arange(i + layers + 1, nodestot, layers), np.arange(i + layers, nodestot, layers))).T
     125                index3[(i - 1) * elementsperlayer:i * elementsperlayer, :] = ids
     126
     127    #Interpolation of data on specified points
     128        data_interp = InterpFromMeshToMesh3d(md.mesh.elements, md.mesh.x, md.mesh.y, md.mesh.z, data, X3, Y3, Z3, np.nan)[0]
     129
     130    #build outputs
     131        X = X3
     132        Y = Y3
     133        Z = Z3
     134        S = S3
     135
     136        index = index3
     137
     138    return index, X, Y, Z, S, data_interp
  • issm/trunk-jpl/src/m/interp/averaging.py

    r24115 r24213  
    1717       by taking the average of the element around a node weighted by the
    1818       elements volume
    19        For 3d mesh,  a last argument can be added to specify the layer to be averaged on.
     19       For 3d mesh, a last argument can be added to specify the layer to be averaged on.
    2020
    2121       Usage:
    22           smoothdata=averaging(md, data, iterations)
    23           smoothdata=averaging(md, data, iterations, layer)
     22          smoothdata = averaging(md, data, iterations)
     23          smoothdata = averaging(md, data, iterations, layer)
    2424
    2525       Examples:
    26           velsmoothed=averaging(md, md.initialization.vel, 4)
    27           pressure=averaging(md, md.initialization.pressure, 0)
    28           temperature=averaging(md, md.initialization.temperature, 1, 1)
     26          velsmoothed = averaging(md, md.initialization.vel, 4)
     27          pressure = averaging(md, md.initialization.pressure, 0)
     28          temperature = averaging(md, md.initialization.temperature, 1, 1)
    2929    '''
    3030
     
    3939    #initialization
    4040    if layer == 0:
    41         weights = np.zeros(md.mesh.numberofvertices,)
     41        weights = np.zeros(md.mesh.numberofvertices, )
    4242        data = data.flatten(1)
    4343    else:
    44         weights = np.zeros(md.mesh.numberofvertices2d,)
     44        weights = np.zeros(md.mesh.numberofvertices2d, )
    4545        data = data[(layer - 1) * md.mesh.numberofvertices2d + 1:layer * md.mesh.numberofvertices2d, :]
    4646
     
    6868    index = index - 1  # since python indexes starting from zero
    6969    line = index.flatten(1)
    70     areas = np.vstack(areas).reshape(-1,)
    71     summation = 1. / rep * np.ones(rep,)
     70    areas = np.vstack(areas).reshape(- 1, )
     71    summation = 1. / rep * np.ones(rep, )
    7272    linesize = rep * numberofelements
    7373
    7474    #update weights that holds the volume of all the element holding the node i
    75     weights = csc_matrix((np.tile(areas, (rep, 1)).reshape(-1,), (line, np.zeros(linesize,))), shape=(numberofnodes, 1))
     75    weights = csc_matrix((np.tile(areas, (rep, 1)).reshape(- 1, ), (line, np.zeros(linesize, ))), shape=(numberofnodes, 1))
    7676
    7777    #initialization
    7878    if len(data) == numberofelements:
    79         average_node = csc_matrix((np.tile(areas * data, (rep, 1)).reshape(-1,), (line, np.zeros(linesize,))), shape=(numberofnodes, 1))
     79        average_node = csc_matrix((np.tile(areas * data, (rep, 1)).reshape(- 1, ), (line, np.zeros(linesize, ))), shape=(numberofnodes, 1))
    8080        average_node = average_node / weights
    8181        average_node = csc_matrix(average_node)
    8282    else:
    83         average_node = csc_matrix(data.reshape(-1, 1))
     83        average_node = csc_matrix(data.reshape(- 1, 1))
    8484
    8585    #loop over iteration
    8686    for i in np.arange(1, iterations + 1):
    87         average_el = np.asarray(np.dot(average_node.todense()[index].reshape(numberofelements, rep), np.vstack(summation))).reshape(-1,)
    88         average_node = csc_matrix((np.tile(areas * average_el.reshape(-1), (rep, 1)).reshape(-1,), (line, np.zeros(linesize, ))), shape=(numberofnodes, 1))
     87        average_el = np.asarray(np.dot(average_node.todense()[index].reshape(numberofelements, rep), np.vstack(summation))).reshape(- 1, )
     88        average_node = csc_matrix((np.tile(areas * average_el.reshape(- 1), (rep, 1)).reshape(- 1, ), (line, np.zeros(linesize, ))), shape=(numberofnodes, 1))
    8989        average_node = average_node / weights
    9090        average_node = csc_matrix(average_node)
    9191
    9292    #return output as a full matrix (C code do not like sparse matrices)
    93     average = np.asarray(average_node.todense()).reshape(-1,)
     93    average = np.asarray(average_node.todense()).reshape(- 1, )
    9494
    9595    return average
  • issm/trunk-jpl/src/m/interp/holefiller.py

    r23716 r24213  
    1 import numpy as  np
     1import numpy as np
    22from scipy.spatial import cKDTree
    33
    4 def nearestneighbors(x,y,data,goodids,badids,knn):
    5         '''
    6         fill holes using nearest neigbors.  Arguments include:
     4
     5def nearestneighbors(x, y, data, goodids, badids, knn):
     6    '''
     7    fill holes using nearest neigbors.  Arguments include:
    78
    89
    9         x,y:            the coordinates of data to be filled
    10         data:           the data field to be filled (full field, including holes)
    11         goodids:        id's into the vertices that have good data
    12         badids: id's into the vertices with missing/bad data
    13         knn:            integer representing the k nearest neighbors to use for filling
    14                                 holes.  The average data value over the k nearest neighbors is
    15                                 then used to fill the hole.
     10    x, y:        the coordinates of data to be filled
     11    data:        the data field to be filled (full field, including holes)
     12    goodids:    id's into the vertices that have good data
     13    badids:    id's into the vertices with missing / bad data
     14    knn:        integer representing the k nearest neighbors to use for filling
     15                holes.  The average data value over the k nearest neighbors is
     16                then used to fill the hole.
    1617
    17         Usage:
    18                 filleddata=nearestneighbors(x,y,data,goodids,badids,knn)
     18    Usage:
     19        filleddata = nearestneighbors(x, y, data, goodids, badids, knn)
    1920
    20         Example:
    21                 filledthickness=nearestneighbors(x,y,data,goodids,badids,5)
    22         '''
     21    Example:
     22        filledthickness = nearestneighbors(x, y, data, goodids, badids, 5)
     23    '''
    2324
    24         if type(knn) != int or knn<1:
    25                 raise TypeError('nearestneighbors error: knn should be an integer>1')
     25    if type(knn) != int or knn < 1:
     26        raise TypeError('nearestneighbors error: knn should be an integer > 1')
    2627
    27         if len(x) != len(data) or len(y) != len(data):
    28                 raise Exception('nearestneighbors error: x and y should have the same length as "data"')
     28    if len(x) != len(data) or len(y) != len(data):
     29        raise Exception('nearestneighbors error: x and y should have the same length as "data"')
    2930
    30         filled=data
    31        
    32         XYGood=np.dstack([x[goodids],y[goodids]])[0]
    33         XYBad=np.dstack([x[badids],y[badids]])[0]
    34         tree=cKDTree(XYGood)
    35         nearest=tree.query(XYBad,k=knn)[1]
    36        
    37         if knn==1:
    38                 filled[badids]=filled[goodids][nearest] # can add k=N to return the N nearest neighbors
    39         else:
    40                 for i in range(len(badids)):
    41                         neardat=[]
    42                         for j in range(knn):
    43                                 neardat.append(filled[goodids][nearest[i][j]])
    44                                 filled[badids[i]]=np.mean(neardat)
    45                                
    46         return filled
     31    filled = data
     32
     33    XYGood = np.dstack([x[goodids], y[goodids]])[0]
     34    XYBad = np.dstack([x[badids], y[badids]])[0]
     35    tree = cKDTree(XYGood)
     36    nearest = tree.query(XYBad, k=knn)[1]
     37
     38    if knn == 1:
     39        filled[badids] = filled[goodids][nearest]  # can add k = N to return the N nearest neighbors
     40    else:
     41        for i in range(len(badids)):
     42            neardat = []
     43            for j in range(knn):
     44                neardat.append(filled[goodids][nearest[i][j]])
     45                filled[badids[i]] = np.mean(neardat)
     46
     47    return filled
  • issm/trunk-jpl/src/m/interp/interp.py

    r23716 r24213  
    1 # module for inperpolating/smoothing data
    2 import numpy as  np
     1# module for inperpolating / smoothing data
     2import numpy as np
    33from scipy.interpolate import CloughTocher2DInterpolator, Rbf
    44from scipy.spatial import cKDTree
    55try:
    6         import matplotlib.pyplot as plt
     6    import matplotlib.pyplot as plt
    77except ImportError:
    8         print('could not import matplotlib, no plotting functions enabled.\
    9                         Set plotonly=False in function call')
    10 
    11 def MeshSplineToMesh2d(x,y,data,xi,yi,tol=1e-6,fill_nans=False,**kwargs):#{{{
    12         '''
    13         Piecewise cubic, C1 smooth, curvature-minimizing interpolant in 2D.
    14         The interpolant is guaranteed to be continuously differentiable,
    15         and the gradients are chosen such that the curvature of the interpolant
    16         is approximately minimized.
    17 
    18         Uses scipy.interpolate.CloughTocher2DInterpolator
    19 
    20         x,y:                    data point coordinates
    21         data:                   data to be interpolated (same length as x,y)
    22         xi,yi:          coordintes to interpolate data onto
    23         tol:                    tolerance for gradient estimation (default 1e-6)
    24         fill_nans:      fill nan's (holes) in data using the spline fit?
    25         **kwargs:       optional keywork arguments:
    26                                         maxiter: maximum iterations in gradient estimation
    27        
    28         Returns interpolated data at given x,y coordinates.
    29 
    30         Usage:
    31                 interpdata=CloughToucher2d(x,y,data)
    32 
    33         Examples:
    34                 interpdata=CloughToucher2d(md.mesh.x,md.mesh.y,data)
    35                 interpdata=CloughToucher2d(md.mesh.x,md.mesh.y,data,tol=1e-3,maxiter=100)
    36         '''
    37 
    38         # unpack kwargs
    39         maxiter=kwargs.pop('maxiter',None)
    40         if 'maxiter' in kwargs: del kwargs['maxiter']
    41         if maxiter:
    42                 assert type(maxiter)==int, 'error, maxiter should be an integer'
    43         assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
    44 
    45         # create sub-vectors that just cover the limits of xi and yi
    46         # TODO x,y not necessarily a grid, so need a better definition of dx,dy (e.g. average element size)
    47         dx=500
    48         dy=500
    49         #dx=x[1]-x[0]
    50         #dy=y[1]-y[0]
    51         xlim=[min(xi)-dx,max(xi)+dx]
    52         ylim=[min(yi)-dy,max(yi)+dy]
    53         xflag=np.logical_and(x>xlim[0],x<xlim[1])
    54         yflag=np.logical_and(y>ylim[0],y<ylim[1])
    55         bothind=np.nonzero(np.logical_and(xflag,yflag))
    56         subdata=data[bothind]
    57         subx=x[bothind]
    58         suby=y[bothind]
    59         points=np.array([subx,suby]).T
    60 
    61         # mask out any nan's in the data and corresponding coordinate points
    62         mask=np.isnan(subdata)
    63         ind=np.nonzero(mask)[0]
    64         if len(ind) and fill_nans:
    65                 print("         WARNING: filling nans using spline fit through good data points, which may or may not be appropriate. Check results carefully.")
    66         subdata=np.delete(subdata,ind)
    67         points=np.delete(points,ind,axis=0)
    68 
    69         if maxiter:
    70                 spline=CloughTocher2DInterpolator(points,subdata,tol,maxiter=maxiter)
    71         else:
    72                 spline=CloughTocher2DInterpolator(points,subdata,tol)
    73 
    74         interpdata=spline(xi,yi)
    75        
    76         if not fill_nans:
    77                 # identify nan's in xi,yi using nearest neighbors
    78                 xyinterp=np.dstack([xi,yi])[0]
    79                 xg,yg=np.meshgrid(subx,suby)
    80                 xydata=np.dstack([subx,suby])[0]
    81                 tree=cKDTree(xydata)
    82                 nearest=tree.query(xyinterp)[1]
    83                 pos=np.nonzero(np.isnan(subdata[nearest]))
    84                 interpdata[pos]=subdata[nearest][pos]
    85 
    86         return interpdata
    87 #}}}
    88 def GridSplineToMesh2d(x,y,data,xi,yi,default_value=np.nan,plotonly=False,fill_nans=False):#{{{
    89         '''
    90         python analog to InterpFromGridToMesh.  This routine uses
    91         scipy.interpolate.CloughTocher2dInterpolator to create a bivariate spline
    92         interpolation of the input data and then return values of the spline
    93         on the x,y coordinates of the model mesh.  The interpolant is piece-wise
    94         cubic, C1 smooth (continuously differentiable) and has approximately
    95         minimized curvature.  See "help(scipy.interpolate.CloughTocher2dInterpolator)"
    96         for more information on the routine.
    97 
    98         NOTE: this routine will not be appropriate if there are large holes (nan's) in
    99         the input data.  A non-spline interpolation scheme should be used in that case.
    100 
    101         x,y:                            vectors defining the coordinates of the input data
    102         data:                           2D array of input data
    103         xi,yi:                  x and y coordinates to be interpolated onto
    104         default_value:  default value if points lie outside the convex hull of input
    105                                                 points (defaults to nan if not specified)
    106         plotonly:               plot the data to be interpolated using imshow (useful for
    107         fill_nans:              fill nan's (holes) in data using the spline fit?
    108 
    109         Usage:
    110                 interpdata=GridToMesh(x,y,data,xi,yi,default_value=np.nan,plotonly=False,fill_nans=False)
    111 
    112         Examples:
    113                 interpdata=GridToMesh(x_m,y_m,data,md.mesh.x,md.mesh.y,0)
    114         '''
    115 
    116         if np.ndim(x)==2:
    117                 x=x.reshape(-1,)
    118         if np.ndim(y)==2:
    119                 y=y.reshape(-1,)
    120         if len(x) != data.shape[1]+1 and len(x) != data.shape[1]:
    121                 raise ValueError('x should have same length as ncols(data) or ncols(data)+1')
    122         if len(y) != data.shape[0]+1 and len(y) != data.shape[0]:
    123                 raise ValueError('y should have same length as nrows(data) or nrows(data)+1')
    124        
    125         # create sub-grid that just covers the limits of xi and yi
    126         dx=x[1]-x[0]
    127         dy=y[1]-y[0]
    128         xlim=[min(xi)-dx,max(xi)+dx]
    129         ylim=[min(yi)-dy,max(yi)+dy]
    130 
    131         # TODO create grid differently depending on whether data is defined at x,y
    132         # or at the center of a grid cell with corner coordinates defined by xi,yi
    133         # create points array and flattened data array
    134         if len(x)==data.shape[1] and len(y)==data.shape[0]:
    135                 print('         x,y taken to define the center of data grid cells')
    136                 xind=np.nonzero(np.logical_and(x>xlim[0],x<xlim[1]))[0]
    137                 yind=np.nonzero(np.logical_and(y>ylim[0],y<ylim[1]))[0]
    138                 xg,yg=np.meshgrid(x[xind],y[yind])
    139                 subdata=data[yind[0]:yind[-1]+1,xind[0]:xind[-1]+1]
    140         elif len(x)==data.shape[1]+1 and len(y)==data.shape[0]+1:
    141                 print('         x,y taken to define the corners of data grid cells')
    142                 xcenter=np.fromiter(((x[i]+x[i+1])/2 for i in range(len(x)-1)),np.float)
    143                 ycenter=np.fromiter(((y[i]+y[i+1])/2 for i in range(len(y)-1)),np.float)
    144                 xind=np.nonzero(np.logical_and(xcenter>xlim[0],xcenter<xlim[1]))[0]
    145                 yind=np.nonzero(np.logical_and(ycenter>ylim[0],ycenter<ylim[1]))[0]
    146                 xg,yg=np.meshgrid(xcenter[xind],ycenter[yind])
    147                 subdata=data[yind[0]:yind[-1]+1,xind[0]:xind[-1]+1]
    148         else:
    149                 raise ValueError('x and y have inconsistent sizes: both should have length ncols(data)/nrows(data) or ncols(data)+1/nrows(data)+1')
    150 
    151         points=np.array([xg.ravel(),yg.ravel()]).T
    152         flatsubdata=subdata.ravel()
    153 
    154         if plotonly:
    155                 plt.imshow(np.flipud(subdata),origin='upper')
    156                 plt.show()
    157                 return
    158 
    159         # mask out any nan's in the data and corresponding coordinate points
    160         mask=np.isnan(flatsubdata)
    161         ind=np.nonzero(mask)[0]
    162         if len(ind) and fill_nans:
    163                 print("         WARNING: filling nans using spline fit through good data points, which may or may not be appropriate. Check results carefully.")
    164         goodsubdata=np.delete(flatsubdata,ind)
    165         goodpoints=np.delete(points,ind,axis=0)
    166 
    167         # create spline and index spline at mesh points
    168         spline=CloughTocher2DInterpolator(goodpoints,goodsubdata)
    169         interpdata=spline(xi,yi)
    170 
    171         if not fill_nans:
    172                 # identify nan's in xi,yi using nearest neighbors
    173                 xyinterp=np.dstack([xi,yi])[0]
    174                 xydata=np.dstack([xg.ravel(),yg.ravel()])[0]
    175                 tree=cKDTree(xydata)
    176                 nearest=tree.query(xyinterp)[1]
    177                 pos=np.nonzero(np.isnan(flatsubdata[nearest]))
    178                 interpdata[pos]=flatsubdata[nearest][pos]
    179 
    180         return interpdata
    181 #}}}
    182 def RadialInterp(x,y,data,xi,yi,**kwargs):#{{{
    183         '''
    184         Interpolation using a radial basis function in 2 or 3 dimensions.
    185         Useful for smoothing input data after interpolation.
    186 
    187         Uses scipy.interpolate.Rbf
    188 
    189         x,y:                    data point coordinates
    190         data:                   data to be interpolated (same length as x,y)
    191         xi,yi:          coordinates to interpolate onto
    192         function:       form of radial basis function for interpolation:
    193                                         'multiquadric': sqrt((r/self.epsilon)**2 + 1) (default)
    194                                         'inverse': 1.0/sqrt((r/self.epsilon)**2 + 1)
    195                                         'gaussian': exp(-(r/self.epsilon)**2)
    196                                         'linear': r
    197                                         'cubic': r**3
    198                                         'quintic': r**5
    199                                         'thin_plate': r**2 * log(r)
    200         epsilon:                adjustable constant for scaling radial distance.  Defaults to
    201                                         approximate average distance between nodes.
    202         smooth:         float>0, adjusts the amount of smoothing applied.  Defaults to 0,
    203                                         such that the function always passes through nodal points.
    204         z:                              coordinate array if interpolating in 3 dimensions
    205         zi:                     coordinate array if interpolating in 3 dimensions
    206 
    207         Usage:
    208                 interpdata=RadialInterp(x,y,data,**kwargs)
    209 
    210         Examples:
    211                 interpdata=RadialInterp(md.mesh.x,md.mesh.y,data)
    212                 interpdata=RadialInterp(md.mesh.x,md.mesh.y,data,function='gaussian',epsilon=100,smooth=1)
    213         '''
    214 
    215         # unpack kwargs
    216         function=kwargs.pop('function','gaussian')
    217         if 'function' in kwargs: del kwargs['function']
    218         epsilon=kwargs.pop('epsilon',None)
    219         if 'epsilon' in kwargs: del kwargs['epsilon']
    220         smooth=kwargs.pop('smooth',0)
    221         if 'smooth' in kwargs: del kwargs['smooth']
    222         z=kwargs.pop('z',None)
    223         if 'z' in kwargs: del kwargs['z']
    224         assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
    225 
    226         if z:
    227                 if epsilon:
    228                         rbfi=Rbf(x,y,z,data,function=function,smooth=smooth,epsilon=epsilon)
    229                 else:
    230                         rbfi=Rbf(x,y,z,data,function=function,smooth=smooth)
    231                 interpdata=rbfi(xi,yi,zi)
    232         else:
    233                 if epsilon:
    234                         rbfi=Rbf(x,y,data,function=function,smooth=smooth,epsilon=epsilon)
    235                 else:
    236                         rbfi=Rbf(x,y,data,function=function,smooth=smooth)
    237                 interpdata=rbfi(xi,yi)
    238        
    239         return interpdata
    240 #}}}
     8    print('could not import matplotlib, no plotting functions enabled. Set plotonly = False in function call')
     9
     10
     11def MeshSplineToMesh2d(x, y, data, xi, yi, tol=1e-6, fill_nans=False, **kwargs):  #{{{
     12    '''
     13    Piecewise cubic, C1 smooth, curvature-minimizing interpolant in 2D.
     14    The interpolant is guaranteed to be continuously differentiable,
     15    and the gradients are chosen such that the curvature of the interpolant
     16    is approximately minimized.
     17
     18    Uses scipy.interpolate.CloughTocher2DInterpolator
     19
     20    x, y:            data point coordinates
     21    data:            data to be interpolated (same length as x, y)
     22    xi, yi:        coordintes to interpolate data onto
     23    tol:            tolerance for gradient estimation (default 1e-6)
     24    fill_nans:    fill nan's (holes) in data using the spline fit?
     25    **kwargs:    optional keywork arguments:
     26                    maxiter: maximum iterations in gradient estimation
     27
     28    Returns interpolated data at given x, y coordinates.
     29
     30    Usage:
     31        interpdata = CloughToucher2d(x, y, data)
     32
     33    Examples:
     34        interpdata = CloughToucher2d(md.mesh.x, md.mesh.y, data)
     35        interpdata = CloughToucher2d(md.mesh.x, md.mesh.y, data, tol = 1e-3, maxiter = 100)
     36    '''
     37
     38    # unpack kwargs
     39    maxiter = kwargs.pop('maxiter', None)
     40    if 'maxiter' in kwargs:
     41        del kwargs['maxiter']
     42    if maxiter:
     43        assert type(maxiter) == int, 'error, maxiter should be an integer'
     44    assert len(kwargs) == 0, 'error, unexpected or misspelled kwargs'
     45
     46    # create sub - vectors that just cover the limits of xi and yi
     47    # TODO x, y not necessarily a grid, so need a better definition of dx, dy (e.g. average element size)
     48    dx = 500
     49    dy = 500
     50    #dx = x[1] - x[0]
     51    #dy = y[1] - y[0]
     52    xlim = [min(xi) - dx, max(xi) + dx]
     53    ylim = [min(yi) - dy, max(yi) + dy]
     54    xflag = np.logical_and(x > xlim[0], x < xlim[1])
     55    yflag = np.logical_and(y > ylim[0], y < ylim[1])
     56    bothind = np.nonzero(np.logical_and(xflag, yflag))
     57    subdata = data[bothind]
     58    subx = x[bothind]
     59    suby = y[bothind]
     60    points = np.array([subx, suby]).T
     61
     62    # mask out any nan's in the data and corresponding coordinate points
     63    mask = np.isnan(subdata)
     64    ind = np.nonzero(mask)[0]
     65    if len(ind) and fill_nans:
     66        print("        WARNING: filling nans using spline fit through good data points, which may or may not be appropriate. Check results carefully.")
     67    subdata = np.delete(subdata, ind)
     68    points = np.delete(points, ind, axis=0)
     69
     70    if maxiter:
     71        spline = CloughTocher2DInterpolator(points, subdata, tol, maxiter=maxiter)
     72    else:
     73        spline = CloughTocher2DInterpolator(points, subdata, tol)
     74
     75    interpdata = spline(xi, yi)
     76
     77    if not fill_nans:
     78        # identify nan's in xi, yi using nearest neighbors
     79        xyinterp = np.dstack([xi, yi])[0]
     80        xg, yg = np.meshgrid(subx, suby)
     81        xydata = np.dstack([subx, suby])[0]
     82        tree = cKDTree(xydata)
     83        nearest = tree.query(xyinterp)[1]
     84        pos = np.nonzero(np.isnan(subdata[nearest]))
     85        interpdata[pos] = subdata[nearest][pos]
     86
     87    return interpdata
     88    #}}}
     89
     90
     91def GridSplineToMesh2d(x, y, data, xi, yi, default_value=np.nan, plotonly=False, fill_nans=False):  #{{{
     92    '''
     93    python analog to InterpFromGridToMesh.  This routine uses
     94    scipy.interpolate.CloughTocher2dInterpolator to create a bivariate spline
     95    interpolation of the input data and then return values of the spline
     96    on the x, y coordinates of the model mesh.  The interpolant is piece-wise
     97    cubic, C1 smooth (continuously differentiable) and has approximately
     98    minimized curvature.  See "help(scipy.interpolate.CloughTocher2dInterpolator)"
     99    for more information on the routine.
     100
     101    NOTE: this routine will not be appropriate if there are large holes (nan's) in
     102    the input data.  A non - spline interpolation scheme should be used in that case.
     103
     104    x, y:                vectors defining the coordinates of the input data
     105    data:                2D array of input data
     106    xi, yi:            x and y coordinates to be interpolated onto
     107    default_value:    default value if points lie outside the convex hull of input
     108                        points (defaults to nan if not specified)
     109    plotonly:        plot the data to be interpolated using imshow (useful for
     110    fill_nans:        fill nan's (holes) in data using the spline fit?
     111
     112    Usage:
     113        interpdata = GridToMesh(x, y, data, xi, yi, default_value = np.nan, plotonly = False, fill_nans = False)
     114
     115    Examples:
     116        interpdata = GridToMesh(x_m, y_m, data, md.mesh.x, md.mesh.y, 0)
     117    '''
     118
     119    if np.ndim(x) == 2:
     120        x = x.reshape(- 1, )
     121    if np.ndim(y) == 2:
     122        y = y.reshape(- 1, )
     123    if len(x) != data.shape[1] + 1 and len(x) != data.shape[1]:
     124        raise ValueError('x should have same length as ncols(data) or ncols(data) + 1')
     125    if len(y) != data.shape[0] + 1 and len(y) != data.shape[0]:
     126        raise ValueError('y should have same length as nrows(data) or nrows(data) + 1')
     127
     128    # create sub - grid that just covers the limits of xi and yi
     129    dx = x[1] - x[0]
     130    dy = y[1] - y[0]
     131    xlim = [min(xi) - dx, max(xi) + dx]
     132    ylim = [min(yi) - dy, max(yi) + dy]
     133
     134    # TODO create grid differently depending on whether data is defined at x, y
     135    # or at the center of a grid cell with corner coordinates defined by xi, yi
     136    # create points array and flattened data array
     137    if len(x) == data.shape[1] and len(y) == data.shape[0]:
     138        print('        x, y taken to define the center of data grid cells')
     139        xind = np.nonzero(np.logical_and(x > xlim[0], x < xlim[1]))[0]
     140        yind = np.nonzero(np.logical_and(y > ylim[0], y < ylim[1]))[0]
     141        xg, yg = np.meshgrid(x[xind], y[yind])
     142        subdata = data[yind[0]:yind[-1] + 1, xind[0]:xind[-1] + 1]
     143    elif len(x) == data.shape[1] + 1 and len(y) == data.shape[0] + 1:
     144        print('        x, y taken to define the corners of data grid cells')
     145        xcenter = np.fromiter(((x[i] + x[i + 1]) / 2 for i in range(len(x) - 1)), np.float)
     146        ycenter = np.fromiter(((y[i] + y[i + 1]) / 2 for i in range(len(y) - 1)), np.float)
     147        xind = np.nonzero(np.logical_and(xcenter > xlim[0], xcenter < xlim[1]))[0]
     148        yind = np.nonzero(np.logical_and(ycenter > ylim[0], ycenter < ylim[1]))[0]
     149        xg, yg = np.meshgrid(xcenter[xind], ycenter[yind])
     150        subdata = data[yind[0]:yind[-1] + 1, xind[0]:xind[-1] + 1]
     151    else:
     152        raise ValueError('x and y have inconsistent sizes: both should have length ncols(data) / nrows(data) or ncols(data) + 1 / nrows(data) + 1')
     153
     154    points = np.array([xg.ravel(), yg.ravel()]).T
     155    flatsubdata = subdata.ravel()
     156
     157    if plotonly:
     158        plt.imshow(np.flipud(subdata), origin='upper')
     159        plt.show()
     160        return
     161
     162    # mask out any nan's in the data and corresponding coordinate points
     163    mask = np.isnan(flatsubdata)
     164    ind = np.nonzero(mask)[0]
     165    if len(ind) and fill_nans:
     166        print("        WARNING: filling nans using spline fit through good data points, which may or may not be appropriate. Check results carefully.")
     167    goodsubdata = np.delete(flatsubdata, ind)
     168    goodpoints = np.delete(points, ind, axis=0)
     169
     170    # create spline and index spline at mesh points
     171    spline = CloughTocher2DInterpolator(goodpoints, goodsubdata)
     172    interpdata = spline(xi, yi)
     173
     174    if not fill_nans:
     175        # identify nan's in xi, yi using nearest neighbors
     176        xyinterp = np.dstack([xi, yi])[0]
     177        xydata = np.dstack([xg.ravel(), yg.ravel()])[0]
     178        tree = cKDTree(xydata)
     179        nearest = tree.query(xyinterp)[1]
     180        pos = np.nonzero(np.isnan(flatsubdata[nearest]))
     181        interpdata[pos] = flatsubdata[nearest][pos]
     182
     183    return interpdata
     184    #}}}
     185
     186
     187def RadialInterp(x, y, data, xi, yi, **kwargs):  #{{{
     188    '''
     189    Interpolation using a radial basis function in 2 or 3 dimensions.
     190    Useful for smoothing input data after interpolation.
     191
     192    Uses scipy.interpolate.Rbf
     193
     194    x, y:            data point coordinates
     195    data:            data to be interpolated (same length as x, y)
     196    xi, yi:        coordinates to interpolate onto
     197    function:    form of radial basis function for interpolation:
     198                    'multiquadric': sqrt((r / self.epsilon)**2 + 1) (default)
     199                    'inverse': 1.0 / sqrt((r / self.epsilon)**2 + 1)
     200                    'gaussian': exp(- (r / self.epsilon)**2)
     201                    'linear': r
     202                    'cubic': r**3
     203                    'quintic': r**5
     204                    'thin_plate': r**2 * log(r)
     205    epsilon:        adjustable constant for scaling radial distance.  Defaults to
     206                    approximate average distance between nodes.
     207    smooth:        float > 0, adjusts the amount of smoothing applied.  Defaults to 0,
     208                    such that the function always passes through nodal points.
     209    z:                coordinate array if interpolating in 3 dimensions
     210    zi:            coordinate array if interpolating in 3 dimensions
     211
     212    Usage:
     213        interpdata = RadialInterp(x, y, data,**kwargs)
     214
     215    Examples:
     216        interpdata = RadialInterp(md.mesh.x, md.mesh.y, data)
     217        interpdata = RadialInterp(md.mesh.x, md.mesh.y, data, function = 'gaussian', epsilon = 100, smooth = 1)
     218    '''
     219
     220    # unpack kwargs
     221    function = kwargs.pop('function', 'gaussian')
     222    if 'function' in kwargs:
     223        del kwargs['function']
     224    epsilon = kwargs.pop('epsilon', None)
     225    if 'epsilon' in kwargs:
     226        del kwargs['epsilon']
     227    smooth = kwargs.pop('smooth', 0)
     228    if 'smooth' in kwargs:
     229        del kwargs['smooth']
     230    z = kwargs.pop('z', None)
     231    if 'z' in kwargs:
     232        del kwargs['z']
     233    assert len(kwargs) == 0, 'error, unexpected or misspelled kwargs'
     234
     235    if z:
     236        if epsilon:
     237            rbfi = Rbf(x, y, z, data, function=function, smooth=smooth, epsilon=epsilon)
     238        else:
     239            rbfi = Rbf(x, y, z, data, function=function, smooth=smooth)
     240        interpdata = rbfi(xi, yi, zi)
     241    else:
     242        if epsilon:
     243            rbfi = Rbf(x, y, data, function=function, smooth=smooth, epsilon=epsilon)
     244        else:
     245            rbfi = Rbf(x, y, data, function=function, smooth=smooth)
     246        interpdata = rbfi(xi, yi)
     247
     248    return interpdata
     249    #}}}
  • issm/trunk-jpl/src/m/inversions/marshallcostfunctions.py

    r21246 r24213  
    1 import copy
    21
    32def marshallcostfunctions(cost_functions):
    43
    5         cfDict={101:'SurfaceAbsVelMisfit',
    6                                         102:'SurfaceRelVelMisfit',
    7                                         103:'SurfaceLogVelMisfit',
    8                                         104:'SurfaceLogVxVyMisfit',
    9                                         105:'SurfaceAverageVelMisfit',
    10                                         201:'ThicknessAbsMisfit',
    11                                         501:'DragCoefficientAbsGradient',
    12                                         502:'RheologyBbarAbsGradient',
    13                                         503:'ThicknessAbsGradient',
    14                                         504:'ThicknessAlongGradient',
    15                                         505:'ThicknessAcrossGradient',}
     4    cfDict = {101: 'SurfaceAbsVelMisfit',
     5              102: 'SurfaceRelVelMisfit',
     6              103: 'SurfaceLogVelMisfit',
     7              104: 'SurfaceLogVxVyMisfit',
     8              105: 'SurfaceAverageVelMisfit',
     9              201: 'ThicknessAbsMisfit',
     10              501: 'DragCoefficientAbsGradient',
     11              502: 'RheologyBbarAbsGradient',
     12              503: 'ThicknessAbsGradient',
     13              504: 'ThicknessAlongGradient',
     14              505: 'ThicknessAcrossGradient'}
    1615
    17         data=[cfDict[cf] for cf in cost_functions]
    18         # #copy list first
    19         # data=copy.deepcopy(cost_functions)
     16    data = [cfDict[cf] for cf in cost_functions]
     17    # #copy list first
     18    # data = copy.deepcopy(cost_functions)
    2019
    21         # #convert to strings
    22         # pos=[i for i,x in enumerate(cost_functions) if x==101];
    23         # for i in pos: data[i]='SurfaceAbsVelMisfit'       
    24         # pos=[i for i,x in enumerate(cost_functions) if x==102];
    25         # for i in pos: data[i]='SurfaceRelVelMisfit'       
    26         # pos=[i for i,x in enumerate(cost_functions) if x==103];
    27         # for i in pos: data[i]='SurfaceLogVelMisfit'       
    28         # pos=[i for i,x in enumerate(cost_functions) if x==104];
    29         # for i in pos: data[i]='SurfaceLogVxVyMisfit'       
    30         # pos=[i for i,x in enumerate(cost_functions) if x==105];
    31         # for i in pos: data[i]='SurfaceAverageVelMisfit'   
    32         # pos=[i for i,x in enumerate(cost_functions) if x==201];
    33         # for i in pos: data[i]='ThicknessAbsMisfit'         
    34         # pos=[i for i,x in enumerate(cost_functions) if x==501];
    35         # for i in pos: data[i]='DragCoefficientAbsGradient'
    36         # pos=[i for i,x in enumerate(cost_functions) if x==502];
    37         # for i in pos: data[i]='RheologyBbarAbsGradient'   
    38         # pos=[i for i,x in enumerate(cost_functions) if x==503];
    39         # for i in pos: data[i]='ThicknessAbsGradient'       
    40         # pos=[i for i,x in enumerate(cost_functions) if x==504];
    41         # for i in pos: data[i]='ThicknessAlongGradient'     
    42         # pos=[i for i,x in enumerate(cost_functions) if x==505];
    43         # for i in pos: data[i]='ThicknessAcrossGradient'   
     20    #  #convert to strings
     21    # pos = [i for i, x in enumerate(cost_functions) if x == 101]
     22    # for i in pos: data[i] = 'SurfaceAbsVelMisfit'
     23    # pos = [i for i, x in enumerate(cost_functions) if x == 102]
     24    # for i in pos: data[i] = 'SurfaceRelVelMisfit'
     25    # pos = [i for i, x in enumerate(cost_functions) if x == 103]
     26    # for i in pos: data[i] = 'SurfaceLogVelMisfit'
     27    # pos = [i for i, x in enumerate(cost_functions) if x == 104]
     28    # for i in pos: data[i] = 'SurfaceLogVxVyMisfit'
     29    # pos = [i for i, x in enumerate(cost_functions) if x == 105]
     30    # for i in pos: data[i] = 'SurfaceAverageVelMisfit'
     31    # pos = [i for i, x in enumerate(cost_functions) if x == 201]
     32    # for i in pos: data[i] = 'ThicknessAbsMisfit'
     33    # pos = [i for i, x in enumerate(cost_functions) if x == 501]
     34    # for i in pos: data[i] = 'DragCoefficientAbsGradient'
     35    # pos = [i for i, x in enumerate(cost_functions) if x == 502]
     36    # for i in pos: data[i] = 'RheologyBbarAbsGradient'
     37    # pos = [i for i, x in enumerate(cost_functions) if x == 503]
     38    # for i in pos: data[i] = 'ThicknessAbsGradient'
     39    # pos = [i for i, x in enumerate(cost_functions) if x == 504]
     40    # for i in pos: data[i] = 'ThicknessAlongGradient'
     41    # pos = [i for i, x in enumerate(cost_functions) if x == 505]
     42    # for i in pos: data[i] = 'ThicknessAcrossGradient'
    4443
    45         return data
     44    return data
  • issm/trunk-jpl/src/m/inversions/parametercontroldrag.py

    r21254 r24213  
    1 def parametercontroldrag(md,*args):
    2         """
    3         PARAMETERCONTROLDRAG - parameterization for control method on drag
     1import numpy as np
     2from pairoptions import pairoptions
    43
    5         It is possible to specify the number of steps, values for the
    6         minimum and maximum values of the drag, the
    7         kind of cm_responses to use or the the optscal.
    84
    9         Usage:
    10            md=parametercontroldrag(md,varargin)
     5def parametercontroldrag(md, *args):
     6    """
     7    PARAMETERCONTROLDRAG - parameterization for control method on drag
    118
    12         Example:
    13           md=parametercontroldrag(md)
    14           md=parametercontroldrag(md,'nsteps',20,'cm_responses',0)
    15           md=parametercontroldrag(md,'cm_min',1,'cm_max',150,'cm_jump',0.99,'maxiter',20)
    16           md=parametercontroldrag(md,eps_cm',10^-4,'optscal',[10^7 10^8])
     9    It is possible to specify the number of steps, values for the
     10    minimum and maximum values of the drag, the
     11    kind of cm_responses to use or the the optscal.
    1712
    18         See also PARAMETERCONTROLB
    19         """
     13    Usage:
     14       md = parametercontroldrag(md, varargin)
    2015
    21         #process options
    22         options=pairoptions(*args)
     16    Example:
     17      md = parametercontroldrag(md)
     18      md = parametercontroldrag(md, 'nsteps', 20, 'cm_responses', 0)
     19      md = parametercontroldrag(md, 'cm_min', 1, 'cm_max', 150, 'cm_jump', 0.99, 'maxiter', 20)
     20      md = parametercontroldrag(md, eps_cm', 10^ - 4, 'optscal', [10^7 10^8])
    2321
    24         #control type
    25         md.inversion.control_parameters='FrictionCoefficient'
     22    See also PARAMETERCONTROLB
     23    """
    2624
    27         #weights
    28         weights=options.getfieldvalue('weights',np.ones(md.mesh.numberofvertices))
    29         if np.size(weights)!=md.mesh.numberofvertices:
    30                 md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices)
    31         else:
    32                 md.inversion.cost_functions_coefficients=weights
     25    #process options
     26    options = pairoptions(*args)
    3327
    34         #nsteps
    35         nsteps=options.getfieldvalue('nsteps',100);
    36         if (np.size(nsteps)!=1) | (nsteps<=0) | (floor(nsteps)!=nsteps):
    37                 md.inversion.nsteps=100
    38         else:
    39                 md.inversion.nsteps=nsteps
     28    #control type
     29    md.inversion.control_parameters = 'FrictionCoefficient'
    4030
    41         #cm_min
    42         cm_min=options.getfieldvalue('cm_min',ones(md.mesh.numberofvertices))
    43         if (np.size(cm_min)==1):
    44                 md.inversion.min_parameters=cm_min*ones(md.mesh.numberofvertices)
    45         elif (np.size(cm_min)==md.mesh.numberofvertices):
    46                 md.inversion.min_parameters=cm_min
    47         else:
    48                 md.inversion.min_parameters=cm_min;
     31    #weights
     32    weights = options.getfieldvalue('weights', np.ones(md.mesh.numberofvertices))
     33    if np.size(weights) != md.mesh.numberofvertices:
     34        md.inversion.cost_functions_coefficients = np.ones(md.mesh.numberofvertices)
     35    else:
     36        md.inversion.cost_functions_coefficients = weights
    4937
    50         #cm_max
    51         cm_max=options.getfieldvalue('cm_max',250*ones(md.mesh.numberofvertices))
    52         if (np.size(cm_max)==1):
    53                 md.inversion.max_parameters=cm_max*ones(md.mesh.numberofvertices)
    54         elif (np.size(cm_max)==md.mesh.numberofvertices):
    55                 md.inversion.max_parameters=cm_max
    56         else:
    57                 md.inversion.max_parameters=cm_max
     38    #nsteps
     39    nsteps = options.getfieldvalue('nsteps', 100)
     40    if (np.size(nsteps) != 1) | (nsteps <= 0) | (np.floor(nsteps) != nsteps):
     41        md.inversion.nsteps = 100
     42    else:
     43        md.inversion.nsteps = nsteps
    5844
    59         #eps_cm
    60         eps_cm=optoins.getfieldvalue('eps_cm',float('nan'))
    61         if (np.size(eps_cm)~=1 | eps_cm<0 ):
    62                 md.inversion.cost_function_threshold=float('nan')
    63         else:
    64                 md.inversion.cost_function_threshold=eps_cm
     45    #cm_min
     46    cm_min = options.getfieldvalue('cm_min', np.ones(md.mesh.numberofvertices))
     47    if (np.size(cm_min) == 1):
     48        md.inversion.min_parameters = cm_min * np.ones(md.mesh.numberofvertices)
     49    elif (np.size(cm_min) == md.mesh.numberofvertices):
     50        md.inversion.min_parameters = cm_min
     51    else:
     52        md.inversion.min_parameters = cm_min
    6553
    66         #maxiter
    67         maxiter=options.getfieldvalue('maxiter',10*ones(md.inversion.nsteps))
    68         if (np.any(maxiter<0) | np.any(floor(maxiter)~=maxiter)):
    69                 md.inversion.maxiter_per_step=10*ones(md.inversion.nsteps)
    70         else:
    71                 raise RuntimeError("not implemented yet, see below matlab lines")
    72                 #md.inversion.maxiter_per_step=repmat(maxiter(:),md.inversion.nsteps,1);
    73                 #md.inversion.maxiter_per_step(md.inversion.nsteps+1:end)=[];
     54    #cm_max
     55    cm_max = options.getfieldvalue('cm_max', 250 * np.ones(md.mesh.numberofvertices))
     56    if (np.size(cm_max) == 1):
     57        md.inversion.max_parameters = cm_max * np.ones(md.mesh.numberofvertices)
     58    elif (np.size(cm_max) == md.mesh.numberofvertices):
     59        md.inversion.max_parameters = cm_max
     60    else:
     61        md.inversion.max_parameters = cm_max
    7462
    75         #cm_jump
    76         cm_jump=options.getfieldvalue('cm_jump',0.8*ones(md.inversion.nsteps))
    77         if !np.isreal(cm_jump):
    78                 md.inversion.step_threshold=0.8*ones(md.inversion.nsteps)
    79         else:
    80                 raise RuntimeError("not implemented yet, see below matlab lines")
    81                 #md.inversion.step_threshold=repmat(cm_jump(:),md.inversion.nsteps,1);
    82                 #md.inversion.step_threshold(md.inversion.nsteps+1:end)=[];
     63    #eps_cm
     64    eps_cm = options.getfieldvalue('eps_cm', float('nan'))
     65    if (np.size(eps_cm) != 1 | eps_cm < 0):
     66        md.inversion.cost_function_threshold = float('nan')
     67    else:
     68        md.inversion.cost_function_threshold = eps_cm
    8369
    84         #cm_responses
    85         found=0;
    86         if options.exist('cm_responses'):
    87                 cm_responses=options.getfieldvalue('cm_responses')
    88                 if ~any(~ismember(cm_responses,[101 105])):
    89                         md.inversion.cost_functions=repmat(cm_responses(:),md.inversion.nsteps,1);
    90                         md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
    91                         found=1;
    92         if ~found
    93                 third=ceil(md.inversion.nsteps/3);
    94                 md.inversion.cost_functions=[...
    95                         103*ones(third,1);...
    96                         101*ones(third,1);...
    97                         repmat([101;101;103;101],third,1)...
    98                         ];
    99                 md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
    100         end
     70    #maxiter
     71    maxiter = options.getfieldvalue('maxiter', 10 * np.ones(md.inversion.nsteps))
     72    if (np.any(maxiter < 0) | np.any(np.floor(maxiter) != maxiter)):
     73        md.inversion.maxiter_per_step = 10 * np.ones(md.inversion.nsteps)
     74    else:
     75        raise RuntimeError("not implemented yet, see below matlab lines")
     76    #md.inversion.maxiter_per_step = repmat(maxiter(:), md.inversion.nsteps, 1)
     77    #md.inversion.maxiter_per_step(md.inversion.nsteps + 1:end) = []
    10178
    102         %optscal
    103         found=0;
    104         if exist(options,'optscal'),
    105                 optscal=getfieldvalue(options,'optscal');
    106                 if ~any(optscal<0),
    107                         md.inversion.gradient_scaling=repmat(optscal(:),md.inversion.nsteps,1);
    108                         md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
    109                         found=1;
    110                 end
    111         end
    112         if ~found
    113                 third=ceil(md.inversion.nsteps/3);
    114                 md.inversion.gradient_scaling=[50*ones(3,1);15*ones(third-3,1);10*ones(third,1);repmat([10;10;20;10],third,1)];
    115                 md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
    116         end
     79    #cm_jump
     80    cm_jump = options.getfieldvalue('cm_jump', 0.8 * np.ones(md.inversion.nsteps))
     81    if not np.isreal(cm_jump):
     82        md.inversion.step_threshold = 0.8 * np.ones(md.inversion.nsteps)
     83    else:
     84        raise RuntimeError("not implemented yet, see below matlab lines")
     85    #md.inversion.step_threshold = repmat(cm_jump(:), md.inversion.nsteps, 1)
     86    #md.inversion.step_threshold(md.inversion.nsteps + 1:end) = []
    11787
    118         return md
     88    #cm_responses
     89    found = 0
     90    if options.exist('cm_responses'):
     91        cm_responses = options.getfieldvalue('cm_responses')
     92        if not any(cm_responses not in [101, 105]):
     93            md.inversion.cost_functions = np.tile(cm_responses[:], (md.inversion.nsteps, 1))
     94            md.inversion.cost_functions[md.inversion.nsteps:] = []
     95            found = 1
     96    if not found:
     97        third = np.ceil(md.inversion.nsteps / 3)
     98        md.inversion.cost_functions = [103 * np.ones(third, 1),
     99                                       101 * np.ones(third, 1),
     100                                       np.tile([101, 101, 103, 101], (third, 1))]
     101        md.inversion.cost_functions[md.inversion.nsteps:] = []
     102
     103    #optscal
     104    found = 0
     105    if options.exist('optscal'):
     106        optscal = options.getfieldvalue('optscal')
     107        if not any(optscal < 0):
     108            md.inversion.gradient_scaling = np.tile(optscal[:], (md.inversion.nsteps, 1))
     109            md.inversion.gradient_scaling[md.inversion.nsteps:] = []
     110            found = 1
     111
     112    if not found:
     113        third = np.ceil(md.inversion.nsteps / 3)
     114        md.inversion.gradient_scaling = [50 * np.ones(3, 1),
     115                                         15 * np.ones(third - 3, 1),
     116                                         10 * np.ones(third, 1),
     117                                         np.tile([10, 10, 20, 10], (third, 1))]
     118        md.inversion.gradient_scaling[md.inversion.nsteps:] = []
     119
     120    return md
  • issm/trunk-jpl/src/m/inversions/supportedcontrols.py

    r19001 r24213  
    11def supportedcontrols():
    2         return ['BalancethicknessThickeningRate','FrictionCoefficient','FrictionAs','MaterialsRheologyBbar','DamageDbar','Vx','Vy']
     2    return ['BalancethicknessThickeningRate', 'FrictionCoefficient', 'FrictionAs', 'MaterialsRheologyBbar', 'DamageDbar', 'Vx', 'Vy']
  • issm/trunk-jpl/src/m/inversions/supportedcostfunctions.py

    r18994 r24213  
    11def supportedcostfunctions():
    2         return [101,102,103,104,105,201,501,502,503,504,505]
     2    return [101, 102, 103, 104, 105, 201, 501, 502, 503, 504, 505]
  • issm/trunk-jpl/src/m/io/loadmodel.py

    r23772 r24213  
    1212def loadmodel(path):
    1313    """
    14     LOADMODEL - load a model using built-in load module
     14    LOADMODEL - load a model using built - in load module
    1515
    1616       check that model prototype has not changed. if so, adapt to new model prototype.
    1717
    1818       Usage:
    19           md=loadmodel(path)
     19          md = loadmodel(path)
    2020    """
    2121
     
    3131        except RuntimeError:
    3232            raise IOError("loadmodel error message: file '%s' does not exist" % path)
    33         #       try:
     33    #       try:
    3434    #recover model on file and name it md
    3535    struc = loadvars(path)
  • issm/trunk-jpl/src/m/io/loadvars.py

    r23772 r24213  
    2525
    2626    Usage:
    27         a=loadvars('shelve.dat','a')
    28         [a,b]=loadvars('shelve.dat',['a','b'])
    29         nvdict=loadvars('shelve.dat',{'a':None,'b':None})
    30         nvdict=loadvars('shelve.dat')
     27        a = loadvars('shelve.dat', 'a')
     28        [a, b] = loadvars('shelve.dat', ['a', 'b'])
     29        nvdict = loadvars('shelve.dat', {'a':None, 'b':None})
     30        nvdict = loadvars('shelve.dat')
    3131
    3232    """
     
    4343        raise TypeError("Missing file name.")
    4444
    45     if   len(args) >= 2 and isinstance(args[1], str):  # (filename,name)
     45    if len(args) >= 2 and isinstance(args[1], str):  # (filename, name)
    4646        for name in args[1:]:
    4747            nvdict[name] = None
    4848
    49     elif len(args) == 2 and isinstance(args[1], list):  # (filename,[names])
     49    elif len(args) == 2 and isinstance(args[1], list):  # (filename, [names])
    5050        for name in args[1]:
    5151            nvdict[name] = None
    5252
    53     elif len(args) == 2 and isinstance(args[1], dict):  # (filename,{names:values})
     53    elif len(args) == 2 and isinstance(args[1], dict):  # (filename, {names:values})
    5454        nvdict = args[1]
    5555
    56     elif len(args) == 1:    #  (filename)
     56    elif len(args) == 1:  #  (filename)
    5757        pass
    5858
     
    6262    if whichdb(filename):
    6363        print("Loading variables from file {}.".format(filename))
    64         my_shelf = shelve.open(filename, 'r')  # 'r' for read-only
     64        my_shelf = shelve.open(filename, 'r')  # 'r' for read - only
    6565        if nvdict:
    6666            for name in list(nvdict.keys()):
     
    8989        NCFile = Dataset(filename, mode='r')
    9090        for mod in dict.keys(classtype):
    91             #print('-Now treating classtype {}'.format(mod))
     91            #print(' - Now treating classtype {}'.format(mod))
    9292            if np.size(classtree[mod]) > 1:
    9393                curclass = NCFile.groups[classtree[mod][0]].groups[classtree[mod][1]]
     
    9797                        steplist = [int(key) for key in curclass.groups]
    9898                    except ValueError:
    99                         steplist = [int(findall(r'\d+', key)[0]) for key in keylist]
     99                        steplist = [int(findall(r'\d + ', key)[0]) for key in keylist]
    100100                    indexlist = [index * (len(curclass.groups) - 1) / max(1, max(steplist)) for index in steplist]
    101101                    listtype = curclass.groups[keylist[0]].classtype
     
    112112                nvdict['md'].__dict__[mod] = getattr(classtype[mod][1], classtype[mod][0])()
    113113                Tree = nvdict['md'].__dict__[classtree[mod][0]]
    114             #treating groups that are lists
     114                #treating groups that are lists
    115115            for i in range(0, max(1, len(curclass.groups))):
    116116                if len(curclass.groups) > 0:
     
    180180                            #dealling with dict
    181181                            if varval.dtype == str:  #that is for toolkits wich needs to be ordered
    182                                 if any(varval[:, 0] == 'toolkit'):                                                         #toolkit definition have to be first
     182                                if any(varval[:, 0] == 'toolkit'):  #toolkit definition have to be first
    183183                                    Tree.__dict__[str(var)] = OrderedDict([('toolkit', str(varval[np.where(varval[:, 0] == 'toolkit')[0][0], 1]))])
    184184                                    strings1 = [str(arg[0]) for arg in varval if arg[0] != 'toolkits']
     
    206206                            print('table dimension greater than 3 not implemented yet')
    207207                for attr in listclass.ncattrs():
    208                     if attr != 'classtype':  #classtype is for treatment,  don't get it back
     208                    if attr != 'classtype':  #classtype is for treatment, don't get it back
    209209                        if type(Tree) == list:
    210210                            t = int(indexlist[i])
     
    220220                                Tree.__dict__[str(attr).swapcase()] = False
    221221        NCFile.close()
    222     if len(args) >= 2 and isinstance(args[1], str):    # (value)
     222    if len(args) >= 2 and isinstance(args[1], str):  # (value)
    223223        value = [nvdict[name] for name in args[1:]]
    224224        return value
    225225
    226     elif len(args) == 2 and isinstance(args[1], list):    # ([values])
     226    elif len(args) == 2 and isinstance(args[1], list):  # ([values])
    227227        value = [nvdict[name] for name in args[1]]
    228228        return value
    229229
    230     elif (len(args) == 2 and isinstance(args[1], dict)) or (len(args) == 1):    # ({names:values})
     230    elif (len(args) == 2 and isinstance(args[1], dict)) or (len(args) == 1):  # ({names:values})
    231231        return nvdict
    232232
  • issm/trunk-jpl/src/m/io/savevars.py

    r23716 r24213  
    22import os.path
    33
     4
    45def savevars(*args):
    5         """
    6         SAVEVARS - function to save variables to a file.
     6    """
     7    SAVEVARS - function to save variables to a file.
    78
    8         This function saves one or more variables to a file.  The names of the variables
    9         must be supplied.  If more than one variable is specified, it may be done with
    10         lists of names and values or a dictionary of name:value pairs.  All the variables
    11         in the workspace may be saved by specifying the globals() dictionary, but this
    12         may include a lot of extraneous data.
     9    This function saves one or more variables to a file.  The names of the variables
     10    must be supplied.  If more than one variable is specified, it may be done with
     11    lists of names and values or a dictionary of name:value pairs.  All the variables
     12    in the workspace may be saved by specifying the globals() dictionary, but this
     13    may include a lot of extraneous data.
    1314
    14         Usage:
    15            savevars('shelve.dat','a',a)
    16            savevars('shelve.dat',['a','b'],[a,b])
    17            savevars('shelve.dat',{'a':a,'b':b})
    18            savevars('shelve.dat',globals())
     15    Usage:
     16       savevars('shelve.dat', 'a', a)
     17       savevars('shelve.dat', ['a', 'b'], [a, b])
     18       savevars('shelve.dat', {'a':a, 'b':b})
     19       savevars('shelve.dat', globals())
    1920
    20         """
     21    """
    2122
    22         filename=''
    23         nvdict={}
     23    filename = ''
     24    nvdict = {}
    2425
    25         if len(args) >= 1 and isinstance(args[0],str):
    26                 filename=args[0]
    27                 if not filename:
    28                         filename='/tmp/shelve.dat'
     26    if len(args) >= 1 and isinstance(args[0], str):
     27        filename = args[0]
     28        if not filename:
     29            filename = '/tmp/shelve.dat'
    2930
    30         else:
    31                 raise TypeError("Missing file name.")
     31    else:
     32        raise TypeError("Missing file name.")
    3233
    33         if   len(args) >= 3 and isinstance(args[1],str):    # (filename,name,value)
    34                 for i in range(1,len(args),2):
    35                         nvdict[args[i]]=args[i+1]
     34    if len(args) >= 3 and isinstance(args[1], str):  # (filename, name, value)
     35        for i in range(1, len(args), 2):
     36            nvdict[args[i]] = args[i + 1]
    3637
    37         elif len(args) == 3 and isinstance(args[1],list) and isinstance(args[2],list):    # (filename,[names],[values])
    38                 for name,value in zip(args[1],args[2]):
    39                         nvdict[name]=value
     38    elif len(args) == 3 and isinstance(args[1], list) and isinstance(args[2], list):  # (filename, [names], [values])
     39        for name, value in zip(args[1], args[2]):
     40            nvdict[name] = value
    4041
    41         elif len(args) == 2 and isinstance(args[1],dict):    # (filename,{names:values})
    42                 nvdict=args[1]
     42    elif len(args) == 2 and isinstance(args[1], dict):  # (filename, {names:values})
     43        nvdict = args[1]
    4344
    44         else:
    45                 raise TypeError("Unrecognized input arguments.")
     45    else:
     46        raise TypeError("Unrecognized input arguments.")
    4647
    47         if os.path.exists(filename):
    48                 print(("Shelving variables to existing file '%s'." % filename))
    49         else:
    50                 print(("Shelving variables to new file '%s'." % filename))
     48    if os.path.exists(filename):
     49        print(("Shelving variables to existing file '%s'." % filename))
     50    else:
     51        print(("Shelving variables to new file '%s'." % filename))
    5152
    52         my_shelf = shelve.open(filename,'c') # 'c' for create if not exist, else 'n' for new
     53    my_shelf = shelve.open(filename, 'c') # 'c' for create if not exist, else 'n' for new
    5354
    54         for name,value in list(nvdict.items()):
    55                 try:
    56                         my_shelf[name] = value
    57                         print(("Variable '%s' shelved." % name))
    58                 except TypeError:
    59                         print(("Variable '%s' not shelved." % name))
     55    for name, value in list(nvdict.items()):
     56        try:
     57            my_shelf[name] = value
     58            print(("Variable '%s' shelved." % name))
     59        except TypeError:
     60            print(("Variable '%s' not shelved." % name))
    6061
    61         my_shelf.close()
    62 
     62    my_shelf.close()
  • issm/trunk-jpl/src/m/materials/TMeltingPoint.py

    r21303 r24213  
    1 import numpy as  np
    21
    3 def TMeltingPoint(reftemp,pressure):
    4         '''
    5         Calculate the pressure melting point of ice at a given pressure
     2def TMeltingPoint(reftemp, pressure):
     3    '''
     4    Calculate the pressure melting point of ice at a given pressure
    65
    7         reftemp is the melting temperature in K at atmospheric pressure (initialized in md.materials.meltingpoint)
     6    reftemp is the melting temperature in K at atmospheric pressure (initialized in md.materials.meltingpoint)
    87
    9         pressure is in Pa
     8    pressure is in Pa
    109
    11         Usage:
    12                 Tm=TMeltingPoint(md.materials.meltingpoint,pressure)
    13         '''
     10    Usage:
     11        Tm = TMeltingPoint(md.materials.meltingpoint, pressure)
     12    '''
    1413
    15         #variables
    16         beta=7.9e-8
     14    #variables
     15    beta = 7.9e-8
    1716
    18         #ensure ref is same dimension as pressure
    19         ref=reftemp*np.ones_like(pressure)
     17    #ensure ref is same dimension as pressure
     18    ref = reftemp - beta * pressure
    2019
    21         return reftemp-beta*pressure
     20    return ref
  • issm/trunk-jpl/src/m/materials/cuffey.py

    r23634 r24213  
    11import numpy as np
    22
     3
    34def cuffey(temperature):
    4         """
    5         CUFFEY - calculates ice rigidity as a function of temperature
     5    """
     6    CUFFEY - calculates ice rigidity as a function of temperature
    67
    7            rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3)
    8                 (Cuffey and Paterson, p75).
    9            temperature is in Kelvin degrees
     8       rigidity (in s^(1 / 3)Pa) is the flow law parameter in the flow law sigma = B * e(1 / 3)
     9        (Cuffey and Paterson, p75).
     10       temperature is in Kelvin degrees
    1011
    11            Usage:
    12               rigidity=cuffey(temperature)
    13         """
     12       Usage:
     13          rigidity = cuffey(temperature)
     14    """
    1415
    15         if np.any(temperature<0.):
    16                 raise RuntimeError("input temperature should be in Kelvin (positive)")
     16    if np.any(temperature < 0.):
     17        raise RuntimeError("input temperature should be in Kelvin (positive)")
    1718
    18         if np.ndim(temperature)==2:
    19                 #T = temperature.reshape(-1,)-273.15
    20                 T = temperature.flatten()-273.15
    21         elif isinstance(temperature,float) or isinstance(temperature,int):
    22                 T = np.array([temperature])-273.15
    23         else:
    24                 T = temperature-273.15
     19    if np.ndim(temperature) == 2:
     20        #T = temperature.reshape(- 1, ) - 273.15
     21        T = temperature.flatten() - 273.15
     22    elif isinstance(temperature, float) or isinstance(temperature, int):
     23        T = np.array([temperature]) - 273.15
     24    else:
     25        T = temperature - 273.15
    2526
     27    rigidity = np.zeros_like(T)
     28    pos = np.nonzero(T <= - 45)
     29    if len(pos):
     30        rigidity[pos] = 10**8 * (- 0.000396645116301 * (T[pos] + 50)**3 + 0.013345579471334 * (T[pos] + 50)**2 - 0.356868703259105 * (T[pos] + 50) + 7.272363035371383)
     31    pos = np.nonzero(np.logical_and(- 45 <= T, T < - 40))
     32    if len(pos):
     33        rigidity[pos] = 10**8 * (- 0.000396645116301 * (T[pos] + 45)**3 + 0.007395902726819 * (T[pos] + 45)**2 - 0.253161292268336 * (T[pos] + 45) + 5.772078366321591)
     34    pos = np.nonzero(np.logical_and(- 40 <= T, T < - 35))
     35    if len(pos):
     36        rigidity[pos] = 10**8 * (0.000408322072669 * (T[pos] + 40)**3 + 0.001446225982305 * (T[pos] + 40)**2 - 0.208950648722716 * (T[pos] + 40) + 4.641588833612773)
     37    pos = np.nonzero(np.logical_and(- 35 <= T, T < - 30))
     38    if len(pos):
     39        rigidity[pos] = 10**8 * (- 0.000423888728124 * (T[pos] + 35)**3 + 0.007571057072334 * (T[pos] + 35)**2 - 0.163864233449525 * (T[pos] + 35) + 3.684031498640382)
     40    pos = np.nonzero(np.logical_and(- 30 <= T, T < - 25))
     41    if len(pos):
     42        rigidity[pos] = 10**8 * (0.000147154327025 * (T[pos] + 30)**3 + 0.001212726150476 * (T[pos] + 30)**2 - 0.119945317335478 * (T[pos] + 30) + 3.001000667185614)
     43    pos = np.nonzero(np.logical_and(- 25 <= T, T < - 20))
     44    if len(pos):
     45        rigidity[pos] = 10**8 * (- 0.000193435838672 * (T[pos] + 25)**3 + 0.003420041055847 * (T[pos] + 25)**2 - 0.096781481303861 * (T[pos] + 25) + 2.449986525148220)
     46    pos = np.nonzero(np.logical_and(- 20 <= T, T < - 15))
     47    if len(pos):
     48        rigidity[pos] = 10**8 * (0.000219771255067 * (T[pos] + 20)**3 + 0.000518503475772 * (T[pos] + 20)**2 - 0.077088758645767 * (T[pos] + 20) + 2.027400665191131)
     49    pos = np.nonzero(np.logical_and(- 15 <= T, T < - 10))
     50    if len(pos):
     51        rigidity[pos] = 10**8 * (- 0.000653438900191 * (T[pos] + 15)**3 + 0.003815072301777 * (T[pos] + 15)**2 - 0.055420879758021 * (T[pos] + 15) + 1.682390865739973)
     52    pos = np.nonzero(np.logical_and(- 10 <= T, T < - 5))
     53    if len(pos):
     54        rigidity[pos] = 10**8 * (0.000692439419762 * (T[pos] + 10)**3 - 0.005986511201093 * (T[pos] + 10)**2 - 0.066278074254598 * (T[pos] + 10) + 1.418983411970382)
     55    pos = np.nonzero(np.logical_and(- 5 <= T, T < - 2))
     56    if len(pos):
     57        rigidity[pos] = 10**8 * (- 0.000132282004110 * (T[pos] + 5)**3 + 0.004400080095332 * (T[pos] + 5)**2 - 0.074210229783403 * (T[pos] + 5) + 1.024485188140279)
     58    pos = np.nonzero(- 2 <= T)
     59    if len(pos):
     60        rigidity[pos] = 10**8 * (- 0.000132282004110 * (T[pos] + 2)**3 + 0.003209542058346 * (T[pos] + 2)**2 - 0.051381363322371 * (T[pos] + 2) + 0.837883605537096)
    2661
    27         rigidity=np.zeros_like(T)
    28         pos=np.nonzero(T<=-45)
    29         if len(pos):
    30                 rigidity[pos]=10**8*(-0.000396645116301*(T[pos]+50)**3+ 0.013345579471334*(T[pos]+50)**2  -0.356868703259105*(T[pos]+50)+7.272363035371383)
    31         pos=np.nonzero(np.logical_and(-45<=T,T<-40))
    32         if len(pos):
    33                 rigidity[pos]=10**8*(-0.000396645116301*(T[pos]+45)**3+ 0.007395902726819*(T[pos]+45)**2  -0.253161292268336*(T[pos]+45)+5.772078366321591)
    34         pos=np.nonzero(np.logical_and(-40<=T,T<-35))
    35         if len(pos):
    36                 rigidity[pos]=10**8*(0.000408322072669*(T[pos]+40)**3+  0.001446225982305*(T[pos]+40)**2  -0.208950648722716*(T[pos]+40)+4.641588833612773)
    37         pos=np.nonzero(np.logical_and(-35<=T,T<-30))
    38         if len(pos):
    39                 rigidity[pos]=10**8*(-0.000423888728124*(T[pos]+35)**3+ 0.007571057072334*(T[pos]+35)**2  -0.163864233449525*(T[pos]+35)+3.684031498640382)
    40         pos=np.nonzero(np.logical_and(-30<=T,T<-25))
    41         if len(pos):
    42                 rigidity[pos]=10**8*(0.000147154327025*(T[pos]+30)**3+ 0.001212726150476*(T[pos]+30)**2  -0.119945317335478*(T[pos]+30)+3.001000667185614)
    43         pos=np.nonzero(np.logical_and(-25<=T,T<-20))
    44         if len(pos):
    45                 rigidity[pos]=10**8*(-0.000193435838672*(T[pos]+25)**3+ 0.003420041055847*(T[pos]+25)**2  -0.096781481303861*(T[pos]+25)+2.449986525148220)
    46         pos=np.nonzero(np.logical_and(-20<=T,T<-15))
    47         if len(pos):
    48                 rigidity[pos]=10**8*(0.000219771255067*(T[pos]+20)**3+  0.000518503475772*(T[pos]+20)**2  -0.077088758645767*(T[pos]+20)+2.027400665191131)
    49         pos=np.nonzero(np.logical_and(-15<=T,T<-10))
    50         if len(pos):
    51                 rigidity[pos]=10**8*(-0.000653438900191*(T[pos]+15)**3+ 0.003815072301777*(T[pos]+15)**2  -0.055420879758021*(T[pos]+15)+1.682390865739973)
    52         pos=np.nonzero(np.logical_and(-10<=T,T<-5))
    53         if len(pos):
    54                 rigidity[pos]=10**8*(0.000692439419762*(T[pos]+10)**3 -0.005986511201093 *(T[pos]+10)**2 -0.066278074254598*(T[pos]+10)+1.418983411970382)
    55         pos=np.nonzero(np.logical_and(-5<=T,T<-2))
    56         if len(pos):
    57                 rigidity[pos]=10**8*(-0.000132282004110*(T[pos]+5)**3 +0.004400080095332*(T[pos]+5)**2    -0.074210229783403*(T[pos]+5)+ 1.024485188140279)
    58         pos=np.nonzero(-2<=T)
    59         if len(pos):
    60                 rigidity[pos]=10**8*(-0.000132282004110*(T[pos]+2)**3 +0.003209542058346*(T[pos]+2)**2    -0.051381363322371*(T[pos]+2)+ 0.837883605537096)
     62    #Now make sure that rigidity is positive
     63    pos = np.nonzero(rigidity < 0)
     64    rigidity[pos] = 1**6
    6165
    62         #Now make sure that rigidity is positive
    63         pos=np.nonzero(rigidity<0)
    64         rigidity[pos]=1**6
    65 
    66         return rigidity
     66    return rigidity
  • issm/trunk-jpl/src/m/materials/cuffeytemperate.py

    r21303 r24213  
    22import cuffey
    33
    4 def cuffeytemperate(temperature, waterfraction, stressexp)
    54
    6         """
    7         CUFFEYTEMPERATE - calculates ice rigidity as a function of temperature and waterfraction
     5def cuffeytemperate(temperature, waterfraction, stressexp):
     6    '''
     7    CUFFEYTEMPERATE - calculates ice rigidity as a function of temperature and waterfraction
    88
    9    rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3)
    10    (Cuffey and Paterson, p75). 
     9   rigidity (in s^(1 / 3)Pa) is the flow law parameter in the flow law sigma = B * e(1 / 3)
     10   (Cuffey and Paterson, p75).
    1111   temperature is in Kelvin degrees
    1212
    1313   Usage:
    14       rigidity=cuffeytemperate(temperature, waterfraction, stressexp)
    15         """
     14      rigidity = cuffeytemperate(temperature, waterfraction, stressexp)
     15    '''
    1616
    17         if np.any(temperature<0.):
    18                 raise RuntimeError("input temperature should be in Kelvin (positive)")
     17    if np.any(temperature < 0.):
     18        raise RuntimeError("input temperature should be in Kelvin (positive)")
    1919
    20         if (np.any(temperature.shape~=waterfraction.shape)),
    21                 error('input temperature and waterfraction should have same size!');
    22         end
    23         if np.any(waterfraction<0 | waterfraction>1)
    24                 error('input waterfraction should be between 0 and 1');
    25         end
     20    if (np.any(temperature.shape in waterfraction.shape)):
     21        error('input temperature and waterfraction should have same size!')
    2622
    27         rigidity=np.multiply(cuffey(temperature), (1*np.ones(waterfraction.shape)+181.25*np.maximum(np.zeros(waterfraction.shape), np.minimum(0.01*np.ones(waterfraction.shape), waterfraction)))**(-1/stressexp));
     23    if np.any(waterfraction < 0 | waterfraction > 1):
     24        error('input waterfraction should be between 0 and 1')
    2825
    29         return rigidity
     26    rigidity = np.multiply(cuffey(temperature), (1 * np.ones(waterfraction.shape) + 181.25 * np.maximum(np.zeros(waterfraction.shape), np.minimum(0.01 * np.ones(waterfraction.shape), waterfraction)))**(- 1 / stressexp))
     27
     28    return rigidity
  • issm/trunk-jpl/src/m/materials/nye.py

    r24101 r24213  
    11import numpy as np
    22
     3
    34def nye(temperature, ice_type):
    4         """
     5    """
    56   NYE - figure out the rigidity of ice (either CO2 or H2O) for a given temperature
    6         rigidity (in s^(1/n)Pa) is the flow law parameter in the flow law sigma=B*e(1/n) (Nye, p2000).
    7         temperature is in Kelvin degrees
     7    rigidity (in s^(1 / n)Pa) is the flow law parameter in the flow law sigma = B * e(1 / n) (Nye, p2000).
     8    temperature is in Kelvin degrees
    89
    910   Usage:
    10            rigidity=nye(temperature,ice_type) % ice_type = 1: CO2 ice // ice_type = 2: H2O ice
    11         """
     11       rigidity = nye(temperature, ice_type) % ice_type = 1: CO2 ice / / ice_type = 2: H2O ice
     12    """
    1213
    13         # Declaring temperature and rigidity arrays
    14         if np.ndim(temperature)==2:
    15             T=temperature.flatten()
    16         elif isinstance(temperature,float) or isinstance(temperature,int):
    17             T=np.array([temperature])
    18         else:
    19             T=temperature
    20         rigidity=np.zeros_like(T)
     14    # Declaring temperature and rigidity arrays
     15    if np.ndim(temperature) == 2:
     16        T = temperature.flatten()
     17    elif isinstance(temperature, float) or isinstance(temperature, int):
     18        T = np.array([temperature])
     19    else:
     20        T = temperature
     21    rigidity = np.zeros_like(T)
    2122
    22         # Beyond-melting-point cases
    23         if (ice_type==1):
    24             for i in range(len(T)):
    25                 if (200<T[i]<220):
    26                     warnings.warn('CO2 ICE - POSSIBLE MELTING. Some temperature values are between 200K and 220K.')
    27                 break
    28             if ((T>=220).any()):
    29                 warnings.warn('CO2 ICE - GUARANTEED MELTING. Some temperature values are beyond 220K.')
    30         elif (ice_type==2) and ((T>273.15).any()):
    31             warnings.warn('H2O ICE - GUARANTEED MELTING. Some temperature values are beyond 273.15K.')
     23    # Beyond - melting - point cases
     24    if (ice_type == 1):
     25        for i in range(len(T)):
     26            if (200 < T[i] < 220):
     27                warnings.warn('CO2 ICE - POSSIBLE MELTING. Some temperature values are between 200K and 220K.')
     28            break
     29        if ((T >= 220).any()):
     30            warnings.warn('CO2 ICE - GUARANTEED MELTING. Some temperature values are beyond 220K.')
     31    elif (ice_type == 2) and ((T > 273.15).any()):
     32        warnings.warn('H2O ICE - GUARANTEED MELTING. Some temperature values are beyond 273.15K.')
    3233
    33         Rg = 8.3144598 # J mol^-1 K^-1
     34    Rg = 8.3144598  # J mol^ - 1 K^ - 1
    3435
    35         if ice_type == 1: # CO2 ice
    36             A_const = 10**(10.8) # s^-1 MPa
    37             Q = 63000. # J mol^-1
    38             n = 7. # Glen's exponent
    39         elif ice_type == 2: # H2O ice
    40             A_const = 9*10**4 # s^-1 MPa
    41             Q = 60000. #  J mol^-1
    42             n = 3. # Glen's exponent
    43         else:
    44             raise RuntimeError('Ice type not supported')
     36    if ice_type == 1: # CO2 ice
     37        A_const = 10**(10.8)  # s^ - 1 MPa
     38        Q = 63000.  # J mol^ - 1
     39        n = 7. # Glen's exponent
     40    elif ice_type == 2: # H2O ice
     41        A_const = 9 * 10**4  # s^ - 1 MPa
     42        Q = 60000.  #  J mol^ - 1
     43        n = 3. # Glen's exponent
     44    else:
     45        raise RuntimeError('Ice type not supported')
    4546
    46         # Arrhenius Law
    47         A=A_const*np.exp(-1*Q/(T*Rg)) # s^-1 MPa
    48         rigidity=A**(-1/n)*10**6 # s^(1/n) Pa
     47    # Arrhenius Law
     48    A = A_const * np.exp(- 1 * Q / (T * Rg))  # s^ - 1 MPa
     49    rigidity = A**(- 1 / n) * 10**6  # s^(1 / n) Pa
    4950
    50         # Return output
    51         return rigidity
     51    # Return output
     52    return rigidity
  • issm/trunk-jpl/src/m/materials/paterson.py

    r21303 r24213  
    11import numpy as np
    22
     3
    34def paterson(temperature):
    4         """
    5         PATERSON - figure out the rigidity of ice for a given temperature
     5    """
     6    PATERSON - figure out the rigidity of ice for a given temperature
    67
    7            rigidity (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Paterson, p97).
    8            temperature is in Kelvin degrees
     8       rigidity (in s^(1 / 3)Pa) is the flow law paramter in the flow law sigma = B * e(1 / 3) (Paterson, p97).
     9       temperature is in Kelvin degrees
    910
    10            Usage:
    11               rigidity=paterson(temperature)
    12         """
    13        
    14         if np.any(temperature<0.):
    15                 raise RuntimeError("input temperature should be in Kelvin (positive)")
     11       Usage:
     12          rigidity = paterson(temperature)
     13    """
    1614
    17         if np.ndim(temperature)==2:
    18                 #T = temperature.reshape(-1,)-273.15
    19                 T = temperature.flatten()-273.15
    20         elif isinstance(temperature,float) or isinstance(temperature,int):
    21                 T = np.array([temperature])-273.15
    22         else:
    23                 T = temperature-273.15
     15    if np.any(temperature < 0.):
     16        raise RuntimeError("input temperature should be in Kelvin (positive)")
    2417
    25         #The routine below is equivalent to:
     18    if np.ndim(temperature) == 2:
     19        #T = temperature.reshape(- 1, ) - 273.15
     20        T = temperature.flatten() - 273.15
     21    elif isinstance(temperature, float) or isinstance(temperature, int):
     22        T = np.array([temperature]) - 273.15
     23    else:
     24        T = temperature - 273.15
    2625
    27         # n=3; T=temperature-273;
    28         # %From paterson,
    29         # Temp=[0;-2;-5;-10;-15;-20;-25;-30;-35;-40;-45;-50];
    30         # A=[6.8*10^-15;2.4*10^-15;1.6*10^-15;4.9*10^-16;2.9*10^-16;1.7*10^-16;9.4*
    31         # 10^-17;5.1*10^-17;2.7*10^-17;1.4*10^-17;7.3*10^-18;3.6*10^-18];;%s-1(kPa-3)
    32         # %Convert into rigidity B
    33         # B=A.^(-1/n)*10^3; %s^(1/3)Pa
    34         # %Now, do a cubic fit between Temp and B:
    35         # fittedmodel=fit(Temp,B,'cubicspline');
    36         # rigidity=fittedmodel(temperature);
     26    #The routine below is equivalent to:
    3727
    38         rigidity=np.zeros_like(T)
    39         pos1=np.nonzero(T<=-45)[0]
    40         if len(pos1):
    41                 rigidity[pos1]=10**8*(-0.000292866376675*(T[pos1]+50)**3+ 0.011672640664130*(T[pos1]+50)**2  -0.325004442485481*(T[pos1]+50)+  6.524779401948101)
    42         pos2=np.nonzero(np.logical_and(-45<=T,T<-40))[0]
    43         if len(pos2):
    44                 rigidity[pos2]=10**8*(-0.000292866376675*(T[pos2]+45)**3+ 0.007279645014004*(T[pos2]+45)**2  -0.230243014094813*(T[pos2]+45)+  5.154964909039554)
    45         pos3=np.nonzero(np.logical_and(-40<=T,T<-35))[0]
    46         if len(pos3):
    47                 rigidity[pos3]=10**8*(0.000072737147457*(T[pos3]+40)**3+  0.002886649363879*(T[pos3]+40)**2  -0.179411542205399*(T[pos3]+40)+  4.149132666831214)
    48         pos4=np.nonzero(np.logical_and(-35<=T,T<-30))[0]
    49         if len(pos4):
    50                 rigidity[pos4]=10**8*(-0.000086144770023*(T[pos4]+35)**3+ 0.003977706575736*(T[pos4]+35)**2  -0.145089762507325*(T[pos4]+35)+  3.333333333333331)
    51         pos5=np.nonzero(np.logical_and(-30<=T,T<-25))[0]
    52         if len(pos5):
    53                 rigidity[pos5]=10**8*(-0.000043984685769*(T[pos5]+30)**3+ 0.002685535025386*(T[pos5]+30)**2  -0.111773554501713*(T[pos5]+30)+  2.696559088937191)
    54         pos6=np.nonzero(np.logical_and(-25<=T,T<-20))[0]
    55         if len(pos6):
    56                 rigidity[pos6]=10**8*(-0.000029799523463*(T[pos6]+25)**3+ 0.002025764738854*(T[pos6]+25)**2  -0.088217055680511*(T[pos6]+25)+  2.199331606342181)
    57         pos7=np.nonzero(np.logical_and(-20<=T,T<-15))[0]
    58         if len(pos7):
    59                 rigidity[pos7]=10**8*(0.000136920904777*(T[pos7]+20)**3+  0.001578771886910*(T[pos7]+20)**2  -0.070194372551690*(T[pos7]+20)+  1.805165505978111)
    60         pos8=np.nonzero(np.logical_and(-15<=T,T<-10))[0]
    61         if len(pos8):
    62                 rigidity[pos8]=10**8*(-0.000899763781026*(T[pos8]+15)**3+ 0.003632585458564*(T[pos8]+15)**2  -0.044137585824322*(T[pos8]+15)+  1.510778053489523)
    63         pos9=np.nonzero(np.logical_and(-10<=T,T<-5))[0]
    64         if len(pos9):
    65                 rigidity[pos9]=10**8*(0.001676964325070*(T[pos9]+10)**3-  0.009863871256831*(T[pos9]+10)**2  -0.075294014815659*(T[pos9]+10)+  1.268434288203714)
    66         pos10=np.nonzero(np.logical_and(-5<=T,T<-2))[0]
    67         if len(pos10):
    68                 rigidity[pos10]=10**8*(-0.003748937622487*(T[pos10]+5)**3+0.015290593619213*(T[pos10]+5)**2  -0.048160403003748*(T[pos10]+5)+  0.854987973338348)
    69         pos11=np.nonzero(-2<=T)[0]
    70         if len(pos11):
    71                 rigidity[pos11]=10**8*(-0.003748937622488*(T[pos11]+2)**3-0.018449844983174*(T[pos11]+2)**2  -0.057638157095631*(T[pos11]+2)+  0.746900791092860)
     28    # n = 3; T = temperature-273
     29    # %From paterson,
     30    # Temp = [0; - 2; - 5; - 10; - 15; - 20; - 25; - 30; - 35; - 40; - 45; - 50]
     31    # A = [6.8 * 10^ - 15;2.4 * 10^ - 15;1.6 * 10^ - 15;4.9 * 10^ - 16;2.9 * 10^ - 16;1.7 * 10^ - 16;9.4 *
     32    # 10^ - 17;5.1 * 10^ - 17;2.7 * 10^ - 17;1.4 * 10^ - 17;7.3 * 10^ - 18;3.6 * 10^ - 18];;%s - 1(kPa - 3)
     33    # %Convert into rigidity B
     34    # B = A.^(- 1 / n) * 10^3; %s^(1 / 3)Pa
     35    # %Now, do a cubic fit between Temp and B:
     36    # fittedmodel = fit(Temp, B, 'cubicspline')
     37    # rigidity = fittedmodel(temperature)
    7238
    73         #Now make sure that rigidity is positive
    74         pos=np.nonzero(rigidity<0)[0]
    75         if len(pos):
    76                 rigidity[pos]=1.e6
     39    rigidity = np.zeros_like(T)
     40    pos1 = np.nonzero(T <= - 45)[0]
     41    if len(pos1):
     42        rigidity[pos1] = 10**8 * (- 0.000292866376675 * (T[pos1] + 50)**3 + 0.011672640664130 * (T[pos1] + 50)**2 - 0.325004442485481 * (T[pos1] + 50) + 6.524779401948101)
     43    pos2 = np.nonzero(np.logical_and(- 45 <= T, T < - 40))[0]
     44    if len(pos2):
     45        rigidity[pos2] = 10**8 * (- 0.000292866376675 * (T[pos2] + 45)**3 + 0.007279645014004 * (T[pos2] + 45)**2 - 0.230243014094813 * (T[pos2] + 45) + 5.154964909039554)
     46    pos3 = np.nonzero(np.logical_and(- 40 <= T, T < - 35))[0]
     47    if len(pos3):
     48        rigidity[pos3] = 10**8 * (0.000072737147457 * (T[pos3] + 40)**3 + 0.002886649363879 * (T[pos3] + 40)**2 - 0.179411542205399 * (T[pos3] + 40) + 4.149132666831214)
     49    pos4 = np.nonzero(np.logical_and(- 35 <= T, T < - 30))[0]
     50    if len(pos4):
     51        rigidity[pos4] = 10**8 * (- 0.000086144770023 * (T[pos4] + 35)**3 + 0.003977706575736 * (T[pos4] + 35)**2 - 0.145089762507325 * (T[pos4] + 35) + 3.333333333333331)
     52    pos5 = np.nonzero(np.logical_and(- 30 <= T, T < - 25))[0]
     53    if len(pos5):
     54        rigidity[pos5] = 10**8 * (- 0.000043984685769 * (T[pos5] + 30)**3 + 0.002685535025386 * (T[pos5] + 30)**2 - 0.111773554501713 * (T[pos5] + 30) + 2.696559088937191)
     55    pos6 = np.nonzero(np.logical_and(- 25 <= T, T < - 20))[0]
     56    if len(pos6):
     57        rigidity[pos6] = 10**8 * (- 0.000029799523463 * (T[pos6] + 25)**3 + 0.002025764738854 * (T[pos6] + 25)**2 - 0.088217055680511 * (T[pos6] + 25) + 2.199331606342181)
     58    pos7 = np.nonzero(np.logical_and(- 20 <= T, T < - 15))[0]
     59    if len(pos7):
     60        rigidity[pos7] = 10**8 * (0.000136920904777 * (T[pos7] + 20)**3 + 0.001578771886910 * (T[pos7] + 20)**2 - 0.070194372551690 * (T[pos7] + 20) + 1.805165505978111)
     61    pos8 = np.nonzero(np.logical_and(- 15 <= T, T < - 10))[0]
     62    if len(pos8):
     63        rigidity[pos8] = 10**8 * (- 0.000899763781026 * (T[pos8] + 15)**3 + 0.003632585458564 * (T[pos8] + 15)**2 - 0.044137585824322 * (T[pos8] + 15) + 1.510778053489523)
     64    pos9 = np.nonzero(np.logical_and(- 10 <= T, T < - 5))[0]
     65    if len(pos9):
     66        rigidity[pos9] = 10**8 * (0.001676964325070 * (T[pos9] + 10)**3 - 0.009863871256831 * (T[pos9] + 10)**2 - 0.075294014815659 * (T[pos9] + 10) + 1.268434288203714)
     67    pos10 = np.nonzero(np.logical_and(- 5 <= T, T < - 2))[0]
     68    if len(pos10):
     69        rigidity[pos10] = 10**8 * (- 0.003748937622487 * (T[pos10] + 5)**3 + 0.015290593619213 * (T[pos10] + 5)**2 - 0.048160403003748 * (T[pos10] + 5) + 0.854987973338348)
     70    pos11 = np.nonzero(- 2 <= T)[0]
     71    if len(pos11):
     72        rigidity[pos11] = 10**8 * (- 0.003748937622488 * (T[pos11] + 2)**3 - 0.018449844983174 * (T[pos11] + 2)**2 - 0.057638157095631 * (T[pos11] + 2) + 0.746900791092860)
    7773
    78         return rigidity
     74    #Now make sure that rigidity is positive
     75    pos = np.nonzero(rigidity < 0)[0]
     76    if len(pos):
     77        rigidity[pos] = 1.e6
    7978
     79    return rigidity
  • issm/trunk-jpl/src/m/mech/analyticaldamage.py

    r23716 r24213  
    1 import numpy as  np
     1import numpy as np
    22from averaging import averaging
    33#from plotmodel import plotmodel
    44from thomasparams import thomasparams
    55
    6 def analyticaldamage(md,**kwargs):
    7         '''
    8         ANALYTICALDAMAGE - compute damage for an ice shelf
    9        
    10                  This routine computes damage as a function of water/ice
    11                  material properties, ice thickness, strain rate, and ice
    12                  rigidity.  The model must contain computed strain rates,
    13                  either from observed or modeled ice velocities.
    14        
    15            Available options:
    16                         -eq                     : analytical equation to use in the calculation.  Must be one of:
    17                                                                         'Weertman1D' for a confined ice shelf free to flow in one direction
    18                                                                         'Weertman2D' for an unconfined ice shelf free to spread in any direction
    19                                                                         'Thomas' for a 2D ice shelf, taking into account full strain rate tensor (default)
    20                         -smoothing      : the amount of smoothing to be applied to the strain rate data.
    21                                                                         Type 'help averaging' for more information on its usage.
    22                         -coordsys       : coordinate system for calculating the strain rate
    23                                                 components. Must be one of:
    24                         -sigmab         : a compressive backstress term to be subtracted from the driving stress
    25                                                                         in the damage calculation
    26        
    27            Return values:
    28                         'damage' which is truncated in the range [0,1-1e-9]
    29        
    30                    'B' is the rigidity, which is equal to md.materials.rheology_B in areas outside
    31                         those defined by 'mask.'  Within areas defined by 'mask,' where negative damage
    32                         is inferred, 'B' is updated to make damage equal to zero. 
    33        
    34                         'backstress' is the inferred backstress necessary to balance the analytical solution
    35                         (keeping damage within its appropriate limits, e.g. D in [0,1]).
    36        
    37            Usage:
    38               damage,B,backstress=analyticaldamage(md,kwargs)
    39        
    40            Example:
    41               damage,B,backstress=analyticaldamage(md,eq='Weertman2D',smoothing=2,sigmab=10e3)
    42         '''
    436
    44         #unpack kwargs
    45         eq=kwargs.pop('eq','Thomas')
    46         if 'eq' in kwargs: del kwargs['eq']
    47         smoothing=kwargs.pop('smoothing',0)
    48         if 'smoothing' in kwargs: del kwargs['smoothing']
    49         coordsys=kwargs.pop('coordsys','longitudinal')
    50         if 'coordsys' in kwargs: del kwargs['coordsys']
    51         sigmab=kwargs.pop('sigmab',0)
    52         if 'sigmab' in kwargs: del kwargs['sigmab']
    53         assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
     7def analyticaldamage(md, **kwargs):
     8    '''
     9    ANALYTICALDAMAGE - compute damage for an ice shelf
    5410
    55         if isinstance(sigmab,(int,float)):
    56                 sigmab=sigmab*np.ones((md.mesh.numberofvertices,))
     11         This routine computes damage as a function of water / ice
     12         material properties, ice thickness, strain rate, and ice
     13         rigidity.  The model must contain computed strain rates,
     14         either from observed or modeled ice velocities.
    5715
    58         # check inputs
    59         if 'strainrate' not in md.results.__dict__:
    60                 raise Exception('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
    61         if not '2d' in md.mesh.__doc__:
    62                 raise Exception('only 2d (planview) model supported currently')
    63         if np.any(md.flowequation.element_equation!=2):
    64                 print('Warning: the model has some non SSA elements. These will be treated like SSA elements')
     16       Available options:
     17             - eq            : analytical equation to use in the calculation.  Must be one of:
     18                                    'Weertman1D' for a confined ice shelf free to flow in one direction
     19                                    'Weertman2D' for an unconfined ice shelf free to spread in any direction
     20                                    'Thomas' for a 2D ice shelf, taking into account full strain rate tensor (default)
     21             - smoothing    : the amount of smoothing to be applied to the strain rate data.
     22                                    Type 'help averaging' for more information on its usage.
     23             - coordsys    : coordinate system for calculating the strain rate
     24                        components. Must be one of:
     25             - sigmab        : a compressive backstress term to be subtracted from the driving stress
     26                                    in the damage calculation
    6527
    66         a,b,theta,ex=thomasparams(md,eq=eq,smoothing=smoothing,coordsys=coordsys)
    67        
    68         # spreading stress
    69         rhoi=md.materials.rho_ice
    70         rhow=md.materials.rho_water
    71         C=0.5*rhoi*md.constants.g*(1.-rhoi/rhow)
    72         T=C*md.geometry.thickness
    73        
    74         # rheology
    75         B=md.materials.rheology_B
    76         n=averaging(md,md.materials.rheology_n,0)
    77        
    78         D=1.-(1.+a+a**2+b**2)**((n-1.)/(2.*n))/np.abs(ex)**(1./n)*(T-sigmab)/B/(2.+a)/np.sign(ex)
    79        
    80         # D>1 where (2+a).*sign(ex)<0, compressive regions where high backstress needed
    81         pos=np.nonzero(D>1)
    82         D[pos]=0
    83        
    84         backstress=np.zeros((md.mesh.numberofvertices,))
     28       Return values:
     29            'damage' which is truncated in the range [0, 1 - 1e-9]
    8530
    86         # backstress to bring D down to one
    87         backstress[pos]=T[pos]-(1.-D[pos])*B[pos]*np.sign(ex[pos])*(2.+a[pos])*np.abs(ex[pos])**(1./n[pos])/(1.+a[pos]+a[pos]**2)**((n[pos]-1.)/2./n[pos])
    88        
    89         pos=np.nonzero(D<0)
    90         #mask=ismember(1:md.mesh.numberofvertices,pos);
    91         D[pos]=0
    92        
    93         # backstress to bring negative damage to zero
    94         backstress[pos]=T[pos]-(1.-D[pos])*B[pos]*np.sign(ex[pos])*(2.+a[pos])*np.abs(ex[pos])**(1./n[pos])/(1.+a[pos]+a[pos]**2)**((n[pos]-1.)/2./n[pos])
    95        
    96         pos=np.nonzero(backstress<0)
    97         backstress[pos]=0
    98        
    99         # rigidity from Thomas relation for D=0 and backstress=0
    100         B=np.sign(ex)/(2.+a)*(1.+a+a**2)**((n-1.)/2./n)*T/(np.abs(ex)**(1./n))
    101         pos=np.nonzero(B<0)
    102         B[pos]=md.materials.rheology_B[pos]
    103        
    104         damage=D
    105        
    106         return damage, B, backstress
     31           'B' is the rigidity, which is equal to md.materials.rheology_B in areas outside
     32            those defined by 'mask.'  Within areas defined by 'mask, ' where negative damage
     33            is inferred, 'B' is updated to make damage equal to zero.
     34
     35            'backstress' is the inferred backstress necessary to balance the analytical solution
     36            (keeping damage within its appropriate limits, e.g. D in [0, 1]).
     37
     38       Usage:
     39          damage, B, backstress = analyticaldamage(md, kwargs)
     40
     41       Example:
     42          damage, B, backstress = analyticaldamage(md, eq = 'Weertman2D', smoothing = 2, sigmab = 1.0e3)
     43    '''
     44
     45    #unpack kwargs
     46    eq = kwargs.pop('eq', 'Thomas')
     47    if 'eq' in kwargs:
     48        del kwargs['eq']
     49    smoothing = kwargs.pop('smoothing', 0)
     50    if 'smoothing' in kwargs:
     51        del kwargs['smoothing']
     52    coordsys = kwargs.pop('coordsys', 'longitudinal')
     53    if 'coordsys' in kwargs:
     54        del kwargs['coordsys']
     55    sigmab = kwargs.pop('sigmab', 0)
     56    if 'sigmab' in kwargs:
     57        del kwargs['sigmab']
     58    assert len(kwargs) == 0, 'error, unexpected or misspelled kwargs'
     59
     60    if isinstance(sigmab, (int, float)):
     61        sigmab = sigmab * np.ones((md.mesh.numberofvertices, ))
     62
     63    # check inputs
     64    if 'strainrate' not in md.results.__dict__:
     65        raise Exception('md.results.strainrate not present.  Calculate using md = mechanicalproperties(md, vx, vy)')
     66    if '2d' not in md.mesh.__doc__:
     67        raise Exception('only 2d (planview) model supported currently')
     68    if np.any(md.flowequation.element_equation != 2):
     69        print('Warning: the model has some non SSA elements. These will be treated like SSA elements')
     70
     71    a, b, theta, ex = thomasparams(md, eq=eq, smoothing=smoothing, coordsys=coordsys)
     72
     73    # spreading stress
     74    rhoi = md.materials.rho_ice
     75    rhow = md.materials.rho_water
     76    C = 0.5 * rhoi * md.constants.g * (1. - rhoi / rhow)
     77    T = C * md.geometry.thickness
     78
     79    # rheology
     80    B = md.materials.rheology_B
     81    n = averaging(md, md.materials.rheology_n, 0)
     82
     83    D = 1. - (1. + a + a**2 + b**2)**((n - 1.) / (2. * n)) / np.abs(ex)**(1. / n) * (T - sigmab) / B / (2. + a) / np.sign(ex)
     84
     85    # D > 1 where (2 + a). * sign(ex) < 0, compressive regions where high backstress needed
     86    pos = np.nonzero(D > 1)
     87    D[pos] = 0
     88
     89    backstress = np.zeros((md.mesh.numberofvertices, ))
     90
     91    # backstress to bring D down to one
     92    backstress[pos] = T[pos] - (1. - D[pos]) * B[pos] * np.sign(ex[pos]) * (2. + a[pos]) * np.abs(ex[pos])**(1. / n[pos]) / (1. + a[pos] + a[pos]**2)**((n[pos] - 1.) / 2. / n[pos])
     93
     94    pos = np.nonzero(D < 0)
     95    #mask = ismember(1:md.mesh.numberofvertices, pos)
     96    D[pos] = 0
     97
     98    # backstress to bring negative damage to zero
     99    backstress[pos] = T[pos] - (1. - D[pos]) * B[pos] * np.sign(ex[pos]) * (2. + a[pos]) * np.abs(ex[pos])**(1. / n[pos]) / (1. + a[pos] + a[pos]**2)**((n[pos] - 1.) / 2. / n[pos])
     100
     101    pos = np.nonzero(backstress < 0)
     102    backstress[pos] = 0
     103
     104    # rigidity from Thomas relation for D = 0 and backstress = 0
     105    B = np.sign(ex) / (2. + a) * (1. + a + a**2)**((n - 1.) / 2. / n) * T / (np.abs(ex)**(1. / n))
     106    pos = np.nonzero(B < 0)
     107    B[pos] = md.materials.rheology_B[pos]
     108
     109    damage = D
     110
     111    return damage, B, backstress
  • issm/trunk-jpl/src/m/mech/backstressfrominversion.py

    r23716 r24213  
    1 import numpy as  np
     1import numpy as np
    22from averaging import averaging
    33from thomasparams import thomasparams
    44
    5 def backstressfrominversion(md,**kwargs):
    6         '''
    7         Compute ice shelf backstress from inversion results.
    85
    9         This routine computes backstress based on the analytical formalism of
    10         Thomas (1973) and Borstad et al. (2013, The Cryosphere).  The model
    11         must contain inversion results for ice rigidity.  Strain rates must
    12         also be included, either from observed or modeled velocities.  Ice
    13         rigidity B is assumed to be parameterized by the ice temperature in
    14         md.materials.rheology_B.
     6def backstressfrominversion(md, **kwargs):
     7    '''
     8    Compute ice shelf backstress from inversion results.
     9
     10    This routine computes backstress based on the analytical formalism of
     11    Thomas (1973) and Borstad et al. (2013, The Cryosphere).  The model
     12    must contain inversion results for ice rigidity.  Strain rates must
     13    also be included, either from observed or modeled velocities.  Ice
     14    rigidity B is assumed to be parameterized by the ice temperature in
     15    md.materials.rheology_B.
    1516
    1617   Available options:
    17                 - 'tempmask'    : mask the inverted rigidity to be no more than
    18                                                         appropriate for the temperature of the ice? 
    19                                                         Boolean, defaults to false.
    20                 - 'smoothing'   : the amount of smoothing to be applied to the strain rate data.
    21                                                                 Type 'help averaging' for more information on its
    22                                                                 usage. Defaults to 0.
    23                 - 'coordsys'    : coordinate system for calculating the strain rate
    24                                                         components. Must be one of:
    25                                 'longitudinal': x axis aligned along a flowline at every point (default)
    26                                 'principal': x axis aligned along maximum principal strain rate
    27                                         at every point
    28                                 'xy': x and y axes same as in polar stereographic projection
     18         - 'tempmask'    : mask the inverted rigidity to be no more than
     19                            appropriate for the temperature of the ice?
     20                            Boolean, defaults to false.
     21         - 'smoothing'    : the amount of smoothing to be applied to the strain rate data.
     22                                Type 'help averaging' for more information on its
     23                                usage. Defaults to 0.
     24         - 'coordsys'    : coordinate system for calculating the strain rate
     25                            components. Must be one of:
     26                'longitudinal': x axis aligned along a flowline at every point (default)
     27                'principal': x axis aligned along maximum principal strain rate
     28                    at every point
     29                'xy': x and y axes same as in polar stereographic projection
    2930
    3031   Return values:
    31                 'backstress' is the inferred backstress based on the analytical
    32                 solution for ice shelf creep
     32        'backstress' is the inferred backstress based on the analytical
     33        solution for ice shelf creep
    3334
    3435   Usage:
    35       backstress=backstressfrominversion(md,options)
     36      backstress = backstressfrominversion(md, options)
    3637
    3738   Example:
    38       backstress=backstressfrominversion(md,'smoothing',2,'coordsys','longitudinal','tempmask',true);
    39         '''
     39      backstress = backstressfrominversion(md, 'smoothing', 2, 'coordsys', 'longitudinal', 'tempmask', true)
     40    '''
    4041
    41         # unpack kwargs
    42         tempmask=kwargs.pop('tempmask',False)
    43         if 'tempmask' in kwargs: del kwargs['maxiter']
    44         smoothing=kwargs.pop('smoothing',0)
    45         if 'smoothing' in kwargs: del kwargs['smoothing']
    46         coordsys=kwargs.pop('coordsys','longitudinal')
    47         if 'coordsys' in kwargs: del kwargs['coordsys']
    48         assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
     42    # unpack kwargs
     43    tempmask = kwargs.pop('tempmask', False)
     44    if 'tempmask' in kwargs:
     45        del kwargs['maxiter']
     46    smoothing = kwargs.pop('smoothing', 0)
     47    if 'smoothing' in kwargs:
     48        del kwargs['smoothing']
     49    coordsys = kwargs.pop('coordsys', 'longitudinal')
     50    if 'coordsys' in kwargs:
     51        del kwargs['coordsys']
     52    assert len(kwargs) == 0, 'error, unexpected or misspelled kwargs'
    4953
    50         # some checks
    51         if not hasattr(md.results,'strainrate'):
    52                 raise Exception('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
    53         if not '2d' in md.mesh.__doc__:
    54                 raise Exception('only 2d (planview) model supported currently')
    55         if any(md.flowequation.element_equation!=2):
    56                 raise Exception('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
     54    # some checks
     55    if not hasattr(md.results, 'strainrate'):
     56        raise Exception('md.results.strainrate not present.  Calculate using md = mechanicalproperties(md, vx, vy)')
     57    if '2d' not in md.mesh.__doc__:
     58        raise Exception('only 2d (planview) model supported currently')
     59    if any(md.flowequation.element_equation != 2):
     60        raise Exception('Warning: the model has some non - SSA elements.  These will be treated like SSA elements')
    5761
    58         T=0.5*md.materials.rho_ice*md.constants.g*(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness
    59         n=averaging(md,md.materials.rheology_n,0)
    60         B=md.materials.rheology_B
    61         Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar.reshape(-1,)
    62        
    63         a0,b0,theta0,ex0=thomasparams(md,eq='Thomas',smoothing=smoothing,coordsys=coordsys)
    64        
    65         if tempmask:
    66                 Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar
    67                 pos=np.nonzero(Bi>md.materials.rheology_B)
    68                 Bi[pos]=md.materials.rheology_B[pos]
    69        
    70         # analytical backstress solution
    71         backstress=T-Bi*np.sign(ex0)*(2+a0)*np.abs(ex0)**(1./n)/((1+a0+a0**2+b0**2)**((n-1.)/2./n))
    72         backstress[np.nonzero(backstress<0)]=0
     62    T = 0.5 * md.materials.rho_ice * md.constants.g * (1 - md.materials.rho_ice / md.materials.rho_water) * md.geometry.thickness
     63    n = averaging(md, md.materials.rheology_n, 0)
     64    Bi = md.results.StressbalanceSolution.MaterialsRheologyBbar.reshape(- 1, )
    7365
    74         return backstress
     66    a0, b0, theta0, ex0 = thomasparams(md, eq='Thomas', smoothing=smoothing, coordsys=coordsys)
     67
     68    if tempmask:
     69        Bi = md.results.StressbalanceSolution.MaterialsRheologyBbar
     70        pos = np.nonzero(Bi > md.materials.rheology_B)
     71        Bi[pos] = md.materials.rheology_B[pos]
     72
     73    # analytical backstress solution
     74    backstress = T - Bi * np.sign(ex0) * (2 + a0) * np.abs(ex0)**(1. / n) / ((1 + a0 + a0**2 + b0**2)**((n - 1.) / 2. / n))
     75    backstress[np.nonzero(backstress < 0)] = 0
     76
     77    return backstress
  • issm/trunk-jpl/src/m/mech/calcbackstress.py

    r23716 r24213  
    1 import numpy as  np
     1import numpy as np
    22from averaging import averaging
    33from thomasparams import thomasparams
    44
    5 def calcbackstress(md,**kwargs):
    6         '''
    7         Compute ice shelf backstress.
    85
    9         This routine computes backstress based on the analytical formalism of
    10         Thomas (1973) and Borstad et al. (2013, The Cryosphere) based on the
    11         ice rigidity, thickness, the densities of ice and seawater, and
    12         (optionally) damage.  Strain rates must also be included, either from
    13         observed or modeled velocities.
    14        
    15         Available options:
    16                 - 'smoothing'   : the amount of smoothing to be applied to the strain rate data.
    17                                                                 Type 'help averaging' for more information on its
    18                                                                 usage. Defaults to 0.
    19                 - 'coordsys'    : coordinate system for calculating the strain rate
    20                                                         components. Must be one of:
    21                                 'longitudinal': x axis aligned along a flowline at every point (default)
    22                                 'principal': x axis aligned along maximum principal strain rate
    23                                         at every point
    24                                 'xy': x and y axes same as in polar stereographic projection
     6def calcbackstress(md, **kwargs):
     7    '''
     8    Compute ice shelf backstress.
     9
     10    This routine computes backstress based on the analytical formalism of
     11    Thomas (1973) and Borstad et al. (2013, The Cryosphere) based on the
     12    ice rigidity, thickness, the densities of ice and seawater, and
     13    (optionally) damage.  Strain rates must also be included, either from
     14    observed or modeled velocities.
     15
     16    Available options:
     17         - 'smoothing'    : the amount of smoothing to be applied to the strain rate data.
     18                                Type 'help averaging' for more information on its
     19                                usage. Defaults to 0.
     20         - 'coordsys'    : coordinate system for calculating the strain rate
     21                            components. Must be one of:
     22                'longitudinal': x axis aligned along a flowline at every point (default)
     23                'principal': x axis aligned along maximum principal strain rate
     24                    at every point
     25                'xy': x and y axes same as in polar stereographic projection
    2526
    2627   Return values:
    27                 'backstress' is the inferred backstress based on the analytical
    28                 solution for ice shelf creep
     28        'backstress' is the inferred backstress based on the analytical
     29        solution for ice shelf creep
    2930
    3031   Usage:
    31       backstress=calcbackstress(md,options)
     32      backstress = calcbackstress(md, options)
    3233
    3334   Example:
    34       backstress=calcbackstress(md,'smoothing',2,'coordsys','longitudinal')
    35         '''
     35      backstress = calcbackstress(md, 'smoothing', 2, 'coordsys', 'longitudinal')
     36    '''
    3637
    37         # unpack kwargs
    38         smoothing=kwargs.pop('smoothing',0)
    39         if 'smoothing' in kwargs: del kwargs['smoothing']
    40         coordsys=kwargs.pop('coordsys','longitudinal')
    41         if 'coordsys' in kwargs: del kwargs['coordsys']
    42         assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
     38    # unpack kwargs
     39    smoothing = kwargs.pop('smoothing', 0)
     40    if 'smoothing' in kwargs:
     41        del kwargs['smoothing']
     42    coordsys = kwargs.pop('coordsys', 'longitudinal')
     43    if 'coordsys' in kwargs:
     44        del kwargs['coordsys']
     45    assert len(kwargs) == 0, 'error, unexpected or misspelled kwargs'
    4346
    44         # some checks
    45         if not hasattr(md.results,'strainrate'):
    46                 raise Exception('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
    47         if not '2d' in md.mesh.__doc__:
    48                 raise Exception('only 2d (planview) model supported currently')
    49         if any(md.flowequation.element_equation!=2):
    50                 raise Exception('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
     47    # some checks
     48    if not hasattr(md.results, 'strainrate'):
     49        raise Exception('md.results.strainrate not present.  Calculate using md = mechanicalproperties(md, vx, vy)')
     50    if '2d' not in md.mesh.__doc__:
     51        raise Exception('only 2d (planview) model supported currently')
     52    if any(md.flowequation.element_equation != 2):
     53        raise Exception('Warning: the model has some non - SSA elements.  These will be treated like SSA elements')
    5154
    52         T=0.5*md.materials.rho_ice*md.constants.g*(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness
    53         n=averaging(md,md.materials.rheology_n,0)
    54         B=md.materials.rheology_B
    55         if md.damage.isdamage:
    56                 D=md.damage.D
    57         else:
    58                 D=0.
    59        
    60         a0,b0,theta0,ex0=thomasparams(md,eq='Thomas',smoothing=smoothing,coordsys=coordsys)
    61        
    62         # analytical backstress solution
    63         backstress=T-(1.-D)*B*np.sign(ex0)*(2+a0)*np.abs(ex0)**(1./n)/((1+a0+a0**2+b0**2)**((n-1.)/2./n))
    64         backstress[np.nonzero(backstress<0)]=0
     55    T = 0.5 * md.materials.rho_ice * md.constants.g * (1 - md.materials.rho_ice / md.materials.rho_water) * md.geometry.thickness
     56    n = averaging(md, md.materials.rheology_n, 0)
     57    B = md.materials.rheology_B
     58    if md.damage.isdamage:
     59        D = md.damage.D
     60    else:
     61        D = 0.
    6562
    66         return backstress
     63    a0, b0, theta0, ex0 = thomasparams(md, eq='Thomas', smoothing=smoothing, coordsys=coordsys)
     64
     65    # analytical backstress solution
     66    backstress = T - (1. - D) * B * np.sign(ex0) * (2 + a0) * np.abs(ex0)**(1. / n) / ((1 + a0 + a0**2 + b0**2)**((n - 1.) / 2. / n))
     67    backstress[np.nonzero(backstress < 0)] = 0
     68
     69    return backstress
  • issm/trunk-jpl/src/m/mech/damagefrominversion.py

    r23716 r24213  
    1 import numpy as  np
     1import numpy as np
     2
    23
    34def damagefrominversion(md):
    4         '''
    5         compute ice shelf damage from inversion results
     5    '''
     6    compute ice shelf damage from inversion results
    67
    7         This routine computes damage based on the analytical formalism of Borstad et
    8         al. (2013, The Cryosphere).  The model must contain inversion results for
    9         ice rigidity.  Ice rigidity B is assumed to be parameterized by the ice
    10         temperature in md.materials.rheology_B.
    11        
    12         Usage:
    13                 damage=damagefrominversion(md)
    14        
    15         Example:
    16                 damage=damagefrominversion(md)
    17         '''
     8    This routine computes damage based on the analytical formalism of Borstad et
     9    al. (2013, The Cryosphere).  The model must contain inversion results for
     10    ice rigidity.  Ice rigidity B is assumed to be parameterized by the ice
     11    temperature in md.materials.rheology_B.
    1812
    19         # check inputs
    20         if not hasattr(md.results,'strainrate'):
    21                 raise Exception('md.results.strainrate is not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
    22         if not '2d' in md.mesh.__doc__:
    23                 raise Exception('only 2d (planview) model supported currently')
    24         if any(md.flowequation.element_equation!=2):
    25                 raise Exception('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
    26         if np.ndim(md.results.StressbalanceSolution.MaterialsRheologyBbar)==2:
    27                 Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar.reshape(-1,)
    28         else:
    29                 Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar
    30         if np.ndim(md.materials.rheology_B)==2:
    31                 BT=md.materials.rheology_B.reshape(-1,)
    32         else:
    33                 BT=md.materials.rheology_B
     13    Usage:
     14        damage = damagefrominversion(md)
    3415
    35         damage=np.zeros_like(Bi)
     16    Example:
     17        damage = damagefrominversion(md)
     18    '''
    3619
    37         # Damage where Bi softer than B(T)
    38         pos=np.nonzero(Bi<BT)[0]
    39         damage[pos]=1.-Bi[pos]/BT[pos]
    40        
    41         pos=np.nonzero(damage<0)
    42         damage[pos]=0
     20    # check inputs
     21    if not hasattr(md.results, 'strainrate'):
     22        raise Exception('md.results.strainrate is not present.  Calculate using md = mechanicalproperties(md, vx, vy)')
     23    if '2d' not in md.mesh.__doc__:
     24        raise Exception('only 2d (planview) model supported currently')
     25    if any(md.flowequation.element_equation != 2):
     26        raise Exception('Warning: the model has some non - SSA elements.  These will be treated like SSA elements')
     27    if np.ndim(md.results.StressbalanceSolution.MaterialsRheologyBbar) == 2:
     28        Bi = md.results.StressbalanceSolution.MaterialsRheologyBbar.reshape(- 1, )
     29    else:
     30        Bi = md.results.StressbalanceSolution.MaterialsRheologyBbar
     31    if np.ndim(md.materials.rheology_B) == 2:
     32        BT = md.materials.rheology_B.reshape(- 1, )
     33    else:
     34        BT = md.materials.rheology_B
    4335
    44         return damage
     36    damage = np.zeros_like(Bi)
     37
     38    # Damage where Bi softer than B(T)
     39    pos = np.nonzero(Bi < BT)[0]
     40    damage[pos] = 1. - Bi[pos] / BT[pos]
     41
     42    pos = np.nonzero(damage < 0)
     43    damage[pos] = 0
     44
     45    return damage
  • issm/trunk-jpl/src/m/mech/mechanicalproperties.py

    r23716 r24213  
    1 import numpy as  np
     1import numpy as np
    22from GetNodalFunctionsCoeff import GetNodalFunctionsCoeff
    33from results import results
    4 from averaging import averaging
    54
    6 def mechanicalproperties(md,vx,vy,**kwargs):
    7         """
    8         MECHANICALPROPERTIES - compute stress and strain rate for a goven velocity
    9        
     5
     6def mechanicalproperties(md, vx, vy, **kwargs):
     7    """
     8    MECHANICALPROPERTIES - compute stress and strain rate for a goven velocity
     9
    1010   this routine computes the components of the stress tensor
    1111   strain rate tensor and their respective principal directions.
    1212   the results are in the model md: md.results
    13        
     13
    1414   Usage:
    15       md=mechanicalproperties(md,vx,vy)
    16        
     15      md = mechanicalproperties(md, vx, vy)
     16
    1717   Example:
    18       md=mechanicalproperties(md,md.initialization.vx,md.initialization.vy)
    19       md=mechanicalproperties(md,md.inversion.vx_obs,md.inversion.vy_obs)
    20         """
     18      md = mechanicalproperties(md, md.initialization.vx, md.initialization.vy)
     19      md = mechanicalproperties(md, md.inversion.vx_obs, md.inversion.vy_obs)
     20    """
    2121
    22         #some checks
    23         if len(vx)!=md.mesh.numberofvertices or len(vy)!=md.mesh.numberofvertices:
    24                 raise ValueError('the input velocity should be of size ' + md.mesh.numberofvertices)
    25        
    26         #if md.mesh.dimension!=2:
    27         #       raise StandardError('only 2D model supported currently')
     22    #some checks
     23    if len(vx) != md.mesh.numberofvertices or len(vy) != md.mesh.numberofvertices:
     24        raise ValueError('the input velocity should be of size ' + md.mesh.numberofvertices)
    2825
    29         if np.any(md.flowequation.element_equation!=2):
    30                 print('Warning: the model has some non SSA elements. These will be treated like SSA elements')
     26    #if md.mesh.dimension != 2:
     27    #    raise StandardError('only 2D model supported currently')
    3128
    32         #unpack kwargs
    33         if 'damage' in kwargs:
    34             damage=kwargs.pop('damage')
    35             if len(damage)!=md.mesh.numberofvertices:
    36                 raise ValueError('if damage is supplied it should be of size ' + md.mesh.numberofvertices)
    37             if np.ndim(damage)==2:
    38                 damage=damage.reshape(-1,)
    39         else: damage=None
     29    if np.any(md.flowequation.element_equation != 2):
     30        print('Warning: the model has some non SSA elements. These will be treated like SSA elements')
    4031
    41         if np.ndim(vx)==2:
    42                 vx=vx.reshape(-1,)
    43         if np.ndim(vy)==2:
    44                 vy=vy.reshape(-1,)
    45        
    46         #initialization
    47         numberofelements=md.mesh.numberofelements
    48         numberofvertices=md.mesh.numberofvertices
    49         index=md.mesh.elements
    50         summation=np.array([[1],[1],[1]])
    51         directionsstress=np.zeros((numberofelements,4))
    52         directionsstrain=np.zeros((numberofelements,4))
    53         valuesstress=np.zeros((numberofelements,2))
    54         valuesstrain=np.zeros((numberofelements,2))
    55        
    56         #compute nodal functions coefficients N(x,y)=alpha x + beta y +gamma
    57         alpha,beta=GetNodalFunctionsCoeff(index,md.mesh.x,md.mesh.y)[0:2]
    58        
    59         #compute shear
    60         vxlist=vx[index-1]/md.constants.yts
    61         vylist=vy[index-1]/md.constants.yts
    62         ux=np.dot((vxlist*alpha),summation).reshape(-1,)
    63         uy=np.dot((vxlist*beta),summation).reshape(-1,)
    64         vx=np.dot((vylist*alpha),summation).reshape(-1,)
    65         vy=np.dot((vylist*beta),summation).reshape(-1,)
    66         uyvx=(vx+uy)/2.
    67         #clear vxlist vylist
    68        
    69         #compute viscosity
    70         nu=np.zeros((numberofelements,))
    71         B_bar=np.dot(md.materials.rheology_B[index-1],summation/3.).reshape(-1,)
    72         power=((md.materials.rheology_n-1.)/(2.*md.materials.rheology_n)).reshape(-1,)
    73         second_inv=(ux**2.+vy**2.+((uy+vx)**2.)/4.+ux*vy).reshape(-1,)
    74        
    75         #some corrections
    76         location=np.nonzero(np.logical_and(second_inv==0,power!=0))
    77         nu[location]=10^18      #arbitrary maximum viscosity to apply where there is no effective shear
    78        
    79         if 'matice' in md.materials.__module__:
    80                 location=np.nonzero(second_inv)
    81                 nu[location]=B_bar[location]/(second_inv[location]**power[location])
    82                 location=np.nonzero(np.logical_and(second_inv==0,power==0))
    83                 nu[location]=B_bar[location]
    84                 location=np.nonzero(np.logical_and(second_inv==0,power!=0))
    85                 nu[location]=10^18
    86         elif 'matdamageice' in md.materials.__module__ and damage is not None:
    87                 print('computing damage-dependent properties!')
    88                 Zinv=np.dot(1-damage[index-1],summation/3.).reshape(-1,)
    89                 location=np.nonzero(second_inv)
    90                 nu[location]=Zinv[location]*B_bar[location]/np.power(second_inv[location],power[location])
    91                 location=np.nonzero(np.logical_and(second_inv==0,power==0))
    92                 nu[location]=Zinv[location]*B_bar[location]
    93                 #clear Zinv
    94         else:
    95                 raise Exception('class of md.materials (' + md.materials.__module__ + ') not recognized or not supported')
    96        
    97         #compute stress
    98         tau_xx=nu*ux
    99         tau_yy=nu*vy
    100         tau_xy=nu*uyvx
    101        
    102         #compute principal properties of stress
    103         for i in np.arange(numberofelements):
    104        
    105                 #compute stress and strainrate matrices
    106                 stress=np.array([ [tau_xx[i], tau_xy[i]], [tau_xy[i], tau_yy[i]] ])
    107                 strain=np.array([ [ux[i], uyvx[i]], [uyvx[i], vy[i]] ])
    108        
    109                 #eigenvalues and vectors for stress
    110                 value,directions=np.linalg.eig(stress);
    111                 idx=value.argsort()[::-1] # sort in descending algebraic (not absolute) order
    112                 value=value[idx]
    113                 directions=directions[:,idx]
    114                 valuesstress[i,:]=[value[0],value[1]]
    115                 directionsstress[i,:]=directions.transpose().flatten()
     32    #unpack kwargs
     33    if 'damage' in kwargs:
     34        damage = kwargs.pop('damage')
     35        if len(damage) != md.mesh.numberofvertices:
     36            raise ValueError('if damage is supplied it should be of size ' + md.mesh.numberofvertices)
     37            if np.ndim(damage) == 2:
     38                damage = np.squeeze(damage)
     39        else:
     40            damage = None
    11641
    117                 #eigenvalues and vectors for strain
    118                 value,directions=np.linalg.eig(strain);
    119                 idx=value.argsort()[::-1] # sort in descending order
    120                 value=value[idx]
    121                 directions=directions[:,idx]
    122                 valuesstrain[i,:]=[value[0],value[1]]
    123                 directionsstrain[i,:]=directions.transpose().flatten()
     42    if np.ndim(vx) == 2:
     43        vx = np.squeeze(vx)
     44    if np.ndim(vy) == 2:
     45        vy = np.squeeze(vy)
    12446
    125         ##plug onto the model
    126         ##NB: Matlab sorts the eigen value in increasing order, we want the reverse
    127        
    128         strainrate=results()
    129         strainrate.xx=ux*md.constants.yts #strain rate in 1/a instead of 1/s
    130         strainrate.yy=vy*md.constants.yts
    131         strainrate.xy=uyvx*md.constants.yts
    132         strainrate.principalvalue1=valuesstrain[:,0]*md.constants.yts
    133         strainrate.principalaxis1=directionsstrain[:,0:2]
    134         strainrate.principalvalue2=valuesstrain[:,1]*md.constants.yts
    135         strainrate.principalaxis2=directionsstrain[:,2:4]
    136         strainrate.effectivevalue=1./np.sqrt(2.)*np.sqrt(strainrate.xx**2+strainrate.yy**2+2.*strainrate.xy**2)
    137         md.results.strainrate=strainrate
    138        
    139         deviatoricstress=results()
    140         deviatoricstress.xx=tau_xx
    141         deviatoricstress.yy=tau_yy
    142         deviatoricstress.xy=tau_xy
    143         deviatoricstress.principalvalue1=valuesstress[:,0]
    144         deviatoricstress.principalaxis1=directionsstress[:,1:2]
    145         deviatoricstress.principalvalue2=valuesstress[:,1]
    146         deviatoricstress.principalaxis2=directionsstress[:,2:4]
    147         deviatoricstress.effectivevalue=1./np.sqrt(2.)*np.sqrt(stress.xx**2+stress.yy**2+2.*stress.xy**2)
    148         md.results.deviatoricstress=deviatoricstress
     47    #initialization
     48    numberofelements = md.mesh.numberofelements
     49    index = md.mesh.elements
     50    summation = np.array([[1], [1], [1]])
     51    directionsstress = np.zeros((numberofelements, 4))
     52    directionsstrain = np.zeros((numberofelements, 4))
     53    valuesstress = np.zeros((numberofelements, 2))
     54    valuesstrain = np.zeros((numberofelements, 2))
    14955
    150         return md
     56    #compute nodal functions coefficients N(x, y)=alpha x + beta y + gamma
     57    alpha, beta = GetNodalFunctionsCoeff(index, md.mesh.x, md.mesh.y)[0:2]
     58
     59    #compute shear
     60    vxlist = vx[index - 1] / md.constants.yts
     61    vylist = vy[index - 1] / md.constants.yts
     62    ux = np.dot((vxlist * alpha), summation).reshape(- 1, )
     63    uy = np.dot((vxlist * beta), summation).reshape(- 1, )
     64    vx = np.dot((vylist * alpha), summation).reshape(- 1, )
     65    vy = np.dot((vylist * beta), summation).reshape(- 1, )
     66    uyvx = (vx + uy) / 2.
     67    #clear vxlist vylist
     68
     69    #compute viscosity
     70    nu = np.zeros((numberofelements, ))
     71    B_bar = np.dot(md.materials.rheology_B[index - 1], summation / 3.).reshape(- 1, )
     72    power = ((md.materials.rheology_n - 1.) / (2. * md.materials.rheology_n)).reshape(- 1, )
     73    second_inv = (ux**2. + vy**2. + ((uy + vx)**2.) / 4. + ux * vy).reshape(- 1, )
     74
     75    #some corrections
     76    location = np.nonzero(np.logical_and(second_inv == 0, power != 0))
     77    nu[location] = 10**18  #arbitrary maximum viscosity to apply where there is no effective shear
     78
     79    if 'matice' in md.materials.__module__:
     80        location = np.nonzero(second_inv)
     81        nu[location] = B_bar[location] / (second_inv[location]**power[location])
     82        location = np.nonzero(np.logical_and(second_inv == 0, power == 0))
     83        nu[location] = B_bar[location]
     84        location = np.nonzero(np.logical_and(second_inv == 0, power != 0))
     85        nu[location] = 10**18
     86    elif 'matdamageice' in md.materials.__module__ and damage is not None:
     87        print('computing damage-dependent properties!')
     88        Zinv = np.dot(1 - damage[index - 1], summation / 3.).reshape(- 1, )
     89        location = np.nonzero(second_inv)
     90        nu[location] = Zinv[location] * B_bar[location] / np.power(second_inv[location], power[location])
     91        location = np.nonzero(np.logical_and(second_inv == 0, power == 0))
     92        nu[location] = Zinv[location] * B_bar[location]
     93    #clear Zinv
     94    else:
     95        raise Exception('class of md.materials (' + md.materials.__module__ + ') not recognized or not supported')
     96
     97    #compute stress
     98    tau_xx = nu * ux
     99    tau_yy = nu * vy
     100    tau_xy = nu * uyvx
     101
     102    #compute principal properties of stress
     103    for i in np.arange(numberofelements):
     104
     105        #compute stress and strainrate matrices
     106        stress = np.array([[tau_xx[i], tau_xy[i]], [tau_xy[i], tau_yy[i]]])
     107        strain = np.array([[ux[i], uyvx[i]], [uyvx[i], vy[i]]])
     108
     109    #eigenvalues and vectors for stress
     110        value, directions = np.linalg.eig(stress)
     111        idx = value.argsort()[:: - 1]  # sort in descending algebraic (not absolute) order
     112        value = value[idx]
     113        directions = directions[:, idx]
     114        valuesstress[i, :] = [value[0], value[1]]
     115        directionsstress[i, :] = directions.transpose().flatten()
     116
     117    #eigenvalues and vectors for strain
     118        value, directions = np.linalg.eig(strain)
     119        idx = value.argsort()[:: - 1]  # sort in descending order
     120        value = value[idx]
     121        directions = directions[:, idx]
     122        valuesstrain[i, :] = [value[0], value[1]]
     123        directionsstrain[i, :] = directions.transpose().flatten()
     124
     125    #plug onto the model
     126    #NB: Matlab sorts the eigen value in increasing order, we want the reverse
     127
     128    strainrate = results()
     129    strainrate.xx = ux * md.constants.yts  #strain rate in 1 / a instead of 1 / s
     130    strainrate.yy = vy * md.constants.yts
     131    strainrate.xy = uyvx * md.constants.yts
     132    strainrate.principalvalue1 = valuesstrain[:, 0] * md.constants.yts
     133    strainrate.principalaxis1 = directionsstrain[:, 0:2]
     134    strainrate.principalvalue2 = valuesstrain[:, 1] * md.constants.yts
     135    strainrate.principalaxis2 = directionsstrain[:, 2:4]
     136    strainrate.effectivevalue = 1. / np.sqrt(2.) * np.sqrt(strainrate.xx**2 + strainrate.yy**2 + 2. * strainrate.xy**2)
     137    md.results.strainrate = strainrate
     138
     139    deviatoricstress = results()
     140    deviatoricstress.xx = tau_xx
     141    deviatoricstress.yy = tau_yy
     142    deviatoricstress.xy = tau_xy
     143    deviatoricstress.principalvalue1 = valuesstress[:, 0]
     144    deviatoricstress.principalaxis1 = directionsstress[:, 1:2]
     145    deviatoricstress.principalvalue2 = valuesstress[:, 1]
     146    deviatoricstress.principalaxis2 = directionsstress[:, 2:4]
     147    deviatoricstress.effectivevalue = 1. / np.sqrt(2.) * np.sqrt(stress.xx**2 + stress.yy**2 + 2. * stress.xy**2)
     148    md.results.deviatoricstress = deviatoricstress
     149
     150    return md
  • issm/trunk-jpl/src/m/mech/newforcing.py

    r22267 r24213  
    11import numpy as np
    22
    3 def newforcing(t0,t1,deltaT,f0,f1,nodes):
    4         '''
    5 FUNCTION NEWFORCING Build forcing that extends temporally from t0 to t1, and in magnitude from f0 to f1. Equal time
    6                     and magnitude spacing.
    73
    8        Usage: forcing=newforcing(t0,t1,deltaT,f0,f1,nodes); 
    9        Where:
    10           t0:t1: time interval.
     4def newforcing(t0, t1, deltaT, f0, f1, nodes):
     5    '''
     6FUNCTION NEWFORCING Build forcing that extends temporally from t0 to t1, and in magnitude from f0 to f1. Equal time
     7                    and magnitude spacing.
     8
     9       Usage: forcing = newforcing(t0, t1, deltaT, f0, f1, nodes);
     10       Where:
     11          t0:t1: time interval.
    1112          deltaT: time step
    1213          f0:f1: magnitude interval.
    1314          nodes: number of vertices where we have a temporal forcing
    1415
    15        Example: 
    16            md.smb.mass_balance=newforcing(md.timestepping.start_time,md.timestepping.final_time,
    17                                           md.timestepping.time_step,-1,+2,md.mesh.numberofvertices)
    18         '''
    19         #Number of time steps:
    20         nsteps = (t1 - t0) / deltaT + 1
     16       Example:
     17           md.smb.mass_balance = newforcing(md.timestepping.start_time, md.timestepping.final_time,
     18                                          md.timestepping.time_step, - 1, + 2, md.mesh.numberofvertices)
     19    '''
     20    #Number of time steps:
     21    nsteps = (t1 - t0) / deltaT + 1
    2122
    22         #delta forcing:
    23         deltaf = (f1 - f0) / (nsteps - 1)
     23    #delta forcing:
     24    deltaf = (f1 - f0) / (nsteps - 1)
    2425
    25         #creates times:
    26         times = np.arange(t0,t1+deltaT,deltaT)  #Add deltaT to fix python/matlab discrepency
     26    #creates times:
     27    times = np.arange(t0, t1 + deltaT, deltaT)  #Add deltaT to fix python / matlab discrepency
    2728
    28         #create forcing:
    29         forcing = np.arange(f0,f1+deltaf,deltaf)#Add deltaf to fix python/matlab discrepency
     29    #create forcing:
     30    forcing = np.arange(f0, f1 + deltaf, deltaf)  #Add deltaf to fix python / matlab discrepency
    3031
    31         #replicate for all nodes
    32         forcing = np.tile(forcing, (nodes+1,1))
    33         forcing[-1,:] = times
    34         return forcing
     32    #replicate for all nodes
     33    forcing = np.tile(forcing, (nodes + 1, 1))
     34    forcing[-1, :] = times
     35    return forcing
  • issm/trunk-jpl/src/m/mech/robintemperature.py

    r21303 r24213  
    1 import numpy as  np
     1import numpy as np
    22from scipy.special import erf
    33
    4 def robintemperature(heatflux,accumrate,thickness,surftemp,z):
    5         '''
    6         Compute vertical temperature profile of an ice sheet (Robin, 1955)
    74
    8         This routine computes the vertical temperature profile of an ice sheet
    9         according to the solution of Robin (1955), neglecting friction and
    10         horizontal advection.  The solution is thus most appropriate at an ice
    11         divide.
     5def robintemperature(heatflux, accumrate, thickness, surftemp, z):
     6    '''
     7    Compute vertical temperature profile of an ice sheet (Robin, 1955)
    128
    13         The coordinate system for the solution runs from z=0 at the base
    14         to z=H at the surface of the ice.
     9    This routine computes the vertical temperature profile of an ice sheet
     10    according to the solution of Robin (1955), neglecting friction and
     11    horizontal advection.  The solution is thus most appropriate at an ice
     12    divide.
    1513
    16         Parameters (SI units):
    17                 -heatflux       Geothermal heat flux (W m^-2)
    18                 -accumrate      Surface accumulation rate (m s^-1 ice equivalent)
    19                 -thickness      Ice thickness (m)
    20                 -surftemp       Surface temperature (K)
    21                 -z                              Vertical position at which to calculate temperature
    22                                                 (z can be a scalar or a vector)
     14    The coordinate system for the solution runs from z = 0 at the base
     15    to z = H at the surface of the ice.
    2316
    24         Returns a vector the same length as z containing the temperature in K
     17    Parameters (SI units):
     18         - heatflux    Geothermal heat flux (W m^ - 2)
     19         - accumrate    Surface accumulation rate (m s^ - 1 ice equivalent)
     20         - thickness    Ice thickness (m)
     21         - surftemp    Surface temperature (K)
     22         - z                Vertical position at which to calculate temperature
     23                        (z can be a scalar or a vector)
    2524
    26         Usage:
    27                 tprofile=robintemperature(heatflux,accumrate,thickness,surftemp,z)
    28         '''
     25    Returns a vector the same length as z containing the temperature in K
    2926
    30         # some constants (from Holland and Jenkins, 1999)
    31         alphaT=1.14e-6 # thermal diffusivity (m^2 s^-1)
    32         c=2009. # specific heat capacity (J kg^-1 K^-1)
    33         rho=917.  # ice density (kg m^-3)
    34        
    35         #create vertical coordinate variable
    36         zstar=np.sqrt(2.*alphaT*thickness/accumrate)
    37        
    38         tprofile=surftemp+np.sqrt(2.*thickness*np.pi/accumrate/alphaT)*(-heatflux)/2./rho/c*(erf(z/zstar)-erf(thickness/zstar))
     27    Usage:
     28        tprofile = robintemperature(heatflux, accumrate, thickness, surftemp, z)
     29    '''
    3930
    40         return tprofile
    41         # difference between surface and base temperature for check (Cuffey2010 p412):
    42         # print tprofile-surftemp
     31    # some constants (from Holland and Jenkins, 1999)
     32    alphaT = 1.14e-6  # thermal diffusivity (m^2 s^ - 1)
     33    c = 2009.  # specific heat capacity (J kg^ - 1 K^ - 1)
     34    rho = 917.  # ice density (kg m^ - 3)
     35
     36    #create vertical coordinate variable
     37    zstar = np.sqrt(2. * alphaT * thickness / accumrate)
     38
     39    tprofile = surftemp + np.sqrt(2. * thickness * np.pi / accumrate / alphaT) * (- heatflux) / 2. / rho / c * (erf(z / zstar) - erf(thickness / zstar))
     40
     41    return tprofile
     42    # difference between surface and base temperature for check (Cuffey2010 p412):
     43    # print tprofile-surftemp
  • issm/trunk-jpl/src/m/mech/steadystateiceshelftemp.py

    r23716 r24213  
    1 import numpy as  np
     1import numpy as np
    22
    3 def steadystateiceshelftemp(md,surfacetemp,basaltemp):
    4         """
    5         Compute the depth-averaged steady-state temperature of an ice shelf
    6         This routine computes the depth-averaged temperature accounting for vertical advection
    7         and diffusion of heat into the base of the ice shelf as a function of surface and basal
    8         temperature and the basal melting rate.  Horizontal advection is ignored.
    9    The solution is a depth-averaged version of Equation 25 in Holland and Jenkins (1999).
    103
    11         In addition to supplying md, the surface and basal temperatures of the ice shelf must be supplied in degrees Kelvin.
     4def steadystateiceshelftemp(md, surfacetemp, basaltemp):
     5    """
     6    Compute the depth - averaged steady - state temperature of an ice shelf
     7    This routine computes the depth - averaged temperature accounting for vertical advection
     8    and diffusion of heat into the base of the ice shelf as a function of surface and basal
     9    temperature and the basal melting rate.  Horizontal advection is ignored.
     10   The solution is a depth - averaged version of Equation 25 in Holland and Jenkins (1999).
    1211
    13         The model md must also contain the fields:
    14         md.geometry.thickness
    15         md.basalforcings.floatingice_melting_rate (positive for melting, negative for freezing)
     12    In addition to supplying md, the surface and basal temperatures of the ice shelf must be supplied in degrees Kelvin.
     13
     14    The model md must also contain the fields:
     15    md.geometry.thickness
     16    md.basalforcings.floatingice_melting_rate (positive for melting, negative for freezing)
    1617
    1718   Usage:
    18       temperature=steadystateiceshelftemp(md,surfacetemp,basaltemp)
    19         """
    20         if len(md.geometry.thickness)!=md.mesh.numberofvertices:
    21                 raise ValueError('steadystateiceshelftemp error message: thickness should have a length of ' + md.mesh.numberofvertices)
    22        
    23         #surface and basal temperatures in degrees C
    24         if len(surfacetemp)!=md.mesh.numberofvertices:
    25                 raise ValueError('steadystateiceshelftemp error message: surfacetemp should have a length of ' + md.mesh.numberofvertices)
    26        
    27         if len(basaltemp)!=md.mesh.numberofvertices:
    28                 raise ValueError('steadystateiceshelftemp error message: basaltemp should have a length of ' +md.mesh.numberofvertices)
    29        
    30         # Convert temps to Celsius for Holland and Jenkins (1999) equation
    31         Ts=-273.15+surfacetemp
    32         Tb=-273.15+basaltemp
    33        
    34         Hi=md.geometry.thickness
    35         ki=1.14e-6*md.constants.yts # ice shelf thermal diffusivity from Holland and Jenkins (1999) converted to m^2/yr
    36        
    37         #vertical velocity of ice shelf, calculated from melting rate
    38         wi=md.materials.rho_water/md.materials.rho_ice*md.basalforcings.floatingice_melting_rate
    39        
    40         #temperature profile is linear if melting rate is zero, depth-averaged temp is simple average in this case
    41         temperature=(Ts+Tb)/2  # where wi~=0
    42        
    43         pos=np.nonzero(abs(wi)>=1e-4) # to avoid division by zero
     19      temperature = steadystateiceshelftemp(md, surfacetemp, basaltemp)
     20    """
     21    if len(md.geometry.thickness) != md.mesh.numberofvertices:
     22        raise ValueError('steadystateiceshelftemp error message: thickness should have a length of ' + md.mesh.numberofvertices)
    4423
    45         np.seterr(over='raise',divide='raise') # raise errors if floating point exceptions are encountered in following calculation
    46         #calculate depth-averaged temperature (in Celsius)
    47         try:
    48                 temperature[pos]=-( (Tb[pos]-Ts[pos])*ki/wi[pos] + Hi[pos]*Tb[pos] - (Hi[pos]*Ts[pos] + (Tb[pos]-Ts[pos])*ki/wi[pos])*np.exp(Hi[pos]*wi[pos]/ki) )/( Hi[pos]*(np.exp(Hi[pos]*wi[pos]/ki)-1))
    49         except FloatingPointError:
    50                 print('steadystateiceshelf warning: overflow encountered in multipy/divide/exp, trying another formulation.')
    51                 temperature[pos]=-( ((Tb[pos]-Ts[pos])*ki/wi[pos] + Hi[pos]*Tb[pos])/np.exp(Hi[pos]*wi[pos]/ki) - Hi[pos]*Ts[pos] + (Tb[pos]-Ts[pos])*ki/wi[pos])/( Hi[pos]*(1-np.exp(-Hi[pos]*wi[pos]/ki)))
    52        
    53         #temperature should not be less than surface temp
    54         pos=np.nonzero(temperature<Ts)
    55         temperature[pos]=Ts[pos]
    56        
    57         # NaN where melt rates are too high (infinity/infinity in exponential)
    58         pos=np.nonzero(np.isnan(temperature))
    59         temperature[pos]=Ts[pos]
    60        
    61         #convert to Kelvin
    62         temperature=temperature+273.15
     24    #surface and basal temperatures in degrees C
     25    if len(surfacetemp) != md.mesh.numberofvertices:
     26        raise ValueError('steadystateiceshelftemp error message: surfacetemp should have a length of ' + md.mesh.numberofvertices)
    6327
    64         return temperature
     28    if len(basaltemp) != md.mesh.numberofvertices:
     29        raise ValueError('steadystateiceshelftemp error message: basaltemp should have a length of ' + md.mesh.numberofvertices)
     30
     31    # Convert temps to Celsius for Holland and Jenkins (1999) equation
     32    Ts = -273.15 + surfacetemp
     33    Tb = -273.15 + basaltemp
     34
     35    Hi = md.geometry.thickness
     36    ki = 1.14e-6 * md.constants.yts  # ice shelf thermal diffusivity from Holland and Jenkins (1999) converted to m^2 / yr
     37
     38    #vertical velocity of ice shelf, calculated from melting rate
     39    wi = md.materials.rho_water / md.materials.rho_ice * md.basalforcings.floatingice_melting_rate
     40
     41    #temperature profile is linear if melting rate is zero, depth - averaged temp is simple average in this case
     42    temperature = (Ts + Tb) / 2  # where wi~=0
     43
     44    pos = np.nonzero(abs(wi) >= 1e-4)  # to avoid division by zero
     45
     46    np.seterr(over='raise', divide='raise')  # raise errors if floating point exceptions are encountered in following calculation
     47    #calculate depth - averaged temperature (in Celsius)
     48    try:
     49        temperature[pos] = -((Tb[pos] - Ts[pos]) * ki / wi[pos] + Hi[pos] * Tb[pos] - (Hi[pos] * Ts[pos] + (Tb[pos] - Ts[pos]) * ki / wi[pos]) * np.exp(Hi[pos] * wi[pos] / ki)) / (Hi[pos] * (np.exp(Hi[pos] * wi[pos] / ki) - 1))
     50    except FloatingPointError:
     51        print('steadystateiceshelf warning: overflow encountered in multipy / divide / exp, trying another formulation.')
     52        temperature[pos] = -(((Tb[pos] - Ts[pos]) * ki / wi[pos] + Hi[pos] * Tb[pos]) / np.exp(Hi[pos] * wi[pos] / ki) - Hi[pos] * Ts[pos] + (Tb[pos] - Ts[pos]) * ki / wi[pos]) / (Hi[pos] * (1 - np.exp(- Hi[pos] * wi[pos] / ki)))
     53
     54    #temperature should not be less than surface temp
     55    pos = np.nonzero(temperature < Ts)
     56    temperature[pos] = Ts[pos]
     57
     58    # NaN where melt rates are too high (infinity / infinity in exponential)
     59    pos = np.nonzero(np.isnan(temperature))
     60    temperature[pos] = Ts[pos]
     61
     62    #convert to Kelvin
     63    temperature = temperature + 273.15
     64
     65    return temperature
  • issm/trunk-jpl/src/m/mech/thomasparams.py

    r23716 r24213  
    1 import numpy as  np
     1import numpy as np
    22from averaging import averaging
    33
    4 def thomasparams(md,**kwargs):
    5         '''
    6         compute Thomas' geometric parameters for an ice shelf
    74
    8         This routine computes geometric parameters representing ratios between
    9         components of the horizontal strain rate tensor for an ice shelf, as
    10         originally developed in Thomas (1973).  The model must contain computed
    11         strain rates, either from observed or modeled ice velocities.
     5def thomasparams(md, **kwargs):
     6    '''
     7    compute Thomas' geometric parameters for an ice shelf
     8
     9    This routine computes geometric parameters representing ratios between
     10    components of the horizontal strain rate tensor for an ice shelf, as
     11    originally developed in Thomas (1973).  The model must contain computed
     12    strain rates, either from observed or modeled ice velocities.
    1213
    1314   Available options:
    14          -eq                    : analytical equation to use in the calculation.  Must be one of:
    15                                 'Thomas' for a 2D ice shelf, taking into account full strain rate
    16                                         tensor (default)
    17                                 'Weertman1D' for a confined ice shelf free to flow in one direction
    18                                 'Weertman2D' for an unconfined ice shelf free to spread in any direction
     15     - eq            : analytical equation to use in the calculation.  Must be one of:
     16                'Thomas' for a 2D ice shelf, taking into account full strain rate
     17                    tensor (default)
     18                'Weertman1D' for a confined ice shelf free to flow in one direction
     19                'Weertman2D' for an unconfined ice shelf free to spread in any direction
    1920
    20          -smoothing     : an integer smoothing parameter for the averaging function
    21                                                 (default 0) Type 'help averaging' for more information on its usage.
     21     - smoothing    : an integer smoothing parameter for the averaging function
     22                        (default 0) Type 'help averaging' for more information on its usage.
    2223
    23          -coordsys      : coordinate system for calculating the strain rate
    24                                                 components. Must be one of:
    25                                 'longitudinal': x axis aligned along a flowline at every point (default)
    26                                 'principal': x axis aligned along maximum principal strain rate
    27                                         at every point
    28                                 'xy': x and y axes same as in polar stereographic projection
     24     - coordsys    : coordinate system for calculating the strain rate
     25                        components. Must be one of:
     26                'longitudinal': x axis aligned along a flowline at every point (default)
     27                'principal': x axis aligned along maximum principal strain rate
     28                    at every point
     29                'xy': x and y axes same as in polar stereographic projection
    2930
    30    Return values: 
     31   Return values:
    3132
    32                 'alpha' which is the ratio e_yy/e_xx between components of the strain
    33                 rate tensor
     33        'alpha' which is the ratio e_yy / e_xx between components of the strain
     34        rate tensor
    3435
    35                 'beta' which is the ratio e_xy/e_xx between components of the strain rate
    36                 tensor
     36        'beta' which is the ratio e_xy / e_xx between components of the strain rate
     37        tensor
    3738
    38                 'theta' which is a combination of alpha and beta arising from the form of
    39                 the equivalent stress
     39        'theta' which is a combination of alpha and beta arising from the form of
     40        the equivalent stress
    4041
    41                 'exx' is the strain rate along a coordinate system defined by 'coordsys'
     42        'exx' is the strain rate along a coordinate system defined by 'coordsys'
    4243
    43                 'sigxx' is the deviatoric stress along a coordinate system defined by 'coordsys'
     44        'sigxx' is the deviatoric stress along a coordinate system defined by 'coordsys'
    4445
    45    Usage: 
    46                 alpha,beta,theta,exx,sigxx=thomasparams(md)
     46   Usage:
     47        alpha, beta, theta, exx, sigxx = thomasparams(md)
    4748
    48    Example: 
    49                 alpha,beta,theta,exx,sigxx=thomasparams(md,eq='Thomas',smoothing=2,coordsys='longitudinal')
    50         '''
     49   Example:
     50        alpha, beta, theta, exx, sigxx = thomasparams(md, eq = 'Thomas', smoothing = 2, coordsys = 'longitudinal')
     51    '''
    5152
    52         #unpack kwargs
    53         eq=kwargs.pop('eq','Thomas')
    54         if 'eq' in kwargs: del kwargs['eq']
    55         smoothing=kwargs.pop('smoothing',0)
    56         if 'smoothing' in kwargs: del kwargs['smoothing']
    57         coordsys=kwargs.pop('coordsys','longitudinal')
    58         if 'coordsys' in kwargs: del kwargs['coordsys']
    59         assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
     53    #unpack kwargs
     54    eq = kwargs.pop('eq', 'Thomas')
     55    if 'eq' in kwargs:
     56        del kwargs['eq']
     57    smoothing = kwargs.pop('smoothing', 0)
     58    if 'smoothing' in kwargs:
     59        del kwargs['smoothing']
     60    coordsys = kwargs.pop('coordsys', 'longitudinal')
     61    if 'coordsys' in kwargs:
     62        del kwargs['coordsys']
     63    assert len(kwargs) == 0, 'error, unexpected or misspelled kwargs'
    6064
    61         # some checks
    62         if not hasattr(md.results,'strainrate'):
    63                 raise Exception('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
    64         if not '2d' in md.mesh.__doc__:
    65                 raise Exception('only 2d (planview) model supported currently')
    66         if any(md.flowequation.element_equation!=2):
    67                 raise Exception('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
     65    # some checks
     66    if not hasattr(md.results, 'strainrate'):
     67        raise Exception('md.results.strainrate not present.  Calculate using md = mechanicalproperties(md, vx, vy)')
     68    if '2d' not in md.mesh.__doc__:
     69        raise Exception('only 2d (planview) model supported currently')
     70    if any(md.flowequation.element_equation != 2):
     71        raise Exception('Warning: the model has some non - SSA elements.  These will be treated like SSA elements')
    6872
    69         # average element strain rates onto vertices
    70         e1=averaging(md,md.results.strainrate.principalvalue1,smoothing)/md.constants.yts # convert to s^-1
    71         e2=averaging(md,md.results.strainrate.principalvalue2,smoothing)/md.constants.yts
    72         exx=averaging(md,md.results.strainrate.xx,smoothing)/md.constants.yts
    73         eyy=averaging(md,md.results.strainrate.yy,smoothing)/md.constants.yts
    74         exy=averaging(md,md.results.strainrate.xy,smoothing)/md.constants.yts
    75        
    76         # checks: any of e1 or e2 equal to zero?
    77         pos=np.nonzero(e1==0)
    78         if np.any(pos==1):
    79                 print('WARNING: first principal strain rate equal to zero.  Value set to 1e-13 s^-1')
    80                 e1[pos]=1.e-13
    81         pos=np.nonzero(e2==0)
    82         if np.any(pos==1):
    83                 print('WARNING: second principal strain rate equal to zero.  Value set to 1e-13 s^-1')
    84                 e2[pos]=1.e-13
    85        
    86         # rheology
    87         n=averaging(md,md.materials.rheology_n,0)
    88         B=md.materials.rheology_B
    89        
    90         if coordsys=='principal':
    91                 b=np.zeros((md.mesh.numberofvertices,))
    92                 ex=e1
    93                 a=e2/e1
    94                 pos=np.nonzero(np.logical_and(e1<0,e2>0)) # longitudinal compression and lateral tension
    95                 a[pos]=e1[pos]/e2[pos]
    96                 ex[pos]=e2[pos]
    97                 pos2=np.nonzero(e1<0 & e2<0 & np.abs(e1)<np.abs(e2)) # lateral and longitudinal compression
    98                 a[pos2]=e1[pos2]/e2[pos2]
    99                 ex[pos2]=e2[pos2]
    100                 pos3=np.nonzero(e1>0 & e2>0 & np.abs(e1)<np.abs(e2)) # lateral and longitudinal tension
    101                 a[pos3]=e1[pos3]/e2[pos3]
    102                 ex[pos3]=e2[pos3]
    103                 ind=np.nonzero(e1<0 & e2<0)
    104                 a[ind]=-a[ind] # where both strain rates are compressive, enforce negative alpha
    105                 sigxx=(np.abs(ex)/((1.+a+a**2)**((n-1.)/2.)))**(1./n)*B
    106         elif coordsys=='xy':
    107                 ex=exx
    108                 a=eyy/exx
    109                 b=exy/exx
    110         elif coordsys=='longitudinal':
    111                 # using longitudinal strain rates defined by observed velocity vector
    112                 velangle=np.arctan(md.initialization.vy/md.initialization.vx)
    113                 pos=np.nonzero(md.initialization.vx==0)
    114                 velangle[pos]=np.pi/2
    115                 ex=0.5*(exx+eyy)+0.5*(exx-eyy)*np.cos(2.*velangle)+exy*np.sin(2.*velangle)
    116                 ey=exx+eyy-ex # trace of strain rate tensor is invariant
    117                 exy=-0.5*(exx-eyy)*np.sin(2.*velangle)+exy*np.cos(2.*velangle)
    118                 a=ey/ex
    119                 b=exy/ex
    120                 sigxx=abs(ex)**(1./n-1.)*ex/((1.+a+a**2+b**2)**((n-1.)/(2.*n)))*B
    121         else:
    122                 raise ValueError('argument passed to "coordsys" not valid')
    123        
    124         # a < -1 in areas of strong lateral compression or longitudinal compression and
    125         # theta flips sign at a = -2
    126         pos=np.nonzero(np.abs((np.abs(a)-2.))<1.e-3)
    127         if len(pos)>0:
    128                 print(('Warning: ', len(pos), ' vertices have alpha within 1e-3 of -2'))
    129         a[pos]=-2+1e-3
     73    # average element strain rates onto vertices
     74    e1 = averaging(md, md.results.strainrate.principalvalue1, smoothing) / md.constants.yts  # convert to s^ - 1
     75    e2 = averaging(md, md.results.strainrate.principalvalue2, smoothing) / md.constants.yts
     76    exx = averaging(md, md.results.strainrate.xx, smoothing) / md.constants.yts
     77    eyy = averaging(md, md.results.strainrate.yy, smoothing) / md.constants.yts
     78    exy = averaging(md, md.results.strainrate.xy, smoothing) / md.constants.yts
    13079
    131         if eq=='Weertman1D':
    132                 theta=1./8
    133                 a=np.zeros((md.mesh.numberofvertices,))
    134         elif eq=='Weertman2D':
    135                 theta=1./9
    136                 a=np.ones((md.mesh.numberofvertices,))
    137         elif eq=='Thomas':
    138                 theta=((1.+a+a**2+b**2)**((n-1.)/2.))/(np.abs(2.+a)**n)
    139         else:
    140                 raise ValueError('argument passed to "eq" not valid')
     80    # checks: any of e1 or e2 equal to zero?
     81    pos = np.nonzero(e1 == 0)
     82    if np.any(pos == 1):
     83        print('WARNING: first principal strain rate equal to zero.  Value set to 1e-13 s^ - 1')
     84        e1[pos] = 1.e-13
     85    pos = np.nonzero(e2 == 0)
     86    if np.any(pos == 1):
     87        print('WARNING: second principal strain rate equal to zero.  Value set to 1e-13 s^ - 1')
     88        e2[pos] = 1.e-13
    14189
    142         alpha=a
    143         beta=b
     90    # rheology
     91    n = averaging(md, md.materials.rheology_n, 0)
     92    B = md.materials.rheology_B
    14493
    145         return alpha,beta,theta,ex
     94    if coordsys == 'principal':
     95        b = np.zeros((md.mesh.numberofvertices, ))
     96        ex = e1
     97        a = e2 / e1
     98        pos = np.nonzero(np.logical_and(e1 < 0, e2 > 0))  # longitudinal compression and lateral tension
     99        a[pos] = e1[pos] / e2[pos]
     100        ex[pos] = e2[pos]
     101        pos2 = np.nonzero(e1 < 0 & e2 < 0 & np.abs(e1) < np.abs(e2))  # lateral and longitudinal compression
     102        a[pos2] = e1[pos2] / e2[pos2]
     103        ex[pos2] = e2[pos2]
     104        pos3 = np.nonzero(e1 > 0 & e2 > 0 & np.abs(e1) < np.abs(e2))  # lateral and longitudinal tension
     105        a[pos3] = e1[pos3] / e2[pos3]
     106        ex[pos3] = e2[pos3]
     107        ind = np.nonzero(e1 < 0 & e2 < 0)
     108        a[ind] = -a[ind]  # where both strain rates are compressive, enforce negative alpha
     109        sigxx = (np.abs(ex) / ((1. + a + a**2)**((n - 1.) / 2.)))**(1. / n) * B
     110    elif coordsys == 'xy':
     111        ex = exx
     112        a = eyy / exx
     113        b = exy / exx
     114    elif coordsys == 'longitudinal':
     115        # using longitudinal strain rates defined by observed velocity vector
     116        velangle = np.arctan(md.initialization.vy / md.initialization.vx)
     117        pos = np.nonzero(md.initialization.vx == 0)
     118        velangle[pos] = np.pi / 2
     119        ex = 0.5 * (exx + eyy) + 0.5 * (exx - eyy) * np.cos(2. * velangle) + exy * np.sin(2. * velangle)
     120        ey = exx + eyy - ex  # trace of strain rate tensor is invariant
     121        exy = - 0.5 * (exx - eyy) * np.sin(2. * velangle) + exy * np.cos(2. * velangle)
     122        a = ey / ex
     123        b = exy / ex
     124        sigxx = abs(ex)**(1. / n - 1.) * ex / ((1. + a + a**2 + b**2)**((n - 1.) / (2. * n))) * B
     125    else:
     126        raise ValueError('argument passed to "coordsys" not valid')
     127
     128    # a < - 1 in areas of strong lateral compression or longitudinal compression and
     129    # theta flips sign at a = - 2
     130    pos = np.nonzero(np.abs((np.abs(a) - 2.)) < 1.e-3)
     131    if len(pos) > 0:
     132        print(('Warning: ', len(pos), ' vertices have alpha within 1e-3 of - 2'))
     133    a[pos] = -2 + 1e-3
     134
     135    if eq == 'Weertman1D':
     136        theta = 1. / 8
     137        a = np.zeros((md.mesh.numberofvertices, ))
     138    elif eq == 'Weertman2D':
     139        theta = 1. / 9
     140        a = np.ones((md.mesh.numberofvertices, ))
     141    elif eq == 'Thomas':
     142        theta = ((1. + a + a**2 + b**2)**((n - 1.) / 2.)) / (np.abs(2. + a)**n)
     143    else:
     144        raise ValueError('argument passed to "eq" not valid')
     145
     146    alpha = a
     147    beta = b
     148
     149    return alpha, beta, theta, ex
  • issm/trunk-jpl/src/m/mesh/ComputeHessian.py

    r22865 r24213  
    44import MatlabFuncs as m
    55
    6 def ComputeHessian(index,x,y,field,type):
    7         """
    8         COMPUTEHESSIAN - compute hessian matrix from a field
    96
    10            Compute the hessian matrix of a given field
    11            return the three components Hxx Hxy Hyy
    12            for each element or each node
     7def ComputeHessian(index, x, y, field, type):
     8    """
     9    COMPUTEHESSIAN - compute hessian matrix from a field
    1310
    14            Usage:
    15               hessian=ComputeHessian(index,x,y,field,type)
     11       Compute the hessian matrix of a given field
     12       return the three components Hxx Hxy Hyy
     13       for each element or each node
    1614
    17            Example:
    18               hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,md.inversion.vel_obs,'node')
    19         """
     15       Usage:
     16          hessian = ComputeHessian(index, x, y, field, type)
    2017
    21         #some variables
    22         numberofnodes=np.size(x)
    23         numberofelements=np.size(index,axis=0)
     18       Example:
     19          hessian = ComputeHessian(md.mesh.elements, md.mesh.x, md.mesh.y, md.inversion.vel_obs, 'node')
     20    """
    2421
    25         #some checks
    26         if np.size(field)!=numberofnodes and np.size(field)!=numberofelements:
    27                 raise TypeError("ComputeHessian error message: the given field size not supported yet")
    28         if not m.strcmpi(type,'node') and not m.strcmpi(type,'element'):
    29                 raise TypeError("ComputeHessian error message: only 'node' or 'element' type supported yet")
     22    #some variables
     23    numberofnodes = np.size(x)
     24    numberofelements = np.size(index, axis=0)
    3025
    31         #initialization
    32         line=index.reshape(-1,order='F')
    33         linesize=3*numberofelements
     26    #some checks
     27    if np.size(field) != numberofnodes and np.size(field) != numberofelements:
     28        raise TypeError("ComputeHessian error message: the given field size not supported yet")
     29    if not m.strcmpi(type, 'node') and not m.strcmpi(type, 'element'):
     30        raise TypeError("ComputeHessian error message: only 'node' or 'element' type supported yet")
    3431
    35         #get areas and nodal functions coefficients N(x,y)=alpha x + beta y + gamma
    36         [alpha,beta,dum]=GetNodalFunctionsCoeff(index,x,y)
    37         areas=GetAreas(index,x,y)
     32    #initialization
     33    line = index.reshape(-1, order='F')
     34    linesize = 3 * numberofelements
    3835
    39         #compute weights that hold the volume of all the element holding the node i
    40         weights=m.sparse(line,np.ones((linesize,1),dtype=int),np.tile(areas,(3,1)),numberofnodes,1)
     36    #get areas and nodal functions coefficients N(x, y)=alpha x + beta y + gamma
     37    [alpha, beta, dum] = GetNodalFunctionsCoeff(index, x, y)
     38    areas = GetAreas(index, x, y)
    4139
    42         #compute field on nodes if on elements
    43         if np.size(field,axis=0)==numberofelements:
    44                 field=m.sparse(line,np.ones((linesize,1),dtype=int),np.tile(areas*field,(3,1)),numberofnodes,1)/weights
     40    #compute weights that hold the volume of all the element holding the node i
     41    weights = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile(areas, (3, 1)), numberofnodes, 1)
    4542
    46         #Compute gradient for each element
    47         grad_elx=np.sum(field[index-1]*alpha,axis=1)
    48         grad_ely=np.sum(field[index-1]*beta,axis=1)
     43    #compute field on nodes if on elements
     44    if np.size(field, axis=0) == numberofelements:
     45        field = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile(areas * field, (3, 1)), numberofnodes, 1) / weights
    4946
    50         #Compute gradient for each node (average of the elements around)
    51         gradx=m.sparse(line,np.ones((linesize,1),dtype=int),np.tile((areas*grad_elx),(3,1)),numberofnodes,1)
    52         grady=m.sparse(line,np.ones((linesize,1),dtype=int),np.tile((areas*grad_ely),(3,1)),numberofnodes,1)
    53         gradx=gradx/weights
    54         grady=grady/weights
     47    #Compute gradient for each element
     48    grad_elx = np.sum(field[index - 1] * alpha, axis=1)
     49    grad_ely = np.sum(field[index - 1] * beta, axis=1)
    5550
    56         #Compute hessian for each element
    57         hessian=np.vstack((np.sum(gradx[index-1,0]*alpha,axis=1),np.sum(grady[index-1,0]*alpha,axis=1),np.sum(grady[index-1,0]*beta,axis=1))).T
     51    #Compute gradient for each node (average of the elements around)
     52    gradx = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * grad_elx), (3, 1)), numberofnodes, 1)
     53    grady = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * grad_ely), (3, 1)), numberofnodes, 1)
     54    gradx = gradx / weights
     55    grady = grady / weights
    5856
    59         if m.strcmpi(type,'node'):
    60                 #Compute Hessian on the nodes (average of the elements around)
    61                 hessian=np.hstack((m.sparse(line,np.ones((linesize,1),dtype=int),np.tile((areas*hessian[:,0]),(3,1)),numberofnodes,1)/weights,
    62                                                                                          m.sparse(line,np.ones((linesize,1),dtype=int),np.tile((areas*hessian[:,1]),(3,1)),numberofnodes,1)/weights,
    63                                                                                          m.sparse(line,np.ones((linesize,1),dtype=int),np.tile((areas*hessian[:,2]),(3,1)),numberofnodes,1)/weights ))
     57    #Compute hessian for each element
     58    hessian = np.vstack((np.sum(gradx[index - 1, 0] * alpha, axis=1), np.sum(grady[index - 1, 0] * alpha, axis=1), np.sum(grady[index - 1, 0] * beta, axis=1))).T
    6459
    65         return hessian
     60    if m.strcmpi(type, 'node'):
     61        #Compute Hessian on the nodes (average of the elements around)
     62        hessian = np.hstack((m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * hessian[:, 0]), (3, 1)), numberofnodes, 1) / weights,
     63                             m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * hessian[:, 1]), (3, 1)), numberofnodes, 1) / weights,
     64                             m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * hessian[:, 2]), (3, 1)), numberofnodes, 1) / weights))
     65
     66    return hessian
  • issm/trunk-jpl/src/m/mesh/ComputeMetric.py

    r23716 r24213  
    11import numpy as np
    22
    3 def ComputeMetric(hessian,scale,epsilon,hmin,hmax,pos):
    4         """
    5         COMPUTEMETRIC - compute metric from an Hessian
    63
    7            Usage:
    8               metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,pos)
    9               pos is contains the positions where the metric is wished to be maximized (water?)
     4def ComputeMetric(hessian, scale, epsilon, hmin, hmax, pos):
     5    """
     6    COMPUTEMETRIC - compute metric from an Hessian
    107
    11            Example:
    12               metric=ComputeMetric(hessian,2/9,10^-1,100,10^5,[])
    13         """
     8       Usage:
     9          metric = ComputeMetric(hessian, scale, epsilon, hmin, hmax, pos)
     10          pos is contains the positions where the metric is wished to be maximized (water?)
    1411
    15         #first, find the eigen values of each line of H=[hessian(i,1) hessian(i,2); hessian(i,2) hessian(i,3)]
    16         a=hessian[:,0]
    17         b=hessian[:,1]
    18         d=hessian[:,2]
    19         lambda1=0.5*((a+d)+np.sqrt(4.*b**2+(a-d)**2))
    20         lambda2=0.5*((a+d)-np.sqrt(4.*b**2+(a-d)**2))
    21         pos1=np.nonzero(lambda1==0.)[0]
    22         pos2=np.nonzero(lambda2==0.)[0]
    23         pos3=np.nonzero(np.logical_and(b==0.,lambda1==lambda2))[0]
     12       Example:
     13          metric = ComputeMetric(hessian, 2 / 9, 10^ - 1, 100, 10^5, [])
     14    """
    2415
    25         #Modify the eigen values to control the shape of the elements
    26         lambda1=np.minimum(np.maximum(np.abs(lambda1)*scale/epsilon,1./hmax**2),1./hmin**2)
    27         lambda2=np.minimum(np.maximum(np.abs(lambda2)*scale/epsilon,1./hmax**2),1./hmin**2)
     16    #first, find the eigen values of each line of H = [hessian(i, 1) hessian(i, 2); hessian(i, 2) hessian(i, 3)]
     17    a = hessian[:, 0]
     18    b = hessian[:, 1]
     19    d = hessian[:, 2]
     20    lambda1 = 0.5 * ((a + d) + np.sqrt(4. * b**2 + (a - d)**2))
     21    lambda2 = 0.5 * ((a + d) - np.sqrt(4. * b**2 + (a - d)**2))
     22    pos1 = np.nonzero(lambda1 == 0.)[0]
     23    pos2 = np.nonzero(lambda2 == 0.)[0]
     24    pos3 = np.nonzero(np.logical_and(b == 0., lambda1 == lambda2))[0]
    2825
    29         #compute eigen vectors
    30         norm1=np.sqrt(8.*b**2+2.*(d-a)**2+2.*(d-a)*np.sqrt((a-d)**2+4.*b**2))
    31         v1x=2.*b/norm1
    32         v1y=((d-a)+np.sqrt((a-d)**2+4.*b**2))/norm1
    33         norm2=np.sqrt(8.*b**2+2.*(d-a)**2-2.*(d-a)*np.sqrt((a-d)**2+4.*b**2))
    34         v2x=2.*b/norm2
    35         v2y=((d-a)-np.sqrt((a-d)**2+4.*b**2))/norm2
     26    #Modify the eigen values to control the shape of the elements
     27    lambda1 = np.minimum(np.maximum(np.abs(lambda1) * scale / epsilon, 1. / hmax**2), 1. / hmin**2)
     28    lambda2 = np.minimum(np.maximum(np.abs(lambda2) * scale / epsilon, 1. / hmax**2), 1. / hmin**2)
    3629
    37         v1x[pos3]=1.
    38         v1y[pos3]=0.
    39         v2x[pos3]=0.
    40         v2y[pos3]=1.
     30    #compute eigen vectors
     31    norm1 = np.sqrt(8. * b**2 + 2. * (d - a)**2 + 2. * (d - a) * np.sqrt((a - d)**2 + 4. * b**2))
     32    v1x = 2. * b / norm1
     33    v1y = ((d - a) + np.sqrt((a - d)**2 + 4. * b**2)) / norm1
     34    norm2 = np.sqrt(8. * b**2 + 2. * (d - a)**2 - 2. * (d - a) * np.sqrt((a - d)**2 + 4. * b**2))
     35    v2x = 2. * b / norm2
     36    v2y = ((d - a) - np.sqrt((a - d)**2 + 4. * b**2)) / norm2
    4137
    42         #Compute new metric (for each node M=V*Lambda*V^-1)
    43         metric=np.vstack((((v1x*v2y-v1y*v2x)**(-1)*( lambda1*v2y*v1x-lambda2*v1y*v2x)).reshape(-1,),
    44                                                                                 ((v1x*v2y-v1y*v2x)**(-1)*( lambda1*v1y*v2y-lambda2*v1y*v2y)).reshape(-1,),
    45                                                                                 ((v1x*v2y-v1y*v2x)**(-1)*(-lambda1*v2x*v1y+lambda2*v1x*v2y)).reshape(-1,))).T
     38    v1x[pos3] = 1.
     39    v1y[pos3] = 0.
     40    v2x[pos3] = 0.
     41    v2y[pos3] = 1.
    4642
    47         #some corrections for 0 eigen values
    48         metric[pos1,:]=np.tile(np.array([[1./hmax**2,0.,1./hmax**2]]),(np.size(pos1),1))
    49         metric[pos2,:]=np.tile(np.array([[1./hmax**2,0.,1./hmax**2]]),(np.size(pos2),1))
     43    #Compute new metric (for each node M = V * Lambda * V^ - 1)
    5044
    51         #take care of water elements
    52         metric[pos ,:]=np.tile(np.array([[1./hmax**2,0.,1./hmax**2]]),(np.size(pos ),1))
     45    metric = np.vstack((((v1x * v2y - v1y * v2x)**(- 1) * (lambda1 * v2y * v1x - lambda2 * v1y * v2x)).reshape(- 1, ),
     46                        ((v1x * v2y - v1y * v2x)**(- 1) * (lambda1 * v1y * v2y - lambda2 * v1y * v2y)).reshape(- 1, ),
     47                        ((v1x * v2y - v1y * v2x)**(- 1) * (- lambda1 * v2x * v1y + lambda2 * v1x * v2y)).reshape(- 1, ))).T
    5348
    54         #take care of NaNs if any (use Numpy eig in a loop)
    55         pos=np.nonzero(np.isnan(metric))[0]
    56         if np.size(pos):
    57                 print((" %i NaN found in the metric. Use Numpy routine..." % np.size(pos)))
    58                 for posi in pos:
    59                         H=np.array([[hessian[posi,0],hessian[posi,1]],[hessian[posi,1],hessian[posi,2]]])
    60                         [v,u]=np.linalg.eig(H)
    61                         v=np.diag(v)
    62                         lambda1=v[0,0]
    63                         lambda2=v[1,1]
    64                         v[0,0]=np.minimum(np.maximum(np.abs(lambda1)*scale/epsilon,1./hmax**2),1./hmin**2)
    65                         v[1,1]=np.minimum(np.maximum(np.abs(lambda2)*scale/epsilon,1./hmax**2),1./hmin**2)
     49    #some corrections for 0 eigen values
     50    metric[pos1, :] = np.tile(np.array([[1. / hmax**2, 0., 1. / hmax**2]]), (np.size(pos1), 1))
     51    metric[pos2, :] = np.tile(np.array([[1. / hmax**2, 0., 1. / hmax**2]]), (np.size(pos2), 1))
    6652
    67                         metricTria=np.dot(np.dot(u,v),np.linalg.inv(u))
    68                         metric[posi,:]=np.array([metricTria[0,0],metricTria[0,1],metricTria[1,1]])
     53    #take care of water elements
     54    metric[pos, :] = np.tile(np.array([[1. / hmax**2, 0., 1. / hmax**2]]), (np.size(pos), 1))
    6955
    70         if np.any(np.isnan(metric)):
    71                 raise RunTimeError("ComputeMetric error message: NaN in the metric despite our efforts...")
     56    #take care of NaNs if any (use Numpy eig in a loop)
     57    pos = np.nonzero(np.isnan(metric))[0]
     58    if np.size(pos):
     59        print((" %i NaN found in the metric. Use Numpy routine..." % np.size(pos)))
     60        for posi in pos:
     61            H = np.array([[hessian[posi, 0], hessian[posi, 1]], [hessian[posi, 1], hessian[posi, 2]]])
     62            [v, u] = np.linalg.eig(H)
     63            v = np.diag(v)
     64            lambda1 = v[0, 0]
     65            lambda2 = v[1, 1]
     66            v[0, 0] = np.minimum(np.maximum(np.abs(lambda1) * scale / epsilon, 1. / hmax**2), 1. / hmin**2)
     67            v[1, 1] = np.minimum(np.maximum(np.abs(lambda2) * scale / epsilon, 1. / hmax**2), 1. / hmin**2)
    7268
    73         return metric
     69            metricTria = np.dot(np.dot(u, v), np.linalg.inv(u))
     70            metric[posi, :] = np.array([metricTria[0, 0], metricTria[0, 1], metricTria[1, 1]])
    7471
     72    if np.any(np.isnan(metric)):
     73        raise RunTimeError("ComputeMetric error message: NaN in the metric despite our efforts...")
     74
     75    return metric
  • issm/trunk-jpl/src/m/mesh/ElementsFromEdge.py

    r21303 r24213  
    22import PythonFuncs as p
    33
    4 def ElementsFromEdge(elements,A,B):
    5         """
    6         ELEMENTSFROMEDGE: find elements connected to one edge defined by nodes A and B
    74
    8            Usage: edgeelements=ElementsFromEdge(elements,A,B)
     5def ElementsFromEdge(elements, A, B):
     6    """
     7    ELEMENTSFROMEDGE: find elements connected to one edge defined by nodes A and B
    98
    10            Eg:    edgeelements=ElementsFromEdge(md.mesh.elements,tip1,tip2)
     9       Usage: edgeelements = ElementsFromEdge(elements, A, B)
    1110
    12         """
     11       Eg:    edgeelements = ElementsFromEdge(md.mesh.elements, tip1, tip2)
    1312
    14         edgeelements=np.nonzero(\
    15                 p.logical_or_n(np.logical_and(elements[:,0]==A,elements[:,1]==B), \
    16                                          np.logical_and(elements[:,0]==A,elements[:,2]==B), \
    17                                          np.logical_and(elements[:,1]==A,elements[:,2]==B), \
    18                                          np.logical_and(elements[:,1]==A,elements[:,0]==B), \
    19                                          np.logical_and(elements[:,2]==A,elements[:,0]==B), \
    20                                          np.logical_and(elements[:,2]==A,elements[:,1]==B), \
    21                 ))[0]+1
     13    """
    2214
    23         return edgeelements
     15    edgeelements = np.nonzero(
     16        p.logical_or_n(np.logical_and(elements[:, 0] == A, elements[:, 1] == B),
     17                       np.logical_and(elements[:, 0] == A, elements[:, 2] == B),
     18                       np.logical_and(elements[:, 1] == A, elements[:, 2] == B),
     19                       np.logical_and(elements[:, 1] == A, elements[:, 0] == B),
     20                       np.logical_and(elements[:, 2] == A, elements[:, 0] == B),
     21                       np.logical_and(elements[:, 2] == A, elements[:, 1] == B)))[0] + 1
    2422
     23    return edgeelements
  • issm/trunk-jpl/src/m/mesh/GetNodalFunctionsCoeff.py

    r24115 r24213  
    77
    88       Compute the coefficients alpha beta and optionaly gamma of
    9        2d triangular elements. For each element,  the nodal function
     9       2d triangular elements. For each element, the nodal function
    1010       is defined as:
    11        N(x, y)=sum(i=1:3) alpha_i * x + beta_i * y + gamma_i
     11       N(x, y)=sum(i = 1:3) alpha_i * x + beta_i * y + gamma_i
    1212
    1313       Usage:
    14           [alpha beta]=GetNodalFunctionsCoeff(index, x, y);
    15           [alpha beta gamma]=GetNodalFunctionsCoeff(index, x, y);
     14          [alpha beta] = GetNodalFunctionsCoeff(index, x, y)
     15          [alpha beta gamma] = GetNodalFunctionsCoeff(index, x, y)
    1616
    1717       Example:
    18           [alpha beta gamma]=GetNodalFunctionsCoeff(md.mesh.elements, md.mesh.x, md.mesh.y);
     18          [alpha beta gamma] = GetNodalFunctionsCoeff(md.mesh.elements, md.mesh.x, md.mesh.y)
    1919    """
    2020
    2121    #make columns out of x and y
    22     x = x.reshape(-1)
    23     y = y.reshape(-1)
     22    x = x.reshape(- 1)
     23    y = y.reshape(- 1)
    2424
    2525    #get nels and nods
     
    3939    beta = np.zeros((nels, 3))
    4040
    41     #compute nodal functions coefficients N(x, y) = alpha x + beta y +gamma
     41    #compute nodal functions coefficients N(x, y) = alpha x + beta y + gamma
    4242    x1 = x[index[:, 0] - 1]
    4343    x2 = x[index[:, 1] - 1]
     
    4949
    5050    #get alpha and beta
    51     alpha = np.vstack(((invdet * (y2 - y3)).reshape(-1,), (invdet * (y3 - y1)).reshape(-1,), (invdet * (y1 - y2)).reshape(-1,))).T
    52     beta = np.vstack(((invdet * (x3 - x2)).reshape(-1,), (invdet * (x1 - x3)).reshape(-1,), (invdet * (x2 - x1)).reshape(-1,))).T
     51    alpha = np.vstack(((invdet * (y2 - y3)).reshape(- 1, ), (invdet * (y3 - y1)).reshape(- 1, ), (invdet * (y1 - y2)).reshape(- 1, ))).T
     52    beta = np.vstack(((invdet * (x3 - x2)).reshape(- 1, ), (invdet * (x1 - x3)).reshape(- 1, ), (invdet * (x2 - x1)).reshape(- 1, ))).T
    5353
    5454    #get gamma if requested
    5555    gamma = np.zeros((nels, 3))
    56     gamma = np.vstack(((invdet * (x2 * y3 - x3 * y2)).reshape(-1,), (invdet * (y1 * x3 - y3 * x1)).reshape(-1,), (invdet * (x1 * y2 - x2 * y1)).reshape(-1,))).T
     56    gamma = np.vstack(((invdet * (x2 * y3 - x3 * y2)).reshape(- 1, ), (invdet * (y1 * x3 - y3 * x1)).reshape(- 1, ), (invdet * (x1 * y2 - x2 * y1)).reshape(- 1, ))).T
    5757
    5858    return alpha, beta, gamma
  • issm/trunk-jpl/src/m/mesh/bamg.py

    r24115 r24213  
    99from bamgmesh import bamgmesh
    1010from expread import expread
    11 from expwrite import expwrite
    1211from SegIntersect import SegIntersect
    1312import MatlabFuncs as m
     
    2019    BAMG - mesh generation
    2120
    22        Available options (for more details see ISSM website http: / / issm.jpl.nasa.gov / ):
    23 
    24        - domain :            followed by an ARGUS file that prescribes the domain outline
    25        - holes :             followed by an ARGUS file that prescribes the holes
    26        - subdomains :        followed by an ARGUS file that prescribes the list of
    27                              subdomains (that need to be inside domain)
    28 
    29        - hmin :              minimum edge length (default is 10^ - 100)
    30        - hmax :              maximum edge length (default is 10^100)
    31        - hVertices :         imposed edge length for each vertex (geometry or mesh)
    32        - hminVertices :      minimum edge length for each vertex (mesh)
    33        - hmaxVertices :      maximum edge length for each vertex (mesh)
    34 
    35        - anisomax :          maximum ratio between the smallest and largest edges (default is 10^30)
    36        - coeff :             coefficient applied to the metric (2 - > twice as many elements, default is 1)
    37        - cutoff :            scalar used to compute the metric when metric type 2 or 3 are applied
    38        - err :               error used to generate the metric from a field
    39        - errg :              geometric error (default is 0.1)
    40        - field :             field of the model that will be used to compute the metric
     21    Available options (for more details see ISSM website http: / / issm.jpl.nasa.gov / ):
     22
     23    - domain :            followed by an ARGUS file that prescribes the domain outline
     24    - holes :             followed by an ARGUS file that prescribes the holes
     25    - subdomains :        followed by an ARGUS file that prescribes the list of
     26                        subdomains (that need to be inside domain)
     27
     28    - hmin :              minimum edge length (default is 10^ - 100)
     29    - hmax :              maximum edge length (default is 10^100)
     30    - hVertices :         imposed edge length for each vertex (geometry or mesh)
     31    - hminVertices :      minimum edge length for each vertex (mesh)
     32    - hmaxVertices :      maximum edge length for each vertex (mesh)
     33
     34    - anisomax :          maximum ratio between the smallest and largest edges (default is 10^30)
     35    - coeff :             coefficient applied to the metric (2 - > twice as many elements, default is 1)
     36    - cutoff :            scalar used to compute the metric when metric type 2 or 3 are applied
     37    - err :               error used to generate the metric from a field
     38    - errg :              geometric error (default is 0.1)
     39    - field :             field of the model that will be used to compute the metric
    4140                                   to apply several fields, use one column per field
    42        - gradation :         maximum ratio between two adjacent edges
    43        - Hessiantype :       0 - > use double P2 projection (default)
    44                                    1 - > use Green formula
    45        - KeepVertices :      try to keep initial vertices when adaptation is done on an existing mesh (default 1)
    46        - maxnbv :            maximum number of vertices used to allocate memory (default is 10^6)
    47        - maxsubdiv :         maximum subdivision of exisiting elements (default is 10)
    48        - metric :            matrix (numberofnodes x 3) used as a metric
    49        - Metrictype :        1 - > absolute error          c / (err coeff^2) * Abs(H)        (default)
     41    - gradation :         maximum ratio between two adjacent edges
     42    - Hessiantype :       0 - > use double P2 projection (default)
     43                            1 - > use Green formula
     44    - KeepVertices :      try to keep initial vertices when adaptation is done on an existing mesh (default 1)
     45    - maxnbv :            maximum number of vertices used to allocate memory (default is 10^6)
     46    - maxsubdiv :         maximum subdivision of exisiting elements (default is 10)
     47    - metric :            matrix (numberofnodes x 3) used as a metric
     48    - Metrictype :        1 - > absolute error          c / (err coeff^2) * Abs(H)        (default)
    5049                                   2 - > relative error          c / (err coeff^2) * Abs(H) / max(s, cutoff * max(s))
    5150                                   3 - > rescaled absolute error c / (err coeff^2) * Abs(H) / (smax - smin)
    52        - nbjacoby :          correction used by Hessiantype = 1 (default is 1)
    53        - nbsmooth :          number of metric smoothing procedure (default is 3)
    54        - omega :             relaxation parameter of the smoothing procedure (default is 1.8)
    55        - power :             power applied to the metric (default is 1)
    56        - splitcorners :      split triangles whuch have 3 vertices on the outline (default is 1)
    57        - verbose :           level of verbosity (default is 1)
    58 
    59        - rifts :             followed by an ARGUS file that prescribes the rifts
    60        - toltip :            tolerance to move tip on an existing point of the domain outline
    61        - tracks :            followed by an ARGUS file that prescribes the tracks that the mesh will stick to
    62        - RequiredVertices :  mesh vertices that are required. [x, y, ref]; ref is optional
    63        - tol :               if the distance between 2 points of the domain outline is less than tol, they
     51    - nbjacoby :          correction used by Hessiantype = 1 (default is 1)
     52    - nbsmooth :          number of metric smoothing procedure (default is 3)
     53    - omega :             relaxation parameter of the smoothing procedure (default is 1.8)
     54    - power :             power applied to the metric (default is 1)
     55    - splitcorners :      split triangles whuch have 3 vertices on the outline (default is 1)
     56    - verbose :           level of verbosity (default is 1)
     57
     58    - rifts :             followed by an ARGUS file that prescribes the rifts
     59    - toltip :            tolerance to move tip on an existing point of the domain outline
     60    - tracks :            followed by an ARGUS file that prescribes the tracks that the mesh will stick to
     61    - RequiredVertices :  mesh vertices that are required. [x, y, ref]; ref is optional
     62    - tol :               if the distance between 2 points of the domain outline is less than tol, they
    6463                             will be merged
    6564
     
    8079
    8180    subdomain_ref = 1
    82     hole_ref = 1
    8381
    8482    # Bamg Geometry parameters {{{
     
    108106            #Check orientation
    109107            nods = domaini['nods'] - 1  #the domain are closed 1 = end
    110 
    111108            test = np.sum((domaini['x'][1:nods + 1] - domaini['x'][0:nods]) * (domaini['y'][1:nods + 1] + domaini['y'][0:nods]))
    112109            if (i == 0 and test > 0) or (i > 0 and test < 0):
    113                 print('At least one contour was not correctly oriented and has been re - oriented')
     110                print('At least one contour was not correctly oriented and has been re-oriented')
    114111                domaini['x'] = np.flipud(domaini['x'])
    115112                domaini['y'] = np.flipud(domaini['y'])
    116113
    117114            #Add all points to bamg_geometry
    118             nods = domaini['nods'] - 1    #the domain are closed 0 = end
     115            nods = domaini['nods'] - 1  #the domain are closed 0 = end
    119116            bamg_geometry.Vertices = np.vstack((bamg_geometry.Vertices, np.vstack((domaini['x'][0:nods], domaini['y'][0:nods], np.ones((nods)))).T))
    120117            bamg_geometry.Edges = np.vstack((bamg_geometry.Edges, np.vstack((np.arange(count + 1, count + nods + 1), np.hstack((np.arange(count + 2, count + nods + 1), count + 1)), 1. * np.ones((nods)))).T))
     
    153150                test = np.sum((holei['x'][1:nods + 1] - holei['x'][0:nods]) * (holei['y'][1:nods + 1] + holei['y'][0:nods]))
    154151                if test < 0:
    155                     print('At least one hole was not correctly oriented and has been re - oriented')
     152                    print('At least one hole was not correctly oriented and has been re-oriented')
    156153                    holei['x'] = np.flipud(holei['x'])
    157154                    holei['y'] = np.flipud(holei['y'])
    158155
    159156                #Add all points to bamg_geometry
    160                 nods = holei['nods'] - 1    #the hole are closed 0 = end
     157                nods = holei['nods'] - 1  #the hole are closed 0 = end
    161158                bamg_geometry.Vertices = np.vstack((bamg_geometry.Vertices, np.vstack((holei['x'][0:nods], holei['y'][0:nods], np.ones((nods)))).T))
    162159                bamg_geometry.Edges = np.vstack((bamg_geometry.Edges, np.vstack((np.arange(count + 1, count + nods + 1), np.hstack((np.arange(count + 2, count + nods + 1), count + 1)), 1. * np.ones((nods)))).T))
     
    191188                test = np.sum((subdomaini['x'][1:nods + 1] - subdomaini['x'][0:nods]) * (subdomaini['y'][1:nods + 1] + subdomaini['y'][0:nods]))
    192189                if test > 0:
    193                     print('At least one subcontour was not correctly oriented and has been re - oriented')
     190                    print('At least one subcontour was not correctly oriented and has been re-oriented')
    194191                    subdomaini['x'] = np.flipud(subdomaini['x'])
    195192                    subdomaini['y'] = np.flipud(subdomaini['y'])
    196193
    197194                #Add all points to bamg_geometry
    198                 nods = subdomaini['nods'] - 1    #the subdomain are closed 0 = end
     195                nods = subdomaini['nods'] - 1  #the subdomain are closed 0 = end
    199196                bamg_geometry.Vertices = np.vstack((bamg_geometry.Vertices, np.vstack((subdomaini['x'][0:nods], subdomaini['y'][0:nods], np.ones((nods)))).T))
    200197                bamg_geometry.Edges = np.vstack((bamg_geometry.Edges, np.vstack((np.arange(count + 1, count + nods + 1), np.hstack((np.arange(count + 2, count + nods + 1), count + 1)), 1. * np.ones((nods)))).T))
     
    218215
    219216            for i, rifti in enumerate(rift):
    220 
    221217                #detect whether all points of the rift are inside the domain
    222218                flags = ContourToNodes(rifti['x'], rifti['y'], domain[0], 0)[0]
     
    227223                    #We LOTS of work to do
    228224                    print("Rift tip outside of or on the domain has been detected and is being processed...")
    229 
    230225                    #check that only one point is outside (for now)
    231226                    if np.sum(np.logical_not(flags).astype(int)) != 1:
     
    255250
    256251                            #rift is crossing edge [i1 i2] of the domain
    257                             #Get coordinate of intersection point (http: / / mathworld.wolfram.com / Line - LineIntersection.html)
     252                            #Get coordinate of intersection point (http: / /  mathworld.wolfram.com / Line-LineIntersection.html)
    258253                            x3 = domain[0]['x'][i1]
    259254                            y3 = domain[0]['y'][i1]
     
    285280                                                                 np.hstack((np.arange(count + 1, count + nods).reshape(- 1, ), np.arange(count + 2, count + nods + 1).reshape(- 1, ), (1 + i) * np.ones((nods - 1, 1))))))
    286281                                count += nods
    287 
    288282                                break
    289283
     
    309303                                                                 np.hstack((np.arange(count + 1, count + nods).reshape(- 1, ), np.arange(count + 2, count + nods + 1).reshape(- 1, ), (1 + i) * np.ones((nods - 1, 1))))))
    310304                                count += nods
    311 
    312305                                break
    313306
     
    327320                track = np.hstack((A.x.reshape(- 1, ), A.y.reshape(- 1, )))
    328321            else:
    329                 track = float(track)    #for some reason, it is of class "single"
    330             if np.size(track, axis = 1) == 2:
    331                 track = np.hstack((track, 3. * np.ones((size(track, axis = 0), 1))))
     322                track = float(track)  #for some reason, it is of class "single"
     323            if np.size(track, axis=1) == 2:
     324                track = np.hstack((track, 3. * np.ones((size(track, axis=0), 1))))
    332325
    333326            #only keep those inside
     
    336329
    337330            #Add all points to bamg_geometry
    338             nods = np.size(track, axis = 0)
     331            nods = np.size(track, axis=0)
    339332            bamg_geometry.Vertices = np.vstack((bamg_geometry.Vertices, track))
    340             bamg_geometry.Edges = np.vstack((bamg_geometry.Edges, np.hstack((np.arange(count + 1, count + nods).reshape(-1, ), np.arange(count + 2, count + nods + 1).reshape(-1, ), 3. * np.ones((nods - 1, 1))))))
     333            bamg_geometry.Edges = np.vstack((bamg_geometry.Edges, np.hstack((np.arange(count + 1, count + nods).reshape(- 1, ), np.arange(count + 2, count + nods + 1).reshape(- 1, ), 3. * np.ones((nods - 1, 1))))))
    341334
    342335            #update counter
     
    347340
    348341            #recover RequiredVertices
    349             requiredvertices = options.getfieldvalue('RequiredVertices')    #for some reason, it is of class "single"
    350             if np.size(requiredvertices, axis = 1) == 2:
    351                 requiredvertices = np.hstack((requiredvertices, 4. * np.ones((np.size(requiredvertices, axis = 0), 1))))
     342            requiredvertices = options.getfieldvalue('RequiredVertices')  #for some reason, it is of class "single"
     343            if np.size(requiredvertices, axis=1) == 2:
     344                requiredvertices = np.hstack((requiredvertices, 4. * np.ones((np.size(requiredvertices, axis=0), 1))))
    352345
    353346            #only keep those inside
     
    355348            requiredvertices = requiredvertices[np.nonzero(flags)[0], :]
    356349            #Add all points to bamg_geometry
    357             nods = np.size(requiredvertices, axis = 0)
     350            nods = np.size(requiredvertices, axis=0)
    358351            bamg_geometry.Vertices = np.vstack((bamg_geometry.Vertices, requiredvertices))
    359352
     
    361354            count += nods
    362355
    363         #process geom
    364         #bamg_geometry = processgeometry(bamg_geometry, options.getfieldvalue('tol', float(nan)), domain[0])
    365 
     356    #process geom
     357    #bamg_geometry = processgeometry(bamg_geometry, options.getfieldvalue('tol', float(nan)), domain[0])
    366358    elif isinstance(md.private.bamg, dict) and 'geometry' in md.private.bamg:
    367359        bamg_geometry = bamggeom(md.private.bamg['geometry'].__dict__)
     
    386378    bamg_options['anisomax'] = options.getfieldvalue('anisomax', 10.**18)
    387379    bamg_options['coeff'] = options.getfieldvalue('coeff', 1.)
    388     bamg_options['cutoff'] = options.getfieldvalue('cutoff', 10.**-5)
     380    bamg_options['cutoff'] = options.getfieldvalue('cutoff', 10.**- 5)
    389381    bamg_options['err'] = options.getfieldvalue('err', np.array([[0.01]]))
    390382    bamg_options['errg'] = options.getfieldvalue('errg', 0.1)
     
    392384    bamg_options['gradation'] = options.getfieldvalue('gradation', 1.5)
    393385    bamg_options['Hessiantype'] = options.getfieldvalue('Hessiantype', 0)
    394     bamg_options['hmin'] = options.getfieldvalue('hmin', 10.**-100)
     386    bamg_options['hmin'] = options.getfieldvalue('hmin', 10.**- 100)
    395387    bamg_options['hmax'] = options.getfieldvalue('hmax', 10.**100)
    396388    bamg_options['hminVertices'] = options.getfieldvalue('hminVertices', np.empty((0, 1)))
     
    483475
    484476
    485 def processgeometry(geom, tol, outline):    # {{{
    486 
     477def processgeometry(geom, tol, outline):  # {{{
    487478    raise RuntimeError("bamg.py / processgeometry is not complete.")
    488479    #Deal with edges
     
    500491        color1 = geom.Edges[i, 2]
    501492
    502         j = i    #test edges located AFTER i only
     493        j = i  #test edges located AFTER i only
    503494        while (j < np.size(geom.Edges, axis=0)):
    504495            #edge counter
     
    519510            if SegIntersect(np.array([[x1, y1], [x2, y2]]), np.array([[x3, y3], [x4, y4]])):
    520511
    521                 #Get coordinate of intersection point (http: / / mathworld.wolfram.com / Line - LineIntersection.html)
     512                #Get coordinate of intersection point (http: / /  mathworld.wolfram.com / Line-LineIntersection.html)
    522513                x = np.linalg.det(np.array([np.linalg.det(np.array([[x1, y1], [x2, y2]])), x1 - x2], [np.linalg.det(np.array([[x3, y3], [x4, y4]])), x3 - x4]) / np.linalg.det(np.array([[x1 - x2, y1 - y2], [x3 - x4, y3 - y4]])))
    523514                y = np.linalg.det(np.array([np.linalg.det(np.array([[x1, y1], [x2, y2]])), y1 - y2], [np.linalg.det(np.array([[x3, y3], [x4, y4]])), y3 - y4]) / np.linalg.det(np.array([[x1 - x2, y1 - y2], [x3 - x4, y3 - y4]])))
     
    556547            #Remove points from list of Vertices
    557548            num += 1
    558             geom.Vertices[i, :]=[]
     549            geom.Vertices[i, :] = []
    559550
    560551            #update edges
    561552            posedges = np.nonzero(geom.Edges == i)
    562             geom.Edges[posedges[0], :]=[]
     553            geom.Edges[posedges[0], :] = []
    563554            posedges = np.nonzero(geom.Edges > i)
    564555            geom.Edges[posedges] = geom.Edges[posedges] - 1
     
    598589
    599590                                    %Remove points from list of Vertices
    600                                     geom.Vertices(j, :)=[]
     591                                    geom.Vertices(j, :) = []
    601592
    602593                                    %update edges
     
    614605    end
    615606    %remove empty edges
    616     geom.Edges(find(geom.Edges(:, 1) == geom.Edges(:, 2)), :)=[]
     607    geom.Edges(find(geom.Edges(:, 1) == geom.Edges(:, 2)), :) = []
    617608    """
    618609    return geom
    619 # }}}
     610    # }}}
  • issm/trunk-jpl/src/m/mesh/bamgflowband.py

    r22274 r24213  
    1 import numpy as  np
     1import numpy as np
    22from model import *
    33from collections import OrderedDict
     
    55from mesh2dvertical import *
    66
    7 def bamgflowband(md,x,surf,base,*args):
    8         """
    9         BAMGFLOWBAND - create flowband mesh with bamg
    107
    11         Usage:
    12                 md=bamgflowband(md,x,surf,base,OPTIONS)
     8def bamgflowband(md, x, surf, base, *args):
     9    """
     10    BAMGFLOWBAND - create flowband mesh with bamg
    1311
    14                 surf and bed are the surface elevation and base for each x provided
    15                 x must be increasing
    16                 OPTIONS are bamg options
     12    Usage:
     13        md = bamgflowband(md, x, surf, base, OPTIONS)
    1714
    18         Example:
    19                 x =np.arrange(1,3001,100)
    20                 h=linspace(1000,300,numel(x))
    21                 b=-917/1023*h
    22                 md=bamgflowband(model,b+h,b,'hmax',80,'vertical',1,'Markers',m)
    23         """
     15        surf and bed are the surface elevation and base for each x provided
     16        x must be increasing
     17        OPTIONS are bamg options
    2418
    25         #Write expfile with domain outline
    26         A = OrderedDict()
    27         A['x'] = np.concatenate((x,np.flipud(x),[x[0]]))
    28         A['y'] = np.concatenate((base,np.flipud(surf),[base[0]]))
    29         A['nods'] = np.size(A['x'])
     19    Example:
     20        x =np.arrange(1, 3001, 100)
     21        h = linspace(1000, 300, numel(x))
     22        b= - 917 / 1023 * h
     23        md = bamgflowband(model, b + h, b, 'hmax', 80, 'vertical', 1, 'Markers', m)
     24    """
    3025
    31         #markers:
    32         m                               = np.ones((np.size(A['x'])-1,)) # base        = 1
    33         m[np.size(x) - 1]                       = 2                     # right side  = 2
    34         m[np.size(x):2 * np.size(x) - 1]        = 3                     # top surface = 3
    35         m[2 * np.size(x) - 1]                   = 4                     # left side   = 4
     26    #Write expfile with domain outline
     27    A = OrderedDict()
     28    A['x'] = np.concatenate((x, np.flipud(x), [x[0]]))
     29    A['y'] = np.concatenate((base, np.flipud(surf), [base[0]]))
     30    A['nods'] = np.size(A['x'])
    3631
    37         #mesh domain
    38         md = bamg(model(),'domain',[A],'vertical',1,'Markers',m,*args)
    39         #print md.mesh.numberofvertices
     32    #markers:
     33    m = np.ones((np.size(A['x']) - 1, ))  # base = 1
     34    m[np.size(x) - 1] = 2  # right side = 2
     35    m[np.size(x):2 * np.size(x) - 1] = 3  # top surface = 3
     36    m[2 * np.size(x) - 1] = 4  # left side = 4
    4037
    41         #Deal with vertices on bed
    42         md.mesh.vertexonbase = np.zeros((md.mesh.numberofvertices,))
    43         md.mesh.vertexonbase[np.where(md.mesh.vertexflags(1))] = 1
    44         md.mesh.vertexonsurface = np.zeros((md.mesh.numberofvertices,))
    45         md.mesh.vertexonsurface[np.where(md.mesh.vertexflags(3))] = 1
     38    #mesh domain
     39    md = bamg(model(), 'domain', [A], 'vertical', 1, 'Markers', m, *args)
     40    #print md.mesh.numberofvertices
    4641
    47         return md
     42    #Deal with vertices on bed
     43    md.mesh.vertexonbase = np.zeros((md.mesh.numberofvertices, ))
     44    md.mesh.vertexonbase[np.where(md.mesh.vertexflags(1))] = 1
     45    md.mesh.vertexonsurface = np.zeros((md.mesh.numberofvertices, ))
     46    md.mesh.vertexonsurface[np.where(md.mesh.vertexflags(3))] = 1
     47
     48    return md
  • issm/trunk-jpl/src/m/mesh/meshconvert.py

    r21303 r24213  
    11import numpy as np
    22from collections import OrderedDict
    3 from BamgConvertMesh import BamgConvertMesh 
    4 from mesh2d   import mesh2d
     3from BamgConvertMesh import BamgConvertMesh
     4from mesh2d import mesh2d
    55from bamgmesh import bamgmesh
    66from bamggeom import bamggeom
    77
    8 def meshconvert(md,*args):
    9         """
    10         CONVERTMESH - convert mesh to bamg mesh
    118
    12            Usage:
    13               md=meshconvert(md);
    14               md=meshconvert(md,index,x,y);
    15         """
     9def meshconvert(md, *args):
     10    """
     11    CONVERTMESH - convert mesh to bamg mesh
    1612
    17         if not len(args)==0 and not len(args)==3:
    18                 raise TypeError("meshconvert error message: bad usage")
     13       Usage:
     14          md = meshconvert(md)
     15          md = meshconvert(md, index, x, y)
     16    """
    1917
    20         if not len(args):
    21                 index = md.mesh.elements
    22                 x     = md.mesh.x
    23                 y     = md.mesh.y
    24         else:
    25                 index = args[0]
    26                 x     = args[1]
    27                 y     = args[2]
     18    if not len(args) == 0 and not len(args) == 3:
     19        raise TypeError("meshconvert error message: bad usage")
    2820
    29         #call Bamg
    30         bamgmesh_out,bamggeom_out=BamgConvertMesh(index,x,y)
     21    if not len(args):
     22        index = md.mesh.elements
     23        x = md.mesh.x
     24        y = md.mesh.y
     25    else:
     26        index = args[0]
     27        x = args[1]
     28        y = args[2]
    3129
    32         # plug results onto model
    33         md.private.bamg             = OrderedDict()
    34         md.private.bamg['mesh']     = bamgmesh(bamgmesh_out)
    35         md.private.bamg['geometry'] = bamggeom(bamggeom_out)
    36         md.mesh                     = mesh2d()
    37         md.mesh.x                   = bamgmesh_out['Vertices'][:,0].copy()
    38         md.mesh.y                   = bamgmesh_out['Vertices'][:,1].copy()
    39         md.mesh.elements            = bamgmesh_out['Triangles'][:,0:3].astype(int)
    40         md.mesh.edges               = bamgmesh_out['IssmEdges'].astype(int)
    41         md.mesh.segments            = bamgmesh_out['IssmSegments'][:,0:3].astype(int)
    42         md.mesh.segmentmarkers      = bamgmesh_out['IssmSegments'][:,3].astype(int)
     30    #call Bamg
     31    bamgmesh_out, bamggeom_out = BamgConvertMesh(index, x, y)
    4332
    44         #Fill in rest of fields:
    45         md.mesh.numberofelements   = np.size(md.mesh.elements,axis=0)
    46         md.mesh.numberofvertices   = np.size(md.mesh.x)
    47         md.mesh.numberofedges      = np.size(md.mesh.edges,axis=0)
    48         md.mesh.vertexonboundary   = np.zeros(md.mesh.numberofvertices,bool)
    49         md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1] = True
     33    # plug results onto model
     34    md.private.bamg = OrderedDict()
     35    md.private.bamg['mesh'] = bamgmesh(bamgmesh_out)
     36    md.private.bamg['geometry'] = bamggeom(bamggeom_out)
     37    md.mesh = mesh2d()
     38    md.mesh.x = bamgmesh_out['Vertices'][:, 0].copy()
     39    md.mesh.y = bamgmesh_out['Vertices'][:, 1].copy()
     40    md.mesh.elements = bamgmesh_out['Triangles'][:, 0:3].astype(int)
     41    md.mesh.edges = bamgmesh_out['IssmEdges'].astype(int)
     42    md.mesh.segments = bamgmesh_out['IssmSegments'][:, 0:3].astype(int)
     43    md.mesh.segmentmarkers = bamgmesh_out['IssmSegments'][:, 3].astype(int)
    5044
    51         return md
     45    #Fill in rest of fields:
     46    md.mesh.numberofelements = np.size(md.mesh.elements, axis=0)
     47    md.mesh.numberofvertices = np.size(md.mesh.x)
     48    md.mesh.numberofedges = np.size(md.mesh.edges, axis=0)
     49    md.mesh.vertexonboundary = np.zeros(md.mesh.numberofvertices, bool)
     50    md.mesh.vertexonboundary[md.mesh.segments[:, 0:2] - 1] = True
    5251
     52    return md
  • issm/trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.py

    r22806 r24213  
    66import subprocess
    77
    8 def gmshplanet(*varargin):
    9 #GMSHPLANET - mesh generation for a sphere. Very specific code for gmsh. From demo/sphere.geo
    10 #
    11 #   Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
    12 #
    13 #   - radius:             radius of the planet in km
    14 #   - resolution:         resolution in km
    15 #   - refine:             provide mesh
    16 #   - refinemetric:       mesh quantity to specify resolution
    17 #
    18 #   Returns 'mesh3dsurface' type mesh
    19 #
    20 #   Examples:
    21 #      md.mesh=gmshplanet('radius',6000,'resolution',100);
    22 #      md.mesh=gmshplanet('radius',6000,'resolution',100);
    238
    24         #process options
    25         options=pairoptions(*varargin)
    26         #options=deleteduplicates(options,1)
     9def gmshplanet(* varargin):
     10    #GMSHPLANET - mesh generation for a sphere. Very specific code for gmsh. From demo / sphere.geo
     11    #
     12    #   Available options (for more details see ISSM website http: / / issm.jpl.nasa.gov / ):
     13    #
     14    # - radius:             radius of the planet in km
     15    # - resolution:         resolution in km
     16    # - refine:             provide mesh
     17    # - refinemetric:       mesh quantity to specify resolution
     18    #
     19    #   Returns 'mesh3dsurface' type mesh
     20    #
     21    #   Examples:
     22    #      md.mesh = gmshplanet('radius', 6000, 'resolution', 100);
     23    #      md.mesh = gmshplanet('radius', 6000, 'resolution', 100);
    2724
    28         #recover parameters:
    29         radius=options.getfieldvalue('radius')*1000
    30         resolution=options.getfieldvalue('resolution')*1000
     25    #process options
     26    options = pairoptions(* varargin)
     27    #options = deleteduplicates(options, 1)
    3128
    32         #initialize mesh:
    33         mesh=mesh3dsurface()
     29    #recover parameters:
     30    radius = options.getfieldvalue('radius') * 1000
     31    resolution = options.getfieldvalue('resolution') * 1000
    3432
    35         #create .geo file:  {{{
    36         fid=open('sphere.geo','w')
     33    #initialize mesh:
     34    mesh = mesh3dsurface()
    3735
    38         fid.write('Mesh.Algorithm = 1;\n')
    39         if options.exist('refine'):
    40                 fid.write('Mesh.Algorithm = 7;\n')
    41                 fid.write('Mesh.CharacteristicLengthFromPoints= 0;\n')
    42                 fid.write('Mesh.SmoothRatio= 3;\n')
    43                 fid.write('Mesh.RemeshAlgorithm= 1;\n')
    44         fid.write('resolution=%g;\n'%resolution)
    45         fid.write('radius=%g;\n'%radius)
    46         fid.write('Point(1) = {0.0,0.0,0.0,resolution};\n')
    47         fid.write('Point(2) = {radius,0.0,0.0,resolution};\n')
    48         fid.write('Point(3) = {0,radius,0.0,resolution};\n')
    49         fid.write('Circle(1) = {2,1,3};\n')
    50         fid.write('Point(4) = {-radius,0,0.0,resolution};\n')
    51         fid.write('Point(5) = {0,-radius,0.0,resolution};\n')
    52         fid.write('Circle(2) = {3,1,4};\n')
    53         fid.write('Circle(3) = {4,1,5};\n')
    54         fid.write('Circle(4) = {5,1,2};\n')
    55         fid.write('Point(6) = {0,0,-radius,resolution};\n')
    56         fid.write('Point(7) = {0,0,radius,resolution};\n')
    57         fid.write('Circle(5) = {3,1,6};\n')
    58         fid.write('Circle(6) = {6,1,5};\n')
    59         fid.write('Circle(7) = {5,1,7};\n')
    60         fid.write('Circle(8) = {7,1,3};\n')
    61         fid.write('Circle(9) = {2,1,7};\n')
    62         fid.write('Circle(10) = {7,1,4};\n')
    63         fid.write('Circle(11) = {4,1,6};\n')
    64         fid.write('Circle(12) = {6,1,2};\n')
    65         fid.write('Line Loop(13) = {2,8,-10};\n')
    66         fid.write('Surface(14) = {13};\n')
    67         fid.write('Line Loop(15) = {10,3,7};\n')
    68         fid.write('Surface(16) = {15};\n')
    69         fid.write('Line Loop(17) = {-8,-9,1};\n')
    70         fid.write('Surface(18) = {17};\n')
    71         fid.write('Line Loop(19) = {-11,-2,5};\n')
    72         fid.write('Surface(20) = {19};\n')
    73         fid.write('Line Loop(21) = {-5,-12,-1};\n')
    74         fid.write('Surface(22) = {21};\n')
    75         fid.write('Line Loop(23) = {-3,11,6};\n')
    76         fid.write('Surface(24) = {23};\n')
    77         fid.write('Line Loop(25) = {-7,4,9};\n')
    78         fid.write('Surface(26) = {25};\n')
    79         fid.write('Line Loop(27) = {-4,12,-6};\n')
    80         fid.write('Surface(28) = {27};\n')
    81         fid.write('Surface Loop(29) = {28,26,16,14,20,24,22,18};\n')
    82         fid.write('Volume(30) = {29};\n')
    83         fid.write('Physical Surface(1) = {28,26,16,14,20,24,22,18};\n')
    84         fid.write('Physical Volume(2) = 30;\n')
    85         fid.close()
    86         #}}}
     36    #create .geo file:  {{{
     37    fid = open('sphere.geo', 'w')
    8738
    88         if options.exist('refine'):
    89                 meshini=options.getfieldvalue('refine')
    90                 metric=options.getfieldvalue('refinemetric')
     39    fid.write('Mesh.Algorithm = 1;\n')
     40    if options.exist('refine'):
     41        fid.write('Mesh.Algorithm = 7;\n')
     42        fid.write('Mesh.CharacteristicLengthFromPoints= 0;\n')
     43        fid.write('Mesh.SmoothRatio= 3;\n')
     44        fid.write('Mesh.RemeshAlgorithm= 1;\n')
     45    fid.write('resolution=%g;\n' % resolution)
     46    fid.write('radius=%g;\n' % radius)
     47    fid.write('Point(1) = {0.0, 0.0, 0.0, resolution};\n')
     48    fid.write('Point(2) = {radius, 0.0, 0.0, resolution};\n')
     49    fid.write('Point(3) = {0, radius, 0.0, resolution};\n')
     50    fid.write('Circle(1) = {2, 1, 3};\n')
     51    fid.write('Point(4) = { - radius, 0, 0.0, resolution};\n')
     52    fid.write('Point(5) = {0, - radius, 0.0, resolution};\n')
     53    fid.write('Circle(2) = {3, 1, 4};\n')
     54    fid.write('Circle(3) = {4, 1, 5};\n')
     55    fid.write('Circle(4) = {5, 1, 2};\n')
     56    fid.write('Point(6) = {0, 0, - radius, resolution};\n')
     57    fid.write('Point(7) = {0, 0, radius, resolution};\n')
     58    fid.write('Circle(5) = {3, 1, 6};\n')
     59    fid.write('Circle(6) = {6, 1, 5};\n')
     60    fid.write('Circle(7) = {5, 1, 7};\n')
     61    fid.write('Circle(8) = {7, 1, 3};\n')
     62    fid.write('Circle(9) = {2, 1, 7};\n')
     63    fid.write('Circle(10) = {7, 1, 4};\n')
     64    fid.write('Circle(11) = {4, 1, 6};\n')
     65    fid.write('Circle(12) = {6, 1, 2};\n')
     66    fid.write('Line Loop(13) = {2, 8, - 10};\n')
     67    fid.write('Surface(14) = {13};\n')
     68    fid.write('Line Loop(15) = {10, 3, 7};\n')
     69    fid.write('Surface(16) = {15};\n')
     70    fid.write('Line Loop(17) = { - 8, - 9, 1};\n')
     71    fid.write('Surface(18) = {17};\n')
     72    fid.write('Line Loop(19) = { - 11, - 2, 5};\n')
     73    fid.write('Surface(20) = {19};\n')
     74    fid.write('Line Loop(21) = { - 5, - 12, - 1};\n')
     75    fid.write('Surface(22) = {21};\n')
     76    fid.write('Line Loop(23) = { - 3, 11, 6};\n')
     77    fid.write('Surface(24) = {23};\n')
     78    fid.write('Line Loop(25) = { - 7, 4, 9};\n')
     79    fid.write('Surface(26) = {25};\n')
     80    fid.write('Line Loop(27) = { - 4, 12, - 6};\n')
     81    fid.write('Surface(28) = {27};\n')
     82    fid.write('Surface Loop(29) = {28, 26, 16, 14, 20, 24, 22, 18};\n')
     83    fid.write('Volume(30) = {29};\n')
     84    fid.write('Physical Surface(1) = {28, 26, 16, 14, 20, 24, 22, 18};\n')
     85    fid.write('Physical Volume(2) = 30;\n')
     86    fid.close()
     87    #}}}
    9188
    92                 #create .pos file with existing mesh and refining metric:  {{{
    93                 fid=open('sphere.pos','w')
     89    if options.exist('refine'):
     90        meshini = options.getfieldvalue('refine')
     91        metric = options.getfieldvalue('refinemetric')
    9492
    95                 fid.write('View "background mesh" [;\n')
    96                 for i in range(meshini.numberofelements):
    97                         fid.write('ST(%g,%g,%g,%g,%g,%g,%g,%g,%g)[%g,%g,%g];\n',
    98                                                                 meshini.x(meshini.elements(i,0)), meshini.y(meshini.elements(i,0)), meshini.z(meshini.elements(i,0)),
    99                                                                 meshini.x(meshini.elements(i,1)), meshini.y(meshini.elements(i,1)), meshini.z(meshini.elements(i,1)),
    100                                                                 meshini.x(meshini.elements(i,2)), meshini.y(meshini.elements(i,2)), meshini.z(meshini.elements(i,2)),
    101                                                                 metric(meshini.elements(i,0)), metric(meshini.elements(i,1)), metric(meshini.elements(i,2)))
    102                 fid.write('];\n')
    103                
    104                 fid.close()
    105                 # }}}
     93    #create .pos file with existing mesh and refining metric:  {{{
     94        fid = open('sphere.pos', 'w')
    10695
    107         #call gmsh
    108         if options.exist('refine'):
    109                 subprocess.call('gmsh -tol 1e-8 -2 sphere.geo -bgm sphere.pos',shell=True)
    110         else:
    111                 #call gmsh
    112                 subprocess.call('gmsh -tol 1e-8 -2 sphere.geo',shell=True)
     96        fid.write('View "background mesh" [;\n')
     97        for i in range(meshini.numberofelements):
     98            fid.write('ST(%g, %g, %g, %g, %g, %g, %g, %g, %g)[%g, %g, %g];\n',
     99                      meshini.x(meshini.elements(i, 0)), meshini.y(meshini.elements(i, 0)), meshini.z(meshini.elements(i, 0)),
     100                      meshini.x(meshini.elements(i, 1)), meshini.y(meshini.elements(i, 1)), meshini.z(meshini.elements(i, 1)),
     101                      meshini.x(meshini.elements(i, 2)), meshini.y(meshini.elements(i, 2)), meshini.z(meshini.elements(i, 2)),
     102                      metric(meshini.elements(i, 0)), metric(meshini.elements(i, 1)), metric(meshini.elements(i, 2)))
     103        fid.write('];\n')
     104        fid.close()
     105    # }}}
    113106
    114         #import mesh:  {{{
    115         fid=open('sphere.msh','r')
     107    #call gmsh
     108    if options.exist('refine'):
     109        subprocess.call('gmsh - tol 1e-8 - 2 sphere.geo - bgm sphere.pos', shell=True)
     110    else:
     111        #call gmsh
     112        subprocess.call('gmsh - tol 1e-8 - 2 sphere.geo', shell=True)
    116113
    117         #Get Mesh format
    118         A=fid.readline().strip()
    119         if not strcmp(A,'$MeshFormat'):
    120                 raise RuntimeError(['Expecting $MeshFormat (', A, ')'])
     114    #import mesh:  {{{
     115    fid = open('sphere.msh', 'r')
    121116
    122         A=fid.readline().split()
    123         A=fid.readline().strip()
    124         if not strcmp(A,'$EndMeshFormat'):
    125                 raise RuntimeError(['Expecting $EndMeshFormat (', A, ')'])
     117    #Get Mesh format
     118    A = fid.readline().strip()
     119    if not strcmp(A, '$MeshFormat'):
     120        raise RuntimeError(['Expecting $MeshFormat (', A, ')'])
    126121
    127         #Nodes
    128         A=fid.readline().strip()
    129         if not strcmp(A,'$Nodes'):
    130                 raise RuntimeError(['Expecting $Nodes (', A, ')'])
     122    A = fid.readline().split()
     123    A = fid.readline().strip()
     124    if not strcmp(A, '$EndMeshFormat'):
     125        raise RuntimeError(['Expecting $EndMeshFormat (', A, ')'])
    131126
    132         mesh.numberofvertices=int(fid.readline().strip())
    133         mesh.x=np.empty(mesh.numberofvertices)
    134         mesh.y=np.empty(mesh.numberofvertices)
    135         mesh.z=np.empty(mesh.numberofvertices)
    136         for i in range(mesh.numberofvertices):
    137                 A=fid.readline().split()
    138                 mesh.x[i]=float(A[1])
    139                 mesh.y[i]=float(A[2])
    140                 mesh.z[i]=float(A[3])
     127    #Nodes
     128    A = fid.readline().strip()
     129    if not strcmp(A, '$Nodes'):
     130        raise RuntimeError(['Expecting $Nodes (', A, ')'])
    141131
    142         A=fid.readline().strip()
    143         if not strcmp(A,'$EndNodes'):
    144                 raise RuntimeError(['Expecting $EndNodes (', A, ')'])
     132    mesh.numberofvertices = int(fid.readline().strip())
     133    mesh.x = np.empty(mesh.numberofvertices)
     134    mesh.y = np.empty(mesh.numberofvertices)
     135    mesh.z = np.empty(mesh.numberofvertices)
     136    for i in range(mesh.numberofvertices):
     137        A = fid.readline().split()
     138        mesh.x[i] = float(A[1])
     139        mesh.y[i] = float(A[2])
     140        mesh.z[i] = float(A[3])
    145141
    146         #Elements
    147         A=fid.readline().strip()
    148         if not strcmp(A,'$Elements'):
    149                 raise RuntimeError(['Expecting $Elements (', A, ')'])
    150         mesh.numberofelements=int(fid.readline().strip())
    151         mesh.elements=np.zeros([mesh.numberofelements,3])
    152         for i in range(mesh.numberofelements):
    153                 A=fid.readline().split()
    154                 mesh.elements[i]=[int(A[5]),int(A[6]),int(A[7])]
    155         mesh.elements=mesh.elements.astype(int)
    156         A=fid.readline().strip()
    157         if not strcmp(A,'$EndElements'):
    158                 raise RuntimeError(['Expecting $EndElements (', A, ')'])
    159         fid.close()
    160         #}}}
     142    A = fid.readline().strip()
     143    if not strcmp(A, '$EndNodes'):
     144        raise RuntimeError(['Expecting $EndNodes (', A, ')'])
    161145
    162         #figure out other fields in mesh3dsurface:
    163         mesh.r=np.sqrt(mesh.x**2+mesh.y**2+mesh.z**2)
    164         mesh.lat=np.arcsin(mesh.z/mesh.r)/np.pi*180
    165         mesh.long=np.arctan2(mesh.y,mesh.x)/np.pi*180
     146    #Elements
     147    A = fid.readline().strip()
     148    if not strcmp(A, '$Elements'):
     149        raise RuntimeError(['Expecting $Elements (', A, ')'])
     150    mesh.numberofelements = int(fid.readline().strip())
     151    mesh.elements = np.zeros([mesh.numberofelements, 3])
     152    for i in range(mesh.numberofelements):
     153        A = fid.readline().split()
     154        mesh.elements[i] = [int(A[5]), int(A[6]), int(A[7])]
     155    mesh.elements = mesh.elements.astype(int)
     156    A = fid.readline().strip()
     157    if not strcmp(A, '$EndElements'):
     158        raise RuntimeError(['Expecting $EndElements (', A, ')'])
     159    fid.close()
     160    #}}}
    166161
    167         #erase files:
    168         subprocess.call('rm -rf sphere.geo sphere.msh sphere.pos',shell=True)
     162    #figure out other fields in mesh3dsurface:
     163    mesh.r = np.sqrt(mesh.x**2 + mesh.y**2 + mesh.z**2)
     164    mesh.lat = np.arcsin(mesh.z / mesh.r) / np.pi * 180
     165    mesh.long = np.arctan2(mesh.y, mesh.x) / np.pi * 180
    169166
    170         #return mesh:
    171         return mesh
     167    #erase files:
     168    subprocess.call('rm -rf sphere.geo sphere.msh sphere.pos', shell=True)
     169
     170    #return mesh:
     171    return mesh
  • issm/trunk-jpl/src/m/mesh/rifts/meshprocessoutsiderifts.py

    r21303 r24213  
    22from ElementsFromEdge import ElementsFromEdge
    33import MatlabFuncs as m
     4from ContourToMesh import ContourToMesh
    45
    5 def meshprocessoutsiderifts(md,domainoutline):
    6         """
    7         MESHPROCESSOUTSIDERIFTS - process rifts when they touch the domain outline
    86
    9            Usage:
    10               md=meshprocessoutsiderifts(md,domain)
     7def meshprocessoutsiderifts(md, domainoutline):
     8    """
     9    MESHPROCESSOUTSIDERIFTS - process rifts when they touch the domain outline
    1110
    12         """
     11       Usage:
     12          md = meshprocessoutsiderifts(md, domain)
    1313
    14         #go through rifts, and figure out which ones touch the domain outline
    15         for rift in md.rifts.riftstruct:
    16        
    17                 #first, flag nodes that belong to the domain outline
    18                 flags=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,domainoutline,'node',0)
     14    """
    1915
    20                 tips=rift.tips
    21                 outsidetips=tips[np.nonzero(flags[rift.tips-1])[0]]
     16    #go through rifts, and figure out which ones touch the domain outline
     17    for rift in md.rifts.riftstruct:
    2218
    23                 #we have found outsidetips, tips that touch the domain outline. go through them
    24                 for tip in outsidetips:
    25                
    26                         #find tip in the segments, take first segment (there should be 2) that holds tip,
    27                         #and node_connected_to_tip is the other node on this segment:
    28                         tipindex=np.nonzero(rift.segments[:,0]==tip)[0]
    29                         if tipindex:
    30                                 tipindex=tipindex[0]
    31                                 node_connected_to_tip=rift.segments[tipindex,1]
    32                         else:
    33                                 tipindex=np.nonzero(rift.segments[:,1]==tip)[0]
    34                                 tipindex=tipindex[0]
    35                                 node_connected_to_tip=rift.segments[tipindex,1]
     19        #first, flag nodes that belong to the domain outline
     20        flags = ContourToMesh(md.mesh.elements, md.mesh.x, md.mesh.y, domainoutline, 'node', 0)
    3621
    37                         #ok, we have the tip node, and the first node connected to it, on the rift. Now,
    38                         #identify all the elements that are connected to the tip, and that are on the same
    39                         #side of the rift.
    40                         A=tip
    41                         B=node_connected_to_tip
     22        tips = rift.tips
     23        outsidetips = tips[np.nonzero(flags[rift.tips - 1])[0]]
    4224
    43                         elements=np.empty(0,int)
     25        #we have found outsidetips, tips that touch the domain outline. go through them
     26        for tip in outsidetips:
     27            #find tip in the segments, take first segment (there should be 2) that holds tip,
     28            #and node_connected_to_tip is the other node on this segment:
     29            tipindex = np.nonzero(rift.segments[:, 0] == tip)[0]
     30            if tipindex:
     31                tipindex = tipindex[0]
     32                node_connected_to_tip = rift.segments[tipindex, 1]
     33            else:
     34                tipindex = np.nonzero(rift.segments[:, 1] == tip)[0]
     35                tipindex = tipindex[0]
     36                node_connected_to_tip = rift.segments[tipindex, 1]
    4437
    45                         while flags(B):    #as long as B does not belong to the domain outline, keep looking.
    46                                 #detect elements on edge A,B:
    47                                 edgeelements=ElementsFromEdge(md.mesh.elements,A,B)
    48                                 #rule out those we already detected
    49                                 already_detected=m.ismember(edgeelements,elements)
    50                                 nextelement=edgeelements(np.nonzero(np.logical_not(already_detected))[0])
    51                                 #add new detected element to the list of elements we are looking for.
    52                                 elements=np.concatenate((elements,nextelement))
    53                                 #new B:
    54                                 B=md.mesh.elements[nextelement-1,np.nonzero(np.logical_not(m.ismember(md.mesh.elements[nextelement-1,:],np.array([A,B]))))]
    55                
    56                         #take the list of elements on one side of the rift that connect to the tip,
    57                         #and duplicate the tip on them, so as to open the rift to the outside.
    58                         num=np.size(md.mesh.x)+1
    59                         md.mesh.x=np.concatenate((md.mesh.x,md.mesh.x[tip]))
    60                         md.mesh.y=np.concatenate((md.mesh.y,md.mesh.y[tip]))
    61                         md.mesh.numberofvertices=num
    62                
    63                         #replace tip in elements
    64                         newelements=md.mesh.elements[elements-1,:]
    65                         pos=np.nonzero(newelements==tip)
    66                         newelements[pos]=num
    67                         md.mesh.elements[elements-1,:]=newelements
    68                         rift.tips=np.concatenate((rift.tips,num))
     38            #ok, we have the tip node, and the first node connected to it, on the rift. Now,
     39            #identify all the elements that are connected to the tip, and that are on the same
     40            #side of the rift.
     41            A = tip
     42            B = node_connected_to_tip
    6943
    70                         #deal with segments
    71                         tipsegments=np.nonzero(np.logical_or(md.mesh.segments[:,0]==tip,md.mesh.segments[:,1]==tip))[0]
    72                         for segment_index in tipsegments:
    73                                 pos=np.nonzero(md.mesh.segments[segment_index,0:2]!=tip)[0]
    74                                 other_node=md.mesh.segments[segment_index,pos]
    75                                 if not isconnected(md.mesh.elements,other_node,tip):
    76                                         pos=np.nonzero(md.mesh.segments[segment_index,0:2]==tip)[0]
    77                                         md.mesh.segments[segment_index,pos]=num
     44            elements = np.empty(0, int)
    7845
    79         #Fill in rest of fields:
    80         md.mesh.numberofelements=np.size(md.mesh.elements,axis=0)
    81         md.mesh.numberofvertices=np.size(md.mesh.x)
    82         md.mesh.vertexonboundary=np.zeros(np.size(md.mesh.x),bool)
    83         md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1]=True
    84         md.rifts.numrifts=length(md.rifts.riftstruct)
     46            while flags(B):  #as long as B does not belong to the domain outline, keep looking.
     47                #detect elements on edge A, B:
     48                edgeelements = ElementsFromEdge(md.mesh.elements, A, B)
     49                #rule out those we already detected
     50                already_detected = m.ismember(edgeelements, elements)
     51                nextelement = edgeelements(np.nonzero(np.logical_not(already_detected))[0])
     52                #add new detected element to the list of elements we are looking for.
     53                elements = np.concatenate((elements, nextelement))
     54                #new B:
     55                B = md.mesh.elements[nextelement - 1, np.nonzero(np.logical_not(m.ismember(md.mesh.elements[nextelement - 1, :], np.array([A, B]))))]
    8556
    86         return md
     57            #take the list of elements on one side of the rift that connect to the tip,
     58            #and duplicate the tip on them, so as to open the rift to the outside.
     59            num = np.size(md.mesh.x) + 1
     60            md.mesh.x = np.concatenate((md.mesh.x, md.mesh.x[tip]))
     61            md.mesh.y = np.concatenate((md.mesh.y, md.mesh.y[tip]))
     62            md.mesh.numberofvertices = num
    8763
    88 def isconnected(elements,A,B):    # {{{
    89         """
    90         ISCONNECTED: are two nodes connected by a triangulation?
     64            #replace tip in elements
     65            newelements = md.mesh.elements[elements - 1, :]
     66            pos = np.nonzero(newelements == tip)
     67            newelements[pos] = num
     68            md.mesh.elements[elements - 1, :] = newelements
     69            rift.tips = np.concatenate((rift.tips, num))
    9170
    92            Usage: flag=isconnected(elements,A,B)
     71            #deal with segments
     72            tipsegments = np.nonzero(np.logical_or(md.mesh.segments[:, 0] == tip, md.mesh.segments[:, 1] == tip))[0]
     73            for segment_index in tipsegments:
     74                pos = np.nonzero(md.mesh.segments[segment_index, 0:2] != tip)[0]
     75                other_node = md.mesh.segments[segment_index, pos]
     76                if not isconnected(md.mesh.elements, other_node, tip):
     77                    pos = np.nonzero(md.mesh.segments[segment_index, 0:2] == tip)[0]
     78                    md.mesh.segments[segment_index, pos] = num
    9379
    94         """
     80    #Fill in rest of fields:
     81    md.mesh.numberofelements = np.size(md.mesh.elements, axis=0)
     82    md.mesh.numberofvertices = np.size(md.mesh.x)
     83    md.mesh.vertexonboundary = np.zeros(np.size(md.mesh.x), bool)
     84    md.mesh.vertexonboundary[md.mesh.segments[:, 0:2] - 1] = True
     85    md.rifts.numrifts = np.length(md.rifts.riftstruct)
    9586
    96         elements=ElementsFromEdge(elements,A,B)
    97         if not elements:
    98                 flag=0
    99         else:
    100                 flag=1
     87    return md
    10188
    102         return flag
    103         # }}}
    10489
     90def isconnected(elements, A, B):  # {{{
     91    """
     92    ISCONNECTED: are two nodes connected by a triangulation?
     93
     94       Usage: flag = isconnected(elements, A, B)
     95
     96    """
     97
     98    elements = ElementsFromEdge(elements, A, B)
     99    if not elements:
     100        flag = 0
     101    else:
     102        flag = 1
     103
     104    return flag
     105    # }}}
  • issm/trunk-jpl/src/m/mesh/rifts/meshprocessrifts.py

    r22498 r24213  
    55from GetAreas import GetAreas
    66
    7 def meshprocessrifts(md,domainoutline):
    8         """
    9         MESHPROCESSRIFTS - process mesh when rifts are present
    107
    11            split rifts inside mesh (rifts are defined by presence of
    12            segments inside the domain outline)
    13            if domain outline is provided, check for rifts that could touch it, and open them up.
     8def meshprocessrifts(md, domainoutline):
     9    """
     10    MESHPROCESSRIFTS - process mesh when rifts are present
    1411
    15            Usage:
    16               md=meshprocessrifts(md,domainoutline)
     12       split rifts inside mesh (rifts are defined by presence of
     13       segments inside the domain outline)
     14       if domain outline is provided, check for rifts that could touch it, and open them up.
    1715
    18            Ex:
    19               md=meshprocessrifts(md,'DomainOutline.exp');
    20        
    21         """
     16       Usage:
     17          md = meshprocessrifts(md, domainoutline)
    2218
    23         #Call MEX file
    24         md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers,md.rifts.riftstruct=ProcessRifts(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers)
    25         md.mesh.elements=md.mesh.elements.astype(int)
    26         md.mesh.x=md.mesh.x.reshape(-1)
    27         md.mesh.y=md.mesh.y.reshape(-1)
    28         md.mesh.segments=md.mesh.segments.astype(int)
    29         md.mesh.segmentmarkers=md.mesh.segmentmarkers.astype(int)
    30         if not isinstance(md.rifts.riftstruct,list) or not md.rifts.riftstruct:
    31                 raise RuntimeError("ProcessRifts did not find any rift")
     19       Ex:
     20          md = meshprocessrifts(md, 'DomainOutline.exp')
    3221
    33         #Fill in rest of fields:
    34         numrifts=len(md.rifts.riftstruct)
    35         md.mesh.numberofelements=np.size(md.mesh.elements,axis=0)
    36         md.mesh.numberofvertices=np.size(md.mesh.x)
    37         md.mesh.vertexonboundary=np.zeros(np.size(md.mesh.x),bool)
    38         md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1]=True
     22    """
    3923
    40         #get coordinates of rift tips
    41         for rift in md.rifts.riftstruct:
    42                 rift['tip1coordinates']=np.hstack((md.mesh.x[rift['tips'][0,0].astype(int)-1].reshape(-1,),md.mesh.y[rift['tips'][0,0].astype(int)-1].reshape(-1,)))
    43                 rift['tip2coordinates']=np.hstack((md.mesh.x[rift['tips'][0,1].astype(int)-1].reshape(-1,),md.mesh.y[rift['tips'][0,1].astype(int)-1].reshape(-1,)))
     24    #Call MEX file
     25    md.mesh.elements, md.mesh.x, md.mesh.y, md.mesh.segments, md.mesh.segmentmarkers, md.rifts.riftstruct = ProcessRifts(md.mesh.elements, md.mesh.x, md.mesh.y, md.mesh.segments, md.mesh.segmentmarkers)
     26    md.mesh.elements = md.mesh.elements.astype(int)
     27    md.mesh.x = md.mesh.x.reshape(- 1)
     28    md.mesh.y = md.mesh.y.reshape(- 1)
     29    md.mesh.segments = md.mesh.segments.astype(int)
     30    md.mesh.segmentmarkers = md.mesh.segmentmarkers.astype(int)
     31    if not isinstance(md.rifts.riftstruct, list) or not md.rifts.riftstruct:
     32        raise RuntimeError("ProcessRifts did not find any rift")
    4433
    45         #In case we have rifts that open up the domain outline, we need to open them:
    46         flags=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,domainoutline,'node',0)
    47         found=0
    48         for rift in md.rifts.riftstruct:
    49                 if flags[rift['tips'][0,0].astype(int)-1]==0:
    50                         found=1
    51                         break
    52                 if flags[rift['tips'][0,1].astype(int)-1]==0:
    53                         found=1
    54                         break
    55         if found:
    56                 md=meshprocessoutsiderifts(md,domainoutline)
     34    #Fill in rest of fields:
     35    md.mesh.numberofelements = np.size(md.mesh.elements, axis=0)
     36    md.mesh.numberofvertices = np.size(md.mesh.x)
     37    md.mesh.vertexonboundary = np.zeros(np.size(md.mesh.x), bool)
     38    md.mesh.vertexonboundary[md.mesh.segments[:, 0:2] - 1] = True
    5739
    58         #get elements that are not correctly oriented in the correct direction:
    59         aires=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y)
    60         pos=np.nonzero(aires<0)[0]
    61         md.mesh.elements[pos,:]=np.vstack((md.mesh.elements[pos,1],md.mesh.elements[pos,0],md.mesh.elements[pos,2])).T
     40    #get coordinates of rift tips
     41    for rift in md.rifts.riftstruct:
     42        rift['tip1coordinates'] = np.hstack((md.mesh.x[rift['tips'][0, 0].astype(int) - 1].reshape(- 1, ), md.mesh.y[rift['tips'][0, 0].astype(int) - 1].reshape(- 1, )))
     43        rift['tip2coordinates'] = np.hstack((md.mesh.x[rift['tips'][0, 1].astype(int) - 1].reshape(- 1, ), md.mesh.y[rift['tips'][0, 1].astype(int) - 1].reshape(- 1, )))
    6244
    63         return md
     45    #In case we have rifts that open up the domain outline, we need to open them:
     46    flags = ContourToMesh(md.mesh.elements, md.mesh.x, md.mesh.y, domainoutline, 'node', 0)
     47    found = 0
     48    for rift in md.rifts.riftstruct:
     49        if flags[rift['tips'][0, 0].astype(int) - 1] == 0:
     50            found = 1
     51            break
     52        if flags[rift['tips'][0, 1].astype(int) - 1] == 0:
     53            found = 1
     54            break
     55    if found:
     56        md = meshprocessoutsiderifts(md, domainoutline)
    6457
     58    #get elements that are not correctly oriented in the correct direction:
     59    aires = GetAreas(md.mesh.elements, md.mesh.x, md.mesh.y)
     60    pos = np.nonzero(aires < 0)[0]
     61    md.mesh.elements[pos, :] = np.vstack((md.mesh.elements[pos, 1], md.mesh.elements[pos, 0], md.mesh.elements[pos, 2])).T
     62
     63    return md
  • issm/trunk-jpl/src/m/mesh/roundmesh.py

    r24115 r24213  
    55from triangle import triangle
    66
     7
    78def roundmesh(md, radius, resolution):
    89    """
     
    1011
    1112       This script will generate a structured round mesh
    12        - radius     : specifies the radius of the circle in meters
    13        - resolution : specifies the resolution in meters
     13 - radius     : specifies the radius of the circle in meters
     14 - resolution : specifies the resolution in meters
    1415
    1516       Usage:
    16           md=roundmesh(md,radius,resolution)
     17          md = roundmesh(md, radius, resolution)
    1718    """
    1819
     
    2021
    2122    #Get number of points on the circle
    22     pointsonedge = np.floor((2. * np.pi * radius) / resolution) + 1  #+1 to close the outline
     23    pointsonedge = np.floor((2. * np.pi * radius) / resolution) + 1  # + 1 to close the outline
    2324
    2425    #Calculate the cartesians coordinates of the points
     
    3031    A['y'] = [y_list]
    3132    A['density'] = 1.
    32     print('now writing mesh')
    3333    expwrite(A, 'RoundDomainOutline.exp')
    3434
    3535    #Call Bamg
    36     print('now meshing')
    3736    md = triangle(md, 'RoundDomainOutline.exp', resolution)
    38     #md = bamg(md,'domain','RoundDomainOutline.exp','hmin',resolution)
     37    #md = bamg(md, 'domain', 'RoundDomainOutline.exp', 'hmin', resolution)
    3938
    4039    #move the closest node to the center
  • issm/trunk-jpl/src/m/mesh/squaremesh.py

    r23716 r24213  
    11import numpy as np
    22from NodeConnectivity import NodeConnectivity
    3 from ElementConnectivity import ElementConnectivity 
     3from ElementConnectivity import ElementConnectivity
    44from mesh2d import mesh2d
    55
    6 def squaremesh(md,Lx,Ly,nx,ny):
    7         """
    8         SQUAREMESH - create a structured square mesh
    96
    10            This script will generate a structured square mesh
    11            Lx and Ly are the dimension of the domain (in meters)
    12            nx anx ny are the number of nodes in the x and y direction
    13            The coordinates x and y returned are in meters.
     7def squaremesh(md, Lx, Ly, nx, ny):
     8    """
     9    SQUAREMESH - create a structured square mesh
    1410
    15            Usage:
    16               [md]=squaremesh(md,Lx,Ly,nx,ny)
    17         """
     11       This script will generate a structured square mesh
     12       Lx and Ly are the dimension of the domain (in meters)
     13       nx anx ny are the number of nodes in the x and y direction
     14       The coordinates x and y returned are in meters.
    1815
    19         #get number of elements and number of nodes
    20         nel=(nx-1)*(ny-1)*2
    21         nods=nx*ny
     16       Usage:
     17          [md] = squaremesh(md, Lx, Ly, nx, ny)
     18    """
    2219
    23         #initialization
    24         index=np.zeros((nel,3),int)
    25         x=np.zeros((nx*ny))
    26         y=np.zeros((nx*ny))
     20    #get number of elements and number of nodes
     21    nel = (nx - 1) * (ny - 1) * 2
     22    nods = nx * ny
    2723
    28         #create coordinates
    29         for n in range(0,nx):
    30                 for m in range(0,ny):
    31                         x[n*ny+m]=float(n)
    32                         y[n*ny+m]=float(m)
     24    #initialization
     25    index = np.zeros((nel, 3), int)
     26    x = np.zeros((nx * ny))
     27    y = np.zeros((nx * ny))
    3328
    34         #create index
    35         for n in range(0,nx-1):
    36                 for m in range(0,ny-1):
    37                         A=n*ny+(m+1)
    38                         B=A+1
    39                         C=(n+1)*ny+(m+1)
    40                         D=C+1
    41                         index[n*(ny-1)*2+2*m,:]=[A,C,B]
    42                         index[n*(ny-1)*2+2*(m+1)-1,:]=[B,C,D]
     29    #create coordinates
     30    for n in range(0, nx):
     31        for m in range(0, ny):
     32            x[n * ny + m] = float(n)
     33            y[n * ny + m] = float(m)
    4334
    44         #Scale  x and y
    45         x=x/np.max(x)*Lx
    46         y=y/np.max(y)*Ly
     35    #create index
     36    for n in range(0, nx - 1):
     37        for m in range(0, ny - 1):
     38            A = n * ny + (m + 1)
     39            B = A + 1
     40            C = (n + 1) * ny + (m + 1)
     41            D = C + 1
     42            index[n * (ny - 1) * 2 + 2 * m, :] = [A, C, B]
     43            index[n * (ny - 1) * 2 + 2 * (m + 1) - 1, :] = [B, C, D]
    4744
    48         #create segments
    49         segments=np.zeros((2*(nx-1)+2*(ny-1),3),int)
    50         #left edge:
    51         segments[0:ny-1,:]=np.vstack((np.arange(2,ny+1),np.arange(1,ny),(2*np.arange(1,ny)-1))).T
    52         #right edge:
    53         segments[ny-1:2*(ny-1),:]=np.vstack((np.arange(ny*(nx-1)+1,nx*ny),np.arange(ny*(nx-1)+2,nx*ny+1),2*np.arange((ny-1)*(nx-2)+1,(nx-1)*(ny-1)+1))).T
    54         #front edge:
    55         segments[2*(ny-1):2*(ny-1)+(nx-1),:]=np.vstack((np.arange(2*ny,ny*nx+1,ny),np.arange(ny,ny*(nx-1)+1,ny),np.arange(2*(ny-1),2*(nx-1)*(ny-1)+1,2*(ny-1)))).T
    56         #back edge
    57         segments[2*(ny-1)+(nx-1):2*(nx-1)+2*(ny-1),:]=np.vstack((np.arange(1,(nx-2)*ny+2,ny),np.arange(ny+1,ny*(nx-1)+2,ny),np.arange(1,2*(nx-2)*(ny-1)+2,2*(ny-1)))).T
     45    #Scale  x and y
     46    x = x / np.max(x) * Lx
     47    y = y / np.max(y) * Ly
    5848
    59         #plug coordinates and nodes
    60         md.mesh=mesh2d()
    61         md.mesh.x=x
    62         md.mesh.y=y
    63         md.mesh.numberofvertices=nods
    64         md.mesh.vertexonboundary=np.zeros((nods),bool)
    65         md.mesh.vertexonboundary[segments[:,0:2]-1]=True
     49    #create segments
     50    segments = np.zeros((2 * (nx - 1) + 2 * (ny - 1), 3), int)
     51    #left edge:
     52    segments[0:ny - 1, :] = np.vstack((np.arange(2, ny + 1), np.arange(1, ny), (2 * np.arange(1, ny) - 1))).T
     53    #right edge:
     54    segments[ny - 1:2 * (ny - 1), :] = np.vstack((np.arange(ny * (nx - 1) + 1, nx * ny), np.arange(ny * (nx - 1) + 2, nx * ny + 1), 2 * np.arange((ny - 1) * (nx - 2) + 1, (nx - 1) * (ny - 1) + 1))).T
     55    #front edge:
     56    segments[2 * (ny - 1):2 * (ny - 1) + (nx - 1), :] = np.vstack((np.arange(2 * ny, ny * nx + 1, ny), np.arange(ny, ny * (nx - 1) + 1, ny), np.arange(2 * (ny - 1), 2 * (nx - 1) * (ny - 1) + 1, 2 * (ny - 1)))).T
     57    #back edge
     58    segments[2 * (ny - 1) + (nx - 1):2 * (nx - 1) + 2 * (ny - 1), :] = np.vstack((np.arange(1, (nx - 2) * ny + 2, ny), np.arange(ny + 1, ny * (nx - 1) + 2, ny), np.arange(1, 2 * (nx - 2) * (ny - 1) + 2, 2 * (ny - 1)))).T
    6659
    67         #plug elements
    68         md.mesh.elements=index
    69         md.mesh.segments=segments
    70         md.mesh.numberofelements=nel
     60    #plug coordinates and nodes
     61    md.mesh = mesh2d()
     62    md.mesh.x = x
     63    md.mesh.y = y
     64    md.mesh.numberofvertices = nods
     65    md.mesh.vertexonboundary = np.zeros((nods), bool)
     66    md.mesh.vertexonboundary[segments[:, 0:2] - 1] = True
    7167
    72         #Now, build the connectivity tables for this mesh.
    73         md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices)[0]
    74         md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity)[0]
     68    #plug elements
     69    md.mesh.elements = index
     70    md.mesh.segments = segments
     71    md.mesh.numberofelements = nel
    7572
    76         return md
     73    #Now, build the connectivity tables for this mesh.
     74    md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements, md.mesh.numberofvertices)[0]
     75    md.mesh.elementconnectivity = ElementConnectivity(md.mesh.elements, md.mesh.vertexconnectivity)[0]
     76
     77    return md
  • issm/trunk-jpl/src/m/mesh/triangle.py

    r24115 r24213  
    1717
    1818       Usage:
    19           md=triangle(md,domainname,resolution)
    20        or md=triangle(md,domainname, resolution, riftname)
     19          md = triangle(md, domainname, resolution)
     20       or md = triangle(md, domainname, resolution, riftname)
    2121
    2222       Examples:
    23           md=triangle(md,'DomainOutline.exp',1000);
    24           md=triangle(md,'DomainOutline.exp',1000,'Rifts.exp');
     23          md = triangle(md, 'DomainOutline.exp', 1000)
     24          md = triangle(md, 'DomainOutline.exp', 1000, 'Rifts.exp')
    2525    """
    2626
    2727    #Figure out a characteristic area. Resolution is a node oriented concept (ex a 1000m  resolution node would
    28     #be made of 1000*1000 area squares).
     28    #be made of 1000 * 1000 area squares).
    2929
    3030    if len(args) == 1:
     
    3737    #Check that mesh was not already run, and warn user:
    3838    if md.mesh.numberofelements:
    39         choice = eval(input('This model already has a mesh. Are you sure you want to go ahead? (y/n)'))
     39        choice = input('This model already has a mesh. Are you sure you want to go ahead? (y / n)')
    4040        if choice not in ['y', 'n']:
    4141            print("bad answer try you should use 'y' or 'n' ... exiting")
  • issm/trunk-jpl/src/m/miscellaneous/MatlabFuncs.py

    r22865 r24213  
    11def oshostname():
    2         import socket
     2    import socket
    33
    4         return socket.gethostname()
     4    return socket.gethostname()
     5
    56
    67def ispc():
    7         import platform
     8    import platform
    89
    9         if 'Windows' in platform.system():
    10                 return True
    11         else:
    12                 return False
     10    if 'Windows' in platform.system():
     11        return True
     12    else:
     13        return False
     14
    1315
    1416def ismac():
    15         import platform
     17    import platform
    1618
    17         if 'Darwin' in platform.system():
    18                 return True
    19         else:
    20                 return False
     19    if 'Darwin' in platform.system():
     20        return True
     21    else:
     22        return False
    2123
    22 def strcmp(s1,s2):
    2324
    24         if s1 == s2:
    25                 return True
    26         else:
    27                 return False
     25def strcmp(s1, s2):
    2826
    29 def strncmp(s1,s2,n):
     27    if s1 == s2:
     28        return True
     29    else:
     30        return False
    3031
    31         if s1[0:n] == s2[0:n]:
    32                 return True
    33         else:
    34                 return False
    3532
    36 def strcmpi(s1,s2):
     33def strncmp(s1, s2, n):
    3734
    38         if s1.lower() == s2.lower():
    39                 return True
    40         else:
    41                 return False
     35    if s1[0:n] == s2[0:n]:
     36        return True
     37    else:
     38        return False
    4239
    43 def strncmpi(s1,s2,n):
    4440
    45         if s1.lower()[0:n] == s2.lower()[0:n]:
    46                 return True
    47         else:
    48                 return False
     41def strcmpi(s1, s2):
    4942
    50 def ismember(a,s):
    51         import numpy as np
     43    if s1.lower() == s2.lower():
     44        return True
     45    else:
     46        return False
    5247
    53         if not isinstance(s,(tuple,list,dict,np.ndarray)):
    54                 s=[s]
    5548
    56         if not isinstance(a,(tuple,list,dict,np.ndarray)):
    57                 a=[a]
     49def strncmpi(s1, s2, n):
    5850
    59         if not isinstance(a,np.ndarray):
    60                 b=[item in s for item in a]
     51    if s1.lower()[0:n] == s2.lower()[0:n]:
     52        return True
     53    else:
     54        return False
    6155
    62         else:
    63                 if not isinstance(s,np.ndarray):
    64                         b=np.empty_like(a)
    65                         for i,item in enumerate(a.flat):
    66                                 b.flat[i]=item in s
    67                 else:
    68                         b=np.in1d(a.flat,s.flat).reshape(a.shape)
    6956
    70         return b
     57def ismember(a, s):
     58    import numpy as np
     59
     60    if not isinstance(s, (tuple, list, dict, np.ndarray)):
     61        s = [s]
     62
     63    if not isinstance(a, (tuple, list, dict, np.ndarray)):
     64        a = [a]
     65
     66    if not isinstance(a, np.ndarray):
     67        b = [item in s for item in a]
     68
     69    else:
     70        if not isinstance(s, np.ndarray):
     71            b = np.empty_like(a)
     72            for i, item in enumerate(a.flat):
     73                b.flat[i] = item in s
     74        else:
     75            b = np.in1d(a.flat, s.flat).reshape(a.shape)
     76
     77    return b
     78
    7179
    7280def det(a):
    73         import numpy as np
    7481
    75         if   a.shape==(1,):
    76                 return a[0]
    77         elif a.shape==(1,1):
    78                 return a[0,0]
    79         elif a.shape==(2,2):
    80                 return a[0,0]*a[1,1]-a[0,1]*a[1,0]
    81         else:
    82                 raise TypeError("MatlabFunc.det only implemented for shape (2, 2), not for shape %s." % str(a.shape))
     82    if a.shape == (1, ):
     83        return a[0]
     84    elif a.shape == (1, 1):
     85        return a[0, 0]
     86    elif a.shape == (2, 2):
     87        return a[0, 0] * a[1, 1] - a[0, 1] * a[1, 0]
     88    else:
     89        raise TypeError("MatlabFunc.det only implemented for shape (2, 2), not for shape %s." % str(a.shape))
    8390
    84 def sparse(ivec,jvec,svec,m=0,n=0,nzmax=0):
    85         import numpy as np
    8691
    87         if not m:
    88                 m=np.max(ivec)
    89         if not n:
    90                 n=np.max(jvec)
     92def sparse(ivec, jvec, svec, m=0, n=0, nzmax=0):
     93    import numpy as np
    9194
    92         a=np.zeros((m,n))
     95    if not m:
     96        m = np.max(ivec)
     97    if not n:
     98        n = np.max(jvec)
    9399
    94         for i,j,s in zip(ivec.reshape(-1,order='F'),jvec.reshape(-1,order='F'),svec.reshape(-1,order='F')):
    95                 a[i-1,j-1]+=s
     100    a = np.zeros((m, n))
    96101
    97         return a
     102    for i, j, s in zip(ivec.reshape(-1, order='F'), jvec.reshape(-1, order='F'), svec.reshape(-1, order='F')):
     103        a[i - 1, j - 1] += s
     104
     105    return a
     106
    98107
    99108def heaviside(x):
    100         import numpy as np
     109    import numpy as np
    101110
    102         y=np.zeros_like(x)
    103         y[np.nonzero(x> 0.)]=1.
    104         y[np.nonzero(x==0.)]=0.5
     111    y = np.zeros_like(x)
     112    y[np.nonzero(x > 0.)] = 1.
     113    y[np.nonzero(x == 0.)] = 0.5
    105114
    106         return y
     115    return y
  • issm/trunk-jpl/src/m/miscellaneous/PythonFuncs.py

    r21303 r24213  
    11import numpy as np
    22
    3 def logical_and_n(*arg):
    4        
    5         if len(arg):
    6                 result=arg[0]
    7                 for item in arg[1:]:
    8                         result=logical_and(result,item)
    9                 return result
    103
    11         else:
    12                 return None
     4def logical_and_n(* arg):
    135
    14 def logical_or_n(*arg):
    15        
    16         if len(arg):
    17                 result=arg[0]
    18                 for item in arg[1:]:
    19                         result=logical_or(result,item)
    20                 return result
     6    if len(arg):
     7        result = arg[0]
     8        for item in arg[1:]:
     9            result = np.logical_and(result, item)
     10        return result
    2111
    22         else:
    23                 return None
     12    else:
     13        return None
    2414
     15
     16def logical_or_n(* arg):
     17
     18    if len(arg):
     19        result = arg[0]
     20        for item in arg[1:]:
     21            result = np.logical_or(result, item)
     22        return result
     23
     24    else:
     25        return None
  • issm/trunk-jpl/src/m/miscellaneous/fielddisplay.py

    r23716 r24213  
    1 #Module import
    21import numpy as np
    3 from math import isnan
    42import MatlabFuncs as m
    53
    6 def fielddisplay(md,name,comment):
    7         """
    8         FIELDDISPLAY - display model field
    94
    10            Usage:
    11               fielddisplay(md,name,comment)
    12         """
     5def fielddisplay(md, name, comment):
     6    """
     7    FIELDDISPLAY - display model field
    138
    14         #get field
    15         field=getattr(md,name)
     9       Usage:
     10          fielddisplay(md, name, comment)
     11    """
    1612
    17         #disp corresponding line as a function of field type (offset set as 9 spaces)
    18         return parsedisplay("         ",name,field,comment);
     13    #get field
     14    field = getattr(md, name)
    1915
    20 def parsedisplay(offset,name,field,comment):    # {{{
     16    #disp corresponding line as a function of field type (offset set as 9 spaces)
     17    return parsedisplay("         ", name, field, comment)
    2118
    22         #string
    23         if isinstance(field,str):
    2419
    25                 if len(field)>30:
    26                         string=displayunit(offset,name,"not displayed",comment)
    27                 else:
    28                         string=displayunit(offset,name,"'%s'" % field,comment)
     20def parsedisplay(offset, name, field, comment):  # {{{
    2921
    30         #numeric
    31         elif isinstance(field,(int,float)):
    32                 string=displayunit(offset,name,str(field),comment)
     22    #string
     23    if isinstance(field, str):
    3324
    34         #matrix
    35         elif isinstance(field,np.ndarray):
    36                 string=displayunit(offset,name,str(field.shape),comment)
     25        if len(field) > 30:
     26            string = displayunit(offset, name, "not displayed", comment)
     27        else:
     28            string = displayunit(offset, name, "'%s'" % field, comment)
    3729
    38         #logical
    39         elif isinstance(field,bool):
    40                 if field:
    41                         string=displayunit(offset,name,"True",comment)
    42                 else:
    43                         string=displayunit(offset,name,"False",comment)
    44        
    45         #dictionary
    46         elif isinstance(field,dict):
    47                 string=dict_display(offset,name,field,comment)
     30    #numeric
     31    elif isinstance(field, (int, float)):
     32        string = displayunit(offset, name, str(field), comment)
    4833
    49         #list or tuple
    50         elif isinstance(field,(list,tuple)):
    51                 string=list_display(offset,name,field,comment)
     34    #matrix
     35    elif isinstance(field, np.ndarray):
     36        string = displayunit(offset, name, str(field.shape), comment)
    5237
    53         #None
    54         elif field is None:
    55                 string=displayunit(offset,name,"None",comment)
     38    #logical
     39    elif isinstance(field, bool):
     40        if field:
     41            string = displayunit(offset, name, "True", comment)
     42        else:
     43            string = displayunit(offset, name, "False", comment)
    5644
    57         else:
    58                 string=displayunit(offset,name,"not displayed",comment)
    59                
    60         return string
    61         # }}}
     45    #dictionary
     46    elif isinstance(field, dict):
     47        string = dict_display(offset, name, field, comment)
    6248
    63 def dict_display(offset,name,field,comment):    # {{{
     49    #list or tuple
     50    elif isinstance(field, (list, tuple)):
     51        string = list_display(offset, name, field, comment)
    6452
    65         if field:
    66                 string =displayunit(offset,name,'{dictionary}',comment)+'\n'
    67                 offset+='   '
     53    #None
     54    elif field is None:
     55        string = displayunit(offset, name, "None", comment)
    6856
    69                 for structure_field,sfield in list(field.items()):
    70                         string+=parsedisplay(offset,str(structure_field),sfield,'')+'\n'
     57    else:
     58        string = displayunit(offset, name, "not displayed", comment)
    7159
    72                 if string and string[-1]=='\n':
    73                         string=string[:-1]
     60    return string
     61    # }}}
    7462
    75         else:
    76                 string=displayunit(offset,name,'N/A',comment)
    7763
    78         return string
    79         # }}}
     64def dict_display(offset, name, field, comment):  # {{{
    8065
    81 def list_display(offset,name,field,comment):    # {{{
     66    if field:
     67        string = displayunit(offset, name, '{dictionary}', comment) + '\n'
     68        offset += '   '
    8269
    83         #initialization
    84         if   isinstance(field,list):
    85                 sbeg='['
    86                 send=']'
    87         elif isinstance(field,tuple):
    88                 sbeg='('
    89                 send=')'
    90         string=sbeg
     70        for structure_field, sfield in list(field.items()):
     71            string += parsedisplay(offset, str(structure_field), sfield, '') + '\n'
    9172
    92         #go through the cell and fill string
    93         if len(field)<5:
    94                 for fieldi in field:
    95                         if   isinstance(fieldi,str):
    96                                 string+="'%s'," % fieldi
    97                         elif isinstance(fieldi,(bool,int,float)):
    98                                 string+="%s," % str(fieldi)
    99                         else:
    100                                 string=sbeg
    101                                 break
     73        if string and string[-1] == '\n':
     74            string = string[:-1]
    10275
    103         if m.strcmp(string,sbeg):
    104                 string="%s%dx1%s" % (sbeg,len(field),send)
    105         else:
    106                 string=string[:-1]+send
     76    else:
     77        string = displayunit(offset, name, 'N/A', comment)
    10778
    108         #call displayunit
    109         return displayunit(offset,name,string,comment)
    110         # }}}
     79    return string
     80    # }}}
    11181
    112 def displayunit(offset,name,characterization,comment):    # {{{
    11382
    114         #take care of name
    115         if len(name)>23:
    116                 name="%s..." % name[:20]
    117        
    118         #take care of characterization
    119         if m.strcmp(characterization,"''") or m.strcmp(characterization,'""') or m.strcmpi(characterization,'nan'):
    120                 characterization="N/A"
    121        
    122         if len(characterization)>15:
    123                 characterization="%s..." % characterization[:12]
    124        
    125         #print
    126         if not comment:
    127                 string="%s%-23s: %-15s" % (offset,name,characterization)
    128         else:
    129                 if   isinstance(comment,str):
    130                         string="%s%-23s: %-15s -- %s" % (offset,name,characterization,comment)
    131                 elif isinstance(comment,list):
    132                         string="%s%-23s: %-15s -- %s" % (offset,name,characterization,comment[0])
    133                         for commenti in comment:
    134                                 string+="\n%s%-23s  %-15s    %s" % (offset,'','',commenti)
    135                 else:
    136                         raise RuntimeError("fielddisplay error message: format for comment not supported yet")
     83def list_display(offset, name, field, comment):  # {{{
    13784
    138         return string
    139         # }}}
     85    #initialization
     86    if isinstance(field, list):
     87        sbeg = '['
     88        send = ']'
     89    elif isinstance(field, tuple):
     90        sbeg = '('
     91        send = ')'
     92    string = sbeg
    14093
     94    #go through the cell and fill string
     95    if len(field) < 5:
     96        for fieldi in field:
     97            if isinstance(fieldi, str):
     98                string += "'%s', " % fieldi
     99            elif isinstance(fieldi, (bool, int, float)):
     100                string += "%s, " % str(fieldi)
     101            else:
     102                string = sbeg
     103                break
     104
     105    if m.strcmp(string, sbeg):
     106        string = "%s%dx1%s" % (sbeg, len(field), send)
     107    else:
     108        string = string[: - 1] + send
     109
     110    #call displayunit
     111    return displayunit(offset, name, string, comment)
     112    # }}}
     113
     114
     115def displayunit(offset, name, characterization, comment):  # {{{
     116
     117    #take care of name
     118    if len(name) > 23:
     119        name = "%s..." % name[:20]
     120
     121    #take care of characterization
     122    if m.strcmp(characterization, "''") or m.strcmp(characterization, '""') or m.strcmpi(characterization, 'nan'):
     123        characterization = "N / A"
     124
     125    if len(characterization) > 15:
     126        characterization = "%s..." % characterization[:12]
     127
     128    #print
     129    if not comment:
     130        string = "%s% - 23s: % - 15s" % (offset, name, characterization)
     131    else:
     132        if isinstance(comment, str):
     133            string = "%s% - 23s: % - 15s - -  %s" % (offset, name, characterization, comment)
     134        elif isinstance(comment, list):
     135            string = "%s% - 23s: % - 15s - -  %s" % (offset, name, characterization, comment[0])
     136            for commenti in comment:
     137                string += "\n%s% - 23s  % - 15s    %s" % (offset, '', '', commenti)
     138        else:
     139            raise RuntimeError("fielddisplay error message: format for comment not supported yet")
     140
     141    return string
     142    # }}}
  • issm/trunk-jpl/src/m/miscellaneous/isnans.py

    r21303 r24213  
    11import numpy as np
    22
     3
    34def isnans(array):
    4         """
    5         ISNANS: figure out if an array is nan. wrapper to isnan from matlab which stupidly does not allow this test  for structures!
     5    """
     6    ISNANS: figure out if an array is nan. wrapper to isnan from matlab which stupidly does not allow this test  for structures!
    67
    7            Usage:    isnans(array)
     8       Usage:    isnans(array)
    89
    9               See also : ISNAN
    10         """
     10          See also : ISNAN
     11    """
    1112
    12         if   isinstance(array,(tuple,list,dict)):
    13                 returnvalue=0
    14         else:
    15                 returnvalue=np.isnan(array)
     13    if isinstance(array, (tuple, list, dict)):
     14        returnvalue = 0
     15    else:
     16        returnvalue = np.isnan(array)
    1617
    17         return returnvalue
    18 
     18    return returnvalue
  • issm/trunk-jpl/src/m/miscellaneous/normfit_issm.py

    r23095 r24213  
    11import numpy as np
    2 
    3 from scipy.stats import chi2,t
    4 
    5 #
     2from scipy.stats import chi2, t
    63#  wrapper for normfit to avoid using the matlab statistics toolbox.
    7 #
    8 def normfit_issm(x,alpha=None):
    9 
    10         if alpha == None:
    11                 alpha=0.05
    12        
    13 
    14         #  check for any NaN in any columns
    15         if not np.isnan(x).any():
    16 
    17                 #  explicitly calculate the moments
    18                 muhat   =np.mean(x,0)
    19                 # numpy defaults to 0 delta degrees of freedom; matlab uses 1
    20                 sigmahat=np.std(x,0,ddof=1)
    21                
    22                 # no way to ask this in python, assume 4 outputs
    23                 #if (nargout>2):
    24                
    25                 prob=1.-alpha/2.
    26 
    27                 if (np.size(x,0) == 1):
    28                         # operate like matlab normfit, mean, std, etc.
    29                         n=np.size(x)
    30                 else:
    31                         n=np.size(x,0)
    32                        
    33                 muci    =np.zeros((2,np.size(muhat   )))
    34                 sigmaci =np.zeros((2,np.size(sigmahat)))
    35 
    36                 try:
    37                         muci[0,:]   =muhat-t.ppf(prob,n-1)*sigmahat/np.sqrt(n)
    38                         muci[1,:]   =muhat+t.ppf(prob,n-1)*sigmahat/np.sqrt(n)
    39                         sigmaci[0,:]=sigmahat*np.sqrt((n-1)/chi2.ppf(prob   ,n-1))
    40                         sigmaci[1,:]=sigmahat*np.sqrt((n-1)/chi2.ppf(1.-prob,n-1))
    41                 except:
    42                         muci[0,:]   =muhat
    43                         muci[1,:]   =muhat
    44                         sigmaci[0,:]=sigmahat
    45                         sigmaci[1,:]=sigmahat
    46         else:
    47                 #  must loop over columns, since number of elements could be different
    48                 muhat   =np.zeros((1,np.size(x,1)))
    49                 sigmahat=np.zeros((1,np.size(x,1)))
    50                 muci    =np.zeros((2,np.size(x,1)))
    51                 sigmaci =np.zeros((2,np.size(x,1)))
    52 
    53                 #  remove any NaN and recursively call column
    54                 for j in range(np.shape(x,1)):
    55                         [muhat[j],sigmahat[j],muci[:,j],sigmaci[:,j]]=normfit_issm(x[not np.isnan(x[:,j]),j],alpha)
    56 
    57         return [muhat,sigmahat,muci,sigmaci]
    58                
    59        
    604
    615
     6def normfit_issm(x, alpha=None):
     7
     8    if alpha is None:
     9        alpha = 0.05
     10
     11    #  check for any NaN in any columns
     12    if not np.isnan(x).any():
     13
     14        #  explicitly calculate the moments
     15        muhat = np.mean(x, 0)
     16    # numpy defaults to 0 delta degrees of freedom; matlab uses 1
     17        sigmahat = np.std(x, 0, ddof=1)
     18
     19    # no way to ask this in python, assume 4 outputs
     20    #if (nargout > 2):
     21        prob = 1. - alpha / 2.
     22
     23        if (np.size(x, 0) == 1):
     24            # operate like matlab normfit, mean, std, etc.
     25            n = np.size(x)
     26        else:
     27            n = np.size(x, 0)
     28
     29        muci = np.zeros((2, np.size(muhat)))
     30        sigmaci = np.zeros((2, np.size(sigmahat)))
     31
     32        try:
     33            muci[0, :] = muhat - t.ppf(prob, n - 1) * sigmahat / np.sqrt(n)
     34            muci[1, :] = muhat + t.ppf(prob, n - 1) * sigmahat / np.sqrt(n)
     35            sigmaci[0, :] = sigmahat * np.sqrt((n - 1) / chi2.ppf(prob, n - 1))
     36            sigmaci[1, :] = sigmahat * np.sqrt((n - 1) / chi2.ppf(1. - prob, n - 1))
     37        except:
     38            muci[0, :] = muhat
     39            muci[1, :] = muhat
     40            sigmaci[0, :] = sigmahat
     41            sigmaci[1, :] = sigmahat
     42    else:
     43        #  must loop over columns, since number of elements could be different
     44        muhat = np.zeros((1, np.size(x, 1)))
     45        sigmahat = np.zeros((1, np.size(x, 1)))
     46        muci = np.zeros((2, np.size(x, 1)))
     47        sigmaci = np.zeros((2, np.size(x, 1)))
     48
     49    #  remove any NaN and recursively call column
     50        for j in range(np.shape(x, 1)):
     51            [muhat[j], sigmahat[j], muci[:, j], sigmaci[:, j]] = normfit_issm(x[not np.isnan(x[:, j]), j], alpha)
     52
     53    return [muhat, sigmahat, muci, sigmaci]
  • issm/trunk-jpl/src/m/miscellaneous/parallelrange.py

    r23716 r24213  
    1 #! /usr/bin/env python
    2 def parallelrange(rank,numprocs,globalsize):
    3         """
    4         PARALLELRANGE - from a rank, and a number of processors, figure out a range, for parallel tasks.
    5  
    6            Usage:
    7               i1,i2=parallelrange(rank,numprocs,globalsize)
    8         """
     1#! / usr / bin / env python
     2def parallelrange(rank, numprocs, globalsize):
     3    """
     4    PARALLELRANGE - from a rank, and a number of processors, figure out a range, for parallel tasks.
    95
    10         #We use floor. we under distribute rows. The rows left are then redistributed, therefore resulting in a more even distribution.
    11         num_local_rows=[int(globalsize/numprocs) for i in range(numprocs)]
     6       Usage:
     7          i1, i2 = parallelrange(rank, numprocs, globalsize)
     8    """
    129
    13         #There may be some rows left. Distribute evenly.
    14         row_rest=globalsize - numprocs*int(globalsize/numprocs)
     10    #We use floor. we under distribute rows. The rows left are then redistributed, therefore resulting in a more even distribution.
     11    num_local_rows = [int(globalsize / numprocs) for i in range(numprocs)]
    1512
    16         for i in range(row_rest):
    17                 num_local_rows[i]=num_local_rows[i]+1
     13    #There may be some rows left. Distribute evenly.
     14    row_rest = globalsize - numprocs * int(globalsize / numprocs)
    1815
    19         i1=0
    20         for i in range(rank-1):
    21                 i1+=num_local_rows[i]
    22         i2=i1+num_local_rows[rank-1]-1
     16    for i in range(row_rest):
     17        num_local_rows[i] = num_local_rows[i] + 1
    2318
    24         return i1,i2
     19    i1 = 0
     20    for i in range(rank - 1):
     21        i1 += num_local_rows[i]
     22    i2 = i1 + num_local_rows[rank - 1] - 1
    2523
     24    return i1, i2
  • issm/trunk-jpl/src/m/miscellaneous/prctile_issm.py

    r23095 r24213  
    22from scipy.interpolate import interp1d
    33
    4 #
     4
    55#  wrapper for prctile to avoid using the matlab statistics toolbox.
    6 #
    7 def prctile_issm(x,p,dim):
     6def prctile_issm(x, p, dim):
    87
    9         try:
    10                 raise RuntimeError('hello world')
     8    try:
     9        raise RuntimeError('hello world')
    1110
    12                 #numpy has no interpolation method that matches matlab's percentile function
    13                 #y = np.percentile(x,p,dim,interpolation='higher')
    14         except:
    15                 if len(np.shape(x)) > 2:
    16                         raise RuntimeError('Number of dimensions #d not implemented.'+str(len(np.shape(x))))
     11    #numpy has no interpolation method that matches matlab's percentile function
     12    #y = np.percentile(x, p, dim, interpolation = 'higher')
     13    except:
     14        if len(np.shape(x)) > 2:
     15            raise RuntimeError('Number of dimensions  #d not implemented.' + str(len(np.shape(x))))
    1716
    18                 # presumably at least 1 input value has been given
    19                 #       np.shape(integer) -> (), must be at least (1,)
    20                 psize=np.shape(p) or (1,)
    21                 if len(psize) > 1 and np.size(p,1)>1:
    22                         p=p.T
    23                
    24                 xsize=np.shape(x) or (1,)
    25                 if dim==2:
    26                         x=x.T
     17        # presumably at least 1 input value has been given
     18        #    np.shape(integer) - > (), must be at least (1, )
     19        psize = np.shape(p) or (1, )
     20        if len(psize) > 1 and np.size(p, 1) > 1:
     21            p = p.T
    2722
    28                 #  check for any NaN in any columns
    29                 if not np.isnan(x).any():
    30                         x=np.sort(x,axis=0)
    31                         n=np.size(x,0)
     23        xsize = np.shape(x) or (1, )
     24        if dim == 2:
     25            x = x.T
    3226
    33                         #  branch based on number of elements
    34                         if n>1:
    35                                 #  set up percent values and interpolate
    36                                 xi=[((i+0.5)*100/n) for i in range(n)]
    37                                 # scipy's interp1d returns a function
    38                                 y=interp1d(xi,x,axis=dim,bounds_error=False)
    39                                 y=y(p)
     27        #  check for any NaN in any columns
     28        if not np.isnan(x).any():
     29            x = np.sort(x, axis=0)
     30            n = np.size(x, 0)
    4031
    41                                 #  fill in high and low values outside of interp range
    42                                 if p>xi[n-1]:
    43                                         y=np.tile(x[n-1,:],1)
    44                                 if p<xi[0]:
    45                                         y=np.tile(x[0,:],1)
     32            #  branch based on number of elements
     33            if n > 1:
     34                #  set up percent values and interpolate
     35                xi = [((i + 0.5) * 100 / n) for i in range(n)]
     36                # scipy's interp1d returns a function
     37                y = interp1d(xi, x, axis=dim, bounds_error=False)
     38                y = y(p)
    4639
    47                         #  if one value, just copy it
    48                         elif n==1:
    49                                 y=np.tile(x[0,:],(len(p),1))
     40                #  fill in high and low values outside of interp range
     41                if p > xi[n - 1]:
     42                    y = np.tile(x[n - 1, :], 1)
     43                if p < xi[0]:
     44                    y = np.tile(x[0, :], 1)
    5045
    51                         #  if no values, use NaN
    52                         else:
    53                                 y=np.tile(float('NaN'),(size(p,0),size(x,0)))
    54                 else:
    55                         #  must loop over columns, since number of elements could be different
    56                         y=np.zeros((np.size(p,0),np.size(x,1)))
    57                         for j in range(np.size(x,1)):
    58                         #  remove any NaN and recursively call column
    59                                 y[:,j]=prctile_issm(x[np.where(not np.isnan(x[:,j]),j)],p)
     46            #  if one value, just copy it
     47            elif n == 1:
     48                y = np.tile(x[0, :], (len(p), 1))
    6049
    61                 if (np.min(xsize)==1 and len(xsize) > 1 and xsize[dim]>1 and len(p) > 1 and psize[1]>1) or (np.min(xsize)> 1 and dim==2):
    62                         y=y.T
     50            #  if no values, use NaN
     51            else:
     52                y = np.tile(float('NaN'), (np.size(p, 0), np.size(x, 0)))
     53        else:
     54            #  must loop over columns, since number of elements could be different
     55            y = np.zeros((np.size(p, 0), np.size(x, 1)))
     56            for j in range(np.size(x, 1)):
     57                #  remove any NaN and recursively call column
     58                y[:, j] = prctile_issm(x[np.where(not np.isnan(x[:, j]), j)], p)
    6359
    64         return y
     60        if (np.min(xsize) == 1 and len(xsize) > 1 and xsize[dim] > 1 and len(p) > 1 and psize[1] > 1) or (np.min(xsize) > 1 and dim == 2):
     61            y = y.T
    6562
     63    return y
  • issm/trunk-jpl/src/m/modules/BamgConvertMesh.py

    r20909 r24213  
    11from BamgConvertMesh_python import BamgConvertMesh_python
    22
    3 def BamgConvertMesh(index,x,y):
    4         """
    5         BAMGCONVERTMESH - Convert [index, x, y] to a bamg geom and mesh geom
    63
    7         Usage:
    8                 bamggeom, bamgmesh = BamgConvertMesh(index, x, y)
    9                 index: index of the mesh
    10                 x,y: coordinates of the nodes
    11         """
    12        
    13         #Call mex module
    14         bamggeom, bamgmesh = BamgConvertMesh_python(index,x,y)
     4def BamgConvertMesh(index, x, y):
     5    """
     6    BAMGCONVERTMESH - Convert [index, x, y] to a bamg geom and mesh geom
    157
    16         #return
    17         return bamggeom, bamgmesh
     8    Usage:
     9        bamggeom, bamgmesh = BamgConvertMesh(index, x, y)
     10        index: index of the mesh
     11        x, y: coordinates of the nodes
     12    """
     13
     14    #Call mex module
     15    bamggeom, bamgmesh = BamgConvertMesh_python(index, x, y)
     16
     17    #return
     18    return bamggeom, bamgmesh
  • issm/trunk-jpl/src/m/modules/BamgMesher.py

    r24115 r24213  
    77
    88    Usage:
    9             bamgmesh,bamggeom = BamgMesher(bamgmesh,bamggeom,bamgoptions);
     9            bamgmesh, bamggeom = BamgMesher(bamgmesh, bamggeom, bamgoptions)
    1010
    1111    bamgmesh: input bamg mesh
  • issm/trunk-jpl/src/m/modules/BamgTriangulate.py

    r20909 r24213  
    11from BamgTriangulate_python import BamgTriangulate_python
    22
    3 def BamgTriangulate(x,y):
    4         """
    5         BAMGTRIANGULATE
    63
    7         Usage:
    8                 index = BamgTriangulate(x,y)
     4def BamgTriangulate(x, y):
     5    """
     6    BAMGTRIANGULATE
    97
    10         index: index of the triangulation
    11         x,y: coordinates of the nodes
    12         """
     8    Usage:
     9        index = BamgTriangulate(x, y)
    1310
    14         # Call mex module
    15         index = BamgTriangulate_python(x,y)
    16         # return
    17         return index
     11    index: index of the triangulation
     12    x, y: coordinates of the nodes
     13    """
     14
     15    # Call mex module
     16    index = BamgTriangulate_python(x, y)
     17    # return
     18    return index
  • issm/trunk-jpl/src/m/modules/Chaco.py

    r23231 r24213  
    11from Chaco_python import Chaco_python
    22
    3 def Chaco(A,vwgts,ewgts,x,y,z,options,nparts,goal):
    4         '''CHACO
     3
     4def Chaco(A, vwgts, ewgts, x, y, z, options, nparts, goal):
     5    '''CHACO
    56
    67   Usage:
    7       assgn = Chaco(A,vwgts,ewgts,x,y,z,options,nparts,goal);
     8      assgn = Chaco(A, vwgts, ewgts, x, y, z, options, nparts, goal)
    89
    9    A:                   Input adjacency matrix
    10    vwgts:               weights for all vertices
    11    ewgts:               weights for all edges
    12    x,y,z:               coordinates for inertial method
    13    options:             architecture and partitioning options
    14    nparts:              number of parts options
    15    goal:                desired set sizes
     10   A:            Input adjacency matrix
     11   vwgts:        weights for all vertices
     12   ewgts:        weights for all edges
     13   x, y, z:        coordinates for inertial method
     14   options:        architecture and partitioning options
     15   nparts:        number of parts options
     16   goal:        desired set sizes
    1617'''
    17         # Call mex module
    18         assgn = Chaco_python(A,vwgts,ewgts,x,y,z,options,nparts,goal)
    19        
    20         return assgn
     18    # Call mex module
     19    assgn = Chaco_python(A, vwgts, ewgts, x, y, z, options, nparts, goal)
     20    return assgn
  • issm/trunk-jpl/src/m/modules/ContourToMesh.py

    r20909 r24213  
    11from ContourToMesh_python import ContourToMesh_python
    22
    3 def ContourToMesh(index,x,y,contourname,interptype,edgevalue):
    4         """
    5        
    6         CONTOURTOMESH - Flag the elements or nodes inside a contour
    73
    8                 Usage:
    9                         [in_nod,in_elem]=ContourToMesh(index,x,y,contourname,interptype,edgevalue)
     4def ContourToMesh(index, x, y, contourname, interptype, edgevalue):
     5    """
    106
    11                         index,x,y: mesh triangulation.
    12                         contourname: name of .exp file containing the contours.
    13                         interptype: string defining type of interpolation ('element', or 'node').
    14                         edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons.
    15                         in_nod: vector of flags (0 or 1), of size nel if interptype is set to 'node' or 'element and node',
    16                                 or of size 0 otherwise.
    17                         in_elem: vector of flags (0 or 1), of size nel if interptype is set to 'element' or 'element and node',
    18                                 or of size 0 otherwise.
     7    CONTOURTOMESH - Flag the elements or nodes inside a contour
    198
    20                 Example:
    21                         in_nod=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','node',1)
    22                         in_elements=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element',0)
    23                         [in_nodes,in_elements]=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element and node',0)
    24         """
    25         #Call mex module
    26         in_nod,in_elem = ContourToMesh_python(index,x,y,contourname,interptype,edgevalue)
     9        Usage:
     10            [in_nod, in_elem] = ContourToMesh(index, x, y, contourname, interptype, edgevalue)
    2711
    28         if interptype=='element':
    29                 return in_elem
    30         elif interptype=='node':
    31                 return in_nod
    32         elif interptype=='element and node':
    33                 return in_nod,in_elem
    34         else:
    35                 raise TypeError('interpolation type "{}" not supported yet'.format(interptype))
     12            index, x, y: mesh triangulation.
     13            contourname: name of .exp file containing the contours.
     14            interptype: string defining type of interpolation ('element', or 'node').
     15            edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons.
     16            in_nod: vector of flags (0 or 1), of size nel if interptype is set to 'node' or 'element and node',
     17                or of size 0 otherwise.
     18            in_elem: vector of flags (0 or 1), of size nel if interptype is set to 'element' or 'element and node',
     19                or of size 0 otherwise.
     20
     21        Example:
     22            in_nod = ContourToMesh(md.elements, md.x, md.y, 'Contour.exp', 'node', 1)
     23            in_elements = ContourToMesh(md.elements, md.x, md.y, 'Contour.exp', 'element', 0)
     24            [in_nodes, in_elements] = ContourToMesh(md.elements, md.x, md.y, 'Contour.exp', 'element and node', 0)
     25    """
     26    #Call mex module
     27    in_nod, in_elem = ContourToMesh_python(index, x, y, contourname, interptype, edgevalue)
     28
     29    if interptype == 'element':
     30        return in_elem
     31    elif interptype == 'node':
     32        return in_nod
     33    elif interptype == 'element and node':
     34        return in_nod, in_elem
     35    else:
     36        raise TypeError('interpolation type "{}" not supported yet'.format(interptype))
  • issm/trunk-jpl/src/m/modules/ContourToNodes.py

    r20909 r24213  
    11from ContourToNodes_python import ContourToNodes_python
    22
    3 def ContourToNodes(x,y,contourname,edgevalue):
    4         """
    5         CONTOURTONODES - flags vertices inside contour
    63
    7                 Usage:
    8                         flags = ContourToNodes(x,y,contourname,edgevalue);
     4def ContourToNodes(x, y, contourname, edgevalue):
     5    """
     6    CONTOURTONODES - flags vertices inside contour
    97
    10                 x,y: list of nodes
    11                 contourname: name of .exp file containing the contours, or resulting structure from call to expread
    12                 edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons
    13                 flags: vector of flags (0 or 1), of size nodes
    14         """
     8        Usage:
     9            flags = ContourToNodes(x, y, contourname, edgevalue)
    1510
    16         #Call mex module
    17         flags = ContourToNodes_python(x,y,contourname,edgevalue)
     11        x, y: list of nodes
     12        contourname: name of .exp file containing the contours, or resulting structure from call to expread
     13        edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons
     14        flags: vector of flags (0 or 1), of size nodes
     15    """
    1816
    19         #return
    20         return flags
     17    #Call mex module
     18    flags = ContourToNodes_python(x, y, contourname, edgevalue)
     19
     20    #return
     21    return flags
  • issm/trunk-jpl/src/m/modules/ElementConnectivity.py

    r20909 r24213  
    11from ElementConnectivity_python import ElementConnectivity_python
    22
    3 def ElementConnectivity(elements,nodeconnectivity):
    4         """
    5         ELEMENTCONNECTIVITY - Build element connectivity using node connectivity and elements
    63
    7                 Usage:
    8                         elementconnectivity = ElementConnectivity(elements,nodeconnectivity);
    9         """
    10         #Call mex module
    11         elementconnectivity = ElementConnectivity_python(elements,nodeconnectivity)
    12        
    13         #Return
    14         return elementconnectivity
     4def ElementConnectivity(elements, nodeconnectivity):
     5    """
     6    ELEMENTCONNECTIVITY - Build element connectivity using node connectivity and elements
     7
     8        Usage:
     9            elementconnectivity = ElementConnectivity(elements, nodeconnectivity)
     10    """
     11    #Call mex module
     12    elementconnectivity = ElementConnectivity_python(elements, nodeconnectivity)
     13
     14    #Return
     15    return elementconnectivity
  • issm/trunk-jpl/src/m/modules/InterpFromGridToMesh.py

    r20909 r24213  
    11from InterpFromGridToMesh_python import InterpFromGridToMesh_python
    22
    3 def InterpFromGridToMesh(x,y,data,x_mesh,y_mesh,default_value):
    4         """
    5         INTERPFROMGRIDTOMESH - Interpolation from a grid onto a list of points
     3
     4def InterpFromGridToMesh(x, y, data, x_mesh, y_mesh, default_value):
     5    """
     6    INTERPFROMGRIDTOMESH - Interpolation from a grid onto a list of points
    67
    78   Usage:
    8       data_mesh=InterpFromGridToMesh(x,y,data,x_mesh,y_mesh,default_value);
     9      data_mesh = InterpFromGridToMesh(x, y, data, x_mesh, y_mesh, default_value)
    910
    10    data:                matrix holding the data to be interpolated onto the mesh
    11    x,y:         coordinates of matrix data (x and y must be in increasing order)
    12    x_mesh,y_mesh:       coordinates of the points onto which we interpolate
    13         default_value:  vector of mesh interpolated data
     11   data:        matrix holding the data to be interpolated onto the mesh
     12   x, y:        coordinates of matrix data (x and y must be in increasing order)
     13   x_mesh, y_mesh:    coordinates of the points onto which we interpolate
     14    default_value:    vector of mesh interpolated data
    1415
    15         Example:
    16                 load('velocities.mat');
    17                 md.inversion.vx_obs=InterpFromGridToMesh(x_n,y_m,vx,md.mesh.x,md.mesh.y,0);
    18         """
    19         # Call mex module
    20         data_mesh=InterpFromGridToMesh_python(x,y,data,x_mesh,y_mesh,default_value)
    21         # Return
    22         return data_mesh
     16    Example:
     17        load('velocities.mat')
     18        md.inversion.vx_obs = InterpFromGridToMesh(x_n, y_m, vx, md.mesh.x, md.mesh.y, 0)
     19    """
     20    # Call mex module
     21    data_mesh = InterpFromGridToMesh_python(x, y, data, x_mesh, y_mesh, default_value)
     22    # Return
     23    return data_mesh
  • issm/trunk-jpl/src/m/modules/InterpFromMeshToGrid.py

    r21828 r24213  
    11from InterpFromMeshToGrid_python import InterpFromMeshToGrid_python
    22
    3 def InterpFromMeshToGrid(index,x,y,data,xgrid,ygrid,default_value):
    4         """
    5         INTERPFROMMESHTOGRID - Interpolation of a data defined on a mesh onto a grid
    63
    7                 This function is a multi-threaded mex file that interpolates a field defined
    8                 on a triangular mesh onto a regular grid
     4def InterpFromMeshToGrid(index, x, y, data, xgrid, ygrid, default_value):
     5    """
     6    INTERPFROMMESHTOGRID - Interpolation of a data defined on a mesh onto a grid
    97
    10                 index,x,y:      delaunay triangulation defining the mesh
    11                 meshdata:       vertex values of data to be interpolated
     8        This function is a multi - threaded mex file that interpolates a field defined
     9        on a triangular mesh onto a regular grid
    1210
    13                 xgrid,ygrid,:   parameters that define the grid
    14                 default_value:  value of points located out of the mesh
    15         """
    16         # Call mex module
    17         grid=InterpFromMeshToGrid_python(index,x,y,data,xgrid,ygrid,default_value)
    18         # Return
    19         return grid
     11        index, x, y:    delaunay triangulation defining the mesh
     12        meshdata:    vertex values of data to be interpolated
     13
     14        xgrid, ygrid, :    parameters that define the grid
     15        default_value:    value of points located out of the mesh
     16    """
     17    # Call mex module
     18    grid = InterpFromMeshToGrid_python(index, x, y, data, xgrid, ygrid, default_value)
     19    # Return
     20    return grid
  • issm/trunk-jpl/src/m/modules/InterpFromMeshToMesh2d.py

    r23168 r24213  
    1 from InterpFromMeshToMesh2d_python import InterpFromMeshToMesh2d_python
     1from InterpFromMeshToMesh2d_python import InterpFromMeshToMesh2d_python
     2
    23
    34def InterpFromMeshToMesh2d(*args):
    4         """
    5         INTERPFROMMESHTOMESH2D - Interpolation from a 2d triangular mesh onto a list of points
     5    """
     6    INTERPFROMMESHTOMESH2D - Interpolation from a 2d triangular mesh onto a list of points
    67
    7                 Usage:
    8                         data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp);
    9                         or data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp,OPTIONS);
    10                
    11                 index:  index of the mesh where data is defined (e.g. md.mesh.elements)
    12                 x,y:    coordinates of the nodes where data is defined
    13                 data:   matrix holding the data to be interpolated onto the mesh (one column per field)
    14                 x_interp,y_interp:      coordinates of the points onto which we interpolate
    15                 data_interp:    vector of mesh interpolated data
    16                 Available options:
    17                         default:        default value if point is outsite of triangulation (instead of linear interpolation)
     8            Usage:
     9                    data_interp = InterpFromMeshToMesh2d(index, x, y, data, x_interp, y_interp)
     10                    or data_interp = InterpFromMeshToMesh2d(index, x, y, data, x_interp, y_interp, OPTIONS)
    1811
    19         Example:
    20                 load('temperature.mat');
    21                 md.initialization.temperature=InterpFromMeshToMesh2d(index,x,y,temperature,md.mesh.x,md.mesh.y);
    22                 md.initialization.temperature=InterpFromMeshToMesh2d(index,x,y,temperature,md.mesh.x,md.mesh.y,'default',253);
    23         """
    24         # Call mex module
    25         data_interp = InterpFromMeshToMesh2d_python(*args)
    26         # Return
    27         return data_interp
     12            index:  index of the mesh where data is defined (e.g. md.mesh.elements)
     13            x, y:    coordinates of the nodes where data is defined
     14            data:   matrix holding the data to be interpolated onto the mesh (one column per field)
     15            x_interp, y_interp:      coordinates of the points onto which we interpolate
     16            data_interp:    vector of mesh interpolated data
     17            Available options:
     18                    default:        default value if point is outsite of triangulation (instead of linear interpolation)
     19
     20    Example:
     21            load('temperature.mat')
     22            md.initialization.temperature = InterpFromMeshToMesh2d(index, x, y, temperature, md.mesh.x, md.mesh.y)
     23            md.initialization.temperature = InterpFromMeshToMesh2d(index, x, y, temperature, md.mesh.x, md.mesh.y, 'default', 253)
     24    """
     25    # Call mex module
     26    data_interp = InterpFromMeshToMesh2d_python(*args)
     27    # Return
     28    return data_interp
  • issm/trunk-jpl/src/m/modules/InterpFromMeshToMesh3d.py

    r20909 r24213  
    11from InterpFromMeshToMesh3d_python import InterpFromMeshToMesh3d_python
    22
    3 def InterpFromMeshToMesh3d(index,x,y,z,data,x_prime,y_prime,z_prime,default_value):
    4         """
    5         INTERPFROMMESHTOMESH3D - Interpolation from a 3d hexahedron mesh onto a list of points
     3
     4def InterpFromMeshToMesh3d(index, x, y, z, data, x_prime, y_prime, z_prime, default_value):
     5    """
     6    INTERPFROMMESHTOMESH3D - Interpolation from a 3d hexahedron mesh onto a list of points
    67
    78   Usage:
    8       index:    index of the mesh where data is defined
    9       x,y,z:    coordinates of the nodes where data is defined
    10       data:     matrix holding the data to be interpolated onto the mesh
    11       x_prime,y_prime,z_prime:  coordinates of the points onto which we interpolate
    12       default_value:    default value if no data is found (holes)
    13       data_prime:       vector of mesh interpolated data
     9      index:    index of the mesh where data is defined
     10      x, y, z:    coordinates of the nodes where data is defined
     11      data:    matrix holding the data to be interpolated onto the mesh
     12      x_prime, y_prime, z_prime:    coordinates of the points onto which we interpolate
     13      default_value:    default value if no data is found (holes)
     14      data_prime:    vector of mesh interpolated data
    1415
    1516   Example:
    16       load('temperature.mat');
    17       md.initialization.temperature=InterpFromMeshToMesh3d(index,x,y,z,temperature,md.mesh.x,md.mesh.y,md.mesh.z,253);
    18         """
    19         # Call mex module
    20         data_prime = InterpFromMeshToMesh3d_python(index,x,y,z,data,x_prime,y_prime,z_prime,default_value)
    21        
    22         # Return
    23         return data_prime
     17      load('temperature.mat')
     18      md.initialization.temperature = InterpFromMeshToMesh3d(index, x, y, z, temperature, md.mesh.x, md.mesh.y, md.mesh.z, 253)
     19    """
     20    # Call mex module
     21    data_prime = InterpFromMeshToMesh3d_python(index, x, y, z, data, x_prime, y_prime, z_prime, default_value)
     22
     23    # Return
     24    return data_prime
  • issm/trunk-jpl/src/m/modules/IssmConfig.py

    r20909 r24213  
    11from IssmConfig_python import IssmConfig_python
    22
     3
    34def IssmConfig(string):
    4         """
    5         ISSMCONFIG
     5    """
     6    ISSMCONFIG
    67
    7                 Usage:
    8                         value = IssmConfig('string');
    9         """
     8        Usage:
     9            value = IssmConfig('string')
     10    """
    1011
    11         # Call mex module
    12         value = IssmConfig_python(string)
    13         # Return
    14         return value
    15 
     12    # Call mex module
     13    value = IssmConfig_python(string)
     14    # Return
     15    return value
  • issm/trunk-jpl/src/m/modules/MeshPartition.py

    r23716 r24213  
    11from MeshPartition_python import MeshPartition_python
    2 
    32from mesh3dprisms import *
    43from mesh2d import *
    54from mesh2dvertical import *
    65
    7 def MeshPartition(md,numpartitions):
    8         '''MESHPARTITION - Partition mesh according to the number of areas, using Metis library.
    96
    10            Usage:
    11                         [element_partitioning,node_partitioning]=MeshPartition(md.mesh,numpartitions)
     7def MeshPartition(md, numpartitions):
     8    '''MESHPARTITION - Partition mesh according to the number of areas, using Metis library.
    129
    13            element_partitioning: Vector of partitioning area numbers, for every element.
    14            node_partitioning: Vector of partitioning area numbers, for every node.
     10       Usage:
     11            [element_partitioning, node_partitioning] = MeshPartition(md.mesh, numpartitions)
     12
     13       element_partitioning: Vector of partitioning area numbers, for every element.
     14       node_partitioning: Vector of partitioning area numbers, for every node.
    1515'''
    16         if md == None or numpartitions == None:
    17                 print((MeshPartition.__doc__))
    18                 raise RuntimeError('Wrong usage (see above)')
     16    if md is None or numpartitions is None:
     17        print((MeshPartition.__doc__))
     18        raise RuntimeError('Wrong usage (see above)')
    1919
    20         #Get mesh info from md.mesh
    21         numberofvertices = md.mesh.numberofvertices
    22         numberofelements = md.mesh.numberofelements
    23         elements         = md.mesh.elements
    24         numberofelements2d = 0
    25         numberofvertices2d = 0
    26         numberoflayers     = 1
    27         elements2d         = []
    28         if isinstance(md.mesh,mesh3dprisms):
    29                 elementtype = 'Penta'
    30                 numberofelements2d = md.mesh.numberofelements2d
    31                 numberofvertices2d = md.mesh.numberofvertices2d
    32                 numberoflayers     = md.mesh.numberoflayers
    33                 elements2d         = md.mesh.elements2d
    34         elif isinstance(md.mesh,mesh2d):
    35                 elementtype = 'Tria'
    36         elif isinstance(md.mesh,mesh2dvertical):
    37                 elementtype = 'Tria'
     20    #Get mesh info from md.mesh
     21    numberofvertices = md.mesh.numberofvertices
     22    elements = md.mesh.elements
     23    numberofvertices2d = 0
     24    numberoflayers = 1
     25    elements2d = []
     26    if isinstance(md.mesh, mesh3dprisms):
     27        elementtype = 'Penta'
     28        numberofvertices2d = md.mesh.numberofvertices2d
     29        numberoflayers = md.mesh.numberoflayers
     30        elements2d = md.mesh.elements2d
     31    elif isinstance(md.mesh, mesh2d):
     32        elementtype = 'Tria'
     33    elif isinstance(md.mesh, mesh2dvertical):
     34        elementtype = 'Tria'
    3835
    39         #Call module
    40         [element_partitioning, node_partitioning] = MeshPartition_python(numberofvertices, elements, numberofvertices2d, elements2d, numberoflayers,elementtype, numpartitions)
     36    #Call module
     37    [element_partitioning, node_partitioning] = MeshPartition_python(numberofvertices, elements, numberofvertices2d, elements2d, numberoflayers, elementtype, numpartitions)
    4138
    42         return [element_partitioning, node_partitioning]
     39    return [element_partitioning, node_partitioning]
  • issm/trunk-jpl/src/m/modules/MeshProfileIntersection.py

    r20909 r24213  
    11from MeshProfileIntersection_python import MeshProfileIntersection_python
    22
    3 def MeshProfileIntersection(index,x,y,filename):
    4         """
    5         MESHPROFILEINTERSECTION - Takes a .exp file (made of several profiles), and figures out its intersection with a mesh
    6                 Usage:
    7                         [segments]=MeshProfileIntersection(index,x,y,filename);
    8                
    9                 input:
    10                           index,x,y is a triangulation
    11                           filename: name of Argus style .exp file containing the segments (can be groups of disconnected segments)
    123
    13                 output:
    14                           segments: array made of x1,y1,x2,y2,element_id lines (x1,y1) and (x2,y2) are segment extremities for a segment
    15                           belonging to the elemnt_id element. there are as many lines in segments as there are segments intersecting the
    16                           mesh.
    17         """
    18        
    19         # Call mex module
    20         segments = MeshProfileIntersection_python(index,x,y,filename)
     4def MeshProfileIntersection(index, x, y, filename):
     5    """
     6    MESHPROFILEINTERSECTION - Takes a .exp file (made of several profiles), and figures out its intersection with a mesh
     7        Usage:
     8            [segments] = MeshProfileIntersection(index, x, y, filename)
    219
    22         # Return
    23         return segments
     10        input:
     11              index, x, y is a triangulation
     12              filename: name of Argus style .exp file containing the segments (can be groups of disconnected segments)
     13
     14        output:
     15              segments: array made of x1, y1, x2, y2, element_id lines (x1, y1) and (x2, y2) are segment extremities for a segment
     16              belonging to the elemnt_id element. there are as many lines in segments as there are segments intersecting the
     17              mesh.
     18    """
     19
     20    # Call mex module
     21    segments = MeshProfileIntersection_python(index, x, y, filename)
     22
     23    # Return
     24    return segments
  • issm/trunk-jpl/src/m/modules/NodeConnectivity.py

    r20909 r24213  
    11from NodeConnectivity_python import NodeConnectivity_python
    22
    3 def NodeConnectivity(elements,numnodes):
    4         """
    5         NODECONNECTIVITY - Build node connectivity from elements
    63
    7                 Usage:
    8                         connectivity = NodeConnectivity(elements, numnodes);
    9         """
    10         # Call mex module
    11         connectivity = NodeConnectivity_python(elements,numnodes)
     4def NodeConnectivity(elements, numnodes):
     5    """
     6    NODECONNECTIVITY - Build node connectivity from elements
    127
    13         # Return
    14         return connectivity
     8        Usage:
     9            connectivity = NodeConnectivity(elements, numnodes)
     10    """
     11    # Call mex module
     12    connectivity = NodeConnectivity_python(elements, numnodes)
    1513
     14    # Return
     15    return connectivity
  • issm/trunk-jpl/src/m/modules/ProcessRifts.py

    r22498 r24213  
    11from ProcessRifts_python import ProcessRifts_python
    22
    3 def ProcessRifts(index1,x1,y1,segments1,segmentmarkers1):
    4         """
    5         TRIMESHPROCESSRIFTS - Split a mesh where a rift (or fault) is present
    63
    7            Usage:
    8                    [index2,x2,y2,segments2,segmentmarkers2,rifts2]=ProcessRifts(index1,x1,y1,segments1,segmentmarkers1);
     4def ProcessRifts(index1, x1, y1, segments1, segmentmarkers1):
     5    """
     6    TRIMESHPROCESSRIFTS - Split a mesh where a rift (or fault) is present
    97
    10            (index1,x1,y1,segments1,segmentmarkers1):    An initial triangulation.
    11            [index2,x2,y2,segments2,segmentmarkers2,rifts2]:     The resulting triangulation where rifts have been processed.
    12         """
    13         # Call mex module
    14         index2,x2,y2,segments2,segmentmarkers2,rifts2 = ProcessRifts_python(index1,x1,y1,segments1,segmentmarkers1)
    15         # Return
    16         return index2,x2,y2,segments2,segmentmarkers2,rifts2
     8       Usage:
     9           [index2, x2, y2, segments2, segmentmarkers2, rifts2] = ProcessRifts(index1, x1, y1, segments1, segmentmarkers1)
     10
     11       (index1, x1, y1, segments1, segmentmarkers1):    An initial triangulation.
     12       [index2, x2, y2, segments2, segmentmarkers2, rifts2]:    The resulting triangulation where rifts have been processed.
     13    """
     14    # Call mex module
     15    index2, x2, y2, segments2, segmentmarkers2, rifts2 = ProcessRifts_python(index1, x1, y1, segments1, segmentmarkers1)
     16    # Return
     17    return index2, x2, y2, segments2, segmentmarkers2, rifts2
  • issm/trunk-jpl/src/m/modules/Scotch.py

    r23231 r24213  
    11from Scotch_python import Scotch_python
    22
    3 def Scotch(*varargin):
    4         '''SCOTCH - Scotch partitioner
     3
     4def Scotch(* varargin):
     5    '''SCOTCH - Scotch partitioner
    56
    67   Usage:
    7       maptab=Scotch(adjmat,vertlb,vertwt,edgewt,archtyp,archpar,Scotch-specific parameters)
     8      maptab = Scotch(adjmat, vertlb, vertwt, edgewt, archtyp, archpar, Scotch - specific parameters)
    89'''
    9         # Call mex module
    10         maptab=Scotch_python(*varargin)
     10    # Call mex module
     11    maptab = Scotch_python(* varargin)
    1112
    12         return maptab
     13    return maptab
  • issm/trunk-jpl/src/m/os/issmdir.py

    r17480 r24213  
    22import MatlabFuncs as m
    33
     4
    45def issmdir():
    5         """
    6         ISSMDIR - Get ISSM_DIR environment variable
    7  
    8            Usage:
    9               ISSM_DIR=issmdir()
    10         """
     6    """
     7    ISSMDIR - Get ISSM_DIR environment variable
    118
    12         if not m.ispc():
    13                 ISSM_DIR =os.environ['ISSM_DIR']
    14         else:
    15                 ISSM_DIR =os.environ['ISSM_DIR_WIN']
    16                 if m.strcmpi(ISSM_DIR[-1],'/') or m.strcmpi(ISSM_DIR[-1],'\\'):
    17                         ISSM_DIR = ISSM_DIR[:-1]    #shave off the last '/'
     9       Usage:
     10          ISSM_DIR = issmdir()
     11    """
    1812
    19         if not ISSM_DIR:
    20                 raise RuntimeError("issmdir error message: 'ISSM_DIR' environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!")
     13    if not m.ispc():
     14        ISSM_DIR = os.environ['ISSM_DIR']
     15    else:
     16        ISSM_DIR = os.environ['ISSM_DIR_WIN']
     17        if m.strcmpi(ISSM_DIR[-1], '/') or m.strcmpi(ISSM_DIR[-1], '\\'):
     18            ISSM_DIR = ISSM_DIR[: - 1]  #shave off the last '/'
    2119
    22         return ISSM_DIR
     20    if not ISSM_DIR:
     21        raise RuntimeError("issmdir error message: 'ISSM_DIR' environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!")
    2322
     23    return ISSM_DIR
  • issm/trunk-jpl/src/m/os/issmscpin.py

    r23772 r24213  
    55import MatlabFuncs as m
    66
    7 def issmscpin(host, login,port,path, packages):
    8         """
    9         ISSMSCPIN get packages from host, using scp on unix, and pscp on windows
    107
    11            usage: issmscpin(host,packages,path)
    12         """
     8def issmscpin(host, login, port, path, packages):
     9    """
     10    ISSMSCPIN get packages from host, using scp on unix, and pscp on windows
    1311
    14         #first get hostname
    15         hostname=gethostname()
     12       usage: issmscpin(host, packages, path)
     13    """
    1614
    17         #first be sure packages are not in the current directory, this could conflict with pscp on windows.
    18         #remove warnings in case the files do not exist
    19         for package in packages:
    20                 try:
    21                         os.remove(package)
    22                 except OSError as e:
    23                         pass
     15    #first get hostname
     16    hostname = gethostname()
    2417
    25         #if hostname and host are the same, do a simple copy
    26         if m.strcmpi(hostname,host):
     18    #first be sure packages are not in the current directory, this could conflict with pscp on windows.
     19    #remove warnings in case the files do not exist
     20    for package in packages:
     21        try:
     22            os.remove(package)
     23        except OSError as e:
     24            pass
    2725
    28                 for package in packages:
    29                         try:
    30                                 shutil.copy(os.path.join(path,package),os.getcwd())    #keep going, even if success=0
    31                         except OSError as e:
    32                                 pass
     26    #if hostname and host are the same, do a simple copy
     27    if m.strcmpi(hostname, host):
    3328
    34         else:
    35                 if m.ispc():
    36                         #use the putty project pscp.exe: it should be in the path.
    37                         #get ISSM_DIR variable
    38                         if 'ISSM_DIR_WIN' in os.environ:
    39                                 ISSM_DIR=os.environ['ISSM_DIR_WIN'][1:-2]
    40                         else:
    41                                 raise OSError("issmscpin error message: could not find ISSM_DIR_WIN environment variable.")
     29        for package in packages:
     30            try:
     31                shutil.copy(os.path.join(path, package), os.getcwd())  #keep going, even if success = 0
     32            except OSError as e:
     33                pass
    4234
    43                         username=eval(input('Username: (quoted string) '))
    44                         key=eval(input('Key: (quoted string) '))
     35    else:
     36        if m.ispc():
     37            #use the putty project pscp.exe: it should be in the path.
     38            #get ISSM_DIR variable
     39            if 'ISSM_DIR_WIN' in os.environ:
     40                ISSM_DIR = os.environ['ISSM_DIR_WIN'][1: - 2]
     41            else:
     42                raise OSError("issmscpin error message: could not find ISSM_DIR_WIN environment variable.")
    4543
    46                         for package in packages:
    47                                 try:
    48                                         subprocess.check_call('%s/externalpackages/ssh/pscp.exe -l "%s" -pw "%s" %s:%s %s' % (ISSM_DIR,username,key,host,os.path.join(path,package),os.getcwd()),shell=True)
    49                                 except CalledProcessError as e:
    50                                         raise CalledProcessError("issmscpin error message: could not call putty pscp.")
     44            username = eval(input('Username: (quoted string) '))
     45            key = eval(input('Key: (quoted string) '))
    5146
    52                 else:
    53                         #just use standard unix scp
    54                         #string to copy multiple files using scp:
    55                         string="'{"+','.join([str(x) for x in packages])+"}'"
    56                         if port:
    57                                 subprocess.call('scp -P {} {}@localhost:{} {}/. '.format(port,login,os.path.join(path,string),os.getcwd()),shell=True)
    58                         else:
    59                                 subprocess.call('scp -T {}@{}:{} {}/.'.format(login,host,os.path.join(path,string),os.getcwd()),shell=True)
    60                         #check scp worked
    61                         for package in packages:
    62                                 if not os.path.exists(os.path.join('.',package)):
    63                                         raise OSError("issmscpin error message: could not call scp on *nix system for file '{}'".format(package))
     47            for package in packages:
     48                try:
     49                    subprocess.check_call('%s/externalpackages/ssh/pscp.exe -l "%s" -pw "%s" %s:%s %s' % (ISSM_DIR, username, key, host, os.path.join(path, package), os.getcwd()), shell=True)
     50                except CalledProcessError as e:
     51                    raise CalledProcessError("issmscpin error message: could not call putty pscp.")
     52
     53        else:
     54            #just use standard unix scp
     55            #string to copy multiple files using scp:
     56            string = "'{" + ','.join([str(x) for x in packages]) + "}'"
     57            if port:
     58                subprocess.call('scp -P {} {}@localhost:{} {}/. '.format(port, login, os.path.join(path, string), os.getcwd()), shell=True)
     59            else:
     60                subprocess.call('scp -T {}@{}:{} {}/.'.format(login, host, os.path.join(path, string), os.getcwd()), shell=True)
     61    #check scp worked
     62            for package in packages:
     63                if not os.path.exists(os.path.join('.', package)):
     64                    raise OSError("issmscpin error message: could not call scp on * nix system for file '{}'".format(package))
  • issm/trunk-jpl/src/m/os/issmscpout.py

    r23716 r24213  
    1 from socket  import gethostname
     1from socket import gethostname
    22import subprocess
    33import os
    44import MatlabFuncs as m
    55
    6 def issmscpout(host,path,login,port,packages):
    7         """
    8         ISSMSCPOUT send packages to a host, using scp on unix, and pscp on windows
    9  
    10            usage: issmscpout(host,path,packages)
    11         """
    126
    13         #get hostname
    14         hostname=gethostname();
     7def issmscpout(host, path, login, port, packages):
     8    """
     9    ISSMSCPOUT send packages to a host, using scp on unix, and pscp on windows
    1510
    16         #if hostname and host are the same, do a simple copy
     11       usage: issmscpout(host, path, packages)
     12    """
    1713
    18         if m.strcmpi(host,hostname):
    19                 for package in packages:
    20                         here=os.getcwd()
    21                         os.chdir(path)
    22                         try:
    23                                 os.remove(package)
    24                         except OSError as e:
    25                                 pass
    26                         subprocess.call('ln -s %s %s' % (os.path.join(here,package),path),shell=True)
    27                         os.chdir(here)
    28         else:
    29                 if m.ispc():
    30                         #use the putty project pscp.exe: it should be in the path.
    31                
    32                         #get ISSM_DIR variable
    33                         if 'ISSM_DIR_WIN' in os.environ:
    34                                 ISSM_DIR=os.environ['ISSM_DIR_WIN'][1:-2]
    35                         else:
    36                                 raise OSError("issmscpout error message: could not find ISSM_DIR_WIN environment variable.")
     14    #get hostname
     15    hostname = gethostname()
    3716
    38                         username=eval(input('Username: (quoted string) '))
    39                         key=eval(input('Key: (quoted string) '))
     17    #if hostname and host are the same, do a simple copy
    4018
    41                         for package in packages:
    42                                 try:
    43                                         subprocess.check_call('%s/externalpackages/ssh/pscp.exe -l "%s" -pw "%s" %s %s:%s' % (ISSM_DIR,username,key,package,host,path),shell=True)
    44                                 except CalledProcessError as e:
    45                                         raise CalledProcessError("issmscpout error message: could not call putty pscp.")
     19    if m.strcmpi(host, hostname):
     20        for package in packages:
     21            here = os.getcwd()
     22            os.chdir(path)
     23            try:
     24                os.remove(package)
     25            except OSError:
     26                pass
     27            subprocess.call('ln -s %s %s' % (os.path.join(here, package), path), shell=True)
     28            os.chdir(here)
     29    else:
     30        if m.ispc():
     31            #use the putty project pscp.exe: it should be in the path.
     32            #get ISSM_DIR variable
     33            if 'ISSM_DIR_WIN' in os.environ:
     34                ISSM_DIR = os.environ['ISSM_DIR_WIN'][1: - 2]
     35            else:
     36                raise OSError("issmscpout error message: could not find ISSM_DIR_WIN environment variable.")
    4637
    47                 else:
    48                         #just use standard unix scp
    49                         #create string of packages being sent
    50                         string=''
    51                         for package in packages:
    52                                 string+=' '+package
    53                         string+=' '
    54                
    55                         if port:
    56                                 subprocess.call('scp -P %d %s %s@localhost:%s' % (port,string,login,path),shell=True)
    57                         else:
    58                                 subprocess.call('scp %s %s@%s:%s' % (string,login,host,path),shell=True)
     38            username = eval(input('Username: (quoted string) '))
     39            key = eval(input('Key: (quoted string) '))
    5940
     41            for package in packages:
     42                try:
     43                    subprocess.check_call('%s/externalpackages/ssh/pscp.exe -l "%s" -pw "%s" %s %s:%s' % (ISSM_DIR, username, key, package, host, path), shell=True)
     44                except CalledProcessError as e:
     45                    raise CalledProcessError("issmscpout error message: could not call putty pscp.")
     46
     47        else:
     48            #just use standard unix scp
     49            #create string of packages being sent
     50            string = ''
     51            for package in packages:
     52                string += ' ' + package
     53            string += ' '
     54
     55            if port:
     56                subprocess.call('scp - P %d %s %s@localhost:%s' % (port, string, login, path), shell=True)
     57            else:
     58                subprocess.call('scp %s %s@%s:%s' % (string, login, host, path), shell=True)
  • issm/trunk-jpl/src/m/os/issmssh.py

    r23716 r24213  
    55import MatlabFuncs as m
    66
    7 def issmssh(host,login,port,command):
    8         """
    9         ISSMSSH - wrapper for OS independent ssh command.
    10  
    11            usage:
    12               issmssh(host,command)
    13         """
    147
    15         #first get hostname
    16         hostname=gethostname()
     8def issmssh(host, login, port, command):
     9    """
     10    ISSMSSH - wrapper for OS independent ssh command.
    1711
    18         #if same as host, just run the command.
    19         if m.strcmpi(host,hostname):
    20                 subprocess.call(command,shell=True)
    21         else:
    22                 if m.ispc():
    23                         #use the putty project plink.exe: it should be in the path.
    24                
    25                         #get ISSM_DIR variable
    26                         if 'ISSM_DIR_WIN' in os.environ:
    27                                 ISSM_DIR=os.environ['ISSM_DIR_WIN'][1:-2]
    28                         else:
    29                                 raise OSError("issmssh error message: could not find ISSM_DIR_WIN environment variable.")
     12       usage:
     13          issmssh(host, command)
     14    """
    3015
    31                         username=eval(input('Username: (quoted string) '))
    32                         key=eval(input('Key: (quoted string) '))
     16    #first get hostname
     17    hostname = gethostname()
    3318
    34                         subprocess.call('%s/externalpackages/ssh/plink.exe -ssh -l "%s" -pw "%s" %s "%s"' % (ISSM_DIR,username,key,host,command),shell=True);
     19    #if same as host, just run the command.
     20    if m.strcmpi(host, hostname):
     21        subprocess.call(command, shell=True)
     22    else:
     23        if m.ispc():
     24            #use the putty project plink.exe: it should be in the path.
     25            #get ISSM_DIR variable
     26            if 'ISSM_DIR_WIN' in os.environ:
     27                ISSM_DIR = os.environ['ISSM_DIR_WIN'][1: - 2]
     28            else:
     29                raise OSError("issmssh error message: could not find ISSM_DIR_WIN environment variable.")
    3530
    36                 else:
    37                         #just use standard unix ssh
    38                         if port:
    39                                 subprocess.call('ssh -l %s -p %d localhost "%s"' % (login,port,command),shell=True)
    40                         else:
    41                                 subprocess.call('ssh -l %s %s "%s"' % (login,host,command),shell=True)
     31            username = eval(input('Username: (quoted string) '))
     32            key = eval(input('Key: (quoted string) '))
    4233
    43         # The following code was added to fix:
    44         # "IOError: [Errno 35] Resource temporarily unavailable"
    45         # on the Mac when trying to display md after the solution.
    46         # (from http://code.google.com/p/robotframework/issues/detail?id=995)
     34            subprocess.call('%s/externalpackages/ssh/plink.exe-ssh - l "%s" - pw "%s" %s "%s"' % (ISSM_DIR, username, key, host, command), shell=True)
    4735
    48         if _platform == "darwin":
    49                 # Make FreeBSD use blocking I/O like other platforms
    50                 import sys
    51                 import fcntl
    52                 from os import O_NONBLOCK
    53                
    54                 fd = sys.stdin.fileno()
    55                 flags = fcntl.fcntl(fd, fcntl.F_GETFL)
    56                 fcntl.fcntl(fd, fcntl.F_SETFL, flags & ~O_NONBLOCK)
    57                
    58                 fd = sys.stdout.fileno()
    59                 flags = fcntl.fcntl(fd, fcntl.F_GETFL)
    60                 fcntl.fcntl(fd, fcntl.F_SETFL, flags & ~O_NONBLOCK)
     36        else:
     37            #just use standard unix ssh
     38            if port:
     39                subprocess.call('ssh - l %s - p %d localhost "%s"' % (login, port, command), shell=True)
     40            else:
     41                subprocess.call('ssh - l %s %s "%s"' % (login, host, command), shell=True)
    6142
     43    # The following code was added to fix:
     44    # "IOError: [Errno 35] Resource temporarily unavailable"
     45    # on the Mac when trying to display md after the solution.
     46    # (from http: / / code.google.com / p / robotframework / issues / detail?id = 995)
     47    if _platform == "darwin":
     48        # Make FreeBSD use blocking I / O like other platforms
     49        import sys
     50        import fcntl
     51        from os import O_NONBLOCK
     52
     53        fd = sys.stdin.fileno()
     54        flags = fcntl.fcntl(fd, fcntl.F_GETFL)
     55        fcntl.fcntl(fd, fcntl.F_SETFL, flags & ~O_NONBLOCK)
     56
     57        fd = sys.stdout.fileno()
     58        flags = fcntl.fcntl(fd, fcntl.F_GETFL)
     59        fcntl.fcntl(fd, fcntl.F_SETFL, flags & ~O_NONBLOCK)
  • issm/trunk-jpl/src/m/parameterization/contourenvelope.py

    r23716 r24213  
    44from NodeConnectivity import NodeConnectivity
    55from ElementConnectivity import ElementConnectivity
    6 from mesh2d import mesh2d
    7 from mesh3dprisms import mesh3dprisms
     6from ContourToMesh import ContourToMesh
    87import MatlabFuncs as m
    98
    10 def contourenvelope(md,*args):
    11         """
    12         CONTOURENVELOPE - build a set of segments enveloping a contour .exp
    139
    14            Usage:
    15               segments=contourenvelope(md,varargin)
     10def contourenvelope(md, *args):
     11    """
     12    CONTOURENVELOPE - build a set of segments enveloping a contour .exp
    1613
    17            Example:
    18               segments=contourenvelope(md,'Stream.exp');
    19               segments=contourenvelope(md);
    20         """
     14       Usage:
     15          segments = contourenvelope(md, varargin)
    2116
    22         #some checks
    23         if len(args)>1:
    24                 raise RuntimeError("contourenvelope error message: bad usage")
     17       Example:
     18          segments = contourenvelope(md, 'Stream.exp')
     19          segments = contourenvelope(md)
     20    """
    2521
    26         if len(args)==1:
    27                 flags=args[0]
     22    #some checks
     23    if len(args) > 1:
     24        raise RuntimeError("contourenvelope error message: bad usage")
    2825
    29                 if   isinstance(flags,str):
    30                         file=flags
    31                         if not os.path.exists(file):
    32                                 raise IOError("contourenvelope error message: file '%s' not found" % file)
    33                         isfile=1
    34                 elif isinstance(flags,(bool,int,float)):
    35                         #do nothing for now
    36                         isfile=0
    37                 else:
    38                         raise TypeError("contourenvelope error message:  second argument should be a file or an elements flag")
     26    if len(args) == 1:
     27        flags = args[0]
    3928
    40         #Now, build the connectivity tables for this mesh.
    41         #Computing connectivity
    42         if np.size(md.mesh.vertexconnectivity,axis=0)!=md.mesh.numberofvertices and np.size(md.mesh.vertexconnectivity,axis=0)!=md.mesh.numberofvertices2d:
    43                 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices)[0]
    44         if np.size(md.mesh.elementconnectivity,axis=0)!=md.mesh.numberofelements and np.size(md.mesh.elementconnectivity,axis=0)!=md.mesh.numberofelements2d:
    45                 md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity)[0]
     29        if isinstance(flags, str):
     30            file = flags
     31            if not os.path.exists(file):
     32                raise IOError("contourenvelope error message: file '%s' not found" % file)
     33            isfile = 1
     34        elif isinstance(flags, (bool, int, float)):
     35            #do nothing for now
     36            isfile = 0
     37        else:
     38            raise TypeError("contourenvelope error message:  second argument should be a file or an elements flag")
    4639
    47         #get nodes inside profile
    48         elementconnectivity=copy.deepcopy(md.mesh.elementconnectivity)
    49         if md.mesh.dimension()==2:
    50                 elements=copy.deepcopy(md.mesh.elements)
    51                 x=copy.deepcopy(md.mesh.x)
    52                 y=copy.deepcopy(md.mesh.y)
    53                 numberofvertices=copy.deepcopy(md.mesh.numberofvertices)
    54                 numberofelements=copy.deepcopy(md.mesh.numberofelements)
    55         else:
    56                 elements=copy.deepcopy(md.mesh.elements2d)
    57                 x=copy.deepcopy(md.mesh.x2d)
    58                 y=copy.deepcopy(md.mesh.y2d)
    59                 numberofvertices=copy.deepcopy(md.mesh.numberofvertices2d)
    60                 numberofelements=copy.deepcopy(md.mesh.numberofelements2d)
     40    #Now, build the connectivity tables for this mesh.
     41    #Computing connectivity
     42    if np.size(md.mesh.vertexconnectivity, axis=0) != md.mesh.numberofvertices and np.size(md.mesh.vertexconnectivity, axis=0) != md.mesh.numberofvertices2d:
     43        md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements, md.mesh.numberofvertices)[0]
     44    if np.size(md.mesh.elementconnectivity, axis=0) != md.mesh.numberofelements and np.size(md.mesh.elementconnectivity, axis=0) != md.mesh.numberofelements2d:
     45        md.mesh.elementconnectivity = ElementConnectivity(md.mesh.elements, md.mesh.vertexconnectivity)[0]
    6146
    62         if len(args)==1:
     47    #get nodes inside profile
     48    elementconnectivity = copy.deepcopy(md.mesh.elementconnectivity)
     49    if md.mesh.dimension() == 2:
     50        elements = copy.deepcopy(md.mesh.elements)
     51        x = copy.deepcopy(md.mesh.x)
     52        y = copy.deepcopy(md.mesh.y)
     53        numberofvertices = copy.deepcopy(md.mesh.numberofvertices)
     54        numberofelements = copy.deepcopy(md.mesh.numberofelements)
     55    else:
     56        elements = copy.deepcopy(md.mesh.elements2d)
     57        x = copy.deepcopy(md.mesh.x2d)
     58        y = copy.deepcopy(md.mesh.y2d)
     59        numberofvertices = copy.deepcopy(md.mesh.numberofvertices2d)
     60        numberofelements = copy.deepcopy(md.mesh.numberofelements2d)
    6361
    64                 if isfile:
    65                         #get flag list of elements and nodes inside the contour
    66                         nodein=ContourToMesh(elements,x,y,file,'node',1)
    67                         elemin=(np.sum(nodein(elements),axis=1)==np.size(elements,axis=1))
    68                         #modify element connectivity
    69                         elemout=np.nonzero(np.logical_not(elemin))[0]
    70                         elementconnectivity[elemout,:]=0
    71                         elementconnectivity[np.nonzero(m.ismember(elementconnectivity,elemout+1))]=0
    72                 else:
    73                         #get flag list of elements and nodes inside the contour
    74                         nodein=np.zeros(numberofvertices)
    75                         elemin=np.zeros(numberofelements)
     62    if len(args) == 1:
    7663
    77                         pos=np.nonzero(flags)
    78                         elemin[pos]=1
    79                         nodein[elements[pos,:]-1]=1
     64        if isfile:
     65            #get flag list of elements and nodes inside the contour
     66            nodein = ContourToMesh(elements, x, y, file, 'node', 1)
     67            elemin = (np.sum(nodein(elements), axis=1) == np.size(elements, axis=1))
     68    #modify element connectivity
     69            elemout = np.nonzero(np.logical_not(elemin))[0]
     70            elementconnectivity[elemout, :] = 0
     71            elementconnectivity[np.nonzero(m.ismember(elementconnectivity, elemout + 1))] = 0
     72        else:
     73            #get flag list of elements and nodes inside the contour
     74            nodein = np.zeros(numberofvertices)
     75            elemin = np.zeros(numberofelements)
    8076
    81                         #modify element connectivity
    82                         elemout=np.nonzero(np.logical_not(elemin))[0]
    83                         elementconnectivity[elemout,:]=0
    84                         elementconnectivity[np.nonzero(m.ismember(elementconnectivity,elemout+1))]=0
     77            pos = np.nonzero(flags)
     78            elemin[pos] = 1
     79            nodein[elements[pos, :] - 1] = 1
    8580
    86         #Find element on boundary
    87         #First: find elements on the boundary of the domain
    88         flag=copy.deepcopy(elementconnectivity)
    89         if len(args)==1:
    90                 flag[np.nonzero(flag)]=elemin[flag[np.nonzero(flag)]]
    91         elementonboundary=np.logical_and(np.prod(flag,axis=1)==0,np.sum(flag,axis=1)>0)
     81    #modify element connectivity
     82            elemout = np.nonzero(np.logical_not(elemin))[0]
     83            elementconnectivity[elemout, :] = 0
     84            elementconnectivity[np.nonzero(m.ismember(elementconnectivity, elemout + 1))] = 0
    9285
    93         #Find segments on boundary
    94         pos=np.nonzero(elementonboundary)[0]
    95         num_segments=np.size(pos)
    96         segments=np.zeros((num_segments*3,3),int)
    97         count=0
     86    #Find element on boundary
     87    #First: find elements on the boundary of the domain
     88    flag = copy.deepcopy(elementconnectivity)
     89    if len(args) == 1:
     90        flag[np.nonzero(flag)] = elemin[flag[np.nonzero(flag)]]
     91    elementonboundary = np.logical_and(np.prod(flag, axis=1) == 0, np.sum(flag, axis=1) > 0)
    9892
    99         for el1 in pos:
    100                 els2=elementconnectivity[el1,np.nonzero(elementconnectivity[el1,:])[0]]-1
    101                 if np.size(els2)>1:
    102                         flag=np.intersect1d(np.intersect1d(elements[els2[0],:],elements[els2[1],:]),elements[el1,:])
    103                         nods1=elements[el1,:]
    104                         nods1=np.delete(nods1,np.nonzero(nods1==flag))
    105                         segments[count,:]=[nods1[0],nods1[1],el1+1]
     93    #Find segments on boundary
     94    pos = np.nonzero(elementonboundary)[0]
     95    num_segments = np.size(pos)
     96    segments = np.zeros((num_segments * 3, 3), int)
     97    count = 0
    10698
    107                         ord1=np.nonzero(nods1[0]==elements[el1,:])[0][0]
    108                         ord2=np.nonzero(nods1[1]==elements[el1,:])[0][0]
     99    for el1 in pos:
     100        els2 = elementconnectivity[el1, np.nonzero(elementconnectivity[el1, :])[0]] - 1
     101        if np.size(els2) > 1:
     102            flag = np.intersect1d(np.intersect1d(elements[els2[0], :], elements[els2[1], :]), elements[el1, :])
     103            nods1 = elements[el1, :]
     104            nods1 = np.delete(nods1, np.nonzero(nods1 == flag))
     105            segments[count, :] = [nods1[0], nods1[1], el1 + 1]
    109106
    110                         #swap segment nodes if necessary
    111                         if ( (ord1==0 and ord2==1) or (ord1==1 and ord2==2) or (ord1==2 and ord2==0) ):
    112                                 temp=segments[count,0]
    113                                 segments[count,0]=segments[count,1]
    114                                 segments[count,1]=temp
    115                         segments[count,0:2]=np.flipud(segments[count,0:2])
    116                         count+=1
    117                 else:
    118                         nods1=elements[el1,:]
    119                         flag=np.setdiff1d(nods1,elements[els2,:])
    120                         for j in range(0,3):
    121                                 nods=np.delete(nods1,j)
    122                                 if np.any(m.ismember(flag,nods)):
    123                                         segments[count,:]=[nods[0],nods[1],el1+1]
    124                                         ord1=np.nonzero(nods[0]==elements[el1,:])[0][0]
    125                                         ord2=np.nonzero(nods[1]==elements[el1,:])[0][0]
    126                                         if ( (ord1==0 and ord2==1) or (ord1==1 and ord2==2) or (ord1==2 and ord2==0) ):
    127                                                 temp=segments[count,0]
    128                                                 segments[count,0]=segments[count,1]
    129                                                 segments[count,1]=temp
    130                                         segments[count,0:2]=np.flipud(segments[count,0:2])
    131                                         count+=1
    132         segments=segments[0:count,:]
     107            ord1 = np.nonzero(nods1[0] == elements[el1, :])[0][0]
     108            ord2 = np.nonzero(nods1[1] == elements[el1, :])[0][0]
    133109
    134         return segments
     110    #swap segment nodes if necessary
     111            if ((ord1 == 0 and ord2 == 1) or (ord1 == 1 and ord2 == 2) or (ord1 == 2 and ord2 == 0)):
     112                temp = segments[count, 0]
     113                segments[count, 0] = segments[count, 1]
     114                segments[count, 1] = temp
     115            segments[count, 0:2] = np.flipud(segments[count, 0:2])
     116            count += 1
     117        else:
     118            nods1 = elements[el1, :]
     119            flag = np.setdiff1d(nods1, elements[els2, :])
     120            for j in range(0, 3):
     121                nods = np.delete(nods1, j)
     122                if np.any(m.ismember(flag, nods)):
     123                    segments[count, :] = [nods[0], nods[1], el1 + 1]
     124                    ord1 = np.nonzero(nods[0] == elements[el1, :])[0][0]
     125                    ord2 = np.nonzero(nods[1] == elements[el1, :])[0][0]
     126                    if ((ord1 == 0 and ord2 == 1) or (ord1 == 1 and ord2 == 2) or (ord1 == 2 and ord2 == 0)):
     127                        temp = segments[count, 0]
     128                        segments[count, 0] = segments[count, 1]
     129                        segments[count, 1] = temp
     130                    segments[count, 0:2] = np.flipud(segments[count, 0:2])
     131                    count += 1
     132    segments = segments[0:count, :]
    135133
     134    return segments
  • issm/trunk-jpl/src/m/parameterization/parameterize.py

    r23716 r24213  
    22import datetime
    33
    4 def parameterize(md,parametername):
    5         """
    6         PARAMETERIZE - parameterize a model
    74
    8            from a parameter python file, start filling in all the model fields that were not
    9            filled in by the mesh.py and mask.py model methods.
    10            Warning: the parameter file must be able to be run in Python
     5def parameterize(md, parametername):
     6    """
     7    PARAMETERIZE - parameterize a model
    118
    12            Usage:
    13               md=parameterize(md,parametername)
     9       from a parameter python file, start filling in all the model fields that were not
     10       filled in by the mesh.py and mask.py model methods.
     11       Warning: the parameter file must be able to be run in Python
    1412
    15            Example:
    16               md=parameterize(md,'Square.par');
    17         """
     13       Usage:
     14          md = parameterize(md, parametername)
    1815
    19         #some checks
    20         if not os.path.exists(parametername):
    21                 raise IOError("parameterize error message: file '%s' not found!" % parametername)
     16       Example:
     17          md = parameterize(md, 'Square.par')
     18    """
    2219
    23         #Try and run parameter file.
    24         exec(compile(open(parametername).read(), parametername, 'exec'))
     20    #some checks
     21    if not os.path.exists(parametername):
     22        raise IOError("parameterize error message: file '%s' not found!" % parametername)
    2523
    26         #Name and notes
    27         if not md.miscellaneous.name:
    28                 md.miscellaneous.name=os.path.basename(parametername).split('.')[0]
     24    #Try and run parameter file.
     25    exec(compile(open(parametername).read(), parametername, 'exec'))
    2926
    30         md.miscellaneous.notes="Model created by using parameter file: '%s' on: %s." % (parametername,datetime.datetime.strftime(datetime.datetime.now(),'%c'))
     27    #Name and notes
     28    if not md.miscellaneous.name:
     29        md.miscellaneous.name = os.path.basename(parametername).split('.')[0]
    3130
    32         return md
     31    md.miscellaneous.notes = "Model created by using parameter file: '%s' on: %s." % (parametername, datetime.datetime.strftime(datetime.datetime.now(), '%c'))
    3332
     33    return md
  • issm/trunk-jpl/src/m/parameterization/setflowequation.py

    r24058 r24213  
    44from FlagElements import FlagElements
    55
    6 def setflowequation(md,*args):
    7         """
    8         SETFLOWEQUATION - associate a solution type to each element
    9 
    10            This routine works like plotmodel: it works with an even number of inputs
    11            'SIA','SSA','HO','L1L2','FS' and 'fill' are the possible options
    12            that must be followed by the corresponding exp file or flags list
    13            It can either be a domain file (argus type, .exp extension), or an array of element flags.
    14            If user wants every element outside the domain to be
    15            setflowequationd, add '~' to the name of the domain file (ex: '~HO.exp');
    16            an empty string '' will be considered as an empty domain
    17            a string 'all' will be considered as the entire domain
    18            You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
    19 
    20            Usage:
    21               md=setflowequation(md,varargin)
    22 
    23            Example:
    24               md=setflowequation(md,'HO','HO.exp',fill','SIA','coupling','tiling');
    25         """
    26 
    27         #some checks on list of arguments
    28         if not isinstance(md,model) or not len(args):
    29                 raise TypeError("setflowequation error message")
    30 
    31         #process options
    32         options=pairoptions(*args)
    33         #       options=deleteduplicates(options,1);
    34 
    35         #Find_out what kind of coupling to use
    36         coupling_method=options.getfieldvalue('coupling','tiling')
    37         if not coupling_method in ['tiling','penalties']:
    38                 raise TypeError("coupling type can only be: tiling or penalties")
    39 
    40         #recover elements distribution
    41         SIAflag   = FlagElements(md,options.getfieldvalue('SIA',''))
    42         SSAflag = FlagElements(md,options.getfieldvalue('SSA',''))
    43         HOflag   = FlagElements(md,options.getfieldvalue('HO',''))
    44         L1L2flag     = FlagElements(md,options.getfieldvalue('L1L2',''))
    45         FSflag   = FlagElements(md,options.getfieldvalue('FS',''))
    46         filltype     = options.getfieldvalue('fill','none')
    47         #Flag the elements that have not been flagged as filltype
    48         if 'SIA' in filltype:
    49                 SIAflag= ~SSAflag & ~HOflag
    50         elif 'SSA' in filltype:
    51                 SSAflag=~SIAflag & ~HOflag & ~FSflag
    52         elif 'HO' in filltype:
    53                 HOflag=~SIAflag & ~SSAflag & ~FSflag
    54         #check that each element has at least one flag
    55         if not any(SIAflag+SSAflag+L1L2flag+HOflag+FSflag):
    56                 raise TypeError("elements type not assigned, supported models are 'SIA','SSA','HO' and 'FS'")
    57 
    58         #check that each element has only one flag
    59         if any(SIAflag+SSAflag+L1L2flag+HOflag+FSflag>1):
    60                 print("setflowequation warning message: some elements have several types, higher order type is used for them")
    61                 SIAflag[np.where(np.logical_and(SIAflag,SSAflag))]=False
    62                 SIAflag[np.where(np.logical_and(SIAflag,HOflag))]=False
    63                 SSAflag[np.where(np.logical_and(SSAflag,HOflag))]=False
    64 
    65                 #check that L1L2 is not coupled to any other model for now
    66                 if any(L1L2flag) and any(SIAflag+SSAflag+HOflag+FSflag):
    67                         raise TypeError('L1L2 cannot be coupled to any other model')
    68 
    69                 #Check that no HO or FS for 2d mesh
    70                 if domaintype(md.mesh)=='2Dhorizontal':
    71                         if any(FSflag+HOflag):
    72                                 raise TypeError('FS and HO elements not allowed in 2d mesh, extrude it first')
    73 
    74         #FS can only be used alone for now:
    75         if any(FSflag) and any(SIAflag):
    76                 raise TypeError("FS cannot be used with any other model for now, put FS everywhere")
    77 
    78         #Initialize node fields
    79         nodeonSIA=np.zeros(md.mesh.numberofvertices,bool)
    80         nodeonSIA[md.mesh.elements[np.where(SIAflag),:]-1]=True
    81         nodeonSSA=np.zeros(md.mesh.numberofvertices,bool)
    82         nodeonSSA[md.mesh.elements[np.where(SSAflag),:]-1]=True
    83         nodeonL1L2=np.zeros(md.mesh.numberofvertices,bool)
    84         nodeonL1L2[md.mesh.elements[np.where(L1L2flag),:]-1]=True
    85         nodeonHO=np.zeros(md.mesh.numberofvertices,bool)
    86         nodeonHO[md.mesh.elements[np.where(HOflag),:]-1]=True
    87         nodeonFS=np.zeros(md.mesh.numberofvertices,bool)
    88         noneflag=np.zeros(md.mesh.numberofelements,bool)
    89 
    90         #First modify FSflag to get rid of elements contrained everywhere (spc + border with HO or SSA)
    91         if any(FSflag):
    92                 fullspcnodes=np.logical_or(~np.isnan(md.stressbalance.spcvx)+~np.isnan(md.stressbalance.spcvy)+~np.isnan(md.stressbalance.spcvz),np.logical_and(nodeonHO,nodeonFS))    #find all the nodes on the boundary of the domain without icefront
    93                 fullspcelems=np.sum(fullspcnodes[md.mesh.elements-1],axis=1)==6    #find all the nodes on the boundary of the domain without icefront
    94                 FSflag[np.where(fullspcelems.reshape(-1))]=False
    95                 nodeonFS[md.mesh.elements[np.where(FSflag),:]-1]=True
    96 
    97         #Then complete with NoneApproximation or the other model used if there is no FS
    98         if any(FSflag):
    99                 if   any(HOflag):    #fill with HO
    100                         HOflag[~FSflag]=True
    101                         nodeonHO[md.mesh.elements[np.where(HOflag),:]-1]=True
    102                 elif any(SSAflag):    #fill with SSA
    103                         SSAflag[~FSflag]=True
    104                         nodeonSSA[md.mesh.elements[np.where(SSAflag),:]-1]=True
    105                 else:    #fill with none
    106                         noneflag[np.where(~FSflag)]=True
    107 
    108         #Now take care of the coupling between SSA and HO
    109         if not coupling_method in ['penalties']:
    110             md.stressbalance.vertex_pairing=np.array([])
    111         nodeonSSAHO=np.zeros(md.mesh.numberofvertices,bool)
    112         nodeonHOFS=np.zeros(md.mesh.numberofvertices,bool)
    113         nodeonSSAFS=np.zeros(md.mesh.numberofvertices,bool)
    114         SSAHOflag=np.zeros(md.mesh.numberofelements,bool)
    115         SSAFSflag=np.zeros(md.mesh.numberofelements,bool)
    116         HOFSflag=np.zeros(md.mesh.numberofelements,bool)
    117         if coupling_method=='penalties':
    118                 #Create the border nodes between HO and SSA and extrude them
    119                 numnodes2d=md.mesh.numberofvertices2d
    120                 numlayers=md.mesh.numberoflayers
    121                 bordernodes2d=np.where(np.logical_and(nodeonHO[0:numnodes2d],nodeonSSA[0:numnodes2d]))[0]+1    #Nodes connected to two different types of elements
    122 
    123                 #initialize and fill in penalties structure
    124                 if np.all(np.logical_not(np.isnan(bordernodes2d))):
    125                         penalties=np.zeros((0,2))
    126                         for     i in range(1,numlayers):
    127                                 penalties=np.vstack((penalties,np.vstack((bordernodes2d,bordernodes2d+md.mesh.numberofvertices2d*(i))).T))
    128                         md.stressbalance.vertex_pairing=penalties
    129 
    130         elif coupling_method=='tiling':
    131                 if any(SSAflag) and any(HOflag):    #coupling SSA HO
    132                         #Find node at the border
    133                         nodeonSSAHO[np.where(np.logical_and(nodeonSSA,nodeonHO))]=True
    134                         #SSA elements in contact with this layer become SSAHO elements
    135                         matrixelements=nodeonSSAHO[md.mesh.elements-1]
    136                         commonelements=np.sum(matrixelements,axis=1)!=0
    137                         commonelements[np.where(HOflag)]=False    #only one layer: the elements previously in SSA
    138                         SSAflag[np.where(commonelements)]=False    #these elements are now SSAHOelements
    139                         SSAHOflag[np.where(commonelements)]=True
    140                         nodeonSSA[:]=False
    141                         nodeonSSA[md.mesh.elements[np.where(SSAflag),:]-1]=True
    142 
    143                         #rule out elements that don't touch the 2 boundaries
    144                         pos=np.where(SSAHOflag)[0]
    145                         elist=np.zeros(np.size(pos),dtype=int)
    146                         elist = elist + np.sum(nodeonSSA[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
    147                         elist = elist - np.sum(nodeonHO[md.mesh.elements[pos,:]-1]  ,axis=1).astype(bool)
    148                         pos1=np.where(elist==1)[0]
    149                         SSAflag[pos[pos1]]=True
    150                         SSAHOflag[pos[pos1]]=False
    151                         pos2=np.where(elist==-1)[0]
    152                         HOflag[pos[pos2]]=True
    153                         SSAHOflag[pos[pos2]]=False
    154 
    155                         #Recompute nodes associated to these elements
    156                         nodeonSSA[:]=False
    157                         nodeonSSA[md.mesh.elements[np.where(SSAflag),:]-1]=True
    158                         nodeonHO[:]=False
    159                         nodeonHO[md.mesh.elements[np.where(HOflag),:]-1]=True
    160                         nodeonSSAHO[:]=False
    161                         nodeonSSAHO[md.mesh.elements[np.where(SSAHOflag),:]-1]=True
    162 
    163                 elif any(HOflag) and any(FSflag):    #coupling HO FS
    164                         #Find node at the border
    165                         nodeonHOFS[np.where(np.logical_and(nodeonHO,nodeonFS))]=True
    166                         #FS elements in contact with this layer become HOFS elements
    167                         matrixelements=nodeonHOFS[md.mesh.elements-1]
    168                         commonelements=np.sum(matrixelements,axis=1)!=0
    169                         commonelements[np.where(HOflag)]=False    #only one layer: the elements previously in SSA
    170                         FSflag[np.where(commonelements)]=False    #these elements are now SSAHOelements
    171                         HOFSflag[np.where(commonelements)]=True
    172                         nodeonFS=np.zeros(md.mesh.numberofvertices,bool)
    173                         nodeonFS[md.mesh.elements[np.where(FSflag),:]-1]=True
    174 
    175                         #rule out elements that don't touch the 2 boundaries
    176                         pos=np.where(HOFSflag)[0]
    177                         elist=np.zeros(np.size(pos),dtype=int)
    178                         elist = elist + np.sum(nodeonFS[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
    179                         elist = elist - np.sum(nodeonHO[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
    180                         pos1=np.where(elist==1)[0]
    181                         FSflag[pos[pos1]]=True
    182                         HOFSflag[pos[pos1]]=False
    183                         pos2=np.where(elist==-1)[0]
    184                         HOflag[pos[pos2]]=True
    185                         HOFSflag[pos[pos2]]=False
    186 
    187                         #Recompute nodes associated to these elements
    188                         nodeonFS[:]=False
    189                         nodeonFS[md.mesh.elements[np.where(FSflag),:]-1]=True
    190                         nodeonHO[:]=False
    191                         nodeonHO[md.mesh.elements[np.where(HOflag),:]-1]=True
    192                         nodeonHOFS[:]=False
    193                         nodeonHOFS[md.mesh.elements[np.where(HOFSflag),:]-1]=True
    194                 elif any(FSflag) and any(SSAflag):
    195                         #Find node at the border
    196                         nodeonSSAFS[np.where(np.logical_and(nodeonSSA,nodeonFS))]=True
    197                         #FS elements in contact with this layer become SSAFS elements
    198                         matrixelements=nodeonSSAFS[md.mesh.elements-1]
    199                         commonelements=np.sum(matrixelements,axis=1)!=0
    200                         commonelements[np.where(SSAflag)]=False    #only one layer: the elements previously in SSA
    201                         FSflag[np.where(commonelements)]=False    #these elements are now SSASSAelements
    202                         SSAFSflag[np.where(commonelements)]=True
    203                         nodeonFS=np.zeros(md.mesh.numberofvertices,bool)
    204                         nodeonFS[md.mesh.elements[np.where(FSflag),:]-1]=True
    205 
    206                         #rule out elements that don't touch the 2 boundaries
    207                         pos=np.where(SSAFSflag)[0]
    208                         elist=np.zeros(np.size(pos),dtype=int)
    209                         elist = elist + np.sum(nodeonSSA[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
    210                         elist = elist - np.sum(nodeonFS[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
    211                         pos1=np.where(elist==1)[0]
    212                         SSAflag[pos[pos1]]=True
    213                         SSAFSflag[pos[pos1]]=False
    214                         pos2=np.where(elist==-1)[0]
    215                         FSflag[pos[pos2]]=True
    216                         SSAFSflag[pos[pos2]]=False
    217 
    218                         #Recompute nodes associated to these elements
    219                         nodeonSSA[:]=False
    220                         nodeonSSA[md.mesh.elements[np.where(SSAflag),:]-1]=True
    221                         nodeonFS[:]=False
    222                         nodeonFS[md.mesh.elements[np.where(FSflag),:]-1]=True
    223                         nodeonSSAFS[:]=False
    224                         nodeonSSAFS[md.mesh.elements[np.where(SSAFSflag),:]-1]=True
    225 
    226                 elif any(FSflag) and any(SIAflag):
    227                         raise TypeError("type of coupling not supported yet")
    228 
    229         #Create SSAHOApproximation where needed
    230         md.flowequation.element_equation=np.zeros(md.mesh.numberofelements,int)
    231         md.flowequation.element_equation[np.where(noneflag)]=0
    232         md.flowequation.element_equation[np.where(SIAflag)]=1
    233         md.flowequation.element_equation[np.where(SSAflag)]=2
    234         md.flowequation.element_equation[np.where(L1L2flag)]=3
    235         md.flowequation.element_equation[np.where(HOflag)]=4
    236         md.flowequation.element_equation[np.where(FSflag)]=5
    237         md.flowequation.element_equation[np.where(SSAHOflag)]=6
    238         md.flowequation.element_equation[np.where(SSAFSflag)]=7
    239         md.flowequation.element_equation[np.where(HOFSflag)]=8
    240 
    241         #border
    242         md.flowequation.borderHO=nodeonHO
    243         md.flowequation.borderSSA=nodeonSSA
    244         md.flowequation.borderFS=nodeonFS
    245 
    246         #Create vertices_type
    247         md.flowequation.vertex_equation=np.zeros(md.mesh.numberofvertices,int)
    248         pos=np.where(nodeonSSA)
    249         md.flowequation.vertex_equation[pos]=2
    250         pos=np.where(nodeonL1L2)
    251         md.flowequation.vertex_equation[pos]=3
    252         pos=np.where(nodeonHO)
    253         md.flowequation.vertex_equation[pos]=4
    254         pos=np.where(nodeonFS)
    255         md.flowequation.vertex_equation[pos]=5
    256         #DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
    257         pos=np.where(nodeonSIA)
    258         md.flowequation.vertex_equation[pos]=1
    259         if any(FSflag):
    260                 pos=np.where(np.logical_not(nodeonFS))
    261                 if not (any(HOflag) or any(SSAflag)):
    262                         md.flowequation.vertex_equation[pos]=0
    263         pos=np.where(nodeonSSAHO)
    264         md.flowequation.vertex_equation[pos]=6
    265         pos=np.where(nodeonHOFS)
    266         md.flowequation.vertex_equation[pos]=7
    267         pos=np.where(nodeonSSAFS)
    268         md.flowequation.vertex_equation[pos]=8
    269 
    270         #figure out solution types
    271         md.flowequation.isSIA=any(md.flowequation.element_equation==1)
    272         md.flowequation.isSSA=any(md.flowequation.element_equation==2)
    273         md.flowequation.isL1L2=any(md.flowequation.element_equation==3)
    274         md.flowequation.isHO=any(md.flowequation.element_equation==4)
    275         md.flowequation.isFS=any(md.flowequation.element_equation==5)
    276 
    277         return md
    278 
    279         #Check that tiling can work:
    280         if any(md.flowequation.borderSSA) and any(md.flowequation.borderHO) and any(md.flowequation.borderHO + md.flowequation.borderSSA !=1):
    281                 raise TypeError("error coupling domain too irregular")
    282         if any(md.flowequation.borderSSA) and any(md.flowequation.borderFS) and any(md.flowequation.borderFS + md.flowequation.borderSSA !=1):
    283                 raise TypeError("error coupling domain too irregular")
    284         if any(md.flowequation.borderFS) and any(md.flowequation.borderHO) and any(md.flowequation.borderHO + md.flowequation.borderFS !=1):
    285                 raise TypeError("error coupling domain too irregular")
    286 
    287         return md
     6
     7def setflowequation(md, *args):
     8    """
     9    SETFLOWEQUATION - associate a solution type to each element
     10
     11       This routine works like plotmodel: it works with an even number of inputs
     12       'SIA', 'SSA', 'HO', 'L1L2', 'FS' and 'fill' are the possible options
     13       that must be followed by the corresponding exp file or flags list
     14       It can either be a domain file (argus type, .exp extension), or an array of element flags.
     15       If user wants every element outside the domain to be
     16       setflowequationd, add '~' to the name of the domain file (ex: '~HO.exp')
     17       an empty string '' will be considered as an empty domain
     18       a string 'all' will be considered as the entire domain
     19       You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
     20
     21       Usage:
     22          md = setflowequation(md, varargin)
     23
     24       Example:
     25          md = setflowequation(md, 'HO', 'HO.exp', fill', 'SIA', 'coupling', 'tiling')
     26    """
     27
     28    #some checks on list of arguments
     29    if not isinstance(md, model) or not len(args):
     30        raise TypeError("setflowequation error message")
     31
     32    #process options
     33    options = pairoptions(*args)
     34    #    options = deleteduplicates(options, 1)
     35
     36    #Find_out what kind of coupling to use
     37    coupling_method = options.getfieldvalue('coupling', 'tiling')
     38    if coupling_method not in ['tiling', 'penalties']:
     39        raise TypeError("coupling type can only be: tiling or penalties")
     40
     41    #recover elements distribution
     42    SIAflag = FlagElements(md, options.getfieldvalue('SIA', ''))
     43    SSAflag = FlagElements(md, options.getfieldvalue('SSA', ''))
     44    HOflag = FlagElements(md, options.getfieldvalue('HO', ''))
     45    L1L2flag = FlagElements(md, options.getfieldvalue('L1L2', ''))
     46    FSflag = FlagElements(md, options.getfieldvalue('FS', ''))
     47    filltype = options.getfieldvalue('fill', 'none')
     48    #Flag the elements that have not been flagged as filltype
     49    if 'SIA' in filltype:
     50        SIAflag = ~SSAflag & ~HOflag
     51    elif 'SSA' in filltype:
     52        SSAflag = ~SIAflag & ~HOflag & ~FSflag
     53    elif 'HO' in filltype:
     54        HOflag = ~SIAflag & ~SSAflag & ~FSflag
     55    #check that each element has at least one flag
     56    if not any(SIAflag + SSAflag + L1L2flag + HOflag + FSflag):
     57        raise TypeError("elements type not assigned, supported models are 'SIA', 'SSA', 'HO' and 'FS'")
     58
     59    #check that each element has only one flag
     60    if any(SIAflag + SSAflag + L1L2flag + HOflag + FSflag > 1):
     61        print("setflowequation warning message: some elements have several types, higher order type is used for them")
     62        SIAflag[np.where(np.logical_and(SIAflag, SSAflag))] = False
     63        SIAflag[np.where(np.logical_and(SIAflag, HOflag))] = False
     64        SSAflag[np.where(np.logical_and(SSAflag, HOflag))] = False
     65
     66        #check that L1L2 is not coupled to any other model for now
     67        if any(L1L2flag) and any(SIAflag + SSAflag + HOflag + FSflag):
     68            raise TypeError('L1L2 cannot be coupled to any other model')
     69
     70        #Check that no HO or FS for 2d mesh
     71        if md.mesh.domaintype == '2Dhorizontal':
     72            if any(FSflag + HOflag):
     73                raise TypeError('FS and HO elements not allowed in 2d mesh, extrude it first')
     74
     75    #FS can only be used alone for now:
     76    if any(FSflag) and any(SIAflag):
     77        raise TypeError("FS cannot be used with any other model for now, put FS everywhere")
     78
     79    #Initialize node fields
     80    nodeonSIA = np.zeros(md.mesh.numberofvertices, bool)
     81    nodeonSIA[md.mesh.elements[np.where(SIAflag), :] - 1] = True
     82    nodeonSSA = np.zeros(md.mesh.numberofvertices, bool)
     83    nodeonSSA[md.mesh.elements[np.where(SSAflag), :] - 1] = True
     84    nodeonL1L2 = np.zeros(md.mesh.numberofvertices, bool)
     85    nodeonL1L2[md.mesh.elements[np.where(L1L2flag), :] - 1] = True
     86    nodeonHO = np.zeros(md.mesh.numberofvertices, bool)
     87    nodeonHO[md.mesh.elements[np.where(HOflag), :] - 1] = True
     88    nodeonFS = np.zeros(md.mesh.numberofvertices, bool)
     89    noneflag = np.zeros(md.mesh.numberofelements, bool)
     90
     91    #First modify FSflag to get rid of elements contrained everywhere (spc + border with HO or SSA)
     92    if any(FSflag):
     93        fullspcnodes = np.logical_or(~np.isnan(md.stressbalance.spcvx) + ~np.isnan(md.stressbalance.spcvy) + ~np.isnan(md.stressbalance.spcvz), np.logical_and(nodeonHO, nodeonFS))  #find all the nodes on the boundary of the domain without icefront
     94        fullspcelems = np.sum(fullspcnodes[md.mesh.elements - 1], axis=1) == 6  #find all the nodes on the boundary of the domain without icefront
     95        FSflag[np.where(fullspcelems.reshape(- 1))] = False
     96        nodeonFS[md.mesh.elements[np.where(FSflag), :] - 1] = True
     97
     98    #Then complete with NoneApproximation or the other model used if there is no FS
     99    if any(FSflag):
     100        if any(HOflag):  #fill with HO
     101            HOflag[~FSflag] = True
     102            nodeonHO[md.mesh.elements[np.where(HOflag), :] - 1] = True
     103        elif any(SSAflag):  #fill with SSA
     104            SSAflag[~FSflag] = True
     105            nodeonSSA[md.mesh.elements[np.where(SSAflag), :] - 1] = True
     106        else:  #fill with none
     107            noneflag[np.where(~FSflag)] = True
     108
     109    #Now take care of the coupling between SSA and HO
     110    if coupling_method not in ['penalties']:
     111        md.stressbalance.vertex_pairing = np.array([])
     112    nodeonSSAHO = np.zeros(md.mesh.numberofvertices, bool)
     113    nodeonHOFS = np.zeros(md.mesh.numberofvertices, bool)
     114    nodeonSSAFS = np.zeros(md.mesh.numberofvertices, bool)
     115    SSAHOflag = np.zeros(md.mesh.numberofelements, bool)
     116    SSAFSflag = np.zeros(md.mesh.numberofelements, bool)
     117    HOFSflag = np.zeros(md.mesh.numberofelements, bool)
     118    if coupling_method == 'penalties':
     119        #Create the border nodes between HO and SSA and extrude them
     120        numnodes2d = md.mesh.numberofvertices2d
     121        numlayers = md.mesh.numberoflayers
     122        bordernodes2d = np.where(np.logical_and(nodeonHO[0:numnodes2d], nodeonSSA[0:numnodes2d]))[0] + 1  #Nodes connected to two different types of elements
     123
     124    #initialize and fill in penalties structure
     125        if np.all(np.logical_not(np.isnan(bordernodes2d))):
     126            penalties = np.zeros((0, 2))
     127            for i in range(1, numlayers):
     128                penalties = np.vstack((penalties, np.vstack((bordernodes2d, bordernodes2d + md.mesh.numberofvertices2d * (i))).T))
     129            md.stressbalance.vertex_pairing = penalties
     130
     131    elif coupling_method == 'tiling':
     132        if any(SSAflag) and any(HOflag):  #coupling SSA HO
     133            #Find node at the border
     134            nodeonSSAHO[np.where(np.logical_and(nodeonSSA, nodeonHO))] = True
     135            #SSA elements in contact with this layer become SSAHO elements
     136            matrixelements = nodeonSSAHO[md.mesh.elements - 1]
     137            commonelements = np.sum(matrixelements, axis=1) != 0
     138            commonelements[np.where(HOflag)] = False  #only one layer: the elements previously in SSA
     139            SSAflag[np.where(commonelements)] = False  #these elements are now SSAHOelements
     140            SSAHOflag[np.where(commonelements)] = True
     141            nodeonSSA[:] = False
     142            nodeonSSA[md.mesh.elements[np.where(SSAflag), :] - 1] = True
     143
     144            #rule out elements that don't touch the 2 boundaries
     145            pos = np.where(SSAHOflag)[0]
     146            elist = np.zeros(np.size(pos), dtype=int)
     147            elist = elist + np.sum(nodeonSSA[md.mesh.elements[pos, :] - 1], axis=1).astype(bool)
     148            elist = elist - np.sum(nodeonHO[md.mesh.elements[pos, :] - 1], axis=1).astype(bool)
     149            pos1 = np.where(elist == 1)[0]
     150            SSAflag[pos[pos1]] = True
     151            SSAHOflag[pos[pos1]] = False
     152            pos2 = np.where(elist == - 1)[0]
     153            HOflag[pos[pos2]] = True
     154            SSAHOflag[pos[pos2]] = False
     155
     156            #Recompute nodes associated to these elements
     157            nodeonSSA[:] = False
     158            nodeonSSA[md.mesh.elements[np.where(SSAflag), :] - 1] = True
     159            nodeonHO[:] = False
     160            nodeonHO[md.mesh.elements[np.where(HOflag), :] - 1] = True
     161            nodeonSSAHO[:] = False
     162            nodeonSSAHO[md.mesh.elements[np.where(SSAHOflag), :] - 1] = True
     163
     164        elif any(HOflag) and any(FSflag):  #coupling HO FS
     165            #Find node at the border
     166            nodeonHOFS[np.where(np.logical_and(nodeonHO, nodeonFS))] = True
     167            #FS elements in contact with this layer become HOFS elements
     168            matrixelements = nodeonHOFS[md.mesh.elements - 1]
     169            commonelements = np.sum(matrixelements, axis=1) != 0
     170            commonelements[np.where(HOflag)] = False  #only one layer: the elements previously in SSA
     171            FSflag[np.where(commonelements)] = False  #these elements are now SSAHOelements
     172            HOFSflag[np.where(commonelements)] = True
     173            nodeonFS = np.zeros(md.mesh.numberofvertices, bool)
     174            nodeonFS[md.mesh.elements[np.where(FSflag), :] - 1] = True
     175
     176            #rule out elements that don't touch the 2 boundaries
     177            pos = np.where(HOFSflag)[0]
     178            elist = np.zeros(np.size(pos), dtype=int)
     179            elist = elist + np.sum(nodeonFS[md.mesh.elements[pos, :] - 1], axis=1).astype(bool)
     180            elist = elist - np.sum(nodeonHO[md.mesh.elements[pos, :] - 1], axis=1).astype(bool)
     181            pos1 = np.where(elist == 1)[0]
     182            FSflag[pos[pos1]] = True
     183            HOFSflag[pos[pos1]] = False
     184            pos2 = np.where(elist == - 1)[0]
     185            HOflag[pos[pos2]] = True
     186            HOFSflag[pos[pos2]] = False
     187
     188            #Recompute nodes associated to these elements
     189            nodeonFS[:] = False
     190            nodeonFS[md.mesh.elements[np.where(FSflag), :] - 1] = True
     191            nodeonHO[:] = False
     192            nodeonHO[md.mesh.elements[np.where(HOflag), :] - 1] = True
     193            nodeonHOFS[:] = False
     194            nodeonHOFS[md.mesh.elements[np.where(HOFSflag), :] - 1] = True
     195        elif any(FSflag) and any(SSAflag):
     196            #Find node at the border
     197            nodeonSSAFS[np.where(np.logical_and(nodeonSSA, nodeonFS))] = True
     198            #FS elements in contact with this layer become SSAFS elements
     199            matrixelements = nodeonSSAFS[md.mesh.elements - 1]
     200            commonelements = np.sum(matrixelements, axis=1) != 0
     201            commonelements[np.where(SSAflag)] = False  #only one layer: the elements previously in SSA
     202            FSflag[np.where(commonelements)] = False  #these elements are now SSASSAelements
     203            SSAFSflag[np.where(commonelements)] = True
     204            nodeonFS = np.zeros(md.mesh.numberofvertices, bool)
     205            nodeonFS[md.mesh.elements[np.where(FSflag), :] - 1] = True
     206
     207            #rule out elements that don't touch the 2 boundaries
     208            pos = np.where(SSAFSflag)[0]
     209            elist = np.zeros(np.size(pos), dtype=int)
     210            elist = elist + np.sum(nodeonSSA[md.mesh.elements[pos, :] - 1], axis=1).astype(bool)
     211            elist = elist - np.sum(nodeonFS[md.mesh.elements[pos, :] - 1], axis=1).astype(bool)
     212            pos1 = np.where(elist == 1)[0]
     213            SSAflag[pos[pos1]] = True
     214            SSAFSflag[pos[pos1]] = False
     215            pos2 = np.where(elist == - 1)[0]
     216            FSflag[pos[pos2]] = True
     217            SSAFSflag[pos[pos2]] = False
     218
     219            #Recompute nodes associated to these elements
     220            nodeonSSA[:] = False
     221            nodeonSSA[md.mesh.elements[np.where(SSAflag), :] - 1] = True
     222            nodeonFS[:] = False
     223            nodeonFS[md.mesh.elements[np.where(FSflag), :] - 1] = True
     224            nodeonSSAFS[:] = False
     225            nodeonSSAFS[md.mesh.elements[np.where(SSAFSflag), :] - 1] = True
     226
     227        elif any(FSflag) and any(SIAflag):
     228            raise TypeError("type of coupling not supported yet")
     229
     230    #Create SSAHOApproximation where needed
     231    md.flowequation.element_equation = np.zeros(md.mesh.numberofelements, int)
     232    md.flowequation.element_equation[np.where(noneflag)] = 0
     233    md.flowequation.element_equation[np.where(SIAflag)] = 1
     234    md.flowequation.element_equation[np.where(SSAflag)] = 2
     235    md.flowequation.element_equation[np.where(L1L2flag)] = 3
     236    md.flowequation.element_equation[np.where(HOflag)] = 4
     237    md.flowequation.element_equation[np.where(FSflag)] = 5
     238    md.flowequation.element_equation[np.where(SSAHOflag)] = 6
     239    md.flowequation.element_equation[np.where(SSAFSflag)] = 7
     240    md.flowequation.element_equation[np.where(HOFSflag)] = 8
     241
     242    #border
     243    md.flowequation.borderHO = nodeonHO
     244    md.flowequation.borderSSA = nodeonSSA
     245    md.flowequation.borderFS = nodeonFS
     246
     247    #Create vertices_type
     248    md.flowequation.vertex_equation = np.zeros(md.mesh.numberofvertices, int)
     249    pos = np.where(nodeonSSA)
     250    md.flowequation.vertex_equation[pos] = 2
     251    pos = np.where(nodeonL1L2)
     252    md.flowequation.vertex_equation[pos] = 3
     253    pos = np.where(nodeonHO)
     254    md.flowequation.vertex_equation[pos] = 4
     255    pos = np.where(nodeonFS)
     256    md.flowequation.vertex_equation[pos] = 5
     257    #DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
     258    pos = np.where(nodeonSIA)
     259    md.flowequation.vertex_equation[pos] = 1
     260    if any(FSflag):
     261        pos = np.where(np.logical_not(nodeonFS))
     262        if not (any(HOflag) or any(SSAflag)):
     263            md.flowequation.vertex_equation[pos] = 0
     264    pos = np.where(nodeonSSAHO)
     265    md.flowequation.vertex_equation[pos] = 6
     266    pos = np.where(nodeonHOFS)
     267    md.flowequation.vertex_equation[pos] = 7
     268    pos = np.where(nodeonSSAFS)
     269    md.flowequation.vertex_equation[pos] = 8
     270
     271    #figure out solution types
     272    md.flowequation.isSIA = any(md.flowequation.element_equation == 1)
     273    md.flowequation.isSSA = any(md.flowequation.element_equation == 2)
     274    md.flowequation.isL1L2 = any(md.flowequation.element_equation == 3)
     275    md.flowequation.isHO = any(md.flowequation.element_equation == 4)
     276    md.flowequation.isFS = any(md.flowequation.element_equation == 5)
     277
     278    return md
     279
     280    #Check that tiling can work:
     281    if any(md.flowequation.borderSSA) and any(md.flowequation.borderHO) and any(md.flowequation.borderHO + md.flowequation.borderSSA != 1):
     282        raise TypeError("error coupling domain too irregular")
     283    if any(md.flowequation.borderSSA) and any(md.flowequation.borderFS) and any(md.flowequation.borderFS + md.flowequation.borderSSA != 1):
     284        raise TypeError("error coupling domain too irregular")
     285    if any(md.flowequation.borderFS) and any(md.flowequation.borderHO) and any(md.flowequation.borderHO + md.flowequation.borderFS != 1):
     286        raise TypeError("error coupling domain too irregular")
     287
     288    return md
  • issm/trunk-jpl/src/m/parameterization/sethydrostaticmask.py

    r21303 r24213  
    11import numpy as np
    2 import os
    3 from model import model
    4 from FlagElements import FlagElements
    5 import pairoptions
    6 from ContourToMesh import ContourToMesh
    72
    8 def setmask(md)
    9         """
    10         SETHYDROSTATICMASK - establish groundedice_levelset field
    113
    12    Determines grounded and floating ice position based on
     4def setmask(md):
     5    """
     6    SETHYDROSTATICMASK - establish groundedice_levelset field
     7
     8   Determines grounded and floating ice position based on
    139   md.geometry.bed and md.geometry.thickness
    1410
    1511   Usage:
    16       md=sethydrostaticmask(md)
     12      md = sethydrostaticmask(md)
    1713
    1814   Examples:
    19       md=sethydrostaticmask(md);
     15      md = sethydrostaticmask(md)
    2016   """
    2117
    22         if np.size(md.geometry.bed,axis=0)!=md.mesh.numberofvertices or np.size(md.geometry.base,axis=0)!=md.mesh.numberofvertices or np.size(md.geometry.thickness,axis=0)!=md.mesh.numberofvertices:
    23                 raise IOError("hydrostaticmask error message: fields in md.geometry do not have the right size.")
     18    if np.size(md.geometry.bed, axis=0) != md.mesh.numberofvertices or np.size(md.geometry.base, axis=0) != md.mesh.numberofvertices or np.size(md.geometry.thickness, axis=0) != md.mesh.numberofvertices:
     19        raise IOError("hydrostaticmask error message: fields in md.geometry do not have the right size.")
    2420
    25    # grounded ice level set
    26    md.mask.groundedice_levelset=md.geometry.thickness+md.geometry.bed*md.materials.rho_water/md.materials.rho_ice
     21    # grounded ice level set
     22    md.mask.groundedice_levelset = md.geometry.thickness + md.geometry.bed * md.materials.rho_water / md.materials.rho_ice
    2723
    28    #Check consistency of geometry
    29         if any(md.geometry.base[np.nonzero(md.mask.groundedice_levelset>0.)]!=md.geometry.bed[np.nonzero(md.mask.groundedice_levelset>0.)]):
    30            print "WARNING: md.geometry.bed and md.geometry.base not equal on grounded ice"
     24    #Check consistency of geometry
     25    if any(md.geometry.base[np.nonzero(md.mask.groundedice_levelset > 0.)] != md.geometry.bed[np.nonzero(md.mask.groundedice_levelset > 0.)]):
     26        print("WARNING: md.geometry.bed and md.geometry.base not equal on grounded ice")
    3127
    32         if any(md.geometry.base[np.nonzero(md.mask.groundedice_levelset<=0.)]<md.geometry.bed[np.nonzero(md.mask.groundedice_levelset<=0.)]):
    33                 print "WARNING: md.geometry.base < md.geometry.bed on floating ice"
     28    if any(md.geometry.base[np.nonzero(md.mask.groundedice_levelset <= 0.)] < md.geometry.bed[np.nonzero(md.mask.groundedice_levelset <= 0.)]):
     29        print("WARNING: md.geometry.base < md.geometry.bed on floating ice")
    3430
    35         return md
     31    return md
  • issm/trunk-jpl/src/m/parameterization/setmask.py

    r23716 r24213  
    66from ContourToMesh import ContourToMesh
    77
     8
    89def setmask(md, floatingicename, groundedicename, *args):
    9         """
    10         SETMASK - establish boundaries between grounded and floating ice.
     10    """
     11    SETMASK - establish boundaries between grounded and floating ice.
    1112
    12            By default, ice is considered grounded. The contour floatingicename defines nodes
    13            for which ice is floating. The contour groundedicename defines nodes inside an floatingice,
    14            that are grounded (ie: ice rises, islands, etc ...)
    15            All input files are in the Argus format (extension .exp).
     13       By default, ice is considered grounded. The contour floatingicename defines nodes
     14       for which ice is floating. The contour groundedicename defines nodes inside an floatingice,
     15       that are grounded (ie: ice rises, islands, etc ...)
     16       All input files are in the Argus format (extension .exp).
    1617
    17            Usage:
    18               md=setmask(md,floatingicename,groundedicename)
     18       Usage:
     19          md = setmask(md, floatingicename, groundedicename)
    1920
    20            Examples:
    21               md=setmask(md,'all','');
    22               md=setmask(md,'Iceshelves.exp','Islands.exp');
    23         """
    24         #some checks on list of arguments
    25         if not isinstance(md,model):
    26                 raise TypeError("setmask error message")
     21       Examples:
     22          md = setmask(md, 'all', '')
     23          md = setmask(md, 'Iceshelves.exp', 'Islands.exp')
     24    """
     25    #some checks on list of arguments
     26    if not isinstance(md, model):
     27        raise TypeError("setmask error message")
    2728
    28         if len(args)%2:
    29                 raise TypeError("odd number of arguments provided in setmask")
     29    if len(args) % 2:
     30        raise TypeError("odd number of arguments provided in setmask")
    3031
    31         #process options
    32         options=pairoptions.pairoptions(*args)
     32    #process options
     33    options = pairoptions.pairoptions(*args)
    3334
    34         #Get assigned fields
    35         x = md.mesh.x
    36         y = md.mesh.y
    37         elements = md.mesh.elements
     35    #Get assigned fields
     36    x = md.mesh.x
     37    y = md.mesh.y
     38    elements = md.mesh.elements
    3839
    39         #Assign elementonfloatingice, elementongroundedice, vertexongroundedice and vertexonfloatingice. Only change at your own peril! This is synchronized heavily with the GroundingLineMigration module. {{{
    40         elementonfloatingice = FlagElements(md, floatingicename)
    41         elementongroundedice = FlagElements(md, groundedicename)
     40    #Assign elementonfloatingice, elementongroundedice, vertexongroundedice and vertexonfloatingice. Only change at your own peril! This is synchronized heavily with the GroundingLineMigration module. {{{
     41    elementonfloatingice = FlagElements(md, floatingicename)
     42    elementongroundedice = FlagElements(md, groundedicename)
    4243
    43         #Because groundedice nodes and elements can be included into an floatingice, we need to update. Remember, all the previous
    44         #arrays come from domain outlines that can intersect one another:
     44    #Because groundedice nodes and elements can be included into an floatingice, we need to update. Remember, all the previous
     45    #arrays come from domain outlines that can intersect one another:
    4546
    46         elementonfloatingice = np.logical_and(elementonfloatingice,np.logical_not(elementongroundedice))
    47         elementongroundedice = np.logical_not(elementonfloatingice)
     47    elementonfloatingice = np.logical_and(elementonfloatingice, np.logical_not(elementongroundedice))
     48    elementongroundedice = np.logical_not(elementonfloatingice)
    4849
    49         #the order here is important. we choose vertexongroundedice as default on the grounding line.
    50         vertexonfloatingice = np.zeros(md.mesh.numberofvertices,'bool')
    51         vertexongroundedice = np.zeros(md.mesh.numberofvertices,'bool')
    52         vertexongroundedice[md.mesh.elements[np.nonzero(elementongroundedice),:]-1]=True
    53         vertexonfloatingice[np.nonzero(np.logical_not(vertexongroundedice))]=True
    54         #}}}
     50    #the order here is important. we choose vertexongroundedice as default on the grounding line.
     51    vertexonfloatingice = np.zeros(md.mesh.numberofvertices, 'bool')
     52    vertexongroundedice = np.zeros(md.mesh.numberofvertices, 'bool')
     53    vertexongroundedice[md.mesh.elements[np.nonzero(elementongroundedice), :] - 1] = True
     54    vertexonfloatingice[np.nonzero(np.logical_not(vertexongroundedice))] = True
     55    #}}}
    5556
    56         #level sets
    57         md.mask.groundedice_levelset = -1.*np.ones(md.mesh.numberofvertices)
    58         md.mask.groundedice_levelset[md.mesh.elements[np.nonzero(elementongroundedice),:]-1]=1.
     57    #level sets
     58    md.mask.groundedice_levelset = - 1. * np.ones(md.mesh.numberofvertices)
     59    md.mask.groundedice_levelset[md.mesh.elements[np.nonzero(elementongroundedice), :] - 1] = 1.
    5960
    60         if(len(args)):
    61                 md.mask.ice_levelset = 1.*np.ones(md.mesh.numberofvertices)
    62                 icedomainfile = options.getfieldvalue('icedomain','none')
    63                 if not os.path.exists(icedomainfile):
    64                         raise IOError("setmask error message: ice domain file '%s' not found." % icedomainfile)
    65                 #use contourtomesh to set ice values inside ice domain
    66                 vertexinsideicedomain,elementinsideicedomain=ContourToMesh(elements,x,y,icedomainfile,'node',1)
    67                 md.mask.ice_levelset[np.nonzero(vertexinsideicedomain)[0]] = -1.
    68         else:
    69                 md.mask.ice_levelset = -1.*np.ones(md.mesh.numberofvertices)
     61    if(len(args)):
     62        md.mask.ice_levelset = 1. * np.ones(md.mesh.numberofvertices)
     63        icedomainfile = options.getfieldvalue('icedomain', 'none')
     64        if not os.path.exists(icedomainfile):
     65            raise IOError("setmask error message: ice domain file '%s' not found." % icedomainfile)
     66    #use contourtomesh to set ice values inside ice domain
     67        vertexinsideicedomain, elementinsideicedomain = ContourToMesh(elements, x, y, icedomainfile, 'node', 1)
     68        md.mask.ice_levelset[np.nonzero(vertexinsideicedomain)[0]] = - 1.
     69    else:
     70        md.mask.ice_levelset = - 1. * np.ones(md.mesh.numberofvertices)
    7071
    71         return md
     72    return md
  • issm/trunk-jpl/src/m/partition/AreaAverageOntoPartition.py

    r24179 r24213  
    11import numpy as np
    22import copy
     3from adjacency import adjacency
     4from project2d import project2d
    35
    4 def AreaAverageOntoPartition(md,vector,layer=None):
    5         '''AREAAVERAGEONTOPARTITION
     6
     7def AreaAverageOntoPartition(md, vector, layer=None):
     8    '''AREAAVERAGEONTOPARTITION
    69   compute partition values for a certain vector expressed on the vertices of the mesh.
    710   Use area weighted average.
    811
    912   Usage:
    10       average=AreaAverageOntoPartition(md,vector)
    11       average=AreaAverageOntoPartition(md,vector,layer) #if in 3D, chose which layer is partitioned
     13      average = AreaAverageOntoPartition(md, vector)
     14      average = AreaAverageOntoPartition(md, vector, layer) #if in 3D, chose which layer is partitioned
    1215'''
    13         #some checks
    14         if(md.mesh.dimension()==3):
    15                 if layer == None:
    16                         raise RuntimeError('AreaAverageOntoPartition: layer should be provided onto which Area Averaging occurs')
     16    #some checks
     17    if(md.mesh.dimension() == 3):
     18        if layer is None:
     19            raise RuntimeError('AreaAverageOntoPartition: layer should be provided onto which Area Averaging occurs')
    1720
    18                 #save 3D model
    19                 md3d = copy.deepcopy(md)
     21    #save 3D model
     22        md3d = copy.deepcopy(md)
    2023
    21                 md.mesh.elements = md.mesh.elements2d
    22                 md.mesh.x = md.mesh.x2d
    23                 md.mesh.y = md.mesh.y2d
    24                 md.mesh.numberofvertices = md.mesh.numberofvertices2d
    25                 md.mesh.numberofelements = md.mesh.numberofelements2d
    26                 md.qmu.vertex_weight = []
    27                 md.mesh.vertexconnectivity = []
     24        md.mesh.elements = md.mesh.elements2d
     25        md.mesh.x = md.mesh.x2d
     26        md.mesh.y = md.mesh.y2d
     27        md.mesh.numberofvertices = md.mesh.numberofvertices2d
     28        md.mesh.numberofelements = md.mesh.numberofelements2d
     29        md.qmu.vertex_weight = []
     30        md.mesh.vertexconnectivity = []
    2831
    29                 #run connectivity routine
    30                 md = adjacency(md)
     32    #run connectivity routine
     33        md = adjacency(md)
    3134
    32                 #finally, project vector:
    33                 vector = project2d(md3d,vector,layer)
    34                 md.qmu.vpartition = project2d(md3d,md3d.qmu.vpartition,layer)
     35    #finally, project vector:
     36        vector = project2d(md3d, vector, layer)
     37        md.qmu.vpartition = project2d(md3d, md3d.qmu.vpartition, layer)
    3538
     39    #ok, first check that part is Matlab indexed
     40    part = (md.qmu.vpartition).copy()
     41    part = part.flatten() + 1
    3642
    37         #ok, first check that part is Matlab indexed
    38         part = (md.qmu.vpartition).copy()
    39         part = part.flatten() + 1
     43    #some check:
     44    if md.qmu.numberofpartitions != max(part):
     45        raise RuntimeError('AreaAverageOntoPartition error message: ''npart'' should be equal to max(md.qmu.vpartition)')
    4046
    41         #some check:
    42         if md.qmu.numberofpartitions != max(part):
    43                 raise RuntimeError('AreaAverageOntoPartition error message: ''npart'' should be equal to max(md.qmu.vpartition)')
     47    #initialize output
     48    partvector = np.zeros((max(part)))
    4449
     50    #start weight average
     51    weightedvector = vector.flatten() * md.qmu.vertex_weight
     52    for i in range(max(part)):
     53        pos = np.where((part - 1) == i)
     54        partvector[i] = sum(weightedvector[pos]) / sum(md.qmu.vertex_weight[pos])
    4555
    46         #initialize output
    47         partvector = np.zeros((max(part)))
     56    #in 3D, restore 3D model:
     57    if(md.mesh.dimension() == 3):
     58        md = copy.deepcopy(md3d)
    4859
    49         #start weight average
    50         weightedvector = vector.flatten()*md.qmu.vertex_weight
    51         for i in range(max(part)):
    52                 pos=np.where((part-1)==i)
    53                 partvector[i]=sum(weightedvector[pos])/sum(md.qmu.vertex_weight[pos])
    54 
    55 
    56         #in 3D, restore 3D model:
    57         if(md.mesh.dimension()==3):
    58                 md = copy.deepcopy(md3d)
    59 
    60 
    61         return partvector
    62 
     60    return partvector
  • issm/trunk-jpl/src/m/partition/adjacency.py

    r23095 r24213  
    44from GetAreas import *
    55
     6
    67def adjacency(md):
    7         #ADJACENCY - compute adjacency matrix, list of vertices and list of weights.
    8         #
    9         #  function to create the adjacency matrix from the connectivity table.
    10         #
    11         #  the required output is:
    12         #    md.adj_mat     (double [sparse nv x nv], vertex adjacency matrix)
    13         #    md.qmu.vertex_weight        (double [nv], vertex weights)
     8    #ADJACENCY - compute adjacency matrix, list of vertices and list of weights.
     9    #
     10    #  function to create the adjacency matrix from the connectivity table.
     11    #
     12    #  the required output is:
     13    #    md.adj_mat     (double [sparse nv x nv], vertex adjacency matrix)
     14    #    md.qmu.vertex_weight        (double [nv], vertex weights)
    1415
    15         indi=np.array([md.mesh.elements[:,0],md.mesh.elements[:,1],md.mesh.elements[:,2]])
    16         indj=np.array([md.mesh.elements[:,1],md.mesh.elements[:,2],md.mesh.elements[:,0]])
    17         values=np.ones(np.shape(indi))
     16    indi = np.array([md.mesh.elements[:, 0], md.mesh.elements[:, 1], md.mesh.elements[:, 2]])
     17    indj = np.array([md.mesh.elements[:, 1], md.mesh.elements[:, 2], md.mesh.elements[:, 0]])
     18    values = np.ones(np.shape(indi))
    1819
    19         md.qmu.adjacency=m.sparse(indi,indj,values,md.mesh.numberofvertices,md.mesh.numberofvertices)
    20         md.qmu.adjacency=np.logical_or(md.qmu.adjacency, md.qmu.adjacency.T).astype(float) #change to reshape(-1,1) if needed
     20    md.qmu.adjacency = m.sparse(indi, indj, values, md.mesh.numberofvertices, md.mesh.numberofvertices)
     21    md.qmu.adjacency = np.logical_or(md.qmu.adjacency, md.qmu.adjacency.T).astype(float)  #change to reshape(- 1, 1) if needed
    2122
    22         #now, build vwgt:
    23         areas=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y)
     23    #now, build vwgt:
     24    areas = GetAreas(md.mesh.elements, md.mesh.x, md.mesh.y)
    2425
    25         #get node connectivity
    26         md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices)
     26    #get node connectivity
     27    md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements, md.mesh.numberofvertices)
    2728
    28         connectivity=md.mesh.vertexconnectivity[0][:,0:-1]
    29         pos=np.where(connectivity)
    30         connectivity[pos]=areas[connectivity[pos]-1]/3.
    31         md.qmu.vertex_weight=np.sum(connectivity,1)
     29    connectivity = md.mesh.vertexconnectivity[0][:, 0: - 1]
     30    pos = np.where(connectivity)
     31    connectivity[pos] = areas[connectivity[pos] - 1] / 3.
     32    md.qmu.vertex_weight = np.sum(connectivity, 1)
    3233
    33         return md
     34    return md
  • issm/trunk-jpl/src/m/partition/partitioner.py

    r24173 r24213  
    22import copy
    33from pairoptions import *
    4 import MatlabFuncs as m
    54from adjacency import *
    65from Chaco import *
    7 #from Scotch import *
    86from MeshPartition import *
    97from project3d import *
    108from mesh2d import *
    119
    12 def partitioner(md,*varargin):
    13         help ='''
    14 PARTITIONER - partition mesh
    1510
    16    List of options to partitioner:
     11def partitioner(md, * varargin):
     12    help = '''
     13PARTITIONER - partition mesh
     14
     15   List of options to partitioner:
    1716
    1817   package: 'chaco', 'metis'
    1918   npart: number of partitions.
    2019   weighting: 'on' or 'off': default off
    21    section:  1 by defaults(1=bisection, 2=quadrisection, 3=octasection)
     20   section:  1 by defaults(1 = bisection, 2 = quadrisection, 3 = octasection)
    2221   recomputeadjacency:  'on' by default (set to 'off' to compute existing one)
    2322   type: 'node' or 'element' partition vector (default to 'node')
    2423   Output: md.qmu.partition recover the partition vector
    25    
     24
    2625   Usage:
    27       md=partitioner(md,'package','chaco','npart',100,'weighting','on')
    28         '''
     26      md = partitioner(md, 'package', 'chaco', 'npart', 100, 'weighting', 'on')
     27    '''
    2928
    30         #get options:
    31         options=pairoptions(*varargin)
     29    #get options:
     30    options = pairoptions(* varargin)
    3231
    33         #set defaults
    34         options.addfielddefault('package','chaco')
    35         options.addfielddefault('npart',10)
    36         options.addfielddefault('weighting','on')
    37         options.addfielddefault('section',1)
    38         options.addfielddefault('recomputeadjacency','on')
    39         options.addfielddefault('type','node')
     32    #get options:
     33    section = options.getfieldvalue('section', 1)
     34    weighting = options.getfieldvalue('weighting', 'on')
     35    package = options.getfieldvalue('package', 'chaco')  #default to chaco
     36    npart = options.getfieldvalue('npart', 10)  # default to 10
     37    recomputeadjacency = options.getfieldvalue('recomputeadjacency', 'on')  # default to on
     38    vectortype = options.getfieldvalue('type', 'node')  #default to node
    4039
    41         #get package:
    42         package=options.getfieldvalue('package')
    43         npart=options.getfieldvalue('npart')
    44         recomputeadjacency=options.getfieldvalue('recomputeadjacency')
    45         vectortype=options.getfieldvalue('type')
     40    if vectortype == 'element' and not package == 'linear':
     41        raise RuntimeError('partitioner error message: package ' + str(package) + ' does not allow element partitions.')
    4642
    47         if m.strcmpi(vectortype,'element') and not m.strcmpi(package,'linear'):
    48                 raise RuntimeError('partitioner error message: package '+str(package)+' does not allow element partitions.')
     43    if(md.mesh.dimension() == 3):
     44        #partitioning essentially happens in 2D. So partition in 2D, then
     45        #extrude the partition vector vertically.
     46        md3d = copy.deepcopy(md)
     47        md.mesh.elements = md.mesh.elements2d
     48        md.mesh.x = md.mesh.x2d
     49        md.mesh.y = md.mesh.y2d
     50        md.mesh.numberofvertices = md.mesh.numberofvertices2d
     51        md.mesh.numberofelements = md.mesh.numberofelements2d
     52        md.qmu.vertex_weight = []
     53        md.mesh.vertexconnectivity = []
     54        recomputeadjacency = 'on'
    4955
    50         if(md.mesh.dimension()==3):
    51                 #partitioning essentially happens in 2D. So partition in 2D, then
    52                 #extrude the partition vector vertically.
    53                 md3d = copy.deepcopy(md)
    54                 md.mesh.elements=md.mesh.elements2d
    55                 md.mesh.x=md.mesh.x2d
    56                 md.mesh.y=md.mesh.y2d
    57                 md.mesh.numberofvertices=md.mesh.numberofvertices2d
    58                 md.mesh.numberofelements=md.mesh.numberofelements2d
    59                 md.qmu.vertex_weight=[]
    60                 md.mesh.vertexconnectivity=[]
    61                 recomputeadjacency='on'
     56    #adjacency matrix if needed:
     57    if recomputeadjacency == 'on':
     58        md = adjacency(md)
     59    else:
     60        print('skipping adjacency matrix computation as requested in the options')
    6261
    63         #adjacency matrix if needed:
    64         if m.strcmpi(recomputeadjacency,'on'):
    65                 md=adjacency(md)
    66         else:
    67                 print('skipping adjacency matrix computation as requested in the options')
     62    if package == 'chaco':
     63        #raise RuntimeError('Chaco is not currently supported for this function')
     64        #  default method (from chaco.m)
     65        method = np.array([1, 1, 0, 0, 1, 1, 50, 0, 0.001, 7654321])
     66        method[0] = 3  #  global method (3 = inertial (geometric))
     67        method[2] = 0  #  vertex weights (0 = off, 1 = on)
     68        #specify bisection
     69        method[5] = section  #  ndims (1 = bisection, 2 = quadrisection, 3 = octasection)
    6870
    69         if m.strcmpi(package,'chaco'):
    70                 #raise RuntimeError('Chaco is not currently supported for this function')
     71        #are we using weights?
     72        if weighting == 'on':
     73            weights = np.floor(md.qmu.vertex_weight / min(md.qmu.vertex_weight))
     74            method[2] = 1
     75        else:
     76            weights = []
    7177
    72                 #  default method (from chaco.m)
    73                 method=np.array([1,1,0,0,1,1,50,0,.001,7654321])
    74                 method[0]=3    #  global method (3=inertial (geometric))
    75                 method[2]=0    #  vertex weights (0=off, 1=on)
     78        method = method.reshape(- 1, 1)  # transpose to 1x10 instead of 10
     79        #  partition into nparts
     80        if isinstance(md.mesh, mesh2d):
     81            part = np.array(Chaco(md.qmu.adjacency, weights, np.array([]), md.mesh.x, md.mesh.y, np.zeros((md.mesh.numberofvertices, )), method, npart, np.array([]))).T + 1  #index partitions from 1 up. like metis.
     82        else:
     83            part = np.array(Chaco(md.qmu.adjacency, weights, np.array([]), md.mesh.x, md.mesh.y, md.mesh.z, method, npart, np.array([]))).T + 1  #index partitions from 1 up. like metis.
    7684
    77                 #specify bisection
    78                 method[5]=options.getfieldvalue('section')#  ndims (1=bisection, 2=quadrisection, 3=octasection)
     85    elif package == 'scotch':
     86        raise RuntimeError('Scotch is not currently supported for this function')
    7987
    80                 #are we using weights?
    81                 if m.strcmpi(options.getfieldvalue('weighting'),'on'):
    82                         weights=np.floor(md.qmu.vertex_weight/min(md.qmu.vertex_weight))
    83                         method[2]=1
    84                 else:
    85                         weights=[]
    86        
    87                 method = method.reshape(-1,1)   # transpose to 1x10 instead of 10
     88    #are we using weights?
     89    #if m.strcmpi(options.getfieldvalue('weighting'), 'on'):
     90    #weights = np.floor(md.qmu.vertex_weight / min(md.qmu.vertex_weight))
     91    #else:
     92    #weights = []
     93    #maptab = Scotch(md.qmu.adjacency, [], weights, [], 'cmplt', [npart])
     94    #part = maptab[:, 1] + 1  #index partitions from 1 up. like metis.
    8895
    89                 #  partition into nparts
    90                 if isinstance(md.mesh,mesh2d):
    91                         part=np.array(Chaco(md.qmu.adjacency,weights,np.array([]),md.mesh.x, md.mesh.y,np.zeros((md.mesh.numberofvertices,)),method,npart,np.array([]))).T+1 #index partitions from 1 up. like metis.
    92                 else:
    93                         part=np.array(Chaco(md.qmu.adjacency,weights,np.array([]),md.mesh.x, md.mesh.y,md.mesh.z,method,npart,np.array([]))).T+1 #index partitions from 1 up. like metis.
    94        
    95         elif m.strcmpi(package,'scotch'):
    96                 raise RuntimeError('Scotch is not currently supported for this function')
     96    elif package == 'linear':
    9797
    98                 #are we using weights?
    99                 #if m.strcmpi(options.getfieldvalue('weighting'),'on'):
    100                         #weights=np.floor(md.qmu.vertex_weight/min(md.qmu.vertex_weight))
    101                 #else:
    102                         #weights=[]
    103        
    104                 #maptab=Scotch(md.qmu.adjacency,[],weights,[],'cmplt',[npart])
     98        if (npart == md.mesh.numberofelements) or (md.qmu.numberofpartitions == md.mesh.numberofelements):
     99            part = np.arange(1, 1 + md.mesh.numberofelements, 1)
     100            print('Linear partitioner requesting partitions on elements')
     101        else:
     102            part = np.arange(1, 1 + md.mesh.numberofvertices, 1)
    105103
    106                 #part=maptab[:,1]+1#index partitions from 1 up. like metis.
     104    elif package == 'metis':
     105        raise RuntimeError('Metis/MeshPartition is not currently supported for this function')
     106    #[element_partitioning, part] = MeshPartition(md, md.qmu.numberofpartitions)
    107107
    108         elif m.strcmpi(package,'linear'):
     108    else:
     109        print(help)
     110        raise RuntimeError('partitioner error message: could not find ' + str(package) + ' partitioner')
    109111
    110                 if (npart == md.mesh.numberofelements) or (md.qmu.numberofpartitions == md.mesh.numberofelements):
    111                         part=np.arange(1,1+md.mesh.numberofelements,1)
    112                         print('Linear partitioner requesting partitions on elements')
    113                 else:
    114                         part=np.arange(1,1+md.mesh.numberofvertices,1)
     112    #extrude if we are in 3D:
     113    if md.mesh.dimension() == 3:
     114        md3d.qmu.vertex_weight = md.qmu.vertex_weight
     115        md3d.qmu.adjacency = md.qmu.adjacency
     116        md = md3d
     117        if vectortype == 'element':
     118            part = project3d(md, 'vector', np.squeeze(part), 'type', 'element')
     119        else:
     120            part = project3d(md, 'vector', np.squeeze(part), 'type', 'node')
    115121
    116         elif m.strcmpi(package,'metis'):
    117                 raise RuntimeError('Metis/MeshPartition is not currently supported for this function')
    118                 #[element_partitioning,part]=MeshPartition(md,md.qmu.numberofpartitions)
     122        part = part.reshape(- 1, 1)
    119123
    120         else:
    121                 print(help)
    122                 raise RuntimeError('partitioner error message: could not find '+str(package)+' partitioner')
    123 
    124         #extrude if we are in 3D:
    125         if md.mesh.dimension()==3:
    126                 md3d.qmu.vertex_weight=md.qmu.vertex_weight
    127                 md3d.qmu.adjacency=md.qmu.adjacency
    128                 md=md3d
    129                 if m.strcmpi(vectortype,'element'):
    130                     part=project3d(md,'vector',np.squeeze(part),'type','element')
    131                 else:
    132                     part=project3d(md,'vector',np.squeeze(part),'type','node')
    133 
    134         part=part.reshape(-1,1)
    135 
    136         if m.strcmpi(vectortype,'element'):
    137                 md.qmu.epartition=part
    138                 if np.size(md.qmu.vpartition) == 0 or (np.size(md.qmu.vpartition) == 1 and np.isnan(md.qmu.vpartition)):
    139                     md.qmu.vpartition=np.zeros((md.mesh.numberofvertices,1))
    140 
    141         else:
    142                 md.qmu.vpartition=part
    143                 if np.size(md.qmu.epartition) == 0 or (np.size(md.qmu.epartition) == 1 and np.isnan(md.qmu.epartition)):
    144                     md.qmu.epartition=np.zeros((md.mesh.numberofelements,1))
    145 
    146         return md
     124    if vectortype == 'element':
     125        md.qmu.epartition = part
     126        if np.size(md.qmu.vpartition) == 0 or (np.size(md.qmu.vpartition) == 1 and np.isnan(md.qmu.vpartition)):
     127            md.qmu.vpartition = np.zeros((md.mesh.numberofvertices, 1))
     128    else:
     129        md.qmu.vpartition = part
     130        if np.size(md.qmu.epartition) == 0 or (np.size(md.qmu.epartition) == 1 and np.isnan(md.qmu.epartition)):
     131            md.qmu.epartition = np.zeros((md.mesh.numberofelements, 1))
     132    return md
  • issm/trunk-jpl/src/m/plot/applyoptions.py

    r23920 r24213  
    1 import numpy as  np
     1import numpy as np
    22from cmaptools import getcolormap
    33from plot_contour import plot_contour
     
    77try:
    88    from matplotlib.ticker import MaxNLocator
    9     from mpl_toolkits.axes_grid1 import make_axes_locatable
    10     from mpl_toolkits.mplot3d import Axes3D
    119    import matplotlib as mpl
    1210    import matplotlib.pyplot as plt
     
    1412    print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
    1513
    16 def applyoptions(md,data,options,fig,axgrid,gridindex):
     14
     15def applyoptions(md, data, options, fig, axgrid, gridindex):
    1716    '''
    1817    APPLYOPTIONS - apply options to current plot
     
    2221
    2322        Usage:
    24             applyoptions(md,data,options)
     23            applyoptions(md, data, options)
    2524
    2625        See also: PLOTMODEL, PARSE_OPTIONS
     
    2928    # get handle to current figure and axes instance
    3029    #fig = p.gcf()
    31     ax=    axgrid[gridindex]
     30    ax = axgrid[gridindex]
    3231
    3332    # {{{ font
    34     fontsize=options.getfieldvalue('fontsize',8)
    35     fontweight=options.getfieldvalue('fontweight','normal')
    36     fontfamily=options.getfieldvalue('fontfamily','sans-serif')
    37     font={'fontsize'        :fontsize,
    38                 'fontweight'    :fontweight,
    39                 'family'            :fontfamily}
     33    fontsize = options.getfieldvalue('fontsize', 8)
     34    fontweight = options.getfieldvalue('fontweight', 'normal')
     35    fontfamily = options.getfieldvalue('fontfamily', 'sans - serif')
     36    font = {'fontsize': fontsize,
     37            'fontweight': fontweight,
     38            'family': fontfamily}
    4039    # }}}
    4140    # {{{ title
    4241    if options.exist('title'):
    43         title=options.getfieldvalue('title')
     42        title = options.getfieldvalue('title')
    4443        if options.exist('titlefontsize'):
    45             titlefontsize=options.getfieldvalue('titlefontsize')
    46         else:
    47             titlefontsize=fontsize
     44            titlefontsize = options.getfieldvalue('titlefontsize')
     45        else:
     46            titlefontsize = fontsize
    4847        if options.exist('titlefontweight'):
    49             titlefontweight=options.getfieldvalue('titlefontweight')
    50         else:
    51             titlefontweight=fontweight
    52         #title font
    53         titlefont=font.copy()
    54         titlefont['size']=titlefontsize
    55         titlefont['weight']=titlefontweight
    56         ax.set_title(title,**titlefont)
     48            titlefontweight = options.getfieldvalue('titlefontweight')
     49        else:
     50            titlefontweight = fontweight
     51    #title font
     52        titlefont = font.copy()
     53        titlefont['size'] = titlefontsize
     54        titlefont['weight'] = titlefontweight
     55        ax.set_title(title, **titlefont)
    5756    # }}}
    5857    # {{{ xlabel, ylabel, zlabel
    5958    if options.exist('labelfontsize'):
    60         labelfontsize=options.getfieldvalue('labelfontsize')
     59        labelfontsize = options.getfieldvalue('labelfontsize')
    6160    else:
    62         labelfontsize=fontsize
     61        labelfontsize = fontsize
    6362    if options.exist('labelfontweight'):
    64         labelfontweight=options.getfieldvalue('labelfontweight')
     63        labelfontweight = options.getfieldvalue('labelfontweight')
    6564    else:
    66         labelfontweight=fontweight
     65        labelfontweight = fontweight
    6766
    6867    #font dict for labels
    69     labelfont=font.copy()
    70     labelfont['fontsize']=labelfontsize
    71     labelfont['fontweight']=labelfontweight
     68    labelfont = font.copy()
     69    labelfont['fontsize'] = labelfontsize
     70    labelfont['fontweight'] = labelfontweight
    7271
    7372    if options.exist('xlabel'):
    74         ax.set_xlabel(options.getfieldvalue('xlabel'),**labelfont)
     73        ax.set_xlabel(options.getfieldvalue('xlabel'), **labelfont)
    7574    if options.exist('ylabel'):
    76         ax.set_ylabel(options.getfieldvalue('ylabel'),**labelfont)
     75        ax.set_ylabel(options.getfieldvalue('ylabel'), **labelfont)
    7776    if options.exist('zlabel'):
    78         ax.set_zlabel(options.getfieldvalue('zlabel'),**labelfont)
     77        ax.set_zlabel(options.getfieldvalue('zlabel'), **labelfont)
    7978    # }}}
    8079    # {{{ xticks, yticks, zticks (tick locations)
    8180    if options.exist('xticks'):
    8281        if options.exist('xticklabels'):
    83             xticklabels=options.getfieldvalue('xticklabels')
    84             ax.set_xticks(options.getfieldvalue('xticks'),xticklabels)
     82            xticklabels = options.getfieldvalue('xticklabels')
     83            ax.set_xticks(options.getfieldvalue('xticks'), xticklabels)
    8584        else:
    8685            ax.set_xticks(options.getfieldvalue('xticks'))
    8786    if options.exist('yticks'):
    8887        if options.exist('yticklabels'):
    89             yticklabels=options.getfieldvalue('yticklabels')
    90             ax.set_yticks(options.getfieldvalue('yticks'),yticklabels)
     88            yticklabels = options.getfieldvalue('yticklabels')
     89            ax.set_yticks(options.getfieldvalue('yticks'), yticklabels)
    9190        else:
    9291            ax.set_yticks(options.getfieldvalue('yticks'))
    9392    if options.exist('zticks'):
    9493        if options.exist('zticklabels'):
    95             zticklabels=options.getfieldvalue('zticklabels')
    96             ax.set_zticks(options.getfieldvalue('zticks'),zticklabels)
     94            zticklabels = options.getfieldvalue('zticklabels')
     95            ax.set_zticks(options.getfieldvalue('zticks'), zticklabels)
    9796        else:
    9897            ax.set_zticks(options.getfieldvalue('zticks'))
    9998    # }}}
    100     # {{{ xticklabels,yticklabels,zticklabels
    101     if options.getfieldvalue('ticklabels','off')=='off' or options.getfieldvalue('ticklabels',0)==0:
    102         options.addfielddefault('xticklabels',[])
    103         options.addfielddefault('yticklabels',[])
    104         # TODO check if ax has a z-axis (e.g. is 3D)
     99    # {{{ xticklabels, yticklabels, zticklabels
     100    if options.getfieldvalue('ticklabels', 'off') == 'off' or options.getfieldvalue('ticklabels', 0) == 0:
     101        options.addfielddefault('xticklabels', [])
     102        options.addfielddefault('yticklabels', [])
     103    # TODO check if ax has a z - axis (e.g. is 3D)
    105104    if options.exist('xticklabels'):
    106         xticklabels=options.getfieldvalue('xticklabels')
     105        xticklabels = options.getfieldvalue('xticklabels')
    107106        ax.set_xticklabels(xticklabels)
    108107    if options.exist('yticklabels'):
    109         yticklabels=options.getfieldvalue('yticklabels')
     108        yticklabels = options.getfieldvalue('yticklabels')
    110109        ax.set_yticklabels(yticklabels)
    111110    if options.exist('zticklabels'):
    112         zticklabels=options.getfieldvalue('zticklabels')
     111        zticklabels = options.getfieldvalue('zticklabels')
    113112        ax.set_zticklabels(zticklabels)
    114113    # }}}
    115114    # {{{ ticklabel notation
    116     #ax.ticklabel_format(style='sci',scilimits=(0,0))
     115    #ax.ticklabel_format(style = 'sci', scilimits=(0, 0))
    117116    # }}}
    118117    # {{{ ticklabelfontsize
     
    120119        for label in ax.get_xticklabels() + ax.get_yticklabels():
    121120            label.set_fontsize(options.getfieldvalue('ticklabelfontsize'))
    122         if int(md.mesh.dimension)==3:
     121        if int(md.mesh.dimension) == 3:
    123122            for label in ax.get_zticklabels():
    124123                label.set_fontsize(options.getfieldvalue('ticklabelfontsize'))
     
    126125    # {{{ view TOFIX
    127126    #if int(md.mesh.dimension) == 3 and options.exist('layer'):
    128     #    #options.getfieldvalue('view') ?
    129     #    ax=fig.gca(projection='3d')
     127    #  #options.getfieldvalue('view') ?
     128    #    ax = fig.gca(projection = '3d')
    130129    #plt.show()
    131130    # }}}
    132131    # {{{ axis
    133132    if options.exist('axis'):
    134         if options.getfieldvalue('axis',True)=='off':
     133        if options.getfieldvalue('axis', True) == 'off':
    135134            ax.ticklabel_format(style='plain')
    136135            p.setp(ax.get_xticklabels(), visible=False)
     
    157156    # {{{ clim
    158157    if options.exist('clim'):
    159         lims=options.getfieldvalue('clim')
    160         assert len(lims)==2, 'error, clim should be passed as a list of length 2'
     158        lims = options.getfieldvalue('clim')
     159        assert len(lims) == 2, 'error, clim should be passed as a list of length 2'
    161160    elif options.exist('caxis'):
    162         lims=options.getfieldvalue('caxis')
    163         assert len(lims)==2, 'error, caxis should be passed as a list of length 2'
    164         options.addfielddefault('clim',lims)
     161        lims = options.getfieldvalue('caxis')
     162        assert len(lims) == 2, 'error, caxis should be passed as a list of length 2'
     163        options.addfielddefault('clim', lims)
    165164    else:
    166         if len(data)>0:
    167             lims=[data.min(),data.max()]
    168         else:
    169             lims=[0,1]
     165        if len(data) > 0:
     166            lims = [data.min(), data.max()]
     167        else:
     168            lims = [0, 1]
    170169    # }}}
    171170    # {{{ shading TODO
     
    174173    # {{{ grid
    175174    if options.exist('grid'):
    176         if 'on' in options.getfieldvalue('grid','on'):
     175        if 'on' in options.getfieldvalue('grid', 'on'):
    177176            ax.grid()
    178177    # }}}
    179178    # {{{ colormap
    180179    if options.exist('colornorm'):
    181         norm=options.getfieldvalue('colornorm')
     180        norm = options.getfieldvalue('colornorm')
    182181    if options.exist('colormap'):
    183         cmap=getcolormap(options)
    184     cbar_extend=0
     182        cmap = getcolormap(options)
     183    cbar_extend = 0
    185184    if options.exist('cmap_set_over'):
    186         cbar_extend+=1
     185        cbar_extend += 1
    187186    if options.exist('cmap_set_under'):
    188         cbar_extend+=2
     187        cbar_extend += 2
    189188    # }}}
    190189    # {{{ contours
    191190    if options.exist('contourlevels'):
    192         plot_contour(md,data,options,ax)
     191        plot_contour(md, data, options, ax)
    193192    # }}}
    194193    # {{{ wrapping TODO
    195194    # }}}
    196195    # {{{ colorbar
    197     if options.getfieldvalue('colorbar',1)==1:
    198         if cbar_extend==0:
    199             extend='neither'
    200         elif cbar_extend==1:
    201             extend='max'
    202         elif cbar_extend==2:
    203             extend='min'
    204         elif cbar_extend==3:
    205             extend='both'
    206 
    207         cb = mpl.colorbar.ColorbarBase(ax.cax,cmap=cmap, norm=norm, extend=extend)
     196    if options.getfieldvalue('colorbar', 1) == 1:
     197        if cbar_extend == 0:
     198            extend = 'neither'
     199        elif cbar_extend == 1:
     200            extend = 'max'
     201        elif cbar_extend == 2:
     202            extend = 'min'
     203        elif cbar_extend == 3:
     204            extend = 'both'
     205
     206        cb = mpl.colorbar.ColorbarBase(ax.cax, cmap=cmap, norm=norm, extend=extend)
    208207        if options.exist('alpha'):
    209208            cb.set_alpha(options.getfieldvalue('alpha'))
    210209        if options.exist('colorbarnumticks'):
    211             cb.locator=MaxNLocator(nbins=options.getfieldvalue('colorbarnumticks',5))
    212         else:
    213             cb.locator=MaxNLocator(nbins=5) # default 5 ticks
     210            cb.locator = MaxNLocator(nbins=options.getfieldvalue('colorbarnumticks', 5))
     211        else:
     212            cb.locator = MaxNLocator(nbins=5) # default 5 ticks
    214213        if options.exist('colorbartickspacing'):
    215             locs=np.arange(lims[0],lims[1]+1,options.getfieldvalue('colorbartickspacing'))
     214            locs = np.arange(lims[0], lims[1] + 1, options.getfieldvalue('colorbartickspacing'))
    216215            cb.set_ticks(locs)
    217216        if options.exist('colorbarlines'):
    218             locs=np.arange(lims[0],lims[1]+1,options.getfieldvalue('colorbarlines'))
    219             cb.add_lines(locs,['k' for i in range(len(locs))],np.ones_like(locs))
     217            locs = np.arange(lims[0], lims[1] + 1, options.getfieldvalue('colorbarlines'))
     218            cb.add_lines(locs, ['k' for i in range(len(locs))], np.ones_like(locs))
    220219        if options.exist('colorbarlineatvalue'):
    221             locs=options.getfieldvalue('colorbarlineatvalue')
    222             colors=options.getfieldvalue('colorbarlineatvaluecolor',['k' for i in range (len(locs))])
    223             widths=options.getfieldvalue('colorbarlineatvaluewidth',np.ones_like(locs))
    224             cb.add_lines(locs,colors,widths)
     220            locs = options.getfieldvalue('colorbarlineatvalue')
     221            colors = options.getfieldvalue('colorbarlineatvaluecolor', ['k' for i in range(len(locs))])
     222            widths = options.getfieldvalue('colorbarlineatvaluewidth', np.ones_like(locs))
     223            cb.add_lines(locs, colors, widths)
    225224        if options.exist('colorbartitle'):
    226225            if options.exist('colorbartitlepad'):
    227226                cb.set_label(options.getfieldvalue('colorbartitle'),
    228                                          labelpad=options.getfieldvalue('colorbartitlepad'),fontsize=fontsize)
     227                             labelpad=options.getfieldvalue('colorbartitlepad'),
     228                             fontsize=fontsize)
    229229            else:
    230                 cb.set_label(options.getfieldvalue('colorbartitle'),fontsize=fontsize)
     230                cb.set_label(options.getfieldvalue('colorbartitle'), fontsize=fontsize)
    231231        cb.ax.tick_params(labelsize=fontsize)
    232232        cb.solids.set_rasterized(True)
     
    234234        cb.draw_all()
    235235        if options.exist('colorbarfontsize'):
    236             colorbarfontsize=options.getfieldvalue('colorbarfontsize')
     236            colorbarfontsize = options.getfieldvalue('colorbarfontsize')
    237237            cb.ax.tick_params(labelsize=colorbarfontsize)
    238             # cb.set_ticks([0,-10])
    239             # cb.set_ticklabels([-10,0,10])
     238    # cb.set_ticks([0, - 10])
     239    # cb.set_ticklabels([-10, 0, 10])
    240240        if options.exist('colorbarticks'):
    241             colorbarticks=options.getfieldvalue('colorbarticks')
     241            colorbarticks = options.getfieldvalue('colorbarticks')
    242242            cb.set_ticks(colorbarticks)
    243         plt.sca(ax) # return to original axes control
     243        plt.sca(ax)  # return to original axes control
    244244    # }}}
    245245    # {{{ expdisp
    246246    if options.exist('expdisp'):
    247          expdisp(ax,options)
     247        expdisp(ax, options)
    248248    # }}}
    249249    # {{{ area TODO
     
    251251    # {{{ text
    252252    if options.exist('text'):
    253         text=options.getfieldvalue('text')
    254         textx=options.getfieldvalue('textx')
    255         texty=options.getfieldvalue('texty')
    256         textcolor=options.getfieldvalue('textcolor')
    257         textweight=options.getfieldvalue('textweight')
    258         textrotation=options.getfieldvalue('textrotation')
    259         textfontsize=options.getfieldvalue('textfontsize')
    260         for label,x,y,size,color,weight,rotation in zip(text,textx,texty,textfontsize,textcolor,textweight,textrotation):
    261             ax.text(x,y,label,transform=ax.transAxes,fontsize=size,color=color,weight=weight,rotation=rotation)
     253        text = options.getfieldvalue('text')
     254        textx = options.getfieldvalue('textx')
     255        texty = options.getfieldvalue('texty')
     256        textcolor = options.getfieldvalue('textcolor')
     257        textweight = options.getfieldvalue('textweight')
     258        textrotation = options.getfieldvalue('textrotation')
     259        textfontsize = options.getfieldvalue('textfontsize')
     260        for label, x, y, size, color, weight, rotation in zip(text, textx, texty, textfontsize, textcolor, textweight, textrotation):
     261            ax.text(x, y, label, transform=ax.transAxes, fontsize=size, color=color, weight=weight, rotation=rotation)
    262262    # }}}
    263263    # {{{ north arrow TODO
     
    267267    # {{{ streamlines TOFIX
    268268    if options.exist('streamlines'):
    269         plot_streamlines(md,options,ax)
     269        plot_streamlines(md, options, ax)
    270270    # }}}
    271271    # {{{ axis positions TODO
  • issm/trunk-jpl/src/m/plot/checkplotoptions.py

    r23716 r24213  
    1 import numpy as  np
     1import numpy as np
    22
    3 def checkplotoptions(md,options):
    4         '''
    5         CHECKPLOTOPTIONS - build a structure that holds all plot options
    63
    7                 Usage:
    8                         options=checkplotoptions(md,options)
     4def checkplotoptions(md, options):
     5    '''
     6    CHECKPLOTOPTIONS - build a structure that holds all plot options
    97
    10                 See also: PLOTMODEL
     8        Usage:
     9            options = checkplotoptions(md, options)
    1110
    12                 NOTE: not fully implemented yet
    13         '''
     11        See also: PLOTMODEL
    1412
    15         # {{{ units
    16         if options.exist('unit'):
    17                 if 'km' in options.getfieldvalue('unit','km'):
    18                         options.changefieldvalue('unit',10**-3)
    19                 elif '100km' in options.getfieldvalue('unit','100km'):
    20                         options.changefieldvalue('unit',10**-5)
    21         # }}}
    22         # {{{ density
    23         if options.exist('density'):
    24                 density=options.getfieldvalue('density')
    25                 options.changefieldvalue('density',abs(ceil(density)))
    26         # }}}
    27         # {{{ show section
    28         if options.exist('showsection'):
    29                 if 'on' in options.getfieldvalue('showsection','on'):
    30                         options.changefieldvalue('showsection',4)
    31         # }}}
    32         # {{{ smooth values
    33         if options.exist('smooth'):
    34                 if 'on' in options.getfieldvalue('smooth','on'):
    35                         options.changefieldvalue('smooth',0)
    36         # }}}
    37         # {{{ contouronly values
    38         if options.exist('contouronly'):
    39                 if 'on' in options.getfieldvalue('contouronly','on'):
    40                         options.changefieldvalue('contouronly',1)
    41         # }}}
    42         # {{{ colorbar
    43         if options.exist('colorbar'):
    44                 if 'on' in options.getfieldvalue('colorbar','on'):
    45                         options.changefieldvalue('colorbar',1)
    46                 elif 'off' in options.getfieldvalue('colorbar','off'):
    47                         options.changefieldvalue('colorbar',0)
    48         # }}}
    49         # {{{ text
    50         if options.exist('text'):
    51                 # text values (coerce to list for consistent functionality)
    52                 textlist=[]
    53                 text=options.getfieldvalue('text','default text')
    54                 textlist.extend([text] if isinstance(text,str) else text)
    55                 numtext=len(textlist)
    56                 # text position
    57                 textpos=options.getfieldvalue('textposition',[0.5,0.5])
    58                 if not isinstance(textpos,list):
    59                         raise Exception('textposition should be passed as a list')
    60                 if any(isinstance(i,list) for i in textpos):
    61                         textx=[item[0] for item in textpos]
    62                         texty=[item[1] for item in textpos]
    63                 else:
    64                         textx=[textpos[0]]
    65                         texty=[textpos[1]]
    66                 if len(textx)!=numtext or len(texty)!=numtext:
    67                         raise Exception('textposition should contain one list of x,y vertices for every text instance')
     13        NOTE: not fully implemented yet
     14    '''
    6815
    69                 # font size
    70                 if options.exist('textfontsize'):
    71                         textfontsize=options.getfieldvalue('textfontsize',12)
    72                         sizelist=[]
    73                         sizelist.extend(textsize if isinstance(textfontsize,list) else [textfontsize])
    74                 else:
    75                         sizelist=[12]
    76                 if len(sizelist)==1:
    77                         sizelist=np.tile(sizelist,numtext)
     16    # {{{ units
     17    if options.exist('unit'):
     18        if 'km' in options.getfieldvalue('unit', 'km'):
     19            options.changefieldvalue('unit', 10**- 3)
     20        elif '100km' in options.getfieldvalue('unit', '100km'):
     21            options.changefieldvalue('unit', 10**- 5)
     22    # }}}
     23    # {{{ density
     24    if options.exist('density'):
     25        density = options.getfieldvalue('density')
     26        options.changefieldvalue('density', abs(np.ceil(density)))
     27    # }}}
     28    # {{{ show section
     29    if options.exist('showsection'):
     30        if 'on' in options.getfieldvalue('showsection', 'on'):
     31            options.changefieldvalue('showsection', 4)
     32    # }}}
     33    # {{{ smooth values
     34    if options.exist('smooth'):
     35        if 'on' in options.getfieldvalue('smooth', 'on'):
     36            options.changefieldvalue('smooth', 0)
     37    # }}}
     38    # {{{ contouronly values
     39    if options.exist('contouronly'):
     40        if 'on' in options.getfieldvalue('contouronly', 'on'):
     41            options.changefieldvalue('contouronly', 1)
     42    # }}}
     43    # {{{ colorbar
     44    if options.exist('colorbar'):
     45        if 'on' in options.getfieldvalue('colorbar', 'on'):
     46            options.changefieldvalue('colorbar', 1)
     47        elif 'off' in options.getfieldvalue('colorbar', 'off'):
     48            options.changefieldvalue('colorbar', 0)
     49    # }}}
     50    # {{{ layer
     51    if options.exist('layer'):
     52        if options.getfieldvalue('layer') == 0:
     53            raise Exception('Due to Matlab history first layer is numbered 1')
     54        if options.getfieldvalue('layer') == md.mesh.numberoflayers - 1:
     55            print('WARNING : you are plotting layer {}, surface is layer{}.'.format(md.mesh.numberoflayers - 1, md.mesh.numberoflayers))
     56    # }}}
     57    # {{{ text
     58    if options.exist('text'):
     59        # text values (coerce to list for consistent functionality)
     60        textlist = []
     61        text = options.getfieldvalue('text', 'default text')
     62        textlist.extend([text] if isinstance(text, str) else text)
     63        numtext = len(textlist)
     64    # text position
     65        textpos = options.getfieldvalue('textposition', [0.5, 0.5])
     66        if not isinstance(textpos, list):
     67            raise Exception('textposition should be passed as a list')
     68        if any(isinstance(i, list) for i in textpos):
     69            textx = [item[0] for item in textpos]
     70            texty = [item[1] for item in textpos]
     71        else:
     72            textx = [textpos[0]]
     73            texty = [textpos[1]]
     74        if len(textx) != numtext or len(texty) != numtext:
     75            raise Exception('textposition should contain one list of x, y vertices for every text instance')
    7876
    79                 # font color
    80                 if options.exist('textcolor'):
    81                         textcolor=options.getfieldvalue('textcolor','k')
    82                         colorlist=[]
    83                         colorlist.extend(textcolor if isinstance(textcolor,list) else [textcolor])
    84                 else:
    85                         colorlist=['k']
    86                 if len(colorlist)==1:
    87                         colorlist=np.tile(colorlist,numtext)
     77    # font size
     78        if options.exist('textfontsize'):
     79            textfontsize = options.getfieldvalue('textfontsize', 12)
     80            sizelist = []
     81            sizelist.extend(textfontsize if isinstance(textfontsize, list) else [textfontsize])
     82        else:
     83            sizelist = [12]
     84        if len(sizelist) == 1:
     85            sizelist = np.tile(sizelist, numtext)
    8886
    89                 # textweight
    90                 if options.exist('textweight'):
    91                         textweight=options.getfieldvalue('textweight')
    92                         weightlist=[]
    93                         weightlist.extend(textweight if isinstance(textweight,list) else [textweight])
    94                 else:
    95                         weightlist=['normal']
    96                 if len(weightlist)==1:
    97                         weightlist=np.tile(weightlist,numtext)
     87    # font color
     88        if options.exist('textcolor'):
     89            textcolor = options.getfieldvalue('textcolor', 'k')
     90            colorlist = []
     91            colorlist.extend(textcolor if isinstance(textcolor, list) else [textcolor])
     92        else:
     93            colorlist = ['k']
     94        if len(colorlist) == 1:
     95            colorlist = np.tile(colorlist, numtext)
    9896
    99                 # text rotation
    100                 if options.exist('textrotation'):
    101                         textrotation=options.getfieldvalue('textrotation',0)
    102                         rotationlist=[]
    103                         rotationlist.extend(textrotation if isinstance(textrotation,list) else [textrotation])
    104                 else:
    105                         rotationlist=[0]
    106                 if len(rotationlist)==1:
    107                                 rotationlist=np.tile(rotationlist,numtext)
     97    # textweight
     98        if options.exist('textweight'):
     99            textweight = options.getfieldvalue('textweight')
     100            weightlist = []
     101            weightlist.extend(textweight if isinstance(textweight, list) else [textweight])
     102        else:
     103            weightlist = ['normal']
     104        if len(weightlist) == 1:
     105            weightlist = np.tile(weightlist, numtext)
    108106
    109                 options.changefieldvalue('text',textlist)
    110                 options.addfield('textx',textx)
    111                 options.addfield('texty',texty)
    112                 options.changefieldvalue('textfontsize',sizelist)
    113                 options.changefieldvalue('textcolor',colorlist)
    114                 options.changefieldvalue('textweight',weightlist)
    115                 options.changefieldvalue('textrotation',rotationlist)
    116         # }}}
    117         # {{{ expdisp
    118         expdispvaluesarray=[]
    119         expstylevaluesarray=[]
    120         expstylevalues=[]
    121         if options.exist('expstyle'):
    122                 expstylevalues=options.getfieldvalue('expstyle')
    123                 if type(expstylevalues)==str:
    124                         expstylevalues=[expstylevalues]
    125         if options.exist('expdisp'):
    126                 expdispvalues=options.getfieldvalue('expdisp')
    127                 if type(expdispvalues)==str:
    128                         expdispvalues=[expdispvalues]
    129                 for i in np.arange(len(expdispvalues)):
    130                         expdispvaluesarray.append(expdispvalues[i])
    131                         if len(expstylevalues)>i:
    132                                 expstylevaluesarray.append(expstylevalues[i])
    133                         else:
    134                                 expstylevaluesarray.append('-k')
    135         options.changefieldvalue('expstyle',expstylevaluesarray)
    136         options.changefieldvalue('expdisp',expdispvaluesarray)
    137         # }}}
    138         # {{{ latlonnumbering
    139         if options.exist('latlonclick'):
    140                 if 'on' in options.getfieldvalue('latlonclick','on'):
    141                         options.changefieldvalue('latlonclick',1)
    142         # }}}
    143         # {{{ northarrow
    144         if options.exist('northarrow'):
    145                 if 'on' in options.getfieldvalue('northarrow','on'):
    146                         #default values
    147                         Lx=max(md.mesh.x)-min(md.mesh.x)
    148                         Ly=max(md.mesh.y)-min(md.mesh.y)
    149                         options.changefieldvalue('northarrow',[min(md.mesh.x)+1./6.*Lx, min(md.mesh.y)+5./6.*Ly, 1./15.*Ly, 0.25, 1./250.*Ly])
    150         # }}}
    151         # {{{ scale ruler
    152         if options.exist('scaleruler'):
    153                 if 'on' in options.getfieldvalue('scaleruler','off'):
    154                         Lx=max(md.mesh.x)-min(md.mesh.x)
    155                         Ly=max(md.mesh.y)-min(md.mesh.y)
    156                         options.changefieldvalue('scaleruler',[min(md.mesh.x)+6./8.*Lx, min(md.mesh.y)+1./10.*Ly, 10**(np.ceil(np.log10(Lx)))/5, np.floor(Lx/100), 5])
    157         # }}}
    158         # {{{ log scale
    159         if options.exist('log'):
    160                 options.changefieldvalue('cutoff',np.log10(options.getfieldvalue('cutoff',1.5))/np.log10(options.getfieldvalue('log')))
    161         # }}}
    162         return options
     107    # text rotation
     108        if options.exist('textrotation'):
     109            textrotation = options.getfieldvalue('textrotation', 0)
     110            rotationlist = []
     111            rotationlist.extend(textrotation if isinstance(textrotation, list) else [textrotation])
     112        else:
     113            rotationlist = [0]
     114        if len(rotationlist) == 1:
     115            rotationlist = np.tile(rotationlist, numtext)
     116
     117        options.changefieldvalue('text', textlist)
     118        options.addfield('textx', textx)
     119        options.addfield('texty', texty)
     120        options.changefieldvalue('textfontsize', sizelist)
     121        options.changefieldvalue('textcolor', colorlist)
     122        options.changefieldvalue('textweight', weightlist)
     123        options.changefieldvalue('textrotation', rotationlist)
     124    # }}}
     125    # {{{ expdisp
     126    expdispvaluesarray = []
     127    expstylevaluesarray = []
     128    expstylevalues = []
     129    if options.exist('expstyle'):
     130        expstylevalues = options.getfieldvalue('expstyle')
     131        if type(expstylevalues) == str:
     132            expstylevalues = [expstylevalues]
     133    if options.exist('expdisp'):
     134        expdispvalues = options.getfieldvalue('expdisp')
     135        if type(expdispvalues) == str:
     136            expdispvalues = [expdispvalues]
     137        for i in np.arange(len(expdispvalues)):
     138            expdispvaluesarray.append(expdispvalues[i])
     139            if len(expstylevalues) > i:
     140                expstylevaluesarray.append(expstylevalues[i])
     141            else:
     142                expstylevaluesarray.append(' - k')
     143    options.changefieldvalue('expstyle', expstylevaluesarray)
     144    options.changefieldvalue('expdisp', expdispvaluesarray)
     145    # }}}
     146    # {{{ latlonnumbering
     147    if options.exist('latlonclick'):
     148        if 'on' in options.getfieldvalue('latlonclick', 'on'):
     149            options.changefieldvalue('latlonclick', 1)
     150    # }}}
     151    # {{{ northarrow
     152    if options.exist('northarrow'):
     153        if 'on' in options.getfieldvalue('northarrow', 'on'):
     154            #default values
     155            Lx = max(md.mesh.x) - min(md.mesh.x)
     156            Ly = max(md.mesh.y) - min(md.mesh.y)
     157            options.changefieldvalue('northarrow', [min(md.mesh.x) + 1. / 6. * Lx, min(md.mesh.y) + 5. / 6. * Ly, 1. / 15. * Ly, 0.25, 1. / 250. * Ly])
     158    # }}}
     159    # {{{ scale ruler
     160    if options.exist('scaleruler'):
     161        if 'on' in options.getfieldvalue('scaleruler', 'off'):
     162            Lx = max(md.mesh.x) - min(md.mesh.x)
     163            Ly = max(md.mesh.y) - min(md.mesh.y)
     164            options.changefieldvalue('scaleruler', [min(md.mesh.x) + 6. / 8. * Lx, min(md.mesh.y) + 1. / 10. * Ly, 10**(np.ceil(np.log10(Lx))) / 5, np.floor(Lx / 100), 5])
     165    # }}}
     166    # {{{ log scale
     167    if options.exist('log'):
     168        options.changefieldvalue('cutoff', np.log10(options.getfieldvalue('cutoff', 1.5)) / np.log10(options.getfieldvalue('log')))
     169    # }}}
     170    return options
  • issm/trunk-jpl/src/m/plot/colormaps/cmaptools.py

    r23920 r24213  
    1 import numpy as  np
    2 from demmap import *
     1import numpy as np
    32
    43try:
    5         import matplotlib as mpl
    6         import matplotlib.pyplot as plt
    7         from matplotlib.colors import ListedColormap, rgb_to_hsv, hsv_to_rgb
     4    import matplotlib as mpl
     5    import matplotlib.pyplot as plt
     6    from matplotlib.colors import ListedColormap, hsv_to_rgb
    87except ImportError:
    9         print('cannot import matplotlib, no plotting capabilities enabled')
     8    print('cannot import matplotlib, no plotting capabilities enabled')
     9
    1010
    1111def getcolormap(options):
    1212    '''
    1313    get colormap from options and apply
    14    
     14
    1515    default: viridis
    1616    supported:
    1717        matplotlib defaults (see: pyplot.colormaps())
    1818        Rignot
    19         demmap(50,-300,1200)
    20         demmap(50,-300,1200,'ibcao')
    21    
     19        demmap(50, - 300, 1200)
     20        demmap(50, - 300, 1200, 'ibcao')
     21
    2222    Usage:
    2323        cmap = getcolormap(options)
    2424    '''
    25    
     25
    2626    map_name = options.getfieldvalue('colormap')
    2727    cmap = 'viridis'
    28    
     28
    2929    # already a valid colormap, the name of a valid colormap, or empty (use default)
    3030    if type(map_name) == mpl.colors.ListedColormap:
     
    3434    elif map_name == '':
    3535        return cmap
    36    
     36
    3737    # if we don't have a matching colormap, build one
    3838    if map_name == 'Rignot':
    39         alpha=options.getfieldvalue('alpha',1)
    40         cmap = np.array((np.linspace(0,1,128,False),np.ones(128,),np.ones(128,))).T
    41         cmap[:,1] =np.maximum(np.minimum((0.1+cmap[:,0]**(1/alpha)),1),0)
     39        alpha = options.getfieldvalue('alpha', 1)
     40        cmap = np.array((np.linspace(0, 1, 128, False), np.ones(128, ), np.ones(128, ))).T
     41        cmap[:, 1] = np.maximum(np.minimum((0.1 + cmap[:, 0]**(1 / alpha)), 1), 0)
    4242        cmap = hsv_to_rgb(cmap)
    43         # construct a colormap object from an array of shape (n,3/4)
     43    # construct a colormap object from an array of shape (n, 3 / 4)
    4444        cmap = ListedColormap(cmap)
    45        
     45
    4646    #elif map_name == 'Ala':
    47        
     47
    4848    else:
    4949        # map is a library or executable function that constructs a colormap,
     
    5252            cmap = ListedColormap(eval(map_name))
    5353        except:
    54             raise RuntimeError("getcolormap: Error: provided colormap must be supported map or map-constructing function with syntax: 'jet' or 'function(args)'")
     54            raise RuntimeError("getcolormap: Error: provided colormap must be supported map or map - constructing function with syntax: 'jet' or 'function(args)'")
    5555
    5656    return cmap
     
    5858
    5959def truncate_colormap(cmap, minval=0.0, maxval=1.0, n=100):
    60         '''
    61         truncate a colormap within normalized limits [0,1]
     60    '''
     61    truncate a colormap within normalized limits [0, 1]
    6262
    63         cmap - a matplotlib colormap
    64         minval - minimum value, normalized, of cmap to be returned.
    65         maxval - maximum value, normalized, of cmap to be returned.
    66         n - number of levels to use in constructing the new colormap
     63    cmap - a matplotlib colormap
     64    minval - minimum value, normalized, of cmap to be returned.
     65    maxval - maximum value, normalized, of cmap to be returned.
     66    n - number of levels to use in constructing the new colormap
    6767
    68         Example:
    69                 newcmap=truncate_colormap(oldcmap,minval=0.2,maxval=0.8,n=128)
     68    Example:
     69        newcmap = truncate_colormap(oldcmap, minval = 0.2, maxval = 0.8, n = 128)
    7070
    71         '''
     71    '''
    7272
    73         new_cmap = mpl.colors.LinearSegmentedColormap.from_list('trunc({n},{a:.2f},{b:.2f})'.format(n=cmap.name,
    74                 a=minval, b=maxval), cmap(np.linspace(minval, maxval, n)))
    75        
    76         return new_cmap
     73    new_cmap = mpl.colors.LinearSegmentedColormap.from_list('trunc({n}, {a:.2f}, {b:.2f})'.format(n=cmap.name, a=minval, b=maxval), cmap(np.linspace(minval, maxval, n)))
     74
     75    return new_cmap
  • issm/trunk-jpl/src/m/plot/colormaps/demmap.py

    r23920 r24213  
    55from ibcao import ibcao
    66
    7 def demmap(ncolors,minZ,maxZ,colorscheme='dem'):
     7
     8def demmap(ncolors, minZ, maxZ, colorscheme='dem'):
    89    '''DEMMAP - concatenate sea and land color deping on zmin and zmax
    910
    1011       Usage:
    11           cmap = demmap(n,zmin,zmax,colorscheme)
     12          cmap = demmap(n, zmin, zmax, colorscheme)
    1213
    1314       Example:
    14           cmap = demmap(50,-300,1200)
    15           cmap = demmap(50,-300,1200,'dem')
    16           cmap = demmap(50,-300,1200,'ibcao')
     15          cmap = demmap(50, - 300, 1200)
     16          cmap = demmap(50, - 300, 1200, 'dem')
     17          cmap = demmap(50, - 300, 1200, 'ibcao')
    1718    '''
    1819
    1920    if type(colorscheme) != str:
    20         raise RuntimeError('demmap: Error: optional argument "colorscheme" should be a string') 
     21        raise RuntimeError('demmap: Error: optional argument "colorscheme" should be a string')
    2122
    2223    # determine appropriate number of sea and land colors
    2324    if minZ == maxZ:
    24         maxZ = minZ+1
     25        maxZ = minZ + 1
    2526
    2627    cmn = minZ
     
    3637    else:
    3738        # find optimal ratio of land to sea colors
    38         maxminratio = maxZ/abs(minZ)
    39         n1 = np.floor(ncolors/2)
    40         n2 = np.ceil(ncolors/2)
    41         if maxminratio>1:
    42             sea = np.arange(1,n1+1)
    43             land = np.arange(ncolors-1,n2-1,-1)
     39        maxminratio = maxZ / abs(minZ)
     40        n1 = np.floor(ncolors / 2)
     41        n2 = np.ceil(ncolors / 2)
     42        if maxminratio > 1:
     43            sea = np.arange(1, n1 + 1)
     44            land = np.arange(ncolors - 1, n2 - 1, - 1)
    4445        else:
    45             land = np.arange(1,n1+1)
    46             sea = np.arange(ncolors-1,n2-1,-1)
    47        
    48         ratio = land/sea
     46            land = np.arange(1, n1 + 1)
     47            sea = np.arange(ncolors - 1, n2 - 1, - 1)
     48
     49        ratio = land / sea
    4950        errors = abs(ratio - maxminratio) / maxminratio
    5051        indx = np.where(errors == min(errors))
     
    5253        nland = land[indx]
    5354
    54         # determine color limits
    55         seaint = abs(minZ)/nsea
    56         landint = maxZ/nland
     55    # determine color limits
     56        seaint = abs(minZ) / nsea
     57        landint = maxZ / nland
    5758        if seaint >= landint:
    5859            interval = seaint
    5960        else:
    6061            interval = landint
    61        
    62         cmn = -nsea*interval*(1 + 1e-9)      # zero values treated as land
    63         cmx = nland*interval
    6462
     63        cmn = - nsea * interval * (1 + 1e-9)  # zero values treated as land
     64        cmx = nland * interval
    6565
    66     clim = [cmn,cmx]
     66    clim = [cmn, cmx]
    6767
    68     if strcmpi(colorscheme,'dem'):
     68    if strcmpi(colorscheme, 'dem'):
    6969        # concatenate and transpose to match matplotlib's colormap format
    70         cmap = np.concatenate((seacolor(nsea),landcolor(nland)**1.3),axis=1).T
    71     elif strcmpi(colorscheme,'ibcao'):
    72         cmap = ibcao(nsea,nland)
    73        
     70        cmap = np.concatenate((seacolor(nsea), landcolor(nland)**1.3), axis=1).T
     71    elif strcmpi(colorscheme, 'ibcao'):
     72        cmap = ibcao(nsea, nland)
     73
    7474    return cmap
    75 
  • issm/trunk-jpl/src/m/plot/colormaps/ibcao.py

    r23920 r24213  
    11import numpy as np
    22
    3 def ibcao(nsea,nland):
     3
     4def ibcao(nsea, nland):
    45    '''IBCAO - IBCAO color map
    56
    67       Usage:
    7           map = ibcap(nsea,nland)
     8          map = ibcap(nsea, nland)
    89    '''
    910
    10     Jsea = [
    11     0.18039,0.29020,0.57255,
    12     0.18039,0.29020,0.57255,
    13     0.05882,0.44314,0.65490,
    14     0.05882,0.44314,0.65490,
    15     0.02745,0.49804,0.73725,
    16     0.02745,0.49804,0.73725,
    17     0.01176,0.54510,0.78824,
    18     0.01176,0.54510,0.78824,
    19     0.00784,0.63529,0.83922,
    20     0.00784,0.63529,0.83922,
    21     0.06667,0.71765,0.86667,
    22     0.06667,0.71765,0.86667,
    23     0.17647,0.75294,1.00000,
    24     0.17647,0.75294,1.00000,
    25     0.23529,0.76471,0.85882,
    26     0.23529,0.76471,0.85882,
    27     0.24314,0.76471,0.83922,
    28     0.24314,0.76471,0.83922,
    29     0.25882,0.76078,0.81176,
    30     0.25882,0.76078,0.81176,
    31     0.27451,0.76078,0.76078,
    32     0.27451,0.76078,0.76078,
    33     0.41961,0.78431,0.74902,
    34     0.41961,0.78431,0.74902,
    35     0.60000,0.83137,0.74902,
    36     0.60000,0.83137,0.74902
    37     ]
     11    Jsea = [0.18039, 0.29020, 0.57255,
     12            0.18039, 0.29020, 0.57255,
     13            0.05882, 0.44314, 0.65490,
     14            0.05882, 0.44314, 0.65490,
     15            0.02745, 0.49804, 0.73725,
     16            0.02745, 0.49804, 0.73725,
     17            0.01176, 0.54510, 0.78824,
     18            0.01176, 0.54510, 0.78824,
     19            0.00784, 0.63529, 0.83922,
     20            0.00784, 0.63529, 0.83922,
     21            0.06667, 0.71765, 0.86667,
     22            0.06667, 0.71765, 0.86667,
     23            0.17647, 0.75294, 1.00000,
     24            0.17647, 0.75294, 1.00000,
     25            0.23529, 0.76471, 0.85882,
     26            0.23529, 0.76471, 0.85882,
     27            0.24314, 0.76471, 0.83922,
     28            0.24314, 0.76471, 0.83922,
     29            0.25882, 0.76078, 0.81176,
     30            0.25882, 0.76078, 0.81176,
     31            0.27451, 0.76078, 0.76078,
     32            0.27451, 0.76078, 0.76078,
     33            0.41961, 0.78431, 0.74902,
     34            0.41961, 0.78431, 0.74902,
     35            0.60000, 0.83137, 0.74902,
     36            0.60000, 0.83137, 0.74902]
    3837
    39     Jland = [
    40     0.85098,0.84314,0.30588,
    41     0.85098,0.84314,0.30588,
    42     0.93333,0.89020,0.41961,
    43     0.93333,0.89020,0.41961,
    44     0.93725,0.80784,0.35686,
    45     0.93725,0.80784,0.35686,
    46     0.89804,0.74510,0.31765,
    47     0.89804,0.74510,0.31765,
    48     0.85098,0.63922,0.21961,
    49     0.85098,0.63922,0.21961,
    50     0.75686,0.55294,0.22353,
    51     0.75686,0.55294,0.22353,
    52     0.71765,0.50980,0.22353,
    53     0.71765,0.50980,0.22353,
    54     0.68627,0.48235,0.21961,
    55     0.68627,0.48235,0.21961,
    56     0.65490,0.45882,0.21569,
    57     0.65490,0.45882,0.21569,
    58     0.58824,0.39608,0.20392,
    59     0.58824,0.39608,0.20392,
    60     1.00000,1.00000,1.00000
    61     ]
     38    Jland = [0.85098, 0.84314, 0.30588,
     39             0.85098, 0.84314, 0.30588,
     40             0.93333, 0.89020, 0.41961,
     41             0.93333, 0.89020, 0.41961,
     42             0.93725, 0.80784, 0.35686,
     43             0.93725, 0.80784, 0.35686,
     44             0.89804, 0.74510, 0.31765,
     45             0.89804, 0.74510, 0.31765,
     46             0.85098, 0.63922, 0.21961,
     47             0.85098, 0.63922, 0.21961,
     48             0.75686, 0.55294, 0.22353,
     49             0.75686, 0.55294, 0.22353,
     50             0.71765, 0.50980, 0.22353,
     51             0.71765, 0.50980, 0.22353,
     52             0.68627, 0.48235, 0.21961,
     53             0.68627, 0.48235, 0.21961,
     54             0.65490, 0.45882, 0.21569,
     55             0.65490, 0.45882, 0.21569,
     56             0.58824, 0.39608, 0.20392,
     57             0.58824, 0.39608, 0.20392,
     58             1.00000, 1.00000, 1.00000]
    6259
    63     # Jsea and Jland are each a series of r,g,b triples, reshape them as such
    64    
    65     lsea = int(len(Jsea)/3)
    66     Jsea = np.array(Jsea).reshape(lsea,3)
    67     a = np.linspace(1,lsea,nsea)
    68     b = np.arange(1,lsea+1)
    69     # interpolate color on each channel r,g,b
    70     ysea = np.array([np.interp(a, b, Jsea[:,i]) for i in range(3)])
     60    # Jsea and Jland are each a series of r, g, b triples, reshape them as such
    7161
    72     lland = int(len(Jland)/3)
    73     Jland = np.array(Jland).reshape(lland,3)
    74     a = np.linspace(1,lland,nland)
    75     b = np.arange(1,lland+1)
    76     # interpolate color on each channel r,g,b
    77     yland = np.array([np.interp(a, b, Jland[:,i]) for i in range(3)])
     62    lsea = int(len(Jsea) / 3)
     63    Jsea = np.array(Jsea).reshape(lsea, 3)
     64    a = np.linspace(1, lsea, nsea)
     65    b = np.arange(1, lsea + 1)
     66    # interpolate color on each channel r, g, b
     67    ysea = np.array([np.interp(a, b, Jsea[:, i]) for i in range(3)])
     68
     69    lland = int(len(Jland) / 3)
     70    Jland = np.array(Jland).reshape(lland, 3)
     71    a = np.linspace(1, lland, nland)
     72    b = np.arange(1, lland + 1)
     73    # interpolate color on each channel r, g, b
     74    yland = np.array([np.interp(a, b, Jland[:, i]) for i in range(3)])
    7875
    7976    # concatenate and transpose to match matplotlib's colormap format
    80     map = np.concatenate((ysea,yland),axis=1).T
     77    map = np.concatenate((ysea, yland), axis=1).T
    8178
    8279    return map
  • issm/trunk-jpl/src/m/plot/colormaps/landcolor.py

    r23920 r24213  
    11import numpy as np
     2
    23
    34def landcolor(n=256):
    45    '''LANDCOLOR Land colormap'''
    56
    6     J = [
    7     0.095678,0.53427,0.21682,
    8     0.15785,0.5979,0.23274,
    9     0.21286,0.64673,0.2514,
    10     0.26411,0.68789,0.27268,
    11     0.32959,0.72416,0.31308,
    12     0.39794,0.75695,0.36038,
    13     0.46153,0.7871,0.40624,
    14     0.52108,0.81516,0.45135,
    15     0.57702,0.84152,0.49547,
    16     0.62973,0.86645,0.53891,
    17     0.67946,0.89016,0.58187,
    18     0.72647,0.91282,0.62427,
    19     0.77095,0.93455,0.66619,
    20     0.81306,0.95546,0.70772,
    21     0.85292,0.97563,0.7489,
    22     0.89066,0.99514,0.78976,
    23     0.88379,0.98595,0.77038,
    24     0.86389,0.96758,0.73236,
    25     0.84615,0.94972,0.69623,
    26     0.8303,0.93233,0.66186,
    27     0.81612,0.91536,0.6291,
    28     0.80341,0.8988,0.59784,
    29     0.79201,0.8826,0.56795,
    30     0.78191,0.86676,0.53946,
    31     0.7729,0.85123,0.51224,
    32     0.76479,0.83602,0.48615,
    33     0.75747,0.8211,0.46111,
    34     0.75084,0.80645,0.43704,
    35     0.74506,0.79206,0.41414,
    36     0.73981,0.77792,0.39211,
    37     0.73501,0.76401,0.37089,
    38     0.73068,0.75033,0.35052,
    39     0.72683,0.73685,0.33106,
    40     0.72042,0.72074,0.31228,
    41     0.71032,0.70085,0.29417,
    42     0.69761,0.67821,0.27694,
    43     0.68489,0.65558,0.26026,
    44     0.67235,0.63313,0.24418,
    45     0.65997,0.61082,0.22889,
    46     0.64775,0.58874,0.21406,
    47     0.63568,0.56689,0.19983,
    48     0.62376,0.54527,0.18622,
    49     0.61197,0.52391,0.17299,
    50     0.60033,0.50283,0.16046,
    51     0.58881,0.48203,0.14832,
    52     0.57742,0.46151,0.13667,
    53     0.56616,0.44133,0.12555,
    54     0.55502,0.4214,0.11472,
    55     0.54398,0.4019,0.10456,
    56     0.53306,0.38266,0.094633,
    57     0.52226,0.36382,0.085242,
    58     0.51155,0.3453,0.076179,
    59     0.50095,0.32714,0.067515,
    60     0.49045,0.30938,0.059259,
    61     0.48005,0.29193,0.051294,
    62     0.46973,0.27495,0.043796,
    63     0.45951,0.25823,0.0365,
    64     0.44938,0.24206,0.029715,
    65     0.43934,0.22609,0.023063,
    66     0.42938,0.21074,0.016949,
    67     0.41951,0.19556,0.010917,
    68     0.40971,0.18105,0.0054326,
    69     0.4,0.16667,0
    70     ]
     7    J = [0.095678, 0.53427, 0.21682,
     8         0.15785, 0.5979, 0.23274,
     9         0.21286, 0.64673, 0.2514,
     10         0.26411, 0.68789, 0.27268,
     11         0.32959, 0.72416, 0.31308,
     12         0.39794, 0.75695, 0.36038,
     13         0.46153, 0.7871, 0.40624,
     14         0.52108, 0.81516, 0.45135,
     15         0.57702, 0.84152, 0.49547,
     16         0.62973, 0.86645, 0.53891,
     17         0.67946, 0.89016, 0.58187,
     18         0.72647, 0.91282, 0.62427,
     19         0.77095, 0.93455, 0.66619,
     20         0.81306, 0.95546, 0.70772,
     21         0.85292, 0.97563, 0.7489,
     22         0.89066, 0.99514, 0.78976,
     23         0.88379, 0.98595, 0.77038,
     24         0.86389, 0.96758, 0.73236,
     25         0.84615, 0.94972, 0.69623,
     26         0.8303, 0.93233, 0.66186,
     27         0.81612, 0.91536, 0.6291,
     28         0.80341, 0.8988, 0.59784,
     29         0.79201, 0.8826, 0.56795,
     30         0.78191, 0.86676, 0.53946,
     31         0.7729, 0.85123, 0.51224,
     32         0.76479, 0.83602, 0.48615,
     33         0.75747, 0.8211, 0.46111,
     34         0.75084, 0.80645, 0.43704,
     35         0.74506, 0.79206, 0.41414,
     36         0.73981, 0.77792, 0.39211,
     37         0.73501, 0.76401, 0.37089,
     38         0.73068, 0.75033, 0.35052,
     39         0.72683, 0.73685, 0.33106,
     40         0.72042, 0.72074, 0.31228,
     41         0.71032, 0.70085, 0.29417,
     42         0.69761, 0.67821, 0.27694,
     43         0.68489, 0.65558, 0.26026,
     44         0.67235, 0.63313, 0.24418,
     45         0.65997, 0.61082, 0.22889,
     46         0.64775, 0.58874, 0.21406,
     47         0.63568, 0.56689, 0.19983,
     48         0.62376, 0.54527, 0.18622,
     49         0.61197, 0.52391, 0.17299,
     50         0.60033, 0.50283, 0.16046,
     51         0.58881, 0.48203, 0.14832,
     52         0.57742, 0.46151, 0.13667,
     53         0.56616, 0.44133, 0.12555,
     54         0.55502, 0.4214, 0.11472,
     55         0.54398, 0.4019, 0.10456,
     56         0.53306, 0.38266, 0.094633,
     57         0.52226, 0.36382, 0.085242,
     58         0.51155, 0.3453, 0.076179,
     59         0.50095, 0.32714, 0.067515,
     60         0.49045, 0.30938, 0.059259,
     61         0.48005, 0.29193, 0.051294,
     62         0.46973, 0.27495, 0.043796,
     63         0.45951, 0.25823, 0.0365,
     64         0.44938, 0.24206, 0.029715,
     65         0.43934, 0.22609, 0.023063,
     66         0.42938, 0.21074, 0.016949,
     67         0.41951, 0.19556, 0.010917,
     68         0.40971, 0.18105, 0.0054326,
     69         0.4, 0.16667, 0]
    7170
    72     # J is a series of r,g,b triples, reshape it as such
    73     l = int(len(J)/3)
    74     J = np.array(J).reshape(l,3)
    75     a = np.linspace(1,l,n)
    76     b = np.arange(1,l+1)
     71    # J is a series of r, g, b triples, reshape it as such
     72    length = int(len(J) / 3)
     73    J = np.array(J).reshape(length, 3)
     74    a = np.linspace(1, length, n)
     75    b = np.arange(1, length + 1)
    7776
    78     # interpolate color on each channel r,g,b
    79     y = np.array([np.interp(a, b, J[:,i]) for i in range(3)])
     77    # interpolate color on each channel r, g, b
     78    y = np.array([np.interp(a, b, J[:, i]) for i in range(3)])
    8079
    8180    return y
  • issm/trunk-jpl/src/m/plot/colormaps/seacolor.py

    r23920 r24213  
    11import numpy as np
     2
    23
    34def seacolor(n=256):
    45    '''SEACOLOR Sea colormap'''
    56
    6     J = [
    7     0.0392,          0,  0.4745,
    8     0.1020,          0,  0.5373,
    9     0.1020,          0,  0.5373,
    10     0.1490,          0,  0.5961,
    11     0.1490,          0,  0.5961,
    12     0.1059,     0.0118,  0.6510,
    13     0.1059,     0.0118,  0.6510,
    14     0.0627,     0.0235,  0.7059,
    15     0.0627,     0.0235,  0.7059,
    16     0.0196,     0.0353,  0.7569,
    17     0.0196,     0.0353,  0.7569,
    18          0,     0.0549,  0.7961,
    19          0,     0.0549,  0.7961,
    20          0,     0.0863,  0.8235,
    21          0,     0.0863,  0.8235,
    22          0,     0.1176,  0.8471,
    23          0,     0.1176,  0.8471,
    24          0,     0.1529,  0.8745,
    25          0,     0.1529,  0.8745,
    26     0.0471,     0.2667,  0.9059,
    27     0.0471,     0.2667,  0.9059,
    28     0.1020,     0.4000,  0.9412,
    29     0.1020,     0.4000,  0.9412,
    30     0.0745,     0.4588,  0.9569,
    31     0.0745,     0.4588,  0.9569,
    32     0.0549,     0.5216,  0.9765,
    33     0.0549,     0.5216,  0.9765,
    34     0.0824,     0.6196,  0.9882,
    35     0.0824,     0.6196,  0.9882,
    36     0.1176,     0.6980,  1.0000,
    37     0.1176,     0.6980,  1.0000,
    38     0.1686,     0.7294,  1.0000,
    39     0.1686,     0.7294,  1.0000,
    40     0.2157,     0.7569,  1.0000,
    41     0.2157,     0.7569,  1.0000,
    42     0.2549,     0.7843,  1.0000,
    43     0.2549,     0.7843,  1.0000,
    44     0.3098,     0.8235,  1.0000,
    45     0.3098,     0.8235,  1.0000,
    46     0.3686,     0.8745,  1.0000,
    47     0.3686,     0.8745,  1.0000,
    48     0.5412,     0.8902,  1.0000,
    49     0.5412,     0.8902,  1.0000,
    50     0.7373,     0.9020,  1.0000
    51     ]
     7    J = [0.0392, 0, 0.4745,
     8         0.1020, 0, 0.5373,
     9         0.1020, 0, 0.5373,
     10         0.1490, 0, 0.5961,
     11         0.1490, 0, 0.5961,
     12         0.1059, 0.0118, 0.6510,
     13         0.1059, 0.0118, 0.6510,
     14         0.0627, 0.0235, 0.7059,
     15         0.0627, 0.0235, 0.7059,
     16         0.0196, 0.0353, 0.7569,
     17         0.0196, 0.0353, 0.7569,
     18         0, 0.0549, 0.7961,
     19         0, 0.0549, 0.7961,
     20         0, 0.0863, 0.8235,
     21         0, 0.0863, 0.8235,
     22         0, 0.1176, 0.8471,
     23         0, 0.1176, 0.8471,
     24         0, 0.1529, 0.8745,
     25         0, 0.1529, 0.8745,
     26         0.0471, 0.2667, 0.9059,
     27         0.0471, 0.2667, 0.9059,
     28         0.1020, 0.4000, 0.9412,
     29         0.1020, 0.4000, 0.9412,
     30         0.0745, 0.4588, 0.9569,
     31         0.0745, 0.4588, 0.9569,
     32         0.0549, 0.5216, 0.9765,
     33         0.0549, 0.5216, 0.9765,
     34         0.0824, 0.6196, 0.9882,
     35         0.0824, 0.6196, 0.9882,
     36         0.1176, 0.6980, 1.0000,
     37         0.1176, 0.6980, 1.0000,
     38         0.1686, 0.7294, 1.0000,
     39         0.1686, 0.7294, 1.0000,
     40         0.2157, 0.7569, 1.0000,
     41         0.2157, 0.7569, 1.0000,
     42         0.2549, 0.7843, 1.0000,
     43         0.2549, 0.7843, 1.0000,
     44         0.3098, 0.8235, 1.0000,
     45         0.3098, 0.8235, 1.0000,
     46         0.3686, 0.8745, 1.0000,
     47         0.3686, 0.8745, 1.0000,
     48         0.5412, 0.8902, 1.0000,
     49         0.5412, 0.8902, 1.0000,
     50         0.7373, 0.9020, 1.0000]
    5251
    53     # J is a series of r,g,b triples, reshape it as such
    54     l = int(len(J)/3)
    55     J = np.array(J).reshape(l,3)
    56     a = np.linspace(1,l,n)
    57     b = np.arange(1,l+1)
     52    # J is a series of r, g, b triples, reshape it as such
     53    length = int(len(J) / 3)
     54    J = np.array(J).reshape(length, 3)
     55    a = np.linspace(1, length, n)
     56    b = np.arange(1, length + 1)
    5857
    59     # interpolate color on each channel r,g,b
    60     y = np.array([np.interp(a, b, J[:,i]) for i in range(3)])
     58    # interpolate color on each channel r, g, b
     59    y = np.array([np.interp(a, b, J[:, i]) for i in range(3)])
    6160
    6261    return y
  • issm/trunk-jpl/src/m/plot/export_gl.py

    r23716 r24213  
    22from checkplotoptions import checkplotoptions
    33from model import model
    4 import numpy as  np
     4import numpy as np
    55import math
    66from writejsfile import writejsfile
    77
    8 def export_gl(md,*varargin):
    9         class ResultObj(object):
    10             def __getattr__(self, attr):
    11                 return self.__dict__.get(attr)
    128
    13         print ('getting options')
    14         templist=plotoptions(varargin);
    15         optionslist=templist.list;
    16         options=optionslist[1];
    17         options=checkplotoptions(md,options);
    18         #print (templist,options)
    19         #templist contains options 0-3. Use in the future to rework.
    20        
    21         #Setup unique directory in present dir:
    22         print ('setting directory')
    23         directory=optionslist[0].getfieldvalue('directory');
    24         databasename=optionslist[0].getfieldvalue('database');
    25        
    26         #scaling factor:
    27         print ('setting scaling factor')
    28         scaling_factor=optionslist[0].getfieldvalue('scaling_factor');
     9def export_gl(md, * varargin):
     10    class ResultObj(object):
     11        def __getattr__(self, attr):
     12            return self.__dict__.get(attr)
    2913
    30         #Deal with title:
    31         print ('setting title')
    32         if optionslist[0].exist('title'):
    33                 title=optionslist[0].getfieldvalue('title');
    34         else:
    35                 title='';
     14    print('getting options')
     15    templist = plotoptions(varargin)
     16    optionslist = templist.list
     17    options = optionslist[1]
     18    options = checkplotoptions(md, options)
     19    #print (templist, options)
     20    #templist contains options 0 - 3. Use in the future to rework.
    3621
    37         #initialize model:
    38         print ('initializing model')
    39         model.title=title;
    40         model.initialZoomFactor=options.getfieldvalue('zoom',-.25);
     22    #Setup unique directory in present dir:
     23    print('setting directory')
     24    directory = optionslist[0].getfieldvalue('directory')
     25    databasename = optionslist[0].getfieldvalue('database')
    4126
    42         #Deal with contour {{{
    43         print ('getting contour')
    44         print((md.mesh.segments))
    45         segmenets0 = [s - 1 for s in md.mesh.segments[:,0]];
    46         segmenets1 = [s - 1 for s in md.mesh.segments[:,1]];
    47        
    48         contour_lat1=md.mesh.lat.take(segmenets0)
    49         contour_lat2=md.mesh.lat.take(segmenets1);
    50         contour_long1=md.mesh.long.take(segmenets0);
    51         contour_long2=md.mesh.long.take(segmenets1);
    52         contour_surface1=md.geometry.surface.take(segmenets0);
    53         contour_surface2=md.geometry.surface.take(segmenets1);
     27    #scaling factor:
     28    print('setting scaling factor')
     29    scaling_factor = optionslist[0].getfieldvalue('scaling_factor')
    5430
    55         R1=6371000*np.ones(len(contour_surface1))+scaling_factor*contour_surface1;
    56         R2=6371000*np.ones(len(contour_surface2))+scaling_factor*contour_surface2;
     31    #Deal with title:
     32    print('setting title')
     33    if optionslist[0].exist('title'):
     34        title = optionslist[0].getfieldvalue('title')
     35    else:
     36        title = ''
    5737
    58         model.contourx1 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R1, contour_lat1, contour_long1));
    59         model.contoury1 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R1, contour_lat1, contour_long1));
    60         model.contourz1 = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R1, contour_lat1));
    61        
    62         model.contourx2 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R2, contour_lat2, contour_long2));
    63         model.contoury2 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R2, contour_lat2, contour_long2));
    64         model.contourz2 = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R2, contour_lat2));
     38    #initialize model:
     39    print('initializing model')
     40    model.title = title
     41    model.initialZoomFactor = options.getfieldvalue('zoom', - .25)
    6542
    66         #}}}
    67         #Deal with mesh and results {{{
    68         print ('getting mesh')
    69         surface=md.geometry.surface.flatten();
    70         numberofelements=md.mesh.numberofelements;
    71         numberofvertices=md.mesh.numberofvertices;
    72         R=6371000*np.ones(len(md.mesh.lat))+scaling_factor*surface;
    73        
    74         x = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R, md.mesh.lat,md.mesh.long));
    75         y = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R, md.mesh.lat,md.mesh.long));
    76         z = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R, md.mesh.lat));
    77        
    78         #Deal with triangulation:
    79         print('getting triangulation')
    80         model.index=md.mesh.elements;
    81         model.x=x;
    82         model.y=y;
    83         model.z=z;
    84         model.surface=surface;
    85        
    86         results = []
    87         print(optionslist)     
    88         #Deal with data:
    89         print('getting data')
    90         for i in range(0,len(optionslist)):
    91                 options=optionslist[i];
    92                 options=checkplotoptions(md,options);
    93                 data=options.getfieldvalue('data').flatten();
    94                 results.append(ResultObj())
    95                 results[i].data=data;
    96                 results[i].caxis=options.getfieldvalue('caxis',[min(data), max(data)]);
     43    #Deal with contour {{{
     44    print('getting contour')
     45    print(md.mesh.segments)
     46    segmenets0 = [s - 1 for s in md.mesh.segments[:, 0]]
     47    segmenets1 = [s - 1 for s in md.mesh.segments[:, 1]]
    9748
    98                 label=options.getfieldvalue('label','');
    99                 if label=='':
    100                         #create generic label:
    101                         label=['data', str(i)];
    102                 results[i].label=label;
     49    contour_lat1 = md.mesh.lat.take(segmenets0)
     50    contour_lat2 = md.mesh.lat.take(segmenets1)
     51    contour_long1 = md.mesh.long.take(segmenets0)
     52    contour_long2 = md.mesh.long.take(segmenets1)
     53    contour_surface1 = md.geometry.surface.take(segmenets0)
     54    contour_surface2 = md.geometry.surface.take(segmenets1)
    10355
    104                 shortlabel=options.getfieldvalue('shortlabel','');
    105                 if shortlabel=='':
    106                         #create generic short label:
    107                         shortlabel=['data', str(i)];
    108                 results[i].shortlabel=shortlabel;
     56    R1 = 6371000 * np.ones(len(contour_surface1)) + scaling_factor * contour_surface1
     57    R2 = 6371000 * np.ones(len(contour_surface2)) + scaling_factor * contour_surface2
    10958
    110                 if type(data[2])!=np.float64:
    111                         time_range=options.getfieldvalue('time_range',[0, 100]);
    112                         results[i].time_range=time_range;
     59    model.contourx1 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R1, contour_lat1, contour_long1))
     60    model.contoury1 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R1, contour_lat1, contour_long1))
     61    model.contourz1 = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R1, contour_lat1))
    11362
    114                 unit=options.getfieldvalue('unit','');
    115                 if unit=='':
    116                         #create generic unit:
    117                         unit='SI';
    118                 results[i].unit=unit;
    119         model.results=results;
    120        
    121         #Write model to javascript database file:
    122         print('writing to file')
    123         writejsfile(directory + databasename + '.js',model,databasename);
    124 #}}}
     63    model.contourx2 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R2, contour_lat2, contour_long2))
     64    model.contoury2 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R2, contour_lat2, contour_long2))
     65    model.contourz2 = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R2, contour_lat2))
     66
     67    #}}}
     68    #Deal with mesh and results {{{
     69    print('getting mesh')
     70    surface = md.geometry.surface.flatten()
     71    numberofelements = md.mesh.numberofelements
     72    numberofvertices = md.mesh.numberofvertices
     73    R = 6371000 * np.ones(len(md.mesh.lat)) + scaling_factor * surface
     74
     75    x = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R, md.mesh.lat, md.mesh.long))
     76    y = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R, md.mesh.lat, md.mesh.long))
     77    z = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R, md.mesh.lat))
     78
     79    #Deal with triangulation:
     80    print('getting triangulation')
     81    model.index = md.mesh.elements
     82    model.x = x
     83    model.y = y
     84    model.z = z
     85    model.surface = surface
     86
     87    results = []
     88    print(optionslist)
     89    #Deal with data:
     90    print('getting data')
     91    for i in range(0, len(optionslist)):
     92        options = optionslist[i]
     93        options = checkplotoptions(md, options)
     94        data = options.getfieldvalue('data').flatten()
     95        results.append(ResultObj())
     96        results[i].data = data
     97        results[i].caxis = options.getfieldvalue('caxis', [min(data), max(data)])
     98
     99        label = options.getfieldvalue('label', '')
     100        if label == '':
     101            #create generic label:
     102            label = ['data', str(i)]
     103        results[i].label = label
     104
     105        shortlabel = options.getfieldvalue('shortlabel', '')
     106        if shortlabel == '':
     107            #create generic short label:
     108            shortlabel = ['data', str(i)]
     109        results[i].shortlabel = shortlabel
     110
     111        if type(data[2]) != np.float64:
     112            time_range = options.getfieldvalue('time_range', [0, 100])
     113            results[i].time_range = time_range
     114
     115        unit = options.getfieldvalue('unit', '')
     116        if unit == '':
     117            #create generic unit:
     118            unit = 'SI'
     119        results[i].unit = unit
     120    model.results = results
     121
     122    #Write model to javascript database file:
     123    print('writing to file')
     124    writejsfile(directory + databasename + '.js', model, databasename)
     125    #}}}
  • issm/trunk-jpl/src/m/plot/plot_BC.py

    r23716 r24213  
    1 try:
    2         import pylab as p
    3 except ImportError:
    4         print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
    5 
    6 import numpy as  np
     1import numpy as np
    72from processmesh import processmesh
    83from applyoptions import applyoptions
    94from plot_icefront import plot_icefront
     5from hydrologydc import hydrologydc
    106from mpl_toolkits.mplot3d import Axes3D
     7from mpl_toolkits.axes_grid1.inset_locator import inset_axes
    118
    12 def plot_BC(md,options,fig,axgrid,gridindex):
    13         '''
    14         PLOT_BC - plot model boundary conditions
    159
    16                 Usage:
    17                         plot_BC(md,options,fig,axes)
     10def plot_BC(md, options, fig, axgrid, gridindex):
     11    '''
     12    PLOT_BC - plot model boundary conditions
    1813
    19                 See also: PLOTMODEL
    20         '''
    21         x,y,z,elements,is2d,isplanet=processmesh(md,[],options)
    22        
    23         ax=axgrid[gridindex]
    24         fig.delaxes(axgrid.cbar_axes[gridindex])
     14        Usage:
     15            plot_BC(md, options, fig, axes)
    2516
    26         if not is2d:
    27                 ax=inset_locator.inset_axes(axgrid[gridindex],width='100%',height='100%',loc=3,borderpad=0,axes_class=Axes3D)
     17        See also: PLOTMODEL
     18    '''
     19    x, y, z, elements, is2d, isplanet = processmesh(md, [], options)
    2820
    29         #plot neuman
    30         plot_icefront(md,options,fig,ax)
     21    ax = axgrid[gridindex]
     22    fig.delaxes(axgrid.cbar_axes[gridindex])
    3123
    32         XLims=[np.min(x),np.max(x)]
    33         YLims=[np.min(y),np.max(y)]
    34         #plot dirichlets
    35         dirichleton=options.getfieldvalue('dirichlet','on')
    36         if dirichleton=='on':
    37                 ax.scatter(x[np.where(~np.isnan(md.stressbalance.spcvx))],
    38                                                          y[np.where(~np.isnan(md.stressbalance.spcvx))],
    39                                                          marker='o',c='r',s=240,label='vx Dirichlet',linewidth=0)
    40                 ax.scatter(x[np.where(~np.isnan(md.stressbalance.spcvy))],
    41                                                          y[np.where(~np.isnan(md.stressbalance.spcvy))],
    42                                                          marker='o',c='b',s=160,label='vy Dirichlet',linewidth=0)
    43                 ax.scatter(x[np.where(~np.isnan(md.stressbalance.spcvz))],
    44                                                          y[np.where(~np.isnan(md.stressbalance.spcvz))],
    45                                                          marker='o',c='y',s=80,label='vz Dirichlet',linewidth=0)
    46                 try:
    47                         ax.scatter(x[np.where(~np.isnan(md.hydrology.spcepl_head))],
    48                                                                  y[np.where(~np.isnan(md.hydrology.spcepl_head))],
    49                                                                  marker='v',c='r',s=240,label='EPL Head',linewidth=0)
    50                         ax.scatter(x[np.where(~np.isnan(md.hydrology.spcsediment_head))],
    51                                                                  y[np.where(~np.isnan(md.hydrology.spcsediment_head))],
    52                                                                  marker='^',c='b',s=240,label='IDS head',linewidth=0)
    53                 except AttributeError:
    54                         print ('Not treating Hydrologydc, skipping these boundaries')
    55                 ax.set_xlim(XLims)
    56                 ax.set_ylim(YLims)
    57         ax.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3,
    58                                                 ncol=3, mode="expand", borderaxespad=0.)
    59         #apply options
    60         options.addfielddefault('title','Boundary conditions')
    61         options.addfielddefault('colorbar','off')
    62         applyoptions(md,[],options,fig,axgrid,gridindex)
    63        
     24    if not is2d:
     25        ax = inset_axes(axgrid[gridindex], width='100%', height='100%', loc=3, borderpad=0, axes_class=Axes3D)
     26
     27    #plot neuman
     28    plot_icefront(md, options, fig, ax)
     29
     30    XLims = [np.min(x), np.max(x)]
     31    YLims = [np.min(y), np.max(y)]
     32    #plot dirichlets
     33    dirichleton = options.getfieldvalue('dirichlet', 'on')
     34
     35    if dirichleton == 'on':
     36        #define what to plot with plot style
     37        spc_dict = {'spcvx': ['stressbalance', 'o', 'r', 240, 'vx Dirichlet'],
     38                    'spcvy': ['stressbalance', 'o', 'b', 160, 'vy Dirichlet']}
     39        if not is2d:
     40            spc_dict['spcvz'] = ['stressbalance', 'o', 'y', 80, 'vy Dirichlet']
     41
     42        if isinstance(md.hydrology, hydrologydc):
     43            spc_dict['spcepl_head'] = ['hydrology', 'v', 'r', 240, 'EPL Head']
     44            if md.hydrology.isefficientlayer:
     45                spc_dict['spcsediment_head'] = ['hydrology', '^', 'b', 240, 'IDS Head']
     46
     47        for key in spc_dict:
     48            #first reduce vectors if layer is used
     49            if options.getfieldvalue('layer', 0) >= 1:
     50                plotlayer = options.getfieldvalue('layer', 0)
     51                slicesize = len(x)
     52                fulldata = md.__dict__[str(spc_dict[str(key)][0])].__dict__[str(key)]
     53                print(key)
     54                data = fulldata[(plotlayer - 1) * slicesize:plotlayer * slicesize]
     55                print(np.shape(data))
     56                mark = spc_dict[str(key)][1]
     57                color = spc_dict[str(key)][2]
     58                size = spc_dict[str(key)][3]
     59                name = spc_dict[str(key)][4]
     60                ax.scatter(x[np.where(~np.isnan(data))],
     61                           y[np.where(~np.isnan(data))],
     62                           marker=mark, c=color, s=size, label=name, linewidth=0)
     63    ax.set_xlim(XLims)
     64    ax.set_ylim(YLims)
     65    ax.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3,
     66              ncol=3, mode="expand", borderaxespad=0.)
     67    #apply options
     68    options.addfielddefault('title', 'Boundary conditions')
     69    options.addfielddefault('colorbar', 'off')
     70    applyoptions(md, [], options, fig, axgrid, gridindex)
  • issm/trunk-jpl/src/m/plot/plot_contour.py

    r23716 r24213  
     1import numpy as np
    12from averaging import averaging
    23from processmesh import processmesh
    34from processdata import processdata
    4 try:
    5         import matplotlib.pyplot as plt
    6 except ImportError:
    7         print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
    85
    9 def plot_contour(md,datain,options,ax):
    10         '''
    11         plot contours of a given field (called within plotmodel)
    126
    13         Usage:
    14                 plot_contour(md,data,options)
     7def plot_contour(md, datain, options, ax):
     8    '''
     9    plot contours of a given field (called within plotmodel)
    1510
    16         See also: plotmodel
    17         '''
     11    Usage:
     12        plot_contour(md, data, options)
    1813
    19         x,y,z,elements,is2d,isplanet=processmesh(md,datain,options)
    20         data,datatype=processdata(md,datain,options)
     14    See also: plotmodel
     15    '''
    2116
    22         # process data: must be on nodes
    23         if datatype==1: # element data
    24                 data=averaging(md,data,0)
    25         elif datatype==2:
    26                 pass
    27         elif datatype==3: # quiver (vector) data
    28                 data=np.sqrt(datain**2)
    29         else:
    30                 raise ValueError('datatype not supported in call to plot_contour')
     17    x, y, z, elements, is2d, isplanet = processmesh(md, datain, options)
     18    data, datatype = processdata(md, datain, options)
    3119
    32         # contouronly TODO (cla will also clear an overlay image)
     20    # process data: must be on nodes
     21    if datatype == 1:  # element data
     22        data = averaging(md, data, 0)
     23    elif datatype == 2:
     24        pass
     25    elif datatype == 3:  # quiver (vector) data
     26        data = np.sqrt(datain**2)
     27    else:
     28        raise ValueError('datatype not supported in call to plot_contour')
    3329
    34         # retrieve necessary options
    35         levels=options.getfieldvalue('contourlevels')
    36         norm=options.getfieldvalue('colornorm')
    37         colors=options.getfieldvalue('contourcolors','y')
    38         linestyles=options.getfieldvalue('contourlinestyles','-')
    39         linewidths=options.getfieldvalue('contourlinewidths',1)
     30    # contouronly TODO (cla will also clear an overlay image)
    4031
    41         ax.tricontour(x,y,elements,data,levels,colors=colors,norm=norm,linestyles=linestyles,linewidths=linewidths)
     32    # retrieve necessary options
     33    levels = options.getfieldvalue('contourlevels')
     34    norm = options.getfieldvalue('colornorm')
     35    colors = options.getfieldvalue('contourcolors', 'y')
     36    linestyles = options.getfieldvalue('contourlinestyles', ' - ')
     37    linewidths = options.getfieldvalue('contourlinewidths', 1)
     38
     39    ax.tricontour(x, y, elements, data, levels, colors=colors, norm=norm, linestyles=linestyles, linewidths=linewidths)
  • issm/trunk-jpl/src/m/plot/plot_elementnumbering.py

    r23716 r24213  
    1 try:
    2         import pylab as p
    3 except ImportError:
    4         print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
    5 
    6 import numpy as  np
     1import numpy as np
    72from processmesh import processmesh
    83from applyoptions import applyoptions
    9 from plot_icefront import plot_icefront
    104
    11 def plot_elementnumbering(md,options,fig,axgrid,gridindex):
    12         '''
    13         plot_elementnumbering - plot element numberign (starting at 1 matlab and c convention)
    145
    15                 Usage:
    16                         plot_elementnumbering(md,options,fig,axes)
     6def plot_elementnumbering(md, options, fig, axgrid, gridindex):
     7    '''
     8    plot_elementnumbering - plot element numberign (starting at 1 matlab and c convention)
    179
    18                 See also: PLOTMODEL
    19         '''
    20         x,y,z,elements,is2d,isplanet=processmesh(md,[],options)
     10        Usage:
     11            plot_elementnumbering(md, options, fig, axes)
    2112
    22         ax=axgrid[gridindex]
    23         fig.delaxes(axgrid.cbar_axes[gridindex])
    24        
    25         if is2d:
    26                 ax.triplot(x,y,elements)
    27         else:
    28                 print('Not Implemented Yet')
     13        See also: PLOTMODEL
     14    '''
     15    x, y, z, elements, is2d, isplanet = processmesh(md, [], options)
    2916
    30         XLims=[np.min(x),np.max(x)]
    31         YLims=[np.min(y),np.max(y)]
    32         #plot mesh
    33         ax.triplot(x,y,elements)
    34         highlightpos=options.getfieldvalue('highlight','none')
    35         if highlightpos!='none':
    36                 #if just one element duplicate it to avoid coloring issues
    37                 if type(highlightpos)==int:
    38                         highlightpos=[highlightpos,highlightpos]
    39                 #convert from to matlab numbering
    40                 highlightpos=[pos-1 for pos in highlightpos]
    41                 colors=np.asarray([0.5 for element in elements[highlightpos]])
    42                 ax.tripcolor(x,y,elements[highlightpos],facecolors=colors,alpha=0.5)
    43         # and numbers
    44         for i,element in enumerate(elements):
    45                 ax.text(np.mean(x[element]),np.mean(y[element]),str(i+1),ha='center',va='center',clip_on=True)
    46                
    47         #apply options
    48         options.addfielddefault('title','Element numbers (matlab indexation)')
    49         options.addfielddefault('colorbar','off')
    50         applyoptions(md,[],options,fig,axgrid,gridindex)
    51        
     17    ax = axgrid[gridindex]
     18    fig.delaxes(axgrid.cbar_axes[gridindex])
     19
     20    if is2d:
     21        ax.triplot(x, y, elements)
     22    else:
     23        print('Not Implemented Yet')
     24
     25    #plot mesh
     26    ax.triplot(x, y, elements)
     27    highlightpos = options.getfieldvalue('highlight', 'none')
     28    if highlightpos != 'none':
     29        #if just one element duplicate it to avoid coloring issues
     30        if type(highlightpos) == int:
     31            highlightpos = [highlightpos, highlightpos]
     32    #convert from to matlab numbering
     33        highlightpos = [pos - 1 for pos in highlightpos]
     34        colors = np.asarray([0.5 for element in elements[highlightpos]])
     35        ax.tripcolor(x, y, elements[highlightpos], facecolors=colors, alpha=0.5)
     36    # and numbers
     37    for i, element in enumerate(elements):
     38        ax.text(np.mean(x[element]), np.mean(y[element]), str(i + 1), ha='center', va='center', clip_on=True)
     39
     40    #apply options
     41    options.addfielddefault('title', 'Element numbers (matlab indexation)')
     42    options.addfielddefault('colorbar', 'off')
     43    applyoptions(md, [], options, fig, axgrid, gridindex)
  • issm/trunk-jpl/src/m/plot/plot_icefront.py

    r23716 r24213  
    1 try:
    2         import pylab as p
    3 except ImportError:
    4         print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
    5 import numpy as  np
     1import numpy as np
    62from processmesh import processmesh
    7 from applyoptions import applyoptions
     3from mpl_toolkits.mplot3d.art3d import Line3DCollection
     4from mpl_toolkits.axes_grid1.inset_locator import inset_axes
     5from mpl_toolkits.mplot3d import Axes3D
    86
    9 def plot_icefront(md,options,fig,ax):
    10         #PLOT_ICEFRONT - plot segment on neumann BC
    11         #
    12         #   Usage:
    13         #      plot_icefront(md,options,width,i)
    14         #
    15         #   See also: PLOTMODEL
    16 #process mesh and data
    17         x,y,z,elements,is2d,isplanet=processmesh(md,[],options)
    187
    19         #icefront check
    20         icefront=np.where(np.abs(np.sum(md.mask.ice_levelset[elements],1))!=3)
    21         onlyice=np.where(np.sum(md.mask.ice_levelset[elements],1)==-3)
    22         noice=np.where(np.sum(md.mask.ice_levelset[elements],1)==3)
     8def plot_icefront(md, options, fig, ax):
     9    #PLOT_ICEFRONT - plot segment on neumann BC
     10    #
     11    #   Usage:
     12    #      plot_icefront(md, options, width, i)
     13    #
     14    #   See also: PLOTMODEL
     15    #process mesh and data
     16    x, y, z, elements, is2d, isplanet = processmesh(md, [], options)
    2317
    24         #plot mesh
    25         ax.triplot(x,y,elements)
     18    if options.exist('layer'):
     19        nodes_per_elt = np.shape(md.mesh.elements2d)[1]
     20    else:
     21        nodes_per_elt = np.shape(md.mesh.elements)[1]
     22    #icefront check
     23    icefront = np.where(np.abs(np.sum(md.mask.ice_levelset[elements], 1)) != nodes_per_elt)
    2624
    27         #highlight elements on neumann
    28         if len(icefront[0])>0:
    29                 colors=np.asarray([0.5 for element in elements[icefront]])
    30                 ax.tripcolor(x,y,elements[icefront],facecolors=colors,alpha=0.5,label='elements on ice front')
     25    #plot mesh
     26    if is2d:
     27        ax.triplot(x, y, elements)
    3128
    32         #apply options
    33         options.addfielddefault('title','Neumann boundary conditions')
    34         options.addfielddefault('colorbar','off')
     29        #highlight elements on neumann
     30        if len(icefront[0]) > 0:
     31            colors = np.asarray([0.5 for element in elements[icefront]])
     32            ax.tripcolor(x, y, elements[icefront], facecolors=colors, alpha=0.5, label='elements on ice front')
     33    else:
     34        ax = inset_axes(ax, width='100%', height='100%', loc=3, borderpad=0, axes_class=Axes3D)
     35
     36        AB = elements[:, 0:2]
     37        BC = elements[:, 1:3]
     38        CA = np.vstack((elements[:, 2], elements[:, 0])).T
     39        DE = elements[:, 3:5]
     40        EF = elements[:, 4:]
     41        FD = np.vstack((elements[:, 5], elements[:, 3])).T
     42        AD = np.vstack((elements[:, 0], elements[:, 3])).T
     43        BE = np.vstack((elements[:, 1], elements[:, 4])).T
     44        CF = np.vstack((elements[:, 2], elements[:, 5])).T
     45
     46        tmpa = np.vstack((AB, BC, CA, DE, EF, FD, AD, BE, CF))
     47    #deleting segments that appear multiple times
     48        tmpb = np.ascontiguousarray(tmpa).view(np.dtype((np.void, tmpa.dtype.itemsize * tmpa.shape[1])))
     49        _, idx = np.unique(tmpb, return_index=True)
     50        triel = tmpa[idx]
     51
     52        for t, triangle in enumerate(triel):
     53            tri = list(zip(x[triangle], y[triangle], z[triangle]))
     54            facecolor = [0, 0, 0]
     55            if t in icefront:
     56                facecolor = [0.5, 0.5, 0.5]
     57            pl3 = Line3DCollection([tri], edgecolor='r', facecolor=facecolor)
     58            ax.add_collection3d(pl3)
     59
     60        ax.set_xlim([min(x), max(x)])
     61        ax.set_ylim([min(y), max(y)])
     62        ax.set_zlim([min(z), max(z)])
     63        #highlight elements on neumann
     64
     65    #apply options
     66    options.addfielddefault('title', 'Neumann boundary conditions')
     67    options.addfielddefault('colorbar', 'off')
  • issm/trunk-jpl/src/m/plot/plot_manager.py

    r23716 r24213  
    1 try:
    2         import pylab as p
    3         import matplotlib.pyplot as plt
    4 except ImportError:
    5         print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
    61
    72from checkplotoptions import checkplotoptions
     
    1611
    1712try:
    18         from osgeo import gdal
    19         overlaysupport=True
     13    from osgeo import gdal
     14    overlaysupport = True
    2015except ImportError:
    21         print('osgeo/gdal for python not installed, overlay plots are not enabled')
    22         overlaysupport=False
     16    print('osgeo/gdal for python not installed, overlay plots are not enabled')
     17    overlaysupport = False
    2318
    2419if overlaysupport:
    25         from plot_overlay import plot_overlay
     20    from plot_overlay import plot_overlay
    2621
    27 def plot_manager(md,options,fig,axgrid,gridindex):
    28         '''
    29         PLOT_MANAGER - distribute the plots called by plotmodel
    3022
    31         'fig' is a handle to the figure instance created by plotmodel.
     23def plot_manager(md, options, fig, axgrid, gridindex):
     24    '''
     25    PLOT_MANAGER - distribute the plots called by plotmodel
    3226
    33         'ax' is a handle to the axes instance created by plotmodel.  This is
    34         currently generated using matplotlib's AxesGrid toolkit.
     27    'fig' is a handle to the figure instance created by plotmodel.
    3528
    36         Usage:
    37                 plot_manager(md,options,fig,ax);
     29    'ax' is a handle to the axes instance created by plotmodel.  This is
     30    currently generated using matplotlib's AxesGrid toolkit.
    3831
    39         See also: PLOTMODEL, PLOT_UNIT
    40         '''
     32    Usage:
     33        plot_manager(md, options, fig, ax)
    4134
    42         #parse options and get a structure of options
    43         options=checkplotoptions(md,options)
    44         #get data to be plotted
    45         data=options.getfieldvalue('data')
    46         #add ticklabel has a default option
    47         options.addfielddefault('ticklabels','on')
     35    See also: PLOTMODEL, PLOT_UNIT
     36    '''
    4837
    49         ax=axgrid[gridindex]
    50         # {{{ basemap plot TOFIX
    51         #if options.exist('basemap'):
    52         #       plot_basemap(md,data,options,nrows,ncols,i)
    53         # }}}
    54         # {{{ overlay plot
    55         if options.exist('overlay') and overlaysupport:
    56                 plot_overlay(md,data,options,ax)
    57                 options.addfielddefault('alpha',0.5)
    58                 options.addfielddefault('xlim',[min(md.mesh.x),max(md.mesh.x)])
    59                 options.addfielddefault('ylim',[min(md.mesh.y),max(md.mesh.y)])
    60         # }}}
    61         # {{{ dealing with special plot
    62         if isinstance(data,str):
    63                 if data=='mesh':
    64                         plot_mesh(md,options,fig,axgrid,gridindex)
     38    #parse options and get a structure of options
     39    options = checkplotoptions(md, options)
     40    #get data to be plotted
     41    data = options.getfieldvalue('data')
     42    #add ticklabel has a default option
     43    options.addfielddefault('ticklabels', 'on')
    6544
    66                         #fig.delaxes(fig.axes[1]) # hack to remove colorbar after the fact
    67                         return
    68                 elif data=='BC':
    69                         plot_BC(md,options,fig,axgrid,gridindex)
    70                         return
    71                 elif data=='elementnumbering':
    72                         plot_elementnumbering(md,options,fig,axgrid,gridindex)
    73                         return
    74                 elif data=='vertexnumbering':
    75                         plot_vertexnumbering(md,options,fig,axgrid,gridindex)
    76                         return
    77                 elif data=='none':
    78                         print('no data provided to plot (TODO: write plot_none.py)')
    79                         applyoptions(md,[],options,fig,axgrid,gridindex)
    80                         return
    81                 else:
    82                         print(("WARNING: '%s' is not implemented or is not a valid string for option 'data'" % data))
    83         # }}}
    84         # {{{ Gridded plot TODO
    85         # }}}
    86         # {{{ Section plot TODO
    87         # }}}
    88         # {{{ Profile plot TODO
    89         # }}}
     45    ax = axgrid[gridindex]
     46    # {{{ basemap plot TOFIX
     47    #if options.exist('basemap'):
     48    #    plot_basemap(md, data, options, nrows, ncols, i)
     49    # }}}
     50    # {{{ overlay plot
     51    if options.exist('overlay') and overlaysupport:
     52        plot_overlay(md, data, options, ax)
     53        options.addfielddefault('alpha', 0.5)
     54        options.addfielddefault('xlim', [min(md.mesh.x), max(md.mesh.x)])
     55        options.addfielddefault('ylim', [min(md.mesh.y), max(md.mesh.y)])
     56    # }}}
     57    # {{{ dealing with special plot
     58    if isinstance(data, str):
     59        if data == 'mesh':
     60            plot_mesh(md, options, fig, axgrid, gridindex)
    9061
    91         #process data and model
    92         x,y,z,elements,is2d,isplanet=processmesh(md,data,options)
    93         data2,datatype=processdata(md,data,options)
    94         #plot unit
    95         plot_unit(x,y,z,elements,data2,is2d,isplanet,datatype,options,fig,axgrid,gridindex)
    96         #apply all options
    97         applyoptions(md,data2,options,fig,axgrid,gridindex)
     62    #fig.delaxes(fig.axes[1])  # hack to remove colorbar after the fact
     63            return
     64        elif data == 'BC':
     65            plot_BC(md, options, fig, axgrid, gridindex)
     66            return
     67        elif data == 'elementnumbering':
     68            plot_elementnumbering(md, options, fig, axgrid, gridindex)
     69            return
     70        elif data == 'vertexnumbering':
     71            plot_vertexnumbering(md, options, fig, axgrid, gridindex)
     72            return
     73        elif data == 'none':
     74            print('no data provided to plot (TODO: write plot_none.py)')
     75            applyoptions(md, [], options, fig, axgrid, gridindex)
     76            return
     77        else:
     78            print(("WARNING: '%s' is not implemented or is not a valid string for option 'data'" % data))
     79    # }}}
     80    # {{{ Gridded plot TODO
     81    # }}}
     82    # {{{ Section plot TODO
     83    # }}}
     84    # {{{ Profile plot TODO
     85    # }}}
    9886
    99         #ground overlay on kml plot_unit
     87    #process data and model
     88    x, y, z, elements, is2d, isplanet = processmesh(md, data, options)
     89    data2, datatype = processdata(md, data, options)
     90    #plot unit
     91    plot_unit(x, y, z, elements, data2, is2d, isplanet, datatype, options, fig, axgrid, gridindex)
     92    #apply all options
     93    applyoptions(md, data2, options, fig, axgrid, gridindex)
    10094
    101         # Bits and pieces
    102         #initialize plot handle variable
    103         #handle=None
     95    #ground overlay on kml plot_unit
    10496
    105         # initialize subplot
    106         #p.subplot(nrows,ncols,i,aspect='equal')
     97    # Bits and pieces
     98    #initialize plot handle variable
     99    #handle = None
    107100
    108         #standard plot
    109         #if not handle:
    110         #       p.subplot(nrows,ncols,i,aspect='equal')
     101    # initialize subplot
     102    #p.subplot(nrows, ncols, i, aspect = 'equal')
    111103
    112         #elif data in vars(md):
    113         #else:
    114                 #print "'data' not a string, plotting model properties yet to be implemented..."
     104    #standard plot
     105    #if not handle:
     106    #    p.subplot(nrows, ncols, i, aspect = 'equal')
     107
     108    #elif data in vars(md):
     109    #else:
     110    #print "'data' not a string, plotting model properties yet to be implemented..."
  • issm/trunk-jpl/src/m/plot/plot_mesh.py

    r23716 r24213  
    1 try:
    2         import pylab as p
    3 except ImportError:
    4         print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
    5 
    61import numpy as np
    72from processmesh import processmesh
    83from applyoptions import applyoptions
    94from mpl_toolkits.mplot3d.art3d import Line3DCollection
    10 from mpl_toolkits.axes_grid1 import inset_locator
     5from mpl_toolkits.axes_grid1.inset_locator import inset_axes
    116from mpl_toolkits.mplot3d import Axes3D
    12 def plot_mesh(md,options,fig,axgrid,gridindex):
    13         '''
    14         PLOT_MESH - plot model mesh
    157
    16                 Usage:
    17                         plot_mesh(md,options,nlines,ncols,i)
    188
    19                 See also: PLOTMODEL
    20         '''
    21         x,y,z,elements,is2d,isplanet=processmesh(md,'mesh',options)
     9def plot_mesh(md, options, fig, axgrid, gridindex):
     10    '''
     11    PLOT_MESH - plot model mesh
    2212
    23         ax=axgrid[gridindex]
    24         fig.delaxes(axgrid.cbar_axes[gridindex])
    25        
    26         if is2d:
    27                 ax.triplot(x,y,elements)
    28         else:
    29                 ax=inset_locator.inset_axes(axgrid[gridindex],width='100%',height='100%',loc=3,borderpad=0,axes_class=Axes3D)
    30                
    31                 AB=elements[:,0:2]
    32                 BC=elements[:,1:3]
    33                 CA=np.vstack((elements[:,2],elements[:,0])).T
    34                 DE=elements[:,3:5]
    35                 EF=elements[:,4:]
    36                 FD=np.vstack((elements[:,5],elements[:,3])).T
    37                 AD=np.vstack((elements[:,0],elements[:,3])).T
    38                 BE=np.vstack((elements[:,1],elements[:,4])).T
    39                 CF=np.vstack((elements[:,2],elements[:,5])).T
    40                
    41                 tmpa=np.vstack((AB,BC,CA,DE,EF,FD,AD,BE,CF))
    42                 #deleting segments that appear multiple times
    43                 tmpb = np.ascontiguousarray(tmpa).view(np.dtype((np.void, tmpa.dtype.itemsize * tmpa.shape[1])))
    44                 _, idx = np.unique(tmpb, return_index=True)
    45                 triel= tmpa[idx]
    46                
    47                 for triangle in triel:
    48                         tri=list(zip(x[triangle],y[triangle],z[triangle]))
    49                         pl3=Line3DCollection([tri],edgecolor='r')
    50                         ax.add_collection3d(pl3)
    51                        
    52                 ax.set_xlim([min(x),max(x)])
    53                 ax.set_ylim([min(y),max(y)])
    54                 ax.set_zlim([min(z),max(z)])
    55         #apply options
    56         options.addfielddefault('title','Mesh')
    57         options.addfielddefault('colorbar','off')
    58         options.addfielddefault('ticklabels','on')
    59         applyoptions(md,[],options,fig,axgrid,gridindex)
     13        Usage:
     14            plot_mesh(md, options, nlines, ncols, i)
     15
     16        See also: PLOTMODEL
     17    '''
     18    x, y, z, elements, is2d, isplanet = processmesh(md, 'mesh', options)
     19
     20    ax = axgrid[gridindex]
     21    fig.delaxes(axgrid.cbar_axes[gridindex])
     22
     23    if is2d:
     24        ax.triplot(x, y, elements)
     25    else:
     26        ax = inset_axes(axgrid[gridindex], width='100%', height='100%', loc=3, borderpad=0, axes_class=Axes3D)
     27
     28        AB = elements[:, 0:2]
     29        BC = elements[:, 1:3]
     30        CA = np.vstack((elements[:, 2], elements[:, 0])).T
     31        DE = elements[:, 3:5]
     32        EF = elements[:, 4:]
     33        FD = np.vstack((elements[:, 5], elements[:, 3])).T
     34        AD = np.vstack((elements[:, 0], elements[:, 3])).T
     35        BE = np.vstack((elements[:, 1], elements[:, 4])).T
     36        CF = np.vstack((elements[:, 2], elements[:, 5])).T
     37
     38        tmpa = np.vstack((AB, BC, CA, DE, EF, FD, AD, BE, CF))
     39    #deleting segments that appear multiple times
     40        tmpb = np.ascontiguousarray(tmpa).view(np.dtype((np.void, tmpa.dtype.itemsize * tmpa.shape[1])))
     41        _, idx = np.unique(tmpb, return_index=True)
     42        triel = tmpa[idx]
     43
     44        for triangle in triel:
     45            tri = list(zip(x[triangle], y[triangle], z[triangle]))
     46            pl3 = Line3DCollection([tri], edgecolor='r')
     47            ax.add_collection3d(pl3)
     48
     49        ax.set_xlim([min(x), max(x)])
     50        ax.set_ylim([min(y), max(y)])
     51        ax.set_zlim([min(z), max(z)])
     52    #apply options
     53    options.addfielddefault('title', 'Mesh')
     54    options.addfielddefault('colorbar', 'off')
     55    options.addfielddefault('ticklabels', 'on')
     56    applyoptions(md, [], options, fig, axgrid, gridindex)
  • issm/trunk-jpl/src/m/plot/plot_overlay.py

    r23772 r24213  
    1 import numpy as  np
     1import numpy as np
    22from processmesh import processmesh
    33from processdata import processdata
     
    77import os
    88try:
    9         from mpl_toolkits.basemap import Basemap
     9    from mpl_toolkits.basemap import Basemap
    1010except ImportError:
    11         print('Basemap toolkit not installed')
     11    print('Basemap toolkit not installed')
    1212try:
    13         from osgeo import gdal
     13    from osgeo import gdal
    1414except ImportError:
    15         print('osgeo/gdal for python not installed, plot_overlay is disabled')
     15    print('osgeo/gdal for python not installed, plot_overlay is disabled')
    1616
    1717
    18 def plot_overlay(md,data,options,ax):
    19         '''
    20         Function for plotting a georeferenced image.  This function is called
    21         from within the plotmodel code.
    22         '''
     18def plot_overlay(md, data, options, ax):
     19    '''
     20    Function for plotting a georeferenced image.  This function is called
     21    from within the plotmodel code.
     22    '''
    2323
    24         x,y,z,elements,is2d,isplanet=processmesh(md,[],options)
    25         try:
    26                 data,datatype=processdata(md,data,options)
    27                 imageonly=0
    28         except (TypeError,ValueError):#that should catch None and 'none' but may also catch unwanted errors
    29                 imageonly=1
    30                 data=np.float('nan')*np.ones((md.mesh.numberofvertices,))
    31                 datatype=1
     24    x, y, z, elements, is2d, isplanet = processmesh(md, [], options)
     25    try:
     26        data, datatype = processdata(md, data, options)
     27        imageonly = 0
     28    except (TypeError, ValueError):  #that should catch None and 'none' but may also catch unwanted errors
     29        imageonly = 1
     30        data = np.float('nan') * np.ones((md.mesh.numberofvertices, ))
     31        datatype = 1
    3232
    33         if not is2d:
    34                 raise Exception('overlay plot not supported for 3D meshes, project on a 2D layer first')
     33    if not is2d:
     34        raise Exception('overlay plot not supported for 3D meshes, project on a 2D layer first')
    3535
    36         if not options.exist('overlay_image'):
    37                 raise Exception('overlay error: provide overlay_image with path to geotiff file')
    38         image=options.getfieldvalue('overlay_image')
     36    if not options.exist('overlay_image'):
     37        raise Exception('overlay error: provide overlay_image with path to geotiff file')
     38    image = options.getfieldvalue('overlay_image')
    3939
    40         xlim=options.getfieldvalue('xlim',[min(md.mesh.x),max(md.mesh.x)])
    41         ylim=options.getfieldvalue('ylim',[min(md.mesh.y),max(md.mesh.y)])
     40    xlim = options.getfieldvalue('xlim', [min(md.mesh.x), max(md.mesh.x)])
     41    ylim = options.getfieldvalue('ylim', [min(md.mesh.y), max(md.mesh.y)])
    4242
    43         gtif=gdal.Open(image)
    44         trans=gtif.GetGeoTransform()
    45         xmin=trans[0]
    46         xmax=trans[0]+gtif.RasterXSize*trans[1]
    47         ymin=trans[3]+gtif.RasterYSize*trans[5]
    48         ymax=trans[3]
    49         # allow supplied image to have limits smaller than basemap or model limits
    50         x0=max(min(xlim),xmin)
    51         x1=min(max(xlim),xmax)
    52         y0=max(min(ylim),ymin)
    53         y1=min(max(ylim),ymax)
    54         inputname='temp.tif'
    55         os.system('gdal_translate -quiet -projwin ' + str(x0) + ' ' + str(y1) + ' ' + str(x1) + ' ' + str(y0) + ' ' + image+ ' ' + inputname)
     43    gtif = gdal.Open(image)
     44    trans = gtif.GetGeoTransform()
     45    xmin = trans[0]
     46    xmax = trans[0] + gtif.RasterXSize * trans[1]
     47    ymin = trans[3] + gtif.RasterYSize * trans[5]
     48    ymax = trans[3]
     49    # allow supplied image to have limits smaller than basemap or model limits
     50    x0 = max(min(xlim), xmin)
     51    x1 = min(max(xlim), xmax)
     52    y0 = max(min(ylim), ymin)
     53    y1 = min(max(ylim), ymax)
     54    inputname = 'temp.tif'
     55    os.system('gdal_translate-quiet - projwin ' + str(x0) + ' ' + str(y1) + ' ' + str(x1) + ' ' + str(y0) + ' ' + image + ' ' + inputname)
    5656
    57         gtif=gdal.Open(inputname)
    58         arr=gtif.ReadAsArray()
    59         #os.system('rm -rf ./temp.tif')
     57    gtif = gdal.Open(inputname)
     58    arr = gtif.ReadAsArray()
     59    #os.system('rm -rf . / temp.tif')
    6060
    61         if gtif.RasterCount>=3:  # RGB array
    62                 r=gtif.GetRasterBand(1).ReadAsArray()
    63                 g=gtif.GetRasterBand(2).ReadAsArray()
    64                 b=gtif.GetRasterBand(3).ReadAsArray()
    65                 arr=0.299*r+0.587*g+0.114*b
     61    if gtif.RasterCount >= 3:  # RGB array
     62        r = gtif.GetRasterBand(1).ReadAsArray()
     63        g = gtif.GetRasterBand(2).ReadAsArray()
     64        b = gtif.GetRasterBand(3).ReadAsArray()
     65        arr = 0.299 * r + 0.587 * g + 0.114 * b
    6666
    67         # normalize array
    68         arr=arr/np.float(np.max(arr.ravel()))
    69         arr=1.-arr # somehow the values got flipped
     67    # normalize array
     68    arr = arr / np.float(np.max(arr.ravel()))
     69    arr = 1. - arr # somehow the values got flipped
    7070
    71         if options.getfieldvalue('overlayhist',0)==1:
    72                 ax=plt.gca()
    73                 num=2
    74                 while True:
    75                         if not plt.fignum_exists(num):
    76                                 break
    77                         else:
    78                                 num+=1
    79                 plt.figure(num)
    80                 plt.hist(arr.flatten(),bins=256,range=(0.,1.))
    81                 plt.title('histogram of overlay image, use for setting overlaylims')
    82                 plt.show()
    83                 plt.sca(ax) # return to original axes/figure
     71    if options.getfieldvalue('overlayhist', 0) == 1:
     72        ax = plt.gca()
     73        num = 2
     74        while True:
     75            if not plt.fignum_exists(num):
     76                break
     77            else:
     78                num += 1
     79        plt.figure(num)
     80        plt.hist(arr.flatten(), bins=256, range=(0., 1.))
     81        plt.title('histogram of overlay image, use for setting overlaylims')
     82        plt.show()
     83        plt.sca(ax)  # return to original axes / figure
    8484
    85         # get parameters from cropped geotiff
    86         trans=gtif.GetGeoTransform()
    87         xmin=trans[0]
    88         xmax=trans[0]+gtif.RasterXSize*trans[1]
    89         ymin=trans[3]+gtif.RasterYSize*trans[5]
    90         ymax=trans[3]
    91         dx=trans[1]
    92         dy=trans[5]
     85    # get parameters from cropped geotiff
     86    trans = gtif.GetGeoTransform()
     87    xmin = trans[0]
     88    xmax = trans[0] + gtif.RasterXSize * trans[1]
     89    ymin = trans[3] + gtif.RasterYSize * trans[5]
     90    ymax = trans[3]
     91    dx = trans[1]
     92    dy = trans[5]
    9393
    94         xarr=np.arange(xmin,xmax,dx)
    95         yarr=np.arange(ymin,ymax,-dy) # -dy since origin='upper' (not sure how robust this is)
    96         xg,yg=np.meshgrid(xarr,yarr)
    97         overlaylims=options.getfieldvalue('overlaylims',[min(arr.ravel()),max(arr.ravel())])
    98         norm=mpl.colors.Normalize(vmin=overlaylims[0],vmax=overlaylims[1])
     94    xarr = np.arange(xmin, xmax, dx)
     95    yarr = np.arange(ymin, ymax, - dy)  # - dy since origin = 'upper' (not sure how robust this is)
     96    xg, yg = np.meshgrid(xarr, yarr)
     97    overlaylims = options.getfieldvalue('overlaylims', [min(arr.ravel()), max(arr.ravel())])
     98    norm = mpl.colors.Normalize(vmin=overlaylims[0], vmax=overlaylims[1])
    9999
    100         pc=ax.pcolormesh(xg, yg, np.flipud(arr), cmap=mpl.cm.Greys, norm=norm)
     100    pc = ax.pcolormesh(xg, yg, np.flipud(arr), cmap=mpl.cm.Greys, norm=norm)
    101101
    102         if options.exist('basemap'):
    103                 # create coordinate grid in map projection units (for plotting)
    104                 if md.mesh.epsg==3413:
    105                         hemisphere=1
    106                         st_lat=70
    107                         lon_0=45
    108                 elif md.mesh.epsg==3031:
    109                         hemisphere=-1
    110                         st_lat=71
    111                         lon_0=0
    112                 else:
    113                         hemisphere=eval(input('epsg code {} is not supported chose your hemisphere (1 for North, -1 for south)'.format(mesh.epsg)))
     102    if options.exist('basemap'):
     103        # create coordinate grid in map projection units (for plotting)
     104        if md.mesh.epsg == 3413:
     105            hemisphere = 1
     106            st_lat = 70
     107            lon_0 = 45
     108        elif md.mesh.epsg == 3031:
     109            hemisphere = -1
     110            st_lat = 71
     111            lon_0 = 0
     112        else:
     113            hemisphere = eval(input('epsg code {} is not supported chose your hemisphere (1 for North, - 1 for south)'.format(md.mesh.epsg)))
    114114
    115                 lat,lon=xy2ll(xlim,ylim,hemisphere,lon_0,st_lat)
    116                 extent=[np.diff(xlim)[0],np.diff(ylim)[0]]
    117                 center=[lon[0]+np.diff(lon)[0]*0.5,lat[0]+np.diff(lat)[0]*0.5]
    118                 m=Basemap(llcrnrlon=lon[0],llcrnrlat=lat[0],urcrnrlon=lon[1],urcrnrlat=lat[1],
    119                                                         lon_0=center[0],lat_0=center[1],#width=extent[0],height=extent[1],#
    120                                                         epsg=md.mesh.epsg,anchor='NW',
    121                                                         resolution='i',ax=ax)
     115        lat, lon = xy2ll(xlim, ylim, hemisphere, lon_0, st_lat)
     116        extent = [np.diff(xlim)[0], np.diff(ylim)[0]]
     117        center = [lon[0] + np.diff(lon)[0] * 0.5, lat[0] + np.diff(lat)[0] * 0.5]
     118        m = Basemap(llcrnrlon=lon[0], llcrnrlat=lat[0], urcrnrlon=lon[1], urcrnrlat=lat[1],
     119                    lon_0=center[0], lat_0=center[1], width=extent[0], height=extent[1],
     120                    epsg=md.mesh.epsg, anchor='NW',
     121                    resolution='i', ax=ax)
    122122
    123                 meridians=np.arange(np.floor(lon[0]),np.ceil(lon[1]),1.)
    124                 parallels=np.arange(np.floor(lat[0]),np.ceil(lat[1]),1.)
    125                 m.drawparallels(parallels,labels=[1,0,0,0],ax=ax) # labels=[left,right,top,bottom]
    126                 m.drawmeridians(meridians,labels=[0,0,1,0],ax=ax)
    127                 m.drawcoastlines(ax=ax)
    128                 m.drawmapboundary(ax=ax)
     123        meridians = np.arange(np.floor(lon[0]), np.ceil(lon[1]), 1.)
     124        parallels = np.arange(np.floor(lat[0]), np.ceil(lat[1]), 1.)
     125        m.drawparallels(parallels, labels=[1, 0, 0, 0], ax=ax)  # labels = [left, right, top, bottom]
     126        m.drawmeridians(meridians, labels=[0, 0, 1, 0], ax=ax)
     127        m.drawcoastlines(ax=ax)
     128        m.drawmapboundary(ax=ax)
    129129
    130         #rasterization?
    131         if options.getfieldvalue('rasterized',0):
    132                 pc.set_rasterized(True)
     130    #rasterization?
     131    if options.getfieldvalue('rasterized', 0):
     132        pc.set_rasterized(True)
  • issm/trunk-jpl/src/m/plot/plot_quiver.py

    r23716 r24213  
    1 import numpy as  np
     1import numpy as np
    22
    3 def plot_quiver(x,y,data,options,ax):
    4         vx=data[:,0]
    5         vy=data[:,1]
    6         Xdist=max(x)-min(x)
    7         Ydist=max(y)-min(y)
    8         datanorm=np.sqrt(vx**2+vy**2)
    9         scaler=max(datanorm)/(np.sqrt(Xdist*Ydist/len(x)))
    103
    11         #define colors, unicolor or value codded
    12         color=options.getfieldvalue('quivercol','k')
    13         if color=='values':
    14                 color=datanorm
    15         #scaling of arrow length (giving info to change as it seems that there is no better way to work arround it)
    16         scale=options.getfieldvalue('scaling',scaler)
    17         print(('the current value for "scaling" is {}, increase it to shorten the arrows'.format(scale)))
    18         #sizing of the arrows
    19         width=options.getfieldvalue('width',5.0e-3)
    20         headwidth=options.getfieldvalue('headwidth',6)
    21         headlength=options.getfieldvalue('headlength',headwidth)
    22         #set the unit to the smaller of the two axes
    23         if Xdist>Ydist:
    24                 units='height'
    25         else:
    26                 units='width'
    27                
    28         if type(color)==str:
    29                 Q=ax.quiver(x,y,vx,vy,color=color,
    30                                                                 scale=scale,scale_units='xy',
    31                                                                 units=units,headwidth=headwidth,headlength=headlength,width=width,
    32                                                                 angles='xy')
    33         else:
    34                 if options.exist('colornorm'):
    35                         norm=options.getfieldvalue('colornorm')
    36                 if options.exist('colormap'):
    37                         cmap=options.getfieldvalue('colormap')         
    38                 Q=ax.quiver(x,y,vx,vy,color,cmap=cmap,norm=norm,
    39                                                                 scale=scale,scale_units='xy',
    40                                                                 units=units,headwidth=headwidth,headlength=headlength,width=width,
    41                                                                 angles='xy')
    42         return Q
     4def plot_quiver(x, y, data, options, ax):
     5    vx = data[:, 0]
     6    vy = data[:, 1]
     7    Xdist = max(x) - min(x)
     8    Ydist = max(y) - min(y)
     9    datanorm = np.sqrt(vx**2 + vy**2)
     10    scaler = max(datanorm) / (np.sqrt(Xdist * Ydist / len(x)))
     11
     12    #define colors, unicolor or value codded
     13    color = options.getfieldvalue('quivercol', 'k')
     14    if color == 'values':
     15        color = datanorm
     16    #scaling of arrow length (giving info to change as it seems that there is no better way to work arround it)
     17    scale = options.getfieldvalue('scaling', scaler)
     18    print(('the current value for "scaling" is {}, increase it to shorten the arrows'.format(scale)))
     19    #sizing of the arrows
     20    width = options.getfieldvalue('width', 5.0e-3)
     21    headwidth = options.getfieldvalue('headwidth', 6)
     22    headlength = options.getfieldvalue('headlength', headwidth)
     23    #set the unit to the smaller of the two axes
     24    if Xdist > Ydist:
     25        units = 'height'
     26    else:
     27        units = 'width'
     28
     29    if type(color) == str:
     30        Q = ax.quiver(x, y, vx, vy, color=color,
     31                      scale=scale, scale_units='xy',
     32                      units=units, headwidth=headwidth, headlength=headlength, width=width,
     33                      angles='xy')
     34    else:
     35        if options.exist('colornorm'):
     36            norm = options.getfieldvalue('colornorm')
     37        if options.exist('colormap'):
     38            cmap = options.getfieldvalue('colormap')
     39        Q = ax.quiver(x, y, vx, vy, color, cmap=cmap, norm=norm,
     40                      scale=scale, scale_units='xy',
     41                      units=units, headwidth=headwidth, headlength=headlength, width=width,
     42                      angles='xy')
     43    return Q
  • issm/trunk-jpl/src/m/plot/plot_streamlines.py

    r23716 r24213  
    1 import numpy as  np
     1import numpy as np
    22from processmesh import processmesh
    33from processdata import processdata
    4 from ContourToMesh import ContourToMesh
    54try:
    6         import matplotlib.pyplot as plt
    7         import matplotlib.tri as tri
    8         from scipy.interpolate import griddata
     5    import matplotlib.tri as tri
     6    from scipy.interpolate import griddata
    97except ImportError:
    10         print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
     8    print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
    119
    12 def plot_streamlines(md,options,ax):
     10
     11def plot_streamlines(md, options, ax):
    1312    '''
    1413    plot streamlines on a figure, using by default vx and vy components in md.initialization.
    1514
    1615    Usage:
    17         plot_streamlines(md,options,ax)
     16        plot_streamlines(md, options, ax)
    1817
    19     available options, to be passed to plotmodel as a string-value pair:
     18    available options, to be passed to plotmodel as a string - value pair:
    2019        streamlinesvx : vx component (default md.initialization.vx)
    2120        streamlinesvy : vy component (default md.initialization.vy)
     
    2928
    3029    # retrieve options
    31     vx=options.getfieldvalue('streamlinesvx',md.initialization.vx)
    32     vy=options.getfieldvalue('streamlinesvy',md.initialization.vy)
    33     color=options.getfieldvalue('streamlinescolor','k')
    34     linewidth=options.getfieldvalue('streamlineswidth',1)
    35     density=options.getfieldvalue('streamlinesdensity',1)
    36     arrowsize=options.getfieldvalue('streamlinesarrowsize',1)
     30    vx = options.getfieldvalue('streamlinesvx', md.initialization.vx)
     31    vy = options.getfieldvalue('streamlinesvy', md.initialization.vy)
     32    color = options.getfieldvalue('streamlinescolor', 'k')
     33    linewidth = options.getfieldvalue('streamlineswidth', 1)
     34    density = options.getfieldvalue('streamlinesdensity', 1)
     35    arrowsize = options.getfieldvalue('streamlinesarrowsize', 1)
    3736
    3837    #process mesh and data
    39     x,y,z,elements,is2d,isplanet=processmesh(md,vx,options)
    40     u,datatype=processdata(md,vx,options)
    41     v,datatype=processdata(md,vy,options)
     38    x, y, z, elements, is2d, isplanet = processmesh(md, vx, options)
     39    u, datatype = processdata(md, vx, options)
     40    v, datatype = processdata(md, vy, options)
    4241
    4342    if not is2d:
     
    4544
    4645    # format data for matplotlib streamplot function
    47     yg,xg=np.mgrid[min(md.mesh.y):max(md.mesh.y):100j,min(md.mesh.x):max(md.mesh.x):100j]
    48     ug=griddata((x,y),u,(xg,yg),method='linear')
    49     vg=griddata((x,y),v,(xg,yg),method='linear')
     46    yg, xg = np.mgrid[min(md.mesh.y):max(md.mesh.y):100j, min(md.mesh.x):max(md.mesh.x):100j]
     47    ug = griddata((x, y), u, (xg, yg), method='linear')
     48    vg = griddata((x, y), v, (xg, yg), method='linear')
    5049
    5150    # create triangulation instance
    52     triang=tri.Triangulation(md.mesh.x,md.mesh.y,md.mesh.elements-1)
     51    triang = tri.Triangulation(md.mesh.x, md.mesh.y, md.mesh.elements - 1)
    5352
    5453    # interpolate to regularly spaced quad grid
    55     interp_lin_u=tri.LinearTriInterpolator(triang,u)
    56     interp_lin_v=tri.LinearTriInterpolator(triang,v)
    57     ug=interp_lin_u(xg,yg)
    58     vg=interp_lin_v(xg,yg)
     54    interp_lin_u = tri.LinearTriInterpolator(triang, u)
     55    interp_lin_v = tri.LinearTriInterpolator(triang, v)
     56    ug = interp_lin_u(xg, yg)
     57    vg = interp_lin_v(xg, yg)
    5958
    60     if linewidth=='vel':
    61         scale=options.getfieldvalue('streamlineswidthscale',3)
    62         vel=np.sqrt(ug**2+vg**2)
    63         linewidth=scale*vel/np.amax(vel)
    64         linewidth[linewidth<0.5]=0.5
     59    if linewidth == 'vel':
     60        scale = options.getfieldvalue('streamlineswidthscale', 3)
     61        vel = np.sqrt(ug**2 + vg**2)
     62        linewidth = scale * vel / np.amax(vel)
     63        linewidth[linewidth < 0.5] = 0.5
    6564
    6665    # plot streamlines
    67     ax.streamplot(xg,yg,ug,vg,color=color,linewidth=linewidth,density=density,arrowsize=arrowsize)
     66    ax.streamplot(xg, yg, ug, vg, color=color, linewidth=linewidth, density=density, arrowsize=arrowsize)
  • issm/trunk-jpl/src/m/plot/plot_unit.py

    r24115 r24213  
    99    from mpl_toolkits.mplot3d.art3d import Poly3DCollection
    1010except ImportError:
    11     print("could not import pylab,  matplotlib has not been installed, no plotting capabilities enabled")
     11    print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
    1212
    1313
    1414def plot_unit(x, y, z, elements, data, is2d, isplanet, datatype, options, fig, axgrid, gridindex):
    1515    """
    16     PLOT_UNIT - unit plot,  display data
     16    PLOT_UNIT - unit plot, display data
    1717
    1818    Usage:
    1919    plot_unit(x, y, z, elements, data, is2d, isplanet, datatype, options)
    2020
    21     See also: PLOTMODEL,  PLOT_MANAGER
     21    See also: PLOTMODEL, PLOT_MANAGER
    2222    """
    2323    #if we are plotting 3d replace the current axis
     24    print(is2d)
    2425    if not is2d:
    2526        axgrid[gridindex].axis('off')
     
    5960    options.addfield('colormap', cmap)
    6061    # }}}
    61     # {{{ if plotting only one of several layers reduce dataset,  same for surface
     62    # {{{ if plotting only one of several layers reduce dataset, same for surface
    6263    if options.getfieldvalue('layer', 0) >= 1:
    6364        plotlayer = options.getfieldvalue('layer', 0)
     
    104105            #first deal with colormap
    105106            loccmap = plt.cm.ScalarMappable(cmap=cmap)
    106             loccmap.set_array([min(data), max(data)])
    107             loccmap.set_clim(vmin=min(data), vmax=max(data))
    108 
    109             #dealing with prism sides
     107            loccmap.set_array([np.nanmin(data), np.nanmax(data)])
     108            loccmap.set_clim(vmin=np.nanmin(data), vmax=np.nanmax(data))
     109
     110    #dealing with prism sides
    110111            recface = np.vstack((elements[:, 0], elements[:, 1], elements[:, 4], elements[:, 3])).T
    111112            eltind = np.arange(0, np.shape(elements)[0])
     
    126127                ax.add_collection3d(pl3)
    127128
    128             #dealing with prism bases
     129    #dealing with prism bases
    129130            triface = np.vstack((elements[:, 0:3], elements[:, 3:6]))
    130131            eltind = np.arange(0, np.shape(elements)[0])
     
    132133            tmp = np.ascontiguousarray(triface).view(np.dtype((np.void, triface.dtype.itemsize * triface.shape[1])))
    133134            _, idx, recur = np.unique(tmp, return_index=True, return_counts=True)
    134             #we keep only top and bottom elements
     135    #we keep only top and bottom elements
    135136            triel = triface[idx[np.where(recur == 1)]]
    136137            triindex = eltind[idx[np.where(recur == 1)]]
     
    147148            ax.set_zlim([min(z), max(z)])
    148149
    149             #raise ValueError('plot_unit error: 3D element plot not supported yet')
     150    #raise ValueError('plot_unit error: 3D element plot not supported yet')
    150151        return
    151152
     
    160161            else:
    161162                triangles = mpl.tri.Triangulation(x, y, elements)
    162                 #tri = ax.tricontourf(triangles, data, colorlevels, cmap = cmap, norm = norm, alpha = alpha)
     163    #tri = ax.tricontourf(triangles, data, colorlevels, cmap = cmap, norm=norm, alpha = alpha)
    163164            if options.exist('log'):
    164165                if alpha < 1:  #help with antialiasing
     
    174175            #first deal with the colormap
    175176            loccmap = plt.cm.ScalarMappable(cmap=cmap)
    176             loccmap.set_array([min(data), max(data)])
    177             loccmap.set_clim(vmin=min(data), vmax=max(data))
    178 
    179             #deal with prism sides
     177            loccmap.set_array([np.nanmin(data), np.nanmax(data)])
     178            loccmap.set_clim(vmin=np.nanmin(data), vmax=np.nanmax(data))
     179
     180    #deal with prism sides
    180181            recface = np.vstack((elements[:, 0], elements[:, 1], elements[:, 4], elements[:, 3])).T
    181182            recface = np.vstack((recface, np.vstack((elements[:, 1], elements[:, 2], elements[:, 5], elements[:, 4])).T))
     
    192193                ax.add_collection3d(pl3)
    193194
    194             #deal with prism faces
     195    #deal with prism faces
    195196            triface = np.vstack((elements[:, 0:3], elements[:, 3:6]))
    196197            tmp = np.ascontiguousarray(triface).view(np.dtype((np.void, triface.dtype.itemsize * triface.shape[1])))
    197198            _, idx, recur = np.unique(tmp, return_index=True, return_counts=True)
    198             #we keep only top and bottom elements
     199    #we keep only top and bottom elements
    199200            triel = triface[idx[np.where(recur == 1)]]
    200201            for triangle in triel:
     
    209210            ax.set_ylim([min(y), max(y)])
    210211            ax.set_zlim([min(z), max(z)])
    211             #raise ValueError('plot_unit error: 3D element plot not supported yet')
     212    #raise ValueError('plot_unit error: 3D element plot not supported yet')
    212213        return
    213214
  • issm/trunk-jpl/src/m/plot/plot_vertexnumbering.py

    r23716 r24213  
    1 try:
    2         import pylab as p
    3 except ImportError:
    4         print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
    5 
    6 import numpy as  np
     1import numpy as np
    72from processmesh import processmesh
    83from applyoptions import applyoptions
    9 from plot_icefront import plot_icefront
    104
    11 def plot_vertexnumbering(md,options,fig,axgrid,gridindex):
    12         '''
    13         PLOT_VERTEXNUMBERING - plot vertex numbering
    14        
    15         Usage:
    16         plot_vertexnumbering(md,options,fig,axes);
    17        
    18         See also: PLOTMODEL
    19        
    20         '''
    21         #process data and model
    22         x,y,z,elements,is2d,isplanet=processmesh(md,[],options)
    235
    24         ax=axgrid[gridindex]
    25         fig.delaxes(axgrid.cbar_axes[gridindex])
    26        
    27         if is2d:
    28                 ax.triplot(x,y,elements)
    29         else:
    30                 print('Not Implemented Yet')
     6def plot_vertexnumbering(md, options, fig, axgrid, gridindex):
     7    '''
     8    PLOT_VERTEXNUMBERING - plot vertex numbering
    319
    32         XPad=0.1*(np.max(x)-np.min(x))
    33         YPad=0.1*(np.max(y)-np.min(y))
    34         #plot mesh
    35         ax.triplot(x,y,elements)
    36         ax.set_xlim((np.min(x)-XPad,np.max(x)+XPad))
    37         ax.set_ylim((np.min(y)-XPad,np.max(y)+XPad))
     10    Usage:
     11    plot_vertexnumbering(md, options, fig, axes)
    3812
    39         highlightpos=options.getfieldvalue('highlight',[])
    40         if highlightpos!='none':
    41                 #if just one element duplicate it to avoid coloring issues
    42                 if type(highlightpos)==int:
    43                         highlightpos=[highlightpos,highlightpos]
    44                 #convert from to matlab numbering
    45                 highlightpos=[pos-1 for pos in highlightpos]
     13     See also: PLOTMODEL
    4614
    47         # and numbers
    48         for i,Xcoord in enumerate(x):
    49                 if i in highlightpos:
    50                         props = dict(boxstyle='circle', pad=0.1,color='r')
    51                 else:
    52                         props = dict(boxstyle='circle', pad=0.1,color='w')
    53                 ax.text(x[i],y[i],str(i+1),ha='center',va='center',backgroundcolor='w',clip_on=True,bbox=props)
    54                
    55         #apply options
    56         options.addfielddefault('title','Vertex numbers (matlab indexation)')
    57         options.addfielddefault('colorbar','off')
    58         applyoptions(md,[],options,fig,axgrid,gridindex)
     15    '''
     16    #process data and model
     17    x, y, z, elements, is2d, isplanet = processmesh(md, [], options)
     18
     19    ax = axgrid[gridindex]
     20    fig.delaxes(axgrid.cbar_axes[gridindex])
     21
     22    if is2d:
     23        ax.triplot(x, y, elements)
     24    else:
     25        print('Not Implemented Yet')
     26
     27    XPad = 0.1 * (np.nanmax(x) - np.nanmin(x))
     28    YPad = 0.1 * (np.nanmax(y) - np.nanmin(y))
     29    #plot mesh
     30    ax.triplot(x, y, elements)
     31    ax.set_xlim((np.min(x) - XPad, np.max(x) + XPad))
     32    ax.set_ylim((np.min(y) - YPad, np.max(y) + YPad))
     33
     34    highlightpos = options.getfieldvalue('highlight', [])
     35    if highlightpos != 'none':
     36        #if just one element duplicate it to avoid coloring issues
     37        if type(highlightpos) == int:
     38            highlightpos = [highlightpos, highlightpos]
     39    #convert from to matlab numbering
     40        highlightpos = [pos - 1 for pos in highlightpos]
     41
     42    # and numbers
     43    for i, Xcoord in enumerate(x):
     44        if i in highlightpos:
     45            props = dict(boxstyle='circle', pad=0.1, color='r')
     46        else:
     47            props = dict(boxstyle='circle', pad=0.1, color='w')
     48        ax.text(x[i], y[i], str(i + 1), ha='center', va='center', backgroundcolor='w', clip_on=True, bbox=props)
     49
     50    #apply options
     51    options.addfielddefault('title', 'Vertex numbers (matlab indexation)')
     52    options.addfielddefault('colorbar', 'off')
     53    applyoptions(md, [], options, fig, axgrid, gridindex)
  • issm/trunk-jpl/src/m/plot/plotdoc.py

    r23716 r24213  
    11def plotdoc():
    2         '''PLOTDOC - plot documentation
    3         %As of now it is more a TODO list
    4         %   Usage:
    5         %      plotdoc()
    6         '''
    7         pydata={'quiver':' quiver plot give data and a vector array [Vx,Vy]',
    8                                         'mesh':' draw mesh using trisurf',
    9                                         'BC':' this will draw all the boundary conditions (Dirichlet and Neumann).',
    10                                         'elementnumbering':' numbering of elements (matlab indices)',
    11                                         '3D disclaimer':'3D is implemented with plot3d for now this is not optimal and may change to mayavi at some point. The impelementation is on the development side for now so expect some issue and question your plotting before you results.'}
    12         TODOdata={'basal_drag':' plot the basal drag on the bed (in kPa) based on the velocity in md.initialization',
    13                                                 'basal_dragx or basal_dragy' :' plot a component of the basal drag on the bed (in kPa)',
    14                                                 'boundaries':' this will draw all the segment boundaries to the model, including rifts.',
    15                                                 'icefront':' this will show segments that are used to define the icefront of the model (Neumann boundary conditions).',
    16                                                 'deviatoricstress_tensor':' plot the components of the deviatoric stress tensor (tauxx,tauyy,tauzz,tauxy,tauxz,tauyz, if computed',
    17                                                 'deviatoricstress_principal':' plot the deviatoricstress tensor principal axis and principal values',
    18                                                 'deviatoricstress_principalaxis1':' arrow plot the first principal axis of the deviatoricstress tensor(replace 1 by 2 or 3 if needed)',
    19                                                 'driving_stress':' plot the driving stress (in kPa)',
    20                                                 'elements_type':' model used for each element',
    21                                                 'highlightvertices':' to highlight vertices (use highlight option to enter the vertex list',
    22                                                 'referential':' stressbalance referential',
    23                                                 'riftvel':' velocities along rifts',
    24                                                 'riftrelvel':' relative velocities along rifts',
    25                                                 'riftpenetration':' penetration levels for a fault',
    26                                                 'riftfraction':' fill fractions for every node of the rifts',
    27                                                 'rifts':' plot mesh with an offset so that rifts are visible',
    28                                                 'strainrate_tensor':' plot the components of the strainrate tensor (exx,eyy,ezz,exy,exz,eyz) if computed',
    29                                                 'strainrate_principal':' plot the strainrate tensor principal axis and principal values)',
    30                                                 'strainrate_principalaxis1':' arrow plot the first principal axis of the strainrate tensor(replace 1 by 2 or 3 if needed)',
    31                                                 'stress_tensor':' plot the components of stress tensor (sxx,syy,szz,sxy,sxz,syz) if computed',
    32                                                 'stress_principal':' plot the stress tensor principal axis and principal values',
    33                                                 'stress_principalaxis1':' arrow plot the first principal axis of the stress tensor(replace 1 by 2 or 3 if needed)',
    34                                                 'transient_results':' this will printlay all the time steps of a transient run (use steps to specify the steps requested)',
    35                                                 'transient_vel':' this will printlay the velocity for the time steps requested in ''steps'' of a transient run',
    36                                                 'transient_vel':' vel can be by any field of the transient results (vx, vy, vz, vel, temperature, melting, pressure, bed, thickness, surface)',
    37                                                 'transient_field':' dynamic plot of results. specify ''steps'' option, as fell as ''field'' (defaults are all steps, for ''Vel'' field)',
    38                                                 'transient_movie':' this will printlay the time steps of a given field of a transient run',
    39                                                 'transient_movie_field':' field to be printlayed when doing  transient_movie data printlay',
    40                                                 'transient_movie_output':' filename if output is desired for movie',
    41                                                 'transient_movie_time':' time for each image (default 2 seconds)',
    42                                                 'thermaltransient_results':' this will printlay all the time steps of a thermal transient run',
    43                                                 'qmuhistnorm':' histogram normal distribution. needs option qmudata',
    44                                                 'qmumean':' plot of mean distribution in sampling analysis with scaled response. needs option qmudata for descriptor',
    45                                                 'qmustddev':' plot of stddev distribution in sampling analysis with scaled response. needs option qmudata for descriptor',
    46                                                 'part_hist':' partitioning node and area histogram'}
    47        
    48         pyoptions={'axis':" show ('on') or hide ('off') axes",
    49                                                  'caxis':" modify  colorbar range. (array of type [a b] where b>=a)",
    50                                                  'colorlevels':" N, number of levels to use",
    51                                                  'colorbar':" add colorbar (string 'on','off' or 'one')",
    52                                                  'axes_pad':" spacing between axes (default is 0.25)",
    53                                                  'colorbartitle':" colorbar title (string)",
    54                                                  'colorbarticks':" set colorbar ticks manually (list)",
    55                                                  'colorbarfontsize':" specify colorbar fontsize",
    56                                                  'colormap':" change the default colormap ('viridis' is the default)",
    57                                                  'contourlevels':" N or [value1,...] add the contours of the specified values or N contours",
    58                                                  'streamlines':" TOFIX argument does nothing",
    59                                                  'edgecolor':" color of mesh edges. RGB tuple or standard string",
    60                                                  'fontsize':" fontsize for the title",
    61                                                  'fontweight':" fontweight for the title 'normal', 'bold'",
    62                                                  'fontcolor':" TODO",
    63                                                  'highlight':" highlights certain nodes or elements when using 'vetrexnumbering' or 'elementnumbering' or 'highlightvertices ' or 'highlightelements' option",
    64                                                  'title':" subplot title (string)",
    65                                                  'xlim':" limits of X axis (all subplots) (ex: [0,500])",
    66                                                  'ylim':" limits of Y axis (all subplots) (ex: [0,500])",
    67                                                  'xlabel':" X axis title",
    68                                                  'ylabel':" Y axis title",
    69                                                  'scaling':" scaling factor used by quiver plots.",
    70                                                  'quivercol':" color of quiver arrows, 'values' give value colored arrows",
    71                                                  'text':" print string or list of strings",
    72                                                  'textposition':" [x,y] position of text, list if several texts (position betwee 0 and 1)",
    73                                                  'textsize':" text fontsize TOFIX ",
    74                                                  'textweight':" text fontweight",
    75                                                  'textcolor':" text color",
    76                                                  'textrotation':" text rotation angle",
    77                                                  'mask':" condition. Only 'true' values are plotted ",
    78                                                  'log':" cutoff value for log",
    79                                                  'backgroundcolor':" plot background color. RGB tuple or standard string",
    80                                                  'expdisp':" path (or list of paths) to the exp file to be plotted ",
    81                                                  'explinewidth':" linewidth ",
    82                                                  'explinestyle':" matplotlib linestyle string ",
    83                                                  'explinecolor':" matplotlib color string ",
    84                                                  'expfill':" (True/False) fill a closed contour ",
    85                                                  'expfillcolor':" Color for a filled contour, only used if expfill is True ",
    86                                                  'expfillalpha':" alpha transparency for filled contour ",
    87                                                  'overlay':" True/False. Overlay a georeferenced image (radar/visible) ",
    88                                                  'overlay_image':" path to overlay image ",
    89                                                  'overlayhist':" plot a histogram of overlay image, used for setting overlaylims ",
    90                                                  'overlaylims':" normalized limits to clip and stretch contrast of overlay image (in [0,1], ex. [0.25,0.75]) ",
    91                                                  'alpha':" set transparency of plotted data (in [0,1]) ",
    92                                                  'vertexnumbering':' numbering of vertices',
    93                                                  'elementnumbering':' numbering of elements (matlab indices)',
    94                                                  'highlightelements':' to highlight elements to highlight the element list',
    95                                                  'layer':"number of the layer to display for 3D runs"}
     2    '''PLOTDOC - plot documentation
     3    %As of now it is more a TODO list
     4    %   Usage:
     5    %      plotdoc()
     6    '''
     7    pydata = {'quiver': ' quiver plot give data and a vector array [Vx, Vy]',
     8              'mesh': ' draw mesh using trisurf',
     9              'BC': ' this will draw all the boundary conditions (Dirichlet and Neumann).',
     10              'elementnumbering': ' numbering of elements (matlab indices)',
     11              '3D disclaimer': '3D is implemented with plot3d for now this is not optimal and may change to mayavi at some point. The impelementation is on the development side for now so expect some issue and question your plotting before you results.'}
     12    # TODOdata = {'basal_drag': ' plot the basal drag on the bed (in kPa) based on the velocity in md.initialization',
     13    #             'basal_dragx or basal_dragy': ' plot a component of the basal drag on the bed (in kPa)',
     14    #             'boundaries': ' this will draw all the segment boundaries to the model, including rifts.',
     15    #             'icefront': ' this will show segments that are used to define the icefront of the model (Neumann boundary conditions).',
     16    #             'deviatoricstress_tensor': ' plot the components of the deviatoric stress tensor (tauxx, tauyy, tauzz, tauxy, tauxz, tauyz, if computed',
     17    #             'deviatoricstress_principal': ' plot the deviatoricstress tensor principal axis and principal values',
     18    #             'deviatoricstress_principalaxis1': ' arrow plot the first principal axis of the deviatoricstress tensor(replace 1 by 2 or 3 if needed)',
     19    #             'driving_stress': ' plot the driving stress (in kPa)',
     20    #             'elements_type': ' model used for each element',
     21    #             'highlightvertices': ' to highlight vertices (use highlight option to enter the vertex list',
     22    #             'referential': ' stressbalance referential',
     23    #             'riftvel': ' velocities along rifts',
     24    #             'riftrelvel': ' relative velocities along rifts',
     25    #             'riftpenetration': ' penetration levels for a fault',
     26    #             'riftfraction': ' fill fractions for every node of the rifts',
     27    #             'rifts': ' plot mesh with an offset so that rifts are visible',
     28    #             'strainrate_tensor': ' plot the components of the strainrate tensor (exx, eyy, ezz, exy, exz, eyz) if computed',
     29    #             'strainrate_principal': ' plot the strainrate tensor principal axis and principal values)',
     30    #             'strainrate_principalaxis1': ' arrow plot the first principal axis of the strainrate tensor(replace 1 by 2 or 3 if needed)',
     31    #             'stress_tensor': ' plot the components of stress tensor (sxx, syy, szz, sxy, sxz, syz) if computed',
     32    #             'stress_principal': ' plot the stress tensor principal axis and principal values',
     33    #             'stress_principalaxis1': ' arrow plot the first principal axis of the stress tensor(replace 1 by 2 or 3 if needed)',
     34    #             'transient_results': ' this will printlay all the time steps of a transient run (use steps to specify the steps requested)',
     35    #             'transient_vel': ' vel can be by any field of the transient results (vx, vy, vz, vel, temperature, melting, pressure, bed, thickness, surface)',
     36    #             'transient_field': ' dynamic plot of results. specify ''steps'' option, as fell as ''field'' (defaults are all steps, for ''Vel'' field)',
     37    #             'transient_movie': ' this will printlay the time steps of a given field of a transient run',
     38    #             'transient_movie_field': ' field to be printlayed when doing  transient_movie data printlay',
     39    #             'transient_movie_output': ' filename if output is desired for movie',
     40    #             'transient_movie_time': ' time for each image (default 2 seconds)',
     41    #             'thermaltransient_results': ' this will printlay all the time steps of a thermal transient run',
     42    #             'qmuhistnorm': ' histogram normal distribution. needs option qmudata',
     43    #             'qmumean': ' plot of mean distribution in sampling analysis with scaled response. needs option qmudata for descriptor',
     44    #             'qmustddev': ' plot of stddev distribution in sampling analysis with scaled response. needs option qmudata for descriptor',
     45    #             'part_hist': ' partitioning node and area histogram'}
    9646
    97         TODOoptions={'basin':" zoom on a given basin ('pineislandglacier','ronneiceshelf', use isbasin to identify a basin",
    98                                                          'figurebackgroundcolor':" figure background color. (default is 'none',",
    99                                                          'coord':"  'xy' (default) or 'latlon'",
    100                                                          'colorbarpos':" [x,y,dx,dy] where x,y,dx and dy are within [0 1]",
    101                                                          'colorbarcornerposition':" 'West','North',etc ...",
    102                                                          'colorbartitlerotation':" -90, etc ...",
    103                                                          'colorbarwidth':" multiplier (default 1) to the default width colorbar",
    104                                                          'colorbarheight':" multiplier (default 1) to the default height colorbar",
    105                                                          'contourticks':" 'on' or 'off' to printlay the ticks of the contours",
    106                                                          'contouronly':" 'on' or 'off' to printlay the contours on a white background",
    107                                                          'contourcolor':" ticks and contour color",
    108                                                          'density':" density of quivers (one arrow every N nodes, N integer)",
    109                                                          'inset':" add an inset (zoom) of the current figure if 1 (use 'insetx', 'insety' and 'insetpos' to determine the inset position and content)",
    110                                                          'insetx':" [min(x) max(x)] where min(x) and max(x) are values determining the inset content",
    111                                                          'insety':" [min(y) max(y)] where min(y) and max(y) are values determining the inset content",
    112                                                          'insetpos':" [x,y,dx,dy] where x,y,dx and dy are within [0 1]",
    113                                                          'resolution':" resolution used by section value (array of type [horizontal_resolution vertical_resolution])",
    114                                                          'showsection':" show section used by 'sectionvalue' (string 'on' or a number of labels)",
    115                                                          'sectionvalue':" give the value of data on a profile given by an Argus file (string 'Argusfile_name.exp',",
    116                                                          'profile':" give the value of data along a vertical profile ([xlocation ylocation])",
    117                                                          'smooth':" smooth element data (string 'yes' or integer)",
    118                                                          'view':" same as standard matlab option (ex: 2, 3 or [90 180]",
    119                                                          'zlim':" same as standard matlab option",
    120                                                          'xticklabel':" specifiy xticklabel",
    121                                                          'yticklabel':" specifiy yticklabel",
    122                                                          'contrast':" (default 1) coefficient to add contrast to the radar amplitude image used in overlays",
    123                                                          'highres':" resolution of overlayed radar amplitude image (default is 0, high resolution is 1).",
    124                                                          'alpha':" transparency coefficient (the higher, the more transparent). Default is 1.5",
    125                                                          'scaling':" scaling factor used by quiver plots. Default is 0.4",
    126                                                          'autoscale':" set to 'off' to have all the quivers with the same size. Default is 'on'",
    127                                                          'linewidth':" line width for expprint plot (use a cell of strings if more than one)",
    128                                                          'border':" size of printlay border (in pixels). active only for overlay plots",
    129                                                          'nan':" value assigned to NaNs (convenient when plotting BC)",
    130                                                          'partitionedges':" 'off' by default. overlay plot of partition edges",
    131                                                          'latlon':" 'on' or {latstep lonstep [resolution [color]]} where latstep,longstep and resolution are in degrees, color is a [r g b] array",
    132                                                          'latlonnumbering':" 'on' or {latgap longap colornumber latangle lonangle} where latgap and longap are pixel gaps for the numbers",
    133                                                          'latlonclick':" 'on' to click on latlon ticks positions colornumber is a [r g b] array and latangle and lonangle are angles to flip the numbers",
    134                                                          'northarrow':" add an arrow pointing north, 'on' for default value or [x0 y0 length [ratio width fontsize]] where (x0,y0) are the coordinates of the base, ratio=headlength/length",
    135                                                          'offset':" mesh offset used by 'rifts', default is 500",
    136                                                          'scaleruler':" add a scale ruler, 'on' for default value or [x0 y0 length width numberofticks] where (x0,y0) are the coordinates of the lower left corner",
    137                                                          'showregion':" show domain in Antarctica on an inset, use 'insetpos' properties",
    138                                                          'visible':" 'off' to make figure unvisible, default is 'on'",
    139                                                          'wrapping':" repeat 'n' times the colormap ('n' must be an integer)",
    140                                                          'unit':" by default, in m, otherwise, 'km' is available",
    141                                                          'legend_position':" by default, 'NorthEasth'",
    142                                                          'qmudata':" ",
    143                                                          'figposition':" position of figure: 'fullscreen', 'halfright', 'halfleft', 'portrait', 'landscape',... (hardcoded in applyoptions.m)",
    144                                                          'offsetaxispos':" offset of current axis position to get more space (ex: [-0.02 0  0.04 0])",
    145                                                          'axispos':" axis position to get more space",
    146                                                          'hmin':" (numeric, minimum for histogram)",
    147                                                          'hmax':" (numeric, maximum for histogram)",
    148                                                          'hnint':" (numeric, number of intervals for histogram)",
    149                                                          'ymin1':" (numeric, minimum of histogram y-axis)",
    150                                                          'ymax1':" (numeric, maximum of histogram y-axis)",
    151                                                          'ymin2':" (numeric, minimum of cdf y-axis)",
    152                                                          'ymax2':" (numeric, maximum of cdf y-axis)",
    153                                                          'cdfplt':" (char, 'off' to turn off cdf line plots)",
    154                                                          'cdfleg':" (char, 'off' to turn off cdf legends)",
    155                                                          'segmentnumbering':" ('off' by default)",
    156                                                          'kmlgroundoverlay':" ('off' by default)",
    157                                                          'kmlfilename':" ('tempfile.kml' by default)",
    158                                                          'kmlroot':" ('./' by default)",
    159                                                          'kmlimagename':" ('tempimage' by default)",
    160                                                          'kmlimagetype':" ('png' by default)",
    161                                                          'kmlresolution':" (1 by default)",
    162                                                          'kmlfolder':" ('Ground Overlay' by default)",
    163                                                          'kmlfolderdescription':" ('' by default)",
    164                                                          'kmlgroundoverlayname':" ('' by default)",
    165                                                          'kmlgroundoverlaydescription':"N/A by default')"}
     47    pyoptions = {'axis': " show ('on') or hide ('off') axes",
     48                 'caxis': " modify  colorbar range. (array of type [a b] where b >= a)",
     49                 'colorlevels': " N, number of levels to use",
     50                 'colorbar': " add colorbar (string 'on', 'off' or 'one')",
     51                 'axes_pad': " spacing between axes (default is 0.25)",
     52                 'colorbartitle': " colorbar title (string)",
     53                 'colorbarticks': " set colorbar ticks manually (list)",
     54                 'colorbarfontsize': " specify colorbar fontsize",
     55                 'colormap': " change the default colormap ('viridis' is the default)",
     56                 'contourlevels': " N or [value1, ...] add the contours of the specified values or N contours",
     57                 'streamlines': " TOFIX argument does nothing",
     58                 'edgecolor': " color of mesh edges. RGB tuple or standard string",
     59                 'fontsize': " fontsize for the title",
     60                 'fontweight': " fontweight for the title 'normal', 'bold'",
     61                 'fontcolor': " TODO",
     62                 'highlight': " highlights certain nodes or elements when using 'vetrexnumbering' or 'elementnumbering' or 'highlightvertices ' or 'highlightelements' option",
     63                 'title': " subplot title (string)",
     64                 'xlim': " limits of X axis (all subplots) (ex:  [0, 500])",
     65                 'ylim': " limits of Y axis (all subplots) (ex:  [0, 500])",
     66                 'xlabel': " X axis title",
     67                 'ylabel': " Y axis title",
     68                 'scaling': " scaling factor used by quiver plots.",
     69                 'quivercol': " color of quiver arrows, 'values' give value colored arrows",
     70                 'text': " print string or list of strings",
     71                 'textposition': " [x, y] position of text, list if several texts (position betwee 0 and 1)",
     72                 'textsize': " text fontsize TOFIX ",
     73                 'textweight': " text fontweight",
     74                 'textcolor': " text color",
     75                 'textrotation': " text rotation angle",
     76                 'mask': " condition. Only 'true' values are plotted ",
     77                 'log': " cutoff value for log",
     78                 'backgroundcolor': " plot background color. RGB tuple or standard string",
     79                 'expdisp': " path (or list of paths) to the exp file to be plotted ",
     80                 'explinewidth': " linewidth ",
     81                 'explinestyle': " matplotlib linestyle string ",
     82                 'explinecolor': " matplotlib color string ",
     83                 'expfill': " (True / False) fill a closed contour ",
     84                 'expfillcolor': " Color for a filled contour, only used if expfill is True ",
     85                 'expfillalpha': " alpha transparency for filled contour ",
     86                 'overlay': " True / False. Overlay a georeferenced image (radar / visible) ",
     87                 'overlay_image': " path to overlay image ",
     88                 'overlayhist': " plot a histogram of overlay image, used for setting overlaylims ",
     89                 'overlaylims': " normalized limits to clip and stretch contrast of overlay image (in [0, 1], ex. [0.25, 0.75]) ",
     90                 'alpha': " set transparency of plotted data (in [0, 1]) ",
     91                 'vertexnumbering': ' numbering of vertices',
     92                 'elementnumbering': ' numbering of elements (matlab indices)',
     93                 'highlightelements': ' to highlight elements to highlight the element list',
     94                 'layer': "number of the layer to display for 3D runs"}
    16695
     96    # TODOoptions = {'basin': " zoom on a given basin ('pineislandglacier', 'ronneiceshelf', use isbasin to identify a basin",
     97    #                'figurebackgroundcolor': " figure background color. (default is 'none', ",
     98    #                'coord': "  'xy' (default) or 'latlon'",
     99    #                'colorbarpos': " [x, y, dx, dy] where x, y, dx and dy are within [0 1]",
     100    #                'colorbarcornerposition': " 'West', 'North', etc ...",
     101    #                'colorbartitlerotation': " - 90, etc ...",
     102    #                'colorbarwidth': " multiplier (default 1) to the default width colorbar",
     103    #                'colorbarheight': " multiplier (default 1) to the default height colorbar",
     104    #                'contourticks': " 'on' or 'off' to printlay the ticks of the contours",
     105    #                'contouronly': " 'on' or 'off' to printlay the contours on a white background",
     106    #                'contourcolor': " ticks and contour color",
     107    #                'density': " density of quivers (one arrow every N nodes, N integer)",
     108    #                'inset': " add an inset (zoom) of the current figure if 1 (use 'insetx', 'insety' and 'insetpos' to determine the inset position and content)",
     109    #                'insetx': " [min(x) max(x)] where min(x) and max(x) are values determining the inset content",
     110    #                'insety': " [min(y) max(y)] where min(y) and max(y) are values determining the inset content",
     111    #                'insetpos': " [x, y, dx, dy] where x, y, dx and dy are within [0 1]",
     112    #                'resolution': " resolution used by section value (array of type [horizontal_resolution vertical_resolution])",
     113    #                'showsection': " show section used by 'sectionvalue' (string 'on' or a number of labels)",
     114    #                'sectionvalue': " give the value of data on a profile given by an Argus file (string 'Argusfile_name.exp', ",
     115    #                'profile': " give the value of data along a vertical profile ([xlocation ylocation])",
     116    #                'smooth': " smooth element data (string 'yes' or integer)",
     117    #                'view': " same as standard matlab option (ex:  2, 3 or [90 180]",
     118    #                'zlim': " same as standard matlab option",
     119    #                'xticklabel': " specifiy xticklabel",
     120    #                'yticklabel': " specifiy yticklabel",
     121    #                'contrast': " (default 1) coefficient to add contrast to the radar amplitude image used in overlays",
     122    #                'highres': " resolution of overlayed radar amplitude image (default is 0, high resolution is 1).",
     123    #                'alpha': " transparency coefficient (the higher, the more transparent). Default is 1.5",
     124    #                'scaling': " scaling factor used by quiver plots. Default is 0.4",
     125    #                'autoscale': " set to 'off' to have all the quivers with the same size. Default is 'on'",
     126    #                'linewidth': " line width for expprint plot (use a cell of strings if more than one)",
     127    #                'border': " size of printlay border (in pixels). active only for overlay plots",
     128    #                'nan': " value assigned to NaNs (convenient when plotting BC)",
     129    #                'partitionedges': " 'off' by default. overlay plot of partition edges",
     130    #                'latlon': " 'on' or {latstep lonstep [resolution [color]]} where latstep, longstep and resolution are in degrees, color is a [r g b] array",
     131    #                'latlonnumbering': " 'on' or {latgap longap colornumber latangle lonangle} where latgap and longap are pixel gaps for the numbers",
     132    #                'latlonclick': " 'on' to click on latlon ticks positions colornumber is a [r g b] array and latangle and lonangle are angles to flip the numbers",
     133    #                'northarrow': " add an arrow pointing north, 'on' for default value or [x0 y0 length [ratio width fontsize]] where (x0, y0) are the coordinates of the base, ratio = headlength / length",
     134    #                'offset': " mesh offset used by 'rifts', default is 500",
     135    #                'scaleruler': " add a scale ruler, 'on' for default value or [x0 y0 length width numberofticks] where (x0, y0) are the coordinates of the lower left corner",
     136    #                'showregion': " show domain in Antarctica on an inset, use 'insetpos' properties",
     137    #                'visible': " 'off' to make figure unvisible, default is 'on'",
     138    #                'wrapping': " repeat 'n' times the colormap ('n' must be an integer)",
     139    #                'unit': " by default, in m, otherwise, 'km' is available",
     140    #                'legend_position': " by default, 'NorthEasth'",
     141    #                'qmudata': " ",
     142    #                'figposition': " position of figure:  'fullscreen', 'halfright', 'halfleft', 'portrait', 'landscape', ... (hardcoded in applyoptions.m)",
     143    #                'offsetaxispos': " offset of current axis position to get more space (ex:  [ - 0.02 0  0.04 0])",
     144    #                'axispos': " axis position to get more space",
     145    #                'hmin': " (numeric, minimum for histogram)",
     146    #                'hmax': " (numeric, maximum for histogram)",
     147    #                'hnint': " (numeric, number of intervals for histogram)",
     148    #                'ymin1': " (numeric, minimum of histogram y - axis)",
     149    #                'ymax1': " (numeric, maximum of histogram y - axis)",
     150    #                'ymin2': " (numeric, minimum of cdf y - axis)",
     151    #                'ymax2': " (numeric, maximum of cdf y - axis)",
     152    #                'cdfplt': " (char, 'off' to turn off cdf line plots)",
     153    #                'cdfleg': " (char, 'off' to turn off cdf legends)",
     154    #                'segmentnumbering': " ('off' by default)",
     155    #                'kmlgroundoverlay': " ('off' by default)",
     156    #                'kmlfilename': " ('tempfile.kml' by default)",
     157    #                'kmlroot': " ('./' by default)",
     158    #                'kmlimagename': " ('tempimage' by default)",
     159    #                'kmlimagetype': " ('png' by default)",
     160    #                'kmlresolution': " (1 by default)",
     161    #                'kmlfolder': " ('Ground Overlay' by default)",
     162    #                'kmlfolderdescription': " ('' by default)",
     163    #                'kmlgroundoverlayname': " ('' by default)",
     164    #                'kmlgroundoverlaydescription': "N/A by default')"}
    167165
    168         print("   Plot usage: plotmodel(model,varargin)")
    169         print("   plotting is done with couples of keywords values, the type and style of data to display is given by one (or several) of the followings")
    170         print("   Options: ")
    171         print("     'data' : and a model field or one of the following options.")
    172         for key in list(pydata.keys()):
    173                 print(("     - {} : {}".format(key,pydata[key])))
    174         print("")
    175         print("   The general look of the plot is then given by the following keywords")
    176         for key in sorted(pyoptions):
    177                 print(("     - {} : {}".format(key,pyoptions[key])))
    178         print("       any options (except 'data') can be followed by '#i' where 'i' is the subplot number, or '#all' if applied to all plots")
     166    print("   Plot usage:  plotmodel(model, varargin)")
     167    print("   plotting is done with couples of keywords values, the type and style of data to display is given by one (or several) of the followings")
     168    print("   Options: ")
     169    print("     'data' : and a model field or one of the following options.")
     170    for key in list(pydata.keys()):
     171        print((" - {} :  {}".format(key, pydata[key])))
     172    print("")
     173    print("   The general look of the plot is then given by the following keywords")
     174    for key in sorted(pyoptions):
     175        print((" - {} :  {}".format(key, pyoptions[key])))
     176    print("       any options (except 'data') can be followed by '  #i' where 'i' is the subplot number, or '  #all' if applied to all plots")
  • issm/trunk-jpl/src/m/plot/plotmodel.py

    r23870 r24213  
    1 import numpy as  np
     1import numpy as np
    22from plotoptions import plotoptions
    33from plot_manager import plot_manager
     
    2727    hold = options.list[0].getfieldvalue('hold', False)
    2828
    29     #if nrows and ncols specified,  then bypass
     29    #if nrows and ncols specified, then bypass
    3030    if options.list[0].exist('nrows'):
    3131        nrows = options.list[0].getfieldvalue('nrows')
     
    4646    #check that nrows and ncols were given at the same time!
    4747    if not nr == nc:
    48         raise Exception('error: nrows and ncols need to be specified together,  or not at all')
     48        raise Exception('error: nrows and ncols need to be specified together, or not at all')
    4949
    5050    #Go through plots
     
    6767                      'off': 'None',
    6868                      'one': 'single'}
    69         # options needed to define plot grid
     69    # options needed to define plot grid
    7070        plotnum = options.numberofplots
    7171        if plotnum == 1:
     
    7676        share_all = options.list[0].getfieldvalue('share_all', True)  # True, False
    7777        label_mode = options.list[0].getfieldvalue('label_mode', 'L')  # 1, L, all
    78         colorbar = options.list[0].getfieldvalue('colorbar', 'on')  # on,  off (single)
     78        colorbar = options.list[0].getfieldvalue('colorbar', 'on')  # on, off (single)
    7979        cbar_mode = translator[colorbar]
    8080        cbar_location = options.list[0].getfieldvalue('colorbarpos', 'right')  # right, top
     
    8484        axgrid = ImageGrid(fig, 111,
    8585                           nrows_ncols=(nrows, ncols),
    86                            #ngrids=plotnum,
    8786                           direction=direction,
    8887                           axes_pad=axes_pad,
  • issm/trunk-jpl/src/m/plot/processdata.py

    r23716 r24213  
    1 import numpy as  np
     1import numpy as np
    22
    3 def processdata(md,data,options):
    4         """
    5         PROCESSDATA - process data to be plotted
    6        
    7         datatype = 1 -> elements
    8         datatype = 2 -> nodes
    9         datatype = 3 -> node quivers
    10         datatype = 4 -> patch
    11        
    12         Usage:
    13         data,datatype=processdata(md,data,options);
    14        
    15         See also: PLOTMODEL, PROCESSMESH
    16         """
    17         # {{{ Initialisation and grabbing auxiliaries
    18         # check format
    19         if (len(data)==0 or (len(data)==1 and not isinstance(data,dict) and np.isnan(data).all())):
    20                 raise ValueError("processdata error message: 'data' provided is empty")
    21         # get the shape
    22         if 'numberofvertices2d' in dir(md.mesh):
    23                 numberofvertices2d=md.mesh.numberofvertices2d
    24                 numberofelements2d=md.mesh.numberofelements2d
    25         else:
    26                 numberofvertices2d=np.nan
    27                 numberofelements2d=np.nan
    28         procdata=np.copy(data)
    29         #initialize datatype
    30         datatype=0
    31         # get datasize
    32         if np.ndim(procdata)==1:
    33                 datasize=(np.shape(procdata)[0],1)
    34         elif np.ndim(procdata)==2:
    35                 datasize=np.shape(procdata)
    36         elif np.ndim(procdata)==3:
    37                 if np.shape(procdata)[0]==2:
    38                         #treating a dim two list that needs to be stacked
    39                         procdata=np.hstack((procdata[0,:,:],procdata[1,:,:]))
    40                         datasize=np.shape(procdata)
    41                 else:
    42                         raise ValueError('data list contains more than two vectore, we can not cope with that')
    43         else:
    44                 raise ValueError('data passed to plotmodel has bad dimensions; check that column vectors are rank-1')
    45   # }}}     
    46         # {{{ process NaN's if any
    47         nanfill=options.getfieldvalue('nan',-9999)
    48         if np.any(np.isnan(procdata)):
    49                 lb=np.nanmin(procdata)
    50                 ub=np.nanmax(procdata)
    51                 if lb==ub:
    52                         lb=lb-0.5
    53                         ub=ub+0.5
    54                         nanfill=lb-1
    55                         #procdata[np.isnan(procdata)]=nanfill
    56                 procdata=np.ma.array(procdata,mask=np.isnan(procdata))
    57                 options.addfielddefault('clim',[lb,ub])
    58                 options.addfielddefault('cmap_set_under','1')
    59                 print(("WARNING: nan's treated as", nanfill, "by default.  Change using pairoption 'nan',nan_fill_value in plotmodel call"))
    60   # }}} 
    61         # {{{ log
    62         if options.exist('log'):
    63                 cutoff=options.getfieldvalue('log',1)
    64                 procdata[np.where(procdata<cutoff)]=cutoff
    65         # }}}
    66         # {{{ quiver plot
    67         if datasize[1]>1 and datasize[0]!= md.mesh.numberofvertices+1:
    68                 if datasize[0]==md.mesh.numberofvertices and datasize[1]==2:
    69                         datatype=3
    70                 else:
    71                         raise ValueError('plotmodel error message: data should have two columns of length md.mesh.numberofvertices for a quiver plot')
    72         # }}} 
    73         # {{{ element data
    743
    75         if datasize[0]==md.mesh.numberofelements and datasize[1]==1:
    76                 #initialize datatype if non patch
    77                 if datatype!=4 and datatype!=5:
    78                         datatype=1
    79                 # {{{mask
    80                 if options.exist('mask'):
    81                         flags=options.getfieldvalue('mask')
    82                         hide=np.invert(flags)
    83                         if np.size(flags)==md.mesh.numberofvertices:
    84                                 EltMask=np.asarray([np.any(np.in1d(index,np.where(hide))) for index in md.mesh.elements-1])
    85                                 procdata=np.ma.array(procdata,mask=EltMask)
    86                                 options.addfielddefault('cmap_set_bad','w')
    87                         elif np.size(flags)==md.mesh.numberofelements:
    88                                 procdata=np.ma.array(procdata,mask=hide)
    89                                 options.addfielddefault('cmap_set_bad','w')
    90                         else:
    91                                 print('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements')
    92                 # }}} 
     4def processdata(md, data, options):
     5    """
     6    PROCESSDATA - process data to be plotted
    937
    94         # }}} 
    95         # {{{ node data
    96         if datasize[0]==md.mesh.numberofvertices and datasize[1]==1:
    97                 datatype=2
    98                 # {{{ Mask
    99                 if options.exist('mask'):
    100                         flags=options.getfieldvalue('mask')
    101                         hide=np.invert(flags)
    102                         if np.size(flags)==md.mesh.numberofvertices:
    103                                 procdata=np.ma.array(procdata,mask=hide)
    104                                 options.addfielddefault('cmap_set_bad','w')
    105                         elif np.size(flags)==md.mesh.numberofelements:
    106                                 NodeMask=np.zeros(np.shape(md.mesh.x),dtype=bool)
    107                                 HideElt=md.mesh.elements[np.where(hide)[0]]-1
    108                                 NodeMask[HideElt]=True
    109                                 procdata=np.ma.array(procdata,mask=NodeMask)
    110                                 options.addfielddefault('cmap_set_bad','w')
    111                         else:
    112                                 print('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements')
    113           # }}} 
    114         # }}} 
    115         # {{{ spc time series
    116         if datasize[0]==md.mesh.numberofvertices+1:
    117                 datatype=2
    118                 spccol=options.getfieldvalue('spccol',0)
    119                 print('multiple-column spc field; specify column to plot using option "spccol"')
    120                 print(('column ', spccol, ' plotted for time: ', procdata[-1,spccol]))
    121                 procdata=procdata[0:-1,spccol]
    122    
    123                 #mask?
    124    
     8    datatype = 1 - > elements
     9    datatype = 2 - > nodes
     10    datatype = 3 - > node quivers
     11    datatype = 4 - > patch
     12
     13    Usage:
     14    data, datatype = processdata(md, data, options)
     15
     16    See also: PLOTMODEL, PROCESSMESH
     17    """
     18    # {{{ Initialisation and grabbing auxiliaries
     19    # check format
     20    if (len(data) == 0 or (len(data) == 1 and not isinstance(data, dict) and np.isnan(data).all())):
     21        raise ValueError("processdata error message: 'data' provided is empty")
     22    # get the shape
     23    if 'numberofvertices2d' in dir(md.mesh):
     24        numberofvertices2d = md.mesh.numberofvertices2d
     25        numberofelements2d = md.mesh.numberofelements2d
     26    else:
     27        numberofvertices2d = np.nan
     28        numberofelements2d = np.nan
     29    procdata = np.copy(data)
     30    #initialize datatype
     31    datatype = 0
     32    # get datasize
     33    if np.ndim(procdata) == 1:
     34        datasize = (np.shape(procdata)[0], 1)
     35    elif np.ndim(procdata) == 2:
     36        datasize = np.shape(procdata)
     37    elif np.ndim(procdata) == 3:
     38        if np.shape(procdata)[0] == 2:
     39            #treating a dim two list that needs to be stacked
     40            procdata = np.hstack((procdata[0, :, :], procdata[1, :, :]))
     41            datasize = np.shape(procdata)
     42        else:
     43            raise ValueError('data list contains more than two vectore, we can not cope with that')
     44    else:
     45        raise ValueError('data passed to plotmodel has bad dimensions; check that column vectors are rank - 1')
     46    # }}}
     47    # {{{ process NaN's if any
     48    nanfill = options.getfieldvalue('nan', - 9999)
     49    if np.any(np.isnan(procdata)):
     50        lb = np.nanmin(procdata)
     51        ub = np.nanmax(procdata)
     52        if lb == ub:
     53            lb = lb - 0.5
     54            ub = ub + 0.5
     55            nanfill = lb - 1
     56    #procdata[np.isnan(procdata)] = nanfill
     57        procdata = np.ma.array(procdata, mask=np.isnan(procdata))
     58        options.addfielddefault('clim', [lb, ub])
     59        options.addfielddefault('cmap_set_under', '1')
     60        print(("WARNING: nan's treated as", nanfill, "by default.  Change using pairoption 'nan', nan_fill_value in plotmodel call"))
     61    # }}}
     62    # {{{ log
     63    if options.exist('log'):
     64        cutoff = options.getfieldvalue('log', 1)
     65        procdata[np.where(procdata < cutoff)] = cutoff
     66    # }}}
     67    # {{{ quiver plot
     68    if datasize[1] > 1 and datasize[0] != md.mesh.numberofvertices + 1:
     69        if datasize[0] == md.mesh.numberofvertices and datasize[1] == 2:
     70            datatype = 3
     71        else:
     72            raise ValueError('plotmodel error message: data should have two columns of length md.mesh.numberofvertices for a quiver plot')
     73    # }}}
     74    # {{{ element data
     75
     76    if datasize[0] == md.mesh.numberofelements and datasize[1] == 1:
     77        #initialize datatype if non patch
     78        if datatype != 4 and datatype != 5:
     79            datatype = 1
     80    # {{{mask
     81        if options.exist('mask'):
     82            flags = options.getfieldvalue('mask')
     83            hide = np.invert(flags)
     84            if np.size(flags) == md.mesh.numberofvertices:
     85                EltMask = np.asarray([np.any(np.in1d(index, np.where(hide))) for index in md.mesh.elements - 1])
     86                procdata = np.ma.array(procdata, mask=EltMask)
     87                options.addfielddefault('cmap_set_bad', 'w')
     88            elif np.size(flags) == md.mesh.numberofelements:
     89                procdata = np.ma.array(procdata, mask=hide)
     90                options.addfielddefault('cmap_set_bad', 'w')
     91            else:
     92                print('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements')
     93    # }}}
     94
     95    # }}}
     96    # {{{ node data
     97    if datasize[0] == md.mesh.numberofvertices and datasize[1] == 1:
     98        datatype = 2
     99    # {{{ Mask
     100        if options.exist('mask'):
     101            flags = options.getfieldvalue('mask')
     102            hide = np.invert(flags)
     103            if np.size(flags) == md.mesh.numberofvertices:
     104                procdata = np.ma.array(procdata, mask=hide)
     105                options.addfielddefault('cmap_set_bad', 'w')
     106            elif np.size(flags) == md.mesh.numberofelements:
     107                NodeMask = np.zeros(np.shape(md.mesh.x), dtype=bool)
     108                HideElt = md.mesh.elements[np.where(hide)[0]] - 1
     109                NodeMask[HideElt] = True
     110                procdata = np.ma.array(procdata, mask=NodeMask)
     111                options.addfielddefault('cmap_set_bad', 'w')
     112            else:
     113                print('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements')
     114    # }}}
     115    # }}}
     116    # {{{ spc time series
     117    if datasize[0] == md.mesh.numberofvertices + 1:
     118        datatype = 2
     119        spccol = options.getfieldvalue('spccol', 0)
     120        print('multiple-column spc field; specify column to plot using option "spccol"')
     121        print(('column ', spccol, ' plotted for time: ', procdata[-1, spccol]))
     122        procdata = procdata[0: - 1, spccol]
     123
     124    #mask?
     125
    125126    #layer projection?
    126    
     127
    127128    #control arrow density if quiver plot
    128         # }}} 
    129         # {{{ convert rank-2 array to rank-1
    130         if np.ndim(procdata)==2 and np.shape(procdata)[1]==1:
    131                 procdata=procdata.reshape(-1,)
    132         # }}} 
    133         # {{{ if datatype is still zero, error out
    134         if datatype==0:
    135                 raise ValueError("processdata error: data provided not recognized or not supported")
    136         else:
    137                 return procdata, datatype
    138   # }}} 
     129    # }}}
     130    # {{{ convert rank - 2 array to rank - 1
     131    if np.ndim(procdata) == 2 and np.shape(procdata)[1] == 1:
     132        procdata = procdata.reshape(- 1, )
     133    # }}}
     134    # {{{ if datatype is still zero, error out
     135    if datatype == 0:
     136        raise ValueError("processdata error: data provided not recognized or not supported")
     137    else:
     138        return procdata, datatype
     139    # }}}
  • issm/trunk-jpl/src/m/plot/processmesh.py

    r21440 r24213  
    1 from math import isnan
    2 import numpy as  np
     1import numpy as np
    32
    4 def processmesh(md,data,options):
    5         """
    6         PROCESSMESH - process the mesh for plotting
    7        
    8         Usage:
    9         x,y,z,elements,is2d=processmech(md,data,options)
    10        
    11         See also: PLOTMODEL, PROCESSDATA
    12         """
    13        
    14         # {{{ check mesh size parameters
    15         if md.mesh.numberofvertices==0:
    16                 raise ValueError('processmesh error: mesh is empty')
    17         if md.mesh.numberofvertices==md.mesh.numberofelements:
    18                 raise ValueError('processmesh error: the number of elements is the same as the number of nodes')
    19         # }}}
    20   # {{{ treating coordinates
    213
    22         try:
    23                 z=md.mesh.z
    24         except AttributeError:
    25                 z=np.zeros(np.shape(md.mesh.x))
    26         elements=md.mesh.elements-1
    27        
    28         if options.getfieldvalue('layer',0)>=1:
    29                 x=md.mesh.x2d
    30                 y=md.mesh.y2d
    31                 z=np.zeros(np.shape(x))
    32                 elements=md.mesh.elements2d-1
    33         elif 'latlon' in options.getfieldvalue('coord','xy'):
    34                 x=md.mesh.long
    35                 y=md.mesh.lat
    36         else:
    37                 x=md.mesh.x
    38                 y=md.mesh.y
     4def processmesh(md, data, options):
     5    """
     6    PROCESSMESH - process the mesh for plotting
    397
    40         #is it a 2D plot?
    41         if md.mesh.dimension()==2 or options.getfieldvalue('layer',0)>=1:
    42                 is2d=1
    43         else:
    44                 is2d=0
    45                
    46         #units
    47         if options.exist('unit'):
    48                 unit=options.getfieldvalue('unit')
    49                 x=x*unit
    50                 y=y*unit
    51                 z=z*unit
     8    Usage:
     9    x, y, z, elements, is2d = processmech(md, data, options)
    5210
    53         #is model a member of planet class? (workaround until planet class defined)
    54         if md.__class__.__name__!='model':
    55                 isplanet=1
    56         else:
    57                 isplanet=0
     11    See also: PLOTMODEL, PROCESSDATA
     12    """
    5813
    59         return x,y,z,elements,is2d,isplanet
     14    # {{{ check mesh size parameters
     15    if md.mesh.numberofvertices == 0:
     16        raise ValueError('processmesh error: mesh is empty')
     17    if md.mesh.numberofvertices == md.mesh.numberofelements:
     18        raise ValueError('processmesh error: the number of elements is the same as the number of nodes')
     19    # }}}
     20    # {{{ treating coordinates
     21
     22    try:
     23        z = md.mesh.z
     24    except AttributeError:
     25        z = np.zeros(np.shape(md.mesh.x))
     26    elements = md.mesh.elements - 1
     27
     28    if options.getfieldvalue('layer', 0) >= 1:
     29        x = md.mesh.x2d
     30        y = md.mesh.y2d
     31        z = np.zeros(np.shape(x))
     32        elements = md.mesh.elements2d - 1
     33    elif 'latlon' in options.getfieldvalue('coord', 'xy'):
     34        x = md.mesh.long
     35        y = md.mesh.lat
     36    else:
     37        x = md.mesh.x
     38        y = md.mesh.y
     39
     40    #is it a 2D plot?
     41    if md.mesh.dimension() == 2 or options.getfieldvalue('layer', 0) >= 1:
     42        is2d = 1
     43    else:
     44        is2d = 0
     45
     46    #units
     47    if options.exist('unit'):
     48        unit = options.getfieldvalue('unit')
     49        x = x * unit
     50        y = y * unit
     51        z = z * unit
     52
     53    #is model a member of planet class? (workaround until planet class defined)
     54    if md.__class__.__name__ != 'model':
     55        isplanet = 1
     56    else:
     57        isplanet = 0
     58
     59    return x, y, z, elements, is2d, isplanet
  • issm/trunk-jpl/src/m/plot/writejsfield.py

    r23716 r24213  
    11import numpy as np
    2 def writejsfield(fid,name,variable,nods):
    3 #WRITEJSFIELD - write variable to javascript file
    4 #
    5 #   Usage:
    6 #      writejsfield(fid,name,variable)
    7 #
    8         #write array:
    9         #if not isinstance(variable, list):
    10         if type(variable[0])==np.float64:
    11                 fid.write('<!-- {0}{{{{{{-->\n'.format(name))
    12                 fid.write('{0}=['.format(name))
    13                 for i in range(0, nods-1):
    14                         fid.write('{0},'.format(variable[i]))
    15                 fid.write('{0}];\n'.format(variable[-1]))
    16                 fid.write('<!--}}}}}}-->\n')
    17         else:
    18                 #multi-sized array:
    19                 fid.write('<!-- {0}{{{{{{-->\n'.format(name))
    20                 fid.write('{0}=[]\n'.format(name))
    21                 for i in range(0, len(variable[2])):
    22                         fid.write('{0}["{1}"]=['.format(name,i))
    23                         for j in range(1, nods-1):
    24                                 fid.write('{0},'.format(variable[j][i]))
    25                         fid.write('{0}];\n'.format(variable[-1][i]))
    26                 fid.write('<!--}}}}}}-->\n')
     2
     3
     4def writejsfield(fid, name, variable, nods):
     5    #WRITEJSFIELD - write variable to javascript file
     6    #
     7    #   Usage:
     8    #      writejsfield(fid, name, variable)
     9    #
     10    #write array:
     11    #if not isinstance(variable, list):
     12    if type(variable[0]) == np.float64:
     13        fid.write('<!-- {0}{{{{{{-->\n'.format(name))
     14        fid.write('{0}=['.format(name))
     15        for i in range(0, nods - 1):
     16            fid.write('{0}, '.format(variable[i]))
     17        fid.write('{0}];\n'.format(variable[-1]))
     18        fid.write('<!--}}}}}}-->\n')
     19    else:
     20        #multi - sized array:
     21        fid.write('<!-- {0}{{{{{{-->\n'.format(name))
     22        fid.write('{0} = []\n'.format(name))
     23        for i in range(0, len(variable[2])):
     24            fid.write('{0}["{1}"] = ['.format(name, i))
     25            for j in range(1, nods - 1):
     26                fid.write('{0}, '.format(variable[j][i]))
     27            fid.write('{0}];\n'.format(variable[-1][i]))
     28        fid.write('<!--}}}}}}-->\n')
  • issm/trunk-jpl/src/m/plot/writejsfile.py

    r23716 r24213  
    11import numpy as np
    22from writejsfield import writejsfield
    3 def writejsfile(filename,model,keyname):
    4 #WRITEJSFILE - write model file to javascript database
    5 #
    6 #   Usage:
    7 #      writejsfile(filename,model,keyname)
    8 #
    93
    10         nods=len(model.x)
    11         nel=len(model.index)
    12         nx=len(model.contourx1)
    13         print(filename)
    14         fid=open(filename,'w', 0)
    154
    16         fid.write('model = {};\n')
    17         fid.write('model["title"]="{0}";\n'.format(model.title))
    18         fid.write('model["initialZoomFactor"]={0};\n'.format(model.initialZoomFactor))
    19         #write index:
    20         fid.write('<!-- model["index"]{{{-->\n')
    21         fid.write('model["index"]=[')
    22         for i in range(0, nel-1):
    23                 fid.write('[{0}, {1}, {2}],'.format(model.index[i][0],model.index[i][1],model.index[i][2]))
    24         fid.write('[{0}, {1}, {2}]];\n'.format(model.index[-1][0],model.index[-1][1],model.index[-1][2]))
    25         fid.write('<!--}}}-->\n')
    26         print('writing model coordinates')
    27         writejsfield(fid,'model["x"]',model.x,nods)
    28         writejsfield(fid,'model["y"]',model.y,nods)
    29         writejsfield(fid,'model["z"]',model.z,nods)
    30         writejsfield(fid,'model["surface"]',model.surface,nods)
    31         writejsfield(fid,'model["contourx1"]',model.contourx1,nx)
    32         writejsfield(fid,'model["contoury1"]',model.contoury1,nx)
    33         writejsfield(fid,'model["contourz1"]',model.contourz1,nx)
    34         writejsfield(fid,'model["contourx2"]',model.contourx2,nx)
    35         writejsfield(fid,'model["contoury2"]',model.contoury2,nx)
    36         writejsfield(fid,'model["contourz2"]',model.contourz2,nx)
     5def writejsfile(filename, model, keyname):
     6    #WRITEJSFILE - write model file to javascript database
     7    #
     8    #   Usage:
     9    #      writejsfile(filename, model, keyname)
     10    #
    3711
    38         print('writing results')
    39         results=model.results
    40         fid.write('results={};\n')
     12    nods = len(model.x)
     13    nel = len(model.index)
     14    nx = len(model.contourx1)
     15    print(filename)
     16    fid = open(filename, 'w', 0)
    4117
    42         for i in range(0,len(results)):
    43                 fid.write('result={};\n')
    44                 writejsfield(fid,'result["data"]',results[i].data,nods)
    45                 fid.write('<!--{{{-->\n')
    46                 fid.write('result["caxis"]=[{0},{1}];\n'.format(results[i].caxis[0],results[i].caxis[1]))
    47                 fid.write('result["label"]="{0}";\n'.format(results[i].label))
    48                 fid.write('result["shortlabel"]="{0}";\n'.format(results[i].shortlabel))
    49                 fid.write('result["unit"]="{0}";\n'.format(results[i].unit))
    50                 if type(results[i].data)==np.float64:
    51                         fid.write('result["time_range"]=[{0},{1}];\n'.format(results[i].time_range[0],results[i].time_range[1]))
    52                 fid.write('results["{0}"]=result;\n'.format(i))
    53                 fid.write('<!--}}}-->\n')
    54         fid.write('model.results=results;\n')
    55         fid.write('models["{0}"]=model;\n'.format(keyname))
     18    fid.write('model = {};\n')
     19    fid.write('model["title"] = "{0}";\n'.format(model.title))
     20    fid.write('model["initialZoomFactor"]={0};\n'.format(model.initialZoomFactor))
     21    #write index:
     22    fid.write(' < ! - -  model["index"]{{{ - - > \n')
     23    fid.write('model["index"] = [')
     24    for i in range(0, nel - 1):
     25        fid.write('[{0}, {1}, {2}], '.format(model.index[i][0], model.index[i][1], model.index[i][2]))
     26    fid.write('[{0}, {1}, {2}]];\n'.format(model.index[-1][0], model.index[-1][1], model.index[-1][2]))
     27    fid.write(' < ! - - }}} - - > \n')
     28    print('writing model coordinates')
     29    writejsfield(fid, 'model["x"]', model.x, nods)
     30    writejsfield(fid, 'model["y"]', model.y, nods)
     31    writejsfield(fid, 'model["z"]', model.z, nods)
     32    writejsfield(fid, 'model["surface"]', model.surface, nods)
     33    writejsfield(fid, 'model["contourx1"]', model.contourx1, nx)
     34    writejsfield(fid, 'model["contoury1"]', model.contoury1, nx)
     35    writejsfield(fid, 'model["contourz1"]', model.contourz1, nx)
     36    writejsfield(fid, 'model["contourx2"]', model.contourx2, nx)
     37    writejsfield(fid, 'model["contoury2"]', model.contoury2, nx)
     38    writejsfield(fid, 'model["contourz2"]', model.contourz2, nx)
    5639
    57         fid.close()
     40    print('writing results')
     41    results = model.results
     42    fid.write('results={};\n')
     43
     44    for i in range(0, len(results)):
     45        fid.write('result={};\n')
     46        writejsfield(fid, 'result["data"]', results[i].data, nods)
     47        fid.write(' < ! - - {{{ - - > \n')
     48        fid.write('result["caxis"] = [{0}, {1}];\n'.format(results[i].caxis[0], results[i].caxis[1]))
     49        fid.write('result["label"] = "{0}";\n'.format(results[i].label))
     50        fid.write('result["shortlabel"] = "{0}";\n'.format(results[i].shortlabel))
     51        fid.write('result["unit"] = "{0}";\n'.format(results[i].unit))
     52        if type(results[i].data) == np.float64:
     53            fid.write('result["time_range"] = [{0}, {1}];\n'.format(results[i].time_range[0], results[i].time_range[1]))
     54        fid.write('results["{0}"] = result;\n'.format(i))
     55        fid.write(' < ! - - }}} - - > \n')
     56    fid.write('model.results = results;\n')
     57    fid.write('models["{0}"] = model;\n'.format(keyname))
     58
     59    fid.close()
  • issm/trunk-jpl/src/m/qmu/dakota_in_data.py

    r23716 r24213  
    66from MatlabFuncs import *
    77
    8 def dakota_in_data(dmeth,variables,responses,dparams,filei,*args):
    9         '''
     8
     9def dakota_in_data(dmeth, variables, responses, dparams, filei, *args):
     10    '''
    1011  define the data to write the dakota .in and .m files.
    1112
    12   []=dakota_in_data(dmeth,variables,responses,dparams,filei,*args)
     13  [] = dakota_in_data(dmeth, variables, responses, dparams, filei, *args)
    1314
    1415  where the required input is:
     
    1617    variables     (structure array, variable class objects)
    1718    responses     (structure array, response class objects)
    18     dparams       (structure array, method-independent parameters)
     19    dparams       (structure array, method - independent parameters)
    1920    filei         (character, name of .in and .m files)
    2021
     
    2930  it collects the parameters and applies some defaults that
    3031  are unique to the environment.  second, some analysis package
    31   variables and/or responses may be treated differently by
     32  variables and / or responses may be treated differently by
    3233  dakota.  for example, an analysis package variable may be
    3334  defined as an array, so the QmuSetupDesign brancher will
     
    4243'''
    4344
    44         ##  parameters
    45         #  get default set of parameters
    46         params=dakota_in_params(struct())
    47         #  merge specified parameters into default set, whether or not
    48         #  they already exist
    49         fnames=fieldnames(dparams)
     45    #  parameters
     46    #  get default set of parameters
     47    params = dakota_in_params(struct())
     48    #  merge specified parameters into default set, whether or not
     49    #  they already exist
     50    fnames = fieldnames(dparams)
    5051
    51         for fieldname in fnames:
    52                 if not isfield(params,fieldname):
    53                         print('WARNING: dakota_in_data:unknown_param: No parameter {} in default parameter set.'.format(str(fieldname)))
    54                 exec('params.{} = vars(dparams)[fieldname]'.format(fieldname))
     52    for fieldname in fnames:
     53        if not isfield(params, fieldname):
     54            print('WARNING: dakota_in_data:unknown_param: No parameter {} in default parameter set.'.format(str(fieldname)))
     55        exec('params.{} = vars(dparams)[fieldname]'.format(fieldname))
    5556
    56         # use matlab even though we are running python
    57         if params.direct and params.analysis_driver == '':
    58                 params.analysis_driver='matlab'
     57    # use matlab even though we are running python
     58    if params.direct and params.analysis_driver == '':
     59        params.analysis_driver = 'matlab'
    5960
    60         if strcmpi(params.analysis_driver,'matlab') and params.analysis_components == '':
    61                 [pathstr,name,ext] = fileparts(filei)
    62                 params.analysis_components=fullfile(pathstr,name+'.py')
     61    if strcmpi(params.analysis_driver, 'matlab') and params.analysis_components == '':
     62        [pathstr, name, ext] = fileparts(filei)
     63        params.analysis_components = fullfile(pathstr, name + '.py')
    6364
    64         #  merge method parameters, though they shouldn't be in dparams
    65         # dmeth=dmeth_params_merge(dmeth,dparams)
     65    #  merge method parameters, though they shouldn't be in dparams
     66    # dmeth = dmeth_params_merge(dmeth, dparams)
    6667
    67         ##  variables
    68         fnames=fieldnames(variables)
     68    #  variables
     69    fnames = fieldnames(variables)
    6970
    70         # works like matlab arbitrary structs/classes, remembers order of input attributes
    71         dvar = OrderedStruct()
    72         dresp = OrderedStruct()
     71    # works like matlab arbitrary structs / classes, remembers order of input attributes
     72    dvar = OrderedStruct()
     73    dresp = OrderedStruct()
    7374
    74         for i in range(len(fnames)):
    75                 # currently all variable types can just be copied
    76                 exec(('dvar.%s = vars(variables)[fnames[i]]')%(fnames[i]))
     75    for i in range(len(fnames)):
     76        # currently all variable types can just be copied
     77        exec(('dvar.%s = vars(variables)[fnames[i]]') % (fnames[i]))
    7778
    78         ##  responses
    79         fnames=fieldnames(responses)
     79    #  responses
     80    fnames = fieldnames(responses)
    8081
    81         for i in range(len(fnames)):
    82                 #  currently all response types can just be copied
    83                 exec(('dresp.%s = vars(responses)[fnames[i]]')%(fnames[i]))
     82    for i in range(len(fnames)):
     83        #  currently all response types can just be copied
     84        exec(('dresp.%s = vars(responses)[fnames[i]]') % (fnames[i]))
    8485
    85 
    86         ##  write files
    87         #Write in file
    88         dakota_in_write(dmeth,dvar,dresp,params,filei,*args)
     86    #  write files
     87    #Write in file
     88    dakota_in_write(dmeth, dvar, dresp, params, filei, *args)
  • issm/trunk-jpl/src/m/qmu/dakota_in_params.py

    r23716 r24213  
    11from dakota_in_data import *
    2 
    32#move this later:
    43from helpers import *
    54
     5
    66def dakota_in_params(params):
    7         '''
     7    '''
    88  populate a Dakota parameter structure.
    99
    10   params=dakota_in_params(params)
     10  params = dakota_in_params(params)
    1111
    1212  where the optional input is:
    13     params        (structure array, method-independent parameters)
     13    params        (structure array, method - independent parameters)
    1414
    1515  and the output is the same.
    1616
    17   this function takes a structure of method-independent dakota
     17  this function takes a structure of method - independent dakota
    1818  parameters, which may be empty, and adds default parameters
    1919  for those parameters which do not exist.
     
    2525  or absence.
    2626
    27   note that the method-dependent parameters are contained in
     27  note that the method - dependent parameters are contained in
    2828  the dakota_method class object.
    2929'''
    30         if params == None:
    31                 help(dakota_in_params)
    32                 return
     30    if params is None:
     31        help(dakota_in_params)
     32        return
    3333
    34         ##  process the input parameters
    35         if len(fieldnames(params)) == 0:
    36                 params=struct()
     34    #  process the input parameters
     35    if len(fieldnames(params)) == 0:
     36        params = struct()
    3737
    38         ##  strategy section
    39         if not isfield(params,'graphics'):
    40                 params.graphics=False
     38    #  strategy section
     39    if not isfield(params, 'graphics'):
     40        params.graphics = False
    4141
    42         if not isfield(params,'tabular_graphics_data'):
    43                 params.tabular_graphics_data=False
     42    if not isfield(params, 'tabular_graphics_data'):
     43        params.tabular_graphics_data = False
    4444
    45         # could use unique file name rather than 'dakota_tabular.dat'
    46         if not isfield(params,'tabular_graphics_file'):
    47                 params.tabular_graphics_file=False
     45    # could use unique file name rather than 'dakota_tabular.dat'
     46    if not isfield(params, 'tabular_graphics_file'):
     47        params.tabular_graphics_file = False
    4848
    49         ##  method section
    50         #  nearly all method parameters are in the dakota_method class
    51         #  or result from the response level lists
    52         if not isfield(params,'compute'):
    53                 params.compute='probabilities'
     49    #  method section
     50    #  nearly all method parameters are in the dakota_method class
     51    #  or result from the response level lists
     52    if not isfield(params, 'compute'):
     53        params.compute = 'probabilities'
    5454
    55         if not isfield(params,'distribution'):
    56                 params.distribution='cumulative'
     55    if not isfield(params, 'distribution'):
     56        params.distribution = 'cumulative'
    5757
    58         ##  model section
     58    #  model section
    5959
    60         ##  interface section
    61         if not isfield(params,'system'):
    62                 params.system=False
     60    #  interface section
     61    if not isfield(params, 'system'):
     62        params.system = False
    6363
    64         if not isfield(params,'fork'):
    65                 params.fork=False
     64    if not isfield(params, 'fork'):
     65        params.fork = False
    6666
    67         if not isfield(params,'direct'):
    68                 params.direct=False
     67    if not isfield(params, 'direct'):
     68        params.direct = False
    6969
    70         #  interface parallelism controls
    71         if not isfield(params,'asynchronous'):
    72                 params.asynchronous=True
     70    #  interface parallelism controls
     71    if not isfield(params, 'asynchronous'):
     72        params.asynchronous = True
    7373
    74         if not isfield(params,'evaluation_concurrency'):
    75                 params.evaluation_concurrency=False
     74    if not isfield(params, 'evaluation_concurrency'):
     75        params.evaluation_concurrency = False
    7676
    77         if not isfield(params,'analysis_concurrency'):
    78                 params.analysis_concurrency=False
     77    if not isfield(params, 'analysis_concurrency'):
     78        params.analysis_concurrency = False
    7979
    80         if not isfield(params,'evaluation_servers'):
    81                 params.evaluation_servers=False
     80    if not isfield(params, 'evaluation_servers'):
     81        params.evaluation_servers = False
    8282
    83         if not isfield(params,'evaluation_self_scheduling'):
    84                 params.evaluation_self_scheduling=False
     83    if not isfield(params, 'evaluation_self_scheduling'):
     84        params.evaluation_self_scheduling = False
    8585
    86         if not isfield(params,'evaluation_static_scheduling'):
    87                 params.evaluation_static_scheduling=True
     86    if not isfield(params, 'evaluation_static_scheduling'):
     87        params.evaluation_static_scheduling = True
    8888
    89         if not isfield(params,'evaluation_scheduling'):
    90                 params.evaluation_scheduling=False
     89    if not isfield(params, 'evaluation_scheduling'):
     90        params.evaluation_scheduling = False
    9191
    92         if not isfield(params,'processors_per_evaluation'):
    93                 params.processors_per_evaluation=False
     92    if not isfield(params, 'processors_per_evaluation'):
     93        params.processors_per_evaluation = False
    9494
    95         if not isfield(params,'analysis_servers'):
    96                 params.analysis_servers=False
     95    if not isfield(params, 'analysis_servers'):
     96        params.analysis_servers = False
    9797
    98         if not isfield(params,'analysis_self_scheduling'):
    99                 params.analysis_self_scheduling=False
     98    if not isfield(params, 'analysis_self_scheduling'):
     99        params.analysis_self_scheduling = False
    100100
    101         if not isfield(params,'analysis_static_scheduling'):
    102                 params.analysis_static_scheduling=False
     101    if not isfield(params, 'analysis_static_scheduling'):
     102        params.analysis_static_scheduling = False
    103103
    104         #  algebraic mappings
    105         if not isfield(params,'algebraic_mappings'):
    106                 params.algebraic_mappings=False
     104    #  algebraic mappings
     105    if not isfield(params, 'algebraic_mappings'):
     106        params.algebraic_mappings = False
    107107
    108         #  simulation interface controls
    109         if not isfield(params,'analysis_driver'):
    110                 params.analysis_driver=''
     108    #  simulation interface controls
     109    if not isfield(params, 'analysis_driver'):
     110        params.analysis_driver = ''
    111111
    112         if not isfield(params,'analysis_components'):
    113                 params.analysis_components=''
     112    if not isfield(params, 'analysis_components'):
     113        params.analysis_components = ''
    114114
    115         if not isfield(params,'input_filter'):
    116                 params.input_filter=''
     115    if not isfield(params, 'input_filter'):
     116        params.input_filter = ''
    117117
    118         if not isfield(params,'output_filter'):
    119                 params.output_filter=''
     118    if not isfield(params, 'output_filter'):
     119        params.output_filter = ''
    120120
    121         if not isfield(params,'failure_capture'):
    122                 params.failure_capture='abort'
     121    if not isfield(params, 'failure_capture'):
     122        params.failure_capture = 'abort'
    123123
    124         if not isfield(params,'deactivate'):
    125                 params.deactivate='evaluation_cache restart_file'
     124    if not isfield(params, 'deactivate'):
     125        params.deactivate = 'evaluation_cache restart_file'
    126126
    127         #  system call or fork interface
    128         if not isfield(params,'parameters_file'):
    129                 params.parameters_file='params.in'
     127    #  system call or fork interface
     128    if not isfield(params, 'parameters_file'):
     129        params.parameters_file = 'params.in'
    130130
    131         if not isfield(params,'results_file'):
    132                 params.results_file='results.out'
     131    if not isfield(params, 'results_file'):
     132        params.results_file = 'results.out'
    133133
    134         if not isfield(params,'verbatim'):
    135                 params.verbatim=False
     134    if not isfield(params, 'verbatim'):
     135        params.verbatim = False
    136136
    137         if not isfield(params,'aprepro'):
    138                 params.aprepro=False
     137    if not isfield(params, 'aprepro'):
     138        params.aprepro = False
    139139
    140         if not isfield(params,'file_tag'):
    141                 params.file_tag=True
     140    if not isfield(params, 'file_tag'):
     141        params.file_tag = True
    142142
    143         if not isfield(params,'file_save'):
    144                 params.file_save=True
     143    if not isfield(params, 'file_save'):
     144        params.file_save = True
    145145
    146         #  direct function interface
    147         if not isfield(params,'processors_per_analysis'):
    148                 params.processors_per_analysis=False
     146    #  direct function interface
     147    if not isfield(params, 'processors_per_analysis'):
     148        params.processors_per_analysis = False
    149149
    150         ##  responses section
    151         if not isfield(params,'numerical_gradients'):
    152                 params.numerical_gradients=False
     150    #  responses section
     151    if not isfield(params, 'numerical_gradients'):
     152        params.numerical_gradients = False
    153153
    154         if not isfield(params,'method_source'):
    155                 params.method_source='dakota'
     154    if not isfield(params, 'method_source'):
     155        params.method_source = 'dakota'
    156156
    157         if not isfield(params,'interval_type'):
    158                 params.interval_type='forward'
     157    if not isfield(params, 'interval_type'):
     158        params.interval_type = 'forward'
    159159
    160         if not isfield(params,'fd_gradient_step_size'):
    161                 params.fd_gradient_step_size=0.001
     160    if not isfield(params, 'fd_gradient_step_size'):
     161        params.fd_gradient_step_size = 0.001
    162162
    163         if not isfield(params,'analytic_gradients'):
    164                 params.analytic_gradients=False
     163    if not isfield(params, 'analytic_gradients'):
     164        params.analytic_gradients = False
    165165
    166         #  mixed_gradients not fully implemented
    167         if not isfield(params,'mixed_gradients'):
    168                 params.mixed_gradients=False
     166    #  mixed_gradients not fully implemented
     167    if not isfield(params, 'mixed_gradients'):
     168        params.mixed_gradients = False
    169169
    170         if not isfield(params,'id_analytic_gradients'):
    171                 params.id_analytic_gradients=False
     170    if not isfield(params, 'id_analytic_gradients'):
     171        params.id_analytic_gradients = False
    172172
    173         if not isfield(params,'id_numerical_gradients'):
    174                 params.id_numerical_gradients=False
     173    if not isfield(params, 'id_numerical_gradients'):
     174        params.id_numerical_gradients = False
    175175
    176         #  hessians not fully implemented
    177         if not isfield(params,'numerical_hessians'):
    178                 params.numerical_hessians=True
     176    #  hessians not fully implemented
     177    if not isfield(params, 'numerical_hessians'):
     178        params.numerical_hessians = True
    179179
    180         if not isfield(params,'hessian_gradient_step_size'):
    181                 params.hessian_gradient_step_size=0.001
     180    if not isfield(params, 'hessian_gradient_step_size'):
     181        params.hessian_gradient_step_size = 0.001
    182182
    183         return params
     183    return params
  • issm/trunk-jpl/src/m/qmu/dakota_in_write.py

    r23735 r24213  
    1111import itertools
    1212
    13 def dakota_in_write(method,dvar,dresp,params,filei,*args):
    14         '''
     13
     14def dakota_in_write(method, dvar, dresp, params, filei, *args):
     15    '''
    1516  write a Dakota .in input file.
    1617
    17   []=dakota_in_write(method,dvar,dresp,params,filei,args)
    18   []=dakota_in_write(dmeth ,dvar,dresp,params,filei,args)
     18  [] = dakota_in_write(method, dvar, dresp, params, filei, args)
     19  [] = dakota_in_write(dmeth , dvar, dresp, params, filei, args)
    1920
    2021  where the required input is:
     
    2324    dvar          (structure array, variable class objects)
    2425    dresp         (structure array, response class objects)
    25     params        (structure array, method-indepent parameters)
     26    params        (structure array, method - indepent parameters)
    2627    filei         (character, name of .in file)
    2728
     
    4142'''
    4243
    43         #  process the input parameters
    44         if len(fieldnames(method)) == 0:
    45                 method=str(eval(input('Method?  ')))
    46 
    47         if type(method) == str:
    48                 dmeth=dakota_method(method)
    49         elif isinstance(method,dakota_method):
    50                 dmeth=method
    51         else:
    52                 raise RuntimeError('Method '+str(method)+' is unrecognized class '+str(type(method))+'. (should be either "str" or "dakota_method")')
    53 
    54         if len(filei) == 0:
    55                 filei=str(eval(input('Dakota input file to write?  ')))
    56 
    57         [pathstr,name,ext] = fileparts(filei)
    58         if len(ext) == 0:
    59         # fileparts only considers '.in' to be the extension, not '.qmu.in'
    60                 ext='.qmu.in'
    61 
    62         filei2=fullfile(pathstr,name+ext)
    63 
    64         print('Opening Dakota input file \''+filei2 + '\'.')
    65         try:
    66                 with open(filei2,'w+') as fidi:
    67 
    68                         if len(fieldnames(params)) == 0:
    69                                 params=struct()
    70 
    71                         params=dakota_in_params(params)
    72 
    73                         #  write the strategy section
    74                         if float(IssmConfig('_DAKOTA_VERSION_')[0]) < 6:
    75                                 strategy_write(fidi,params)
    76                         else:
    77                                 environment_write(fidi,params)
    78 
    79                         #  write the method section
    80                         method_write(fidi,dmeth,dresp,params)
    81 
    82                         #  write the model section
    83                         model_write(fidi)
    84 
    85                         #  write the variables section
    86                         variables_write(fidi,dmeth,dvar)
    87 
    88                         #  write the interface section
    89                         interface_write(fidi,params)
    90 
    91                         #  write the responses section
    92                         responses_write(fidi,dmeth,dresp,params)
    93 
    94         except IOError:
    95                 print(filei2 + ' could not be opened.')
    96 
    97         print('End of file successfully written.')
    98 
    99 
    100 ##  function to write the strategy section of the file
    101 
    102 def strategy_write(fidi,params):
    103 
    104         print('Writing strategy section of Dakota input file.')
    105 
    106         fidi.write('strategy,\n')
    107         fidi.write('\tsingle_method\n\n')
    108         param_write(fidi,'\t  ','graphics','','\n',params)
    109         param_write(fidi,'\t  ','tabular_graphics_data','','\n',params)
    110         param_write(fidi,'\t  ','tabular_graphics_file',' ','\n',params)
    111         fidi.write('\n')
    112 
    113 
    114 ##  function to write the environment section of the file
    115 
    116 def environment_write(fidi,params):
    117 
    118         print('Writing environment section of Dakota input file.')
    119 
    120         fidi.write('environment,\n')
    121         param_write(fidi,'\t  ','graphics','','\n',params)
    122         param_write(fidi,'\t  ','tabular_graphics_data','','\n',params)
    123         param_write(fidi,'\t  ','tabular_graphics_file',' ','\n',params)
    124         fidi.write('\n')
    125 
    126 
    127 ##  function to write the method section of the file
    128 
    129 def method_write(fidi,dmeth,dresp,params):
    130 
    131         print('Writing method section of Dakota input file.')
    132 
    133         fidi.write('method,\n')
    134         fidi.write('\t'+str(dmeth.method)+'\n')
    135 
    136         dmeth_params_write(dmeth,fidi)
    137 
    138         #  write response levels
    139 
    140         if strcmp(dmeth.type,'nond'):
    141                 for i in range(len(dmeth.responses)):
    142                         str_name = dmeth.responses[i]
    143                         resp = eval("{}.{}()".format(str_name,str_name))
    144                         resp.dakota_rlev_write(fidi,dresp,params)
    145 
    146         fidi.write('\n')
    147 
    148 
    149 ##  function to write the model section of the file
    150 
     44    #  process the input parameters
     45    if len(fieldnames(method)) == 0:
     46        method = str(eval(input('Method?  ')))
     47
     48    if type(method) == str:
     49        dmeth = dakota_method(method)
     50    elif isinstance(method, dakota_method):
     51        dmeth = method
     52    else:
     53        raise RuntimeError('Method ' + str(method) + ' is unrecognized class ' + str(type(method)) + '. (should be either "str" or "dakota_method")')
     54
     55    if len(filei) == 0:
     56        filei = str(eval(input('Dakota input file to write?  ')))
     57
     58    [pathstr, name, ext] = fileparts(filei)
     59    if len(ext) == 0:
     60        # fileparts only considers '.in' to be the extension, not '.qmu.in'
     61        ext = '.qmu.in'
     62
     63    filei2 = fullfile(pathstr, name + ext)
     64
     65    print('Opening Dakota input file \'' + filei2 + '\'.')
     66    try:
     67        with open(filei2, 'w+') as fidi:
     68
     69            if len(fieldnames(params)) == 0:
     70                params = struct()
     71
     72            params = dakota_in_params(params)
     73
     74            #  write the strategy section
     75            if float(IssmConfig('_DAKOTA_VERSION_')[0]) < 6:
     76                strategy_write(fidi, params)
     77            else:
     78                environment_write(fidi, params)
     79
     80            #  write the method section
     81            method_write(fidi, dmeth, dresp, params)
     82            #  write the model section
     83            model_write(fidi)
     84            #  write the variables section
     85            variables_write(fidi, dmeth, dvar)
     86            #  write the interface section
     87            interface_write(fidi, params)
     88            #  write the responses section
     89            responses_write(fidi, dmeth, dresp, params)
     90
     91    except IOError:
     92        print(filei2 + ' could not be opened.')
     93
     94    print('End of file successfully written.')
     95
     96
     97#  function to write the strategy section of the file
     98def strategy_write(fidi, params):
     99
     100    print('Writing strategy section of Dakota input file.')
     101
     102    fidi.write('strategy, \n')
     103    fidi.write('\tsingle_method\n\n')
     104    param_write(fidi, '\t  ', 'graphics', '', '\n', params)
     105    param_write(fidi, '\t  ', 'tabular_graphics_data', '', '\n', params)
     106    param_write(fidi, '\t  ', 'tabular_graphics_file', ' ', '\n', params)
     107    fidi.write('\n')
     108
     109
     110#  function to write the environment section of the file
     111def environment_write(fidi, params):
     112
     113    print('Writing environment section of Dakota input file.')
     114
     115    fidi.write('environment, \n')
     116    param_write(fidi, '\t  ', 'graphics', '', '\n', params)
     117    param_write(fidi, '\t  ', 'tabular_graphics_data', '', '\n', params)
     118    param_write(fidi, '\t  ', 'tabular_graphics_file', ' ', '\n', params)
     119    fidi.write('\n')
     120
     121
     122#  function to write the method section of the file
     123def method_write(fidi, dmeth, dresp, params):
     124
     125    print('Writing method section of Dakota input file.')
     126
     127    fidi.write('method, \n')
     128    fidi.write('\t' + str(dmeth.method) + '\n')
     129
     130    dmeth_params_write(dmeth, fidi)
     131
     132    #  write response levels
     133
     134    if strcmp(dmeth.type, 'nond'):
     135        for i in range(len(dmeth.responses)):
     136            str_name = dmeth.responses[i]
     137            resp = eval("{}.{}()".format(str_name, str_name))
     138            resp.dakota_rlev_write(fidi, dresp, params)
     139
     140    fidi.write('\n')
     141
     142
     143#  function to write the model section of the file
    151144def model_write(fidi):
    152145
    153         print('Writing model section of Dakota input file.')
    154 
    155         fidi.write('model,\n')
    156         fidi.write('\tsingle\n\n')
    157 
    158 
    159 ##  function to write the variables section of the file
    160 
    161 def variables_write(fidi,dmeth,dvar):
    162 
    163         print('Writing variables section of Dakota input file.')
    164 
    165         fidi.write('variables,\n')
    166 
    167         #  variables vary by method
    168         fd = fieldnames(dvar)
    169         types = []
    170         var = []
    171         for i in range(len(fd)):
    172                 i_type = eval('dvar.{}[0].__class__.__name__'.format(fd[i]))
    173                 j = dmeth.variables.index(i_type)
    174                 str_name = dmeth.variables[j]
    175 
    176                 # organize so that multiple instances of the same qmu class
    177                 # (2 different variable instances of "normal_uncertain" for example)
    178                 # are in the same dakota_write call regardless of individual size;
    179                 # but that each class has its own dakota_write call
    180                 if str_name not in types:
    181                         types.append(str_name)
    182                         var.append(eval('dvar.{}'.format(fd[i])))
    183                 else:
    184                         t = types.index(str_name)
    185                         var[t].extend(eval('dvar.{}'.format(fd[i])))
    186 
    187         for t in range(len(types)):
    188                 v = eval('{}.{}()'.format(types[t],types[t]))
    189                 v.dakota_write(fidi,var[t])
    190 
    191         #  linear constraints vary by method
    192         fc = dmeth.lcspec
    193 
    194         for i in range(len(dmeth.lcspec)):
    195                 str_name = dmeth.lcspec[i]
    196                 var = eval('{}.{}()'.format(str_name,str_name))
    197                 # check that str_name is correct against matlab version which has no argument there
    198                 var.dakota_write(fidi,eval('dvar.{}[i]'.format(j)),str_name)
    199 
    200         fidi.write('\n')
    201 
    202 
    203 ##  function to write the interface section of the file
    204 
    205 def interface_write(fidi,params):
    206 
    207         print('Writing interface section of Dakota input file.')
    208 
    209         fidi.write('interface,\n')
    210 
    211         if (not params.system) and (not params.fork) and (not params.direct):
    212                 params.fork=True
    213         elif params.system+params.fork+params.direct > 1:
    214                 raise RuntimeError('Too many interfaces selected.')
    215         if params.system or params.fork:
    216                 param_write(fidi,'\t','asynchronous','','\n',params)
    217                 param_write(fidi,'\t  ','evaluation_concurrency',' = ','\n',params)
    218                 param_write(fidi,'\t  ','analysis_concurrency','   = ','\n',params)
    219                 param_write(fidi,'\t  ','evaluation_servers','     = ','\n',params)
    220                 param_write(fidi,'\t  ','evaluation_self_scheduling','','\n',params)
    221                 param_write(fidi,'\t  ','evaluation_static_scheduling','','\n',params)
    222                 param_write(fidi,'\t  ','analysis_servers','       = ','\n',params)
    223                 param_write(fidi,'\t  ','analysis_self_scheduling','','\n',params)
    224                 param_write(fidi,'\t  ','analysis_static_scheduling','','\n',params)
    225                 param_write(fidi,'\t','algebraic_mappings',' = ','\n',params)
    226                 param_write(fidi,'\t','system','','\n',params)
    227                 param_write(fidi,'\t','fork','','\n',params)
    228                 param_write(fidi,'\t  ','analysis_driver',' = \'','\'\n',params)
    229                 if len(params.input_filter) != 0:
    230                         param_write(fidi,'\t  ','input_filter','    = ','\n',params)
    231 
    232                 if len(params.output_filter) != 0:
    233                         param_write(fidi,'\t  ','output_filter','   = ','\n',params)
    234 
    235                 param_write(fidi,'\t  ','failure_capture','   ','\n',params)
    236                 param_write(fidi,'\t  ','deactivate','        ','\n',params)
    237                 param_write(fidi,'\t  ','parameters_file',' =  \'','\'\n',params)
    238                 param_write(fidi,'\t  ','results_file',' =  \'','\'\n',params)
    239                 param_write(fidi,'\t  ','verbatim', '','\n',params)
    240                 param_write(fidi,'\t  ','aprepro', '','\n',params)
    241                 param_write(fidi,'\t  ','file_tag', '','\n',params)
    242                 param_write(fidi,'\t  ','file_save','','\n',params)
    243         elif params.direct:
    244         #  Error: asynchronous capability not yet supported in direct interfaces.
    245         #  Update: it is now possible to run in parallel in direct interfaces.
    246                 param_write(fidi,'\t','algebraic_mappings',' = ','\n',params)
    247                 param_write(fidi,'\t','direct','','\n',params)
    248                 param_write(fidi,'\t  ','analysis_driver','     = \'','\'\n',params)
    249                 if float(IssmConfig('_DAKOTA_VERSION_')[0]) < 6:
    250                         param_write(fidi,'\t  ','evaluation_static_scheduling','','\n',params)
    251                 else:
    252                         param_write(fidi,'\t  ','evaluation_scheduling',' ','\n',params)
    253                         param_write(fidi,'\t  ','processors_per_evaluation',' = ','\n',params)
    254                 if len(params.analysis_components) != 0:
    255                         [pathstr,name,ext] = fileparts(params.analysis_components)
    256                         if ext != '':
    257                                 ext='.py'
    258 
    259                         params.analysis_components=fullfile(pathstr,name+ext)
    260                         param_write(fidi,'\t  ','analysis_components',' = \'','\'\n',params)
    261 
    262                 if len(params.input_filter) != 0:
    263                         param_write(fidi,'\t  ','input_filter','    = ','\n',params)
    264 
    265                 if len(params.output_filter) != 0:
    266                         param_write(fidi,'\t  ','output_filter','   = ','\n',params)
    267 
    268                 param_write(fidi,'\t  ','failure_capture','   ','\n',params)
    269                 param_write(fidi,'\t  ','deactivate','        ','\n',params)
    270                 param_write(fidi,'\t  ','processors_per_analysis',' = ','\n',params)
    271 
    272         fidi.write('\n')
    273 
    274 
    275 ##  function to write the responses section of the file
    276 
    277 def responses_write(fidi,dmeth,dresp,params):
    278 
    279         print('Writing responses section of Dakota input file.')
    280 
    281         fidi.write('responses,\n')
    282         #fidi.write('calibration_terms = 1 \n')
    283 
    284         #  functions, gradients, and hessians vary by method
    285 
    286         rdesc=[]
    287 
    288         for i in range(len(dmeth.responses)):
    289                 resp = eval(dmeth.responses[i])
    290                 rdesc = resp.dakota_write(fidi,dresp,rdesc)
    291 
    292         #  write accumulated response descriptors for all response classes
    293 
    294         if len(rdesc) != 0:
    295                 fidi.write('\tresponse_descriptors =\n')
    296                 vector_write(fidi,'\t  ',rdesc,6,76)
    297 
    298         ghspec_write(fidi,params,dmeth.ghspec)
    299 
    300         fidi.write('\n')
    301 
    302 
    303 ##  function to write gradient and hessian specifications
    304 
    305 def ghspec_write(fidi,params,ghspec):
    306 
    307         #  gradients
    308         if 'grad' in ghspec:
    309                 if (not params.numerical_gradients) and (not params.analytic_gradients):
    310                         params.numerical_gradients=True
    311                 elif (params.numerical_gradients+params.analytic_gradients > 1):
    312                         raise RuntimeError('Too many gradients selected.')
    313 
    314                 if params.numerical_gradients:
    315                         param_write(fidi,'\t','numerical_gradients','','\n',params)
    316                         param_write(fidi,'\t  ','method_source',' ','\n',params)
    317                         param_write(fidi,'\t  ','interval_type',' ','\n',params)
    318                         param_write(fidi,'\t  ','fd_gradient_step_size',' = ','\n',params)
    319                 elif params.analytic_gradients:
    320                         param_write(fidi,'\t','analytic_gradients','','\n',params)
    321         #       elif params.mixed_gradients
    322         else:
    323                 fidi.write('\tno_gradients\n')
    324 
    325         #  hessians (no implemented methods use them yet)
    326         if 'hess' in ghspec:
    327                 raise RuntimeError('Hessians needed by method but not provided.')
    328         else:
    329                 fidi.write('\tno_hessians\n')
     146    print('Writing model section of Dakota input file.')
     147
     148    fidi.write('model, \n')
     149    fidi.write('\tsingle\n\n')
     150
     151
     152#  function to write the variables section of the file
     153def variables_write(fidi, dmeth, dvar):
     154
     155    print('Writing variables section of Dakota input file.')
     156
     157    fidi.write('variables, \n')
     158
     159    #  variables vary by method
     160    fd = fieldnames(dvar)
     161    types = []
     162    var = []
     163    for i in range(len(fd)):
     164        i_type = eval('dvar.{}[0].__class__.__name__'.format(fd[i]))
     165        j = dmeth.variables.index(i_type)
     166        str_name = dmeth.variables[j]
     167
     168    # organize so that multiple instances of the same qmu class
     169    # (2 different variable instances of "normal_uncertain" for example)
     170    # are in the same dakota_write call regardless of individual size
     171    # but that each class has its own dakota_write call
     172        if str_name not in types:
     173            types.append(str_name)
     174            var.append(eval('dvar.{}'.format(fd[i])))
     175        else:
     176            t = types.index(str_name)
     177            var[t].extend(eval('dvar.{}'.format(fd[i])))
     178
     179    for t in range(len(types)):
     180        v = eval('{}.{}()'.format(types[t], types[t]))
     181        v.dakota_write(fidi, var[t])
     182
     183    #  linear constraints vary by method
     184    fc = dmeth.lcspec
     185
     186    for i in range(len(dmeth.lcspec)):
     187        str_name = dmeth.lcspec[i]
     188        var = eval('{}.{}()'.format(str_name, str_name))
     189    # check that str_name is correct against matlab version which has no argument there
     190        var.dakota_write(fidi, eval('dvar.{}[i]'.format(j)), str_name)
     191
     192    fidi.write('\n')
     193
     194
     195#  function to write the interface section of the file
     196def interface_write(fidi, params):
     197
     198    print('Writing interface section of Dakota input file.')
     199
     200    fidi.write('interface, \n')
     201
     202    if (not params.system) and (not params.fork) and (not params.direct):
     203        params.fork = True
     204    elif params.system + params.fork + params.direct > 1:
     205        raise RuntimeError('Too many interfaces selected.')
     206    if params.system or params.fork:
     207        param_write(fidi, '\t', 'asynchronous', '', '\n', params)
     208        param_write(fidi, '\t  ', 'evaluation_concurrency', '=', '\n', params)
     209        param_write(fidi, '\t  ', 'analysis_concurrency', '=', '\n', params)
     210        param_write(fidi, '\t  ', 'evaluation_servers', '=', '\n', params)
     211        param_write(fidi, '\t  ', 'evaluation_self_scheduling', '', '\n', params)
     212        param_write(fidi, '\t  ', 'evaluation_static_scheduling', '', '\n', params)
     213        param_write(fidi, '\t  ', 'analysis_servers', '=', '\n', params)
     214        param_write(fidi, '\t  ', 'analysis_self_scheduling', '', '\n', params)
     215        param_write(fidi, '\t  ', 'analysis_static_scheduling', '', '\n', params)
     216        param_write(fidi, '\t', 'algebraic_mappings', '=', '\n', params)
     217        param_write(fidi, '\t', 'system', '', '\n', params)
     218        param_write(fidi, '\t', 'fork', '', '\n', params)
     219        param_write(fidi, '\t  ', 'analysis_driver', ' = \'', '\'\n', params)
     220        if len(params.input_filter) != 0:
     221            param_write(fidi, '\t  ', 'input_filter', '=', '\n', params)
     222
     223        if len(params.output_filter) != 0:
     224            param_write(fidi, '\t  ', 'output_filter', '=', '\n', params)
     225
     226        param_write(fidi, '\t  ', 'failure_capture', '   ', '\n', params)
     227        param_write(fidi, '\t  ', 'deactivate', '        ', '\n', params)
     228        param_write(fidi, '\t  ', 'parameters_file', ' = \'', '\'\n', params)
     229        param_write(fidi, '\t  ', 'results_file', ' = \'', '\'\n', params)
     230        param_write(fidi, '\t  ', 'verbatim', '', '\n', params)
     231        param_write(fidi, '\t  ', 'aprepro', '', '\n', params)
     232        param_write(fidi, '\t  ', 'file_tag', '', '\n', params)
     233        param_write(fidi, '\t  ', 'file_save', '', '\n', params)
     234    elif params.direct:
     235        #  Error: asynchronous capability not yet supported in direct interfaces.
     236        #  Update: it is now possible to run in parallel in direct interfaces.
     237        param_write(fidi, '\t', 'algebraic_mappings', '=', '\n', params)
     238        param_write(fidi, '\t', 'direct', '', '\n', params)
     239        param_write(fidi, '\t  ', 'analysis_driver', ' = \'', '\'\n', params)
     240        if float(IssmConfig('_DAKOTA_VERSION_')[0]) < 6:
     241            param_write(fidi, '\t  ', 'evaluation_static_scheduling', '', '\n', params)
     242        else:
     243            param_write(fidi, '\t  ', 'evaluation_scheduling', ' ', '\n', params)
     244            param_write(fidi, '\t  ', 'processors_per_evaluation', '=', '\n', params)
     245        if len(params.analysis_components) != 0:
     246            [pathstr, name, ext] = fileparts(params.analysis_components)
     247            if ext != '':
     248                ext = '.py'
     249
     250            params.analysis_components = fullfile(pathstr, name + ext)
     251            param_write(fidi, '\t  ', 'analysis_components', ' = \'', '\'\n', params)
     252
     253        if len(params.input_filter) != 0:
     254            param_write(fidi, '\t  ', 'input_filter', '=', '\n', params)
     255
     256        if len(params.output_filter) != 0:
     257            param_write(fidi, '\t  ', 'output_filter', '=', '\n', params)
     258
     259        param_write(fidi, '\t  ', 'failure_capture', '   ', '\n', params)
     260        param_write(fidi, '\t  ', 'deactivate', '        ', '\n', params)
     261        param_write(fidi, '\t  ', 'processors_per_analysis', '=', '\n', params)
     262
     263    fidi.write('\n')
     264
     265
     266#  function to write the responses section of the file
     267def responses_write(fidi, dmeth, dresp, params):
     268
     269    print('Writing responses section of Dakota input file.')
     270
     271    fidi.write('responses, \n')
     272    #fidi.write('calibration_terms = 1 \n')
     273
     274    #  functions, gradients, and hessians vary by method
     275
     276    rdesc = []
     277
     278    for i in range(len(dmeth.responses)):
     279        resp = eval(dmeth.responses[i])
     280        rdesc = resp.dakota_write(fidi, dresp, rdesc)
     281
     282    #  write accumulated response descriptors for all response classes
     283
     284    if len(rdesc) != 0:
     285        fidi.write('\tresponse_descriptors =\n')
     286        vector_write(fidi, '\t  ', rdesc, 6, 76)
     287
     288    ghspec_write(fidi, params, dmeth.ghspec)
     289
     290    fidi.write('\n')
     291
     292
     293#  function to write gradient and hessian specifications
     294def ghspec_write(fidi, params, ghspec):
     295
     296    #  gradients
     297    if 'grad' in ghspec:
     298        if (not params.numerical_gradients) and (not params.analytic_gradients):
     299            params.numerical_gradients = True
     300        elif (params.numerical_gradients + params.analytic_gradients > 1):
     301            raise RuntimeError('Too many gradients selected.')
     302
     303        if params.numerical_gradients:
     304            param_write(fidi, '\t', 'numerical_gradients', '', '\n', params)
     305            param_write(fidi, '\t  ', 'method_source', ' ', '\n', params)
     306            param_write(fidi, '\t  ', 'interval_type', ' ', '\n', params)
     307            param_write(fidi, '\t  ', 'fd_gradient_step_size', '=', '\n', params)
     308        elif params.analytic_gradients:
     309            param_write(fidi, '\t', 'analytic_gradients', '', '\n', params)
     310    #    elif params.mixed_gradients
     311    else:
     312        fidi.write('\tno_gradients\n')
     313
     314    #  hessians (no implemented methods use them yet)
     315    if 'hess' in ghspec:
     316        raise RuntimeError('Hessians needed by method but not provided.')
     317    else:
     318        fidi.write('\tno_hessians\n')
  • issm/trunk-jpl/src/m/qmu/dakota_out_parse.py

    r23716 r24213  
    11import numpy as np
    2 
    3 from os.path import isfile,getsize
     2from os.path import isfile, getsize
    43import re
    5 
    64from MatlabFuncs import *
    75from prctile_issm import *
     
    108from helpers import *
    119
    12 #Note: this may be re-written later to take advantage of Python's file i/o mechanics
    13 #       as it is written now it is often difficult to work with, but is analagous to
    14 #       the Matlab version of dakota_out_parse
    15 
    16 def dakota_out_parse(filei): # [[[
    17         '''
     10#Note: this may be re-written later to take advantage of Python's file i / o mechanics
     11#    as it is written now it is often difficult to work with, but is analagous to
     12#    the Matlab version of dakota_out_parse
     13
     14
     15def dakota_out_parse(filei):  # {{{
     16    '''
    1817  read a Dakota .out or .dat output file and parse it.
    1918
    20   [method,dresp,scm,pcm,srcm,prcm]=dakota_out_parse(filei)
     19  [method, dresp, scm, pcm, srcm, prcm] = dakota_out_parse(filei)
    2120
    2221  where the required input is:
     
    3938
    4039  this function reads a dakota .out output file and parses it
    41   into the matlab workspace.  it operates in a content-driven
     40  into the matlab workspace.  it operates in a content - driven
    4241  fashion, where it skips the intermediate data and then parses
    4342  whatever output data it encounters in the order in which it
     
    4746
    4847  this data would typically be used for plotting and other
    49   post-processing within matlab or excel.
     48  post - processing within matlab or excel.
    5049'''
    51         if filei == None:
    52                 help(dakota_out_parse)
    53                 return
    54 
    55         if not isfile(filei) or getsize(filei) == 0:
    56                 filei=str(eval(input('Input file?  ')))
    57        
    58         #fidi=fopen(sprintf('%s',filei),'r')
    59         #try:
    60         with open(filei, 'r') as fidi:
    61                 ##  check the first line for the Dakota tabular output file
    62                 method=[]
    63                 fline=fidi.readline()
    64                 if getsize(filei) == 0 or fline == '':
    65                         raise RuntimeError('File '+filei+' is empty.')
    66 
    67                 dresp=[]        # of struct()
    68                 scm =struct()
    69                 pcm =struct()
    70                 srcm=struct()
    71                 prcm=struct()
    72 
    73                 if strncmpi(fline,'%eval_id',8):
    74                         method='unknown'
    75                         dresp=dak_tab_out(fidi,fline)
    76                         return [method,dresp,scm,pcm,srcm,prcm]
    77                 else:
    78                         fidi.seek(0,0)
    79 
    80                 ##  loop through the file to find the Dakota method name
    81                 fline=findline(fidi,'method',True)
    82                 if fline == None:
    83                         #do nothing
    84                         pass
    85                 else:
    86                         if fline[6] == ',':
    87                                 fline = fidi.readline()
    88                                 [ntokens,tokens]=fltokens(fline)
    89                                 method=tokens[0].strip()
    90                                 print('Dakota method =\''+method+'\'.')
    91                         elif fline[6] in ['N','n']:
    92                                 fline=findline(fidi,'methodName = ');
    93                                 [ntokens,tokens]=fltokens(fline)
    94                                 method=tokens[2].strip()
    95                                 print('Dakota methodName="'+method+'".')
    96 
    97                 ##  loop through the file to find the function evaluation summary
    98                 counter = 0
    99                 fline=''
    100                 nfeval=nfeval_read(fidi,fline)
    101 
    102                 ##  process each results section based on content of the file
    103                 while counter < 10:
    104                         # because python makes file i/o difficult
    105                         # if we see 10+ blank lines in a row then we have reached EOF
    106                         # (tests show actual maximum number of blank lines is around 5)
    107                         if counter >= 10:
    108                                 break
    109                         if fline == '' or fline.isspace():
    110                                 counter += 1
    111                         else:
    112                                 counter = 0
    113 
    114                         #print fline
    115                         #     ipos=ftell(fidi)
    116                         fline = fidi.readline()
    117                         if fline == '' or fline.isspace():
    118                                 pass
    119                         elif strncmp(fline,'<<<<< Function evaluation summary',33):
    120                                 nfeval=nfeval_read(fidi,fline)
    121                         elif strncmp(fline,'Statistics based on ',20):
    122                                 nsamp=nsamp_read(fidi,fline)
    123                         elif strncmp(fline,'Moments for each response function',34):
    124                                 dresp=moments_read(fidi,dresp,fline)
    125                         elif strncmp(fline,'Moment-based statistics for each response function',50):
    126                                 dresp=mbstats_read(fidi,dresp,fline)
    127                         elif strncmp(fline,'95% confidence intervals for each response function',51):
    128                                 dresp=cis_read(fidi,dresp,fline)
    129                         elif strncmp(fline,'Probabilities for each response function',40) or strncmp(fline,'Level mappings for each response function',41):
    130                                 dresp=cdfs_read(fidi,dresp,fline)
    131                         elif strncmp(fline,'Probability Density Function (PDF) histograms for each response function',72):
    132                                 dresp=pdfs_read(fidi,dresp,fline)
    133                         elif strncmp(fline,'Simple Correlation Matrix',25):
    134                                 scm=corrmat_read(fidi,'Simple Correlation Matrix',fline)
    135                         elif strncmp(fline,'Partial Correlation Matrix',26):
    136                                 pcm=corrmat_read(fidi,'Partial Correlation Matrix',fline)
    137                         elif strncmp(fline,'Simple Rank Correlation Matrix',30):
    138                                 srcm=corrmat_read(fidi,'Simple Rank Correlatio:n Matrix',fline)
    139                         elif strncmp(fline,'Partial Rank Correlation Matrix',31):
    140                                 prcm=corrmat_read(fidi,'Partial Rank Correlation Matrix',fline)
    141                         elif strncmp(fline,'MV Statistics for ',18):
    142                                 dresp=mvstats_read(fidi,dresp,fline)
    143                         elif strncmp(fline,'<<<<< Best ',11):
    144                                 dresp=best_read(fidi,dresp,fline)
    145                         elif strncmp(fline,'The following lists volumetric uniformity measures',50):
    146                                 dresp=vum_read(fidi,dresp,fline)
    147                         elif strncmp(fline,'<<<<< Iterator ',15) and (len(fline) > 26) and (' completed.' in fline[15:]):
    148                                 method=itcomp_read(fidi,fline)
    149                         elif strncmp(fline,'-----',5):
    150                                 pass
    151                         else:
    152                                 'Unexpected line: '+str(fline)
    153        
    154                         #     fidi.seek(ipos,0)
    155 
    156                 ##  loop through the file to verify the end
    157 
    158                 # fline=findline(fidi,'<<<<< Single Method Strategy completed')
    159                 # if not ischar(fline)
    160                 #     return
    161                 #
    162                 print('End of file successfully reached.')
    163                 #close(fidi)
    164         #except Exception as err:
    165                 #print "ERROR in dakota_out_parse: " + err
    166                 #raise err
    167                 #raise RuntimeError(filei+' could not be opened.')
    168 
    169         return [method,dresp,scm,pcm,srcm,prcm]
    170  # ]]]
    171 
    172 def dak_tab_out(fidi,fline): # [[[
    173 ##  function to parse the dakota tabular output file
    174 
    175         print('Reading Dakota tabular output file.')
    176 
    177         #  process column headings of matrix (skipping eval_id)
    178         [ntokens,tokens]=fltokens(fline)
    179 
    180         # New file DAKOTA versions>6
    181         if strncmpi(fline,'%eval_id interface',18):
    182                 offset=2
    183         else: #DAKOTA versions<6
    184                 offset=1
    185 
    186         desc=[['' for i in range(ntokens-offset)]]
    187         data=np.zeros((1,ntokens-offset))
    188 
    189         for i in range(ntokens-offset):
    190                 desc[0][i]=str(tokens[i+offset])
    191 
    192         print("Number of columns (Dakota V+R)="+str(ntokens-2)+'.')
    193 
    194         #  process rows of matrix
    195         nrow=0
    196         while True:
    197 
    198                 fline=fidi.readline()
    199 
    200                 if fline == '' or fline.isspace():
    201                         break
    202 
    203                 if nrow > 0:
    204                         data = np.concatenate((data,[np.zeros(ntokens-offset)]))
    205                
    206                 [ntokens,tokens]=fltokens(fline)
    207 
    208                 #  add row values to matrix (skipping eval_id)
    209 
    210                 for i in range(ntokens-offset):
    211                         data[nrow,i] = tokens[i+offset]
    212 
    213                 nrow=nrow+1
    214                
    215         print('Number of rows (Dakota func evals)='+str(nrow)+'.')
    216 
    217         #  calculate statistics
    218 
    219         #  since normfit doesn't have a dim argument, and matlab isvector is True
    220         #  for a 1xn matrix, handle the case of one row explicitly
    221 
    222         #  Update: normfit_issm.py does handle this case
    223         if (np.size(data,0) > 1):
    224                 #dmean  =mean   (data)
    225                 #dstddev=std    (data,0)
    226                 [dmean,dstddev,dmeanci,dstddevci]=normfit_issm(data,0.05)
    227         else:
    228                 dmean    =np.zeros((1,np.size(data,1)))
    229                 dstddev  =np.zeros((1,np.size(data,1)))
    230                 dmeanci  =np.zeros((2,np.size(data,1)))
    231                 dstddevci=np.zeros((2,np.size(data,1)))
    232                 for i in range(np.size(data,1)):
    233                         [dmean[0,i],dstddev[0,i],dmeanci[:,i],dstddevci[:,i]]=normfit_issm(data[:,i],0.05)
    234 
    235         dmin   =data.min(0)
    236         dquart1=prctile_issm(data,25,0)
    237         dmedian=np.median(data,0)
    238         dquart3=prctile_issm(data,75,0)
    239         dmax   =data.max(0)
    240         dmin95 =prctile_issm(data,5,0)
    241         dmax95 =prctile_issm(data,95,0)
    242 
    243         # Note: the following line may cause the following warning
    244         #       (should not crash or invalidate results) when one of
    245         #       the inputs does not change with respect to the
    246         #       other/s causing an internal divide-by-zero error
    247 
    248         #/usr/local/lib/python2.7/dist-packages/numpy/lib/function_base.py:3163:
    249         #       RuntimeWarning: invalid value encountered in true_divide
    250         #       c /= stddev[:,None]
    251 
    252         #       (and/or the same but with "c /= stddev[None, :]")
    253 
    254         dcorrel=np.corrcoef(data.T)
    255 
    256         #  divide the data into structures for consistency
    257         dresp = []
    258 
    259         for i in range(len(desc)):
    260                 dresp.append(struct())
    261                 dresp[i].descriptor=str(desc[i])
    262                 dresp[i].sample    =data[:,i]
    263                 dresp[i].mean      =dmean[i]
    264                 dresp[i].stddev    =dstddev[i]
    265                 dresp[i].meanci    =dmeanci[:,i]
    266                 dresp[i].stddevci  =dstddevci[:,i]
    267                 dresp[i].min       =dmin[i]
    268                 dresp[i].quart1    =dquart1[i]
    269                 dresp[i].median    =dmedian[i]
    270                 dresp[i].quart3    =dquart3[i]
    271                 dresp[i].max       =dmax[i]
    272                 dresp[i].dmin95    =dmin95[i]
    273                 dresp[i].dmax95    =dmax95[i]
    274        
    275         #  draw box plot
    276 
    277         # figure
    278         # subplot(2,1,1)
    279         # plot_boxplot(dresp)
    280 
    281         #  draw normal probability plot
    282 
    283         # subplot(2,1,2)
    284         # plot_normplot(dresp)
    285 
    286         return dresp
    287  # ]]]
    288 
    289 def nfeval_read(fidi,fline): # [[[
    290 ##  function to find and read the number of function evaluations
    291 
    292         if fline == None or fline == '' or fline.isspace():
    293                 fline=findline(fidi,'<<<<< Function evaluation summary')
    294                 nfeval = 0
    295                 return
    296 
    297         [ntokens,tokens]=fltokens(fline)
    298         nfeval=tokens[4]
    299         print('  Dakota function evaluations='+str(int(nfeval))+'.')
    300 
    301         return nfeval
    302  # ]]]
    303 
    304 def nsamp_read(fidi,fline): # [[[
    305 ##  function to find and read the number of samples
    306 
    307         if fline == None or fline == '' or fline.isspace():
    308                 fline=findline(fidi,'Statistics based on ')
    309                 return
    310 
    311         [ntokens,tokens]=fltokens(fline)
    312         nsamp=tokens[3]
    313         print('  Dakota samples='+str(int(nsamp))+'.')
    314 
    315         return nsamp
    316  # ]]]
    317 
    318 def moments_read(fidi,dresp,fline): # [[[
    319 ##  function to find and read the moments
    320 
    321         if fline == None or fline == '' or fline.isspace():
    322                 fline=findline(fidi,'Moments for each response function')
    323                 return
    324 
    325         print('Reading moments for response functions:')
    326        
    327         while True:
    328                 fline=fidi.readline()
    329                 if fline == '' or fline.isspace():
    330                         break
    331                
    332                 [ntokens,tokens]=fltokens(fline)
    333 
    334                 #  add new response function and moments
    335 
    336                 dresp.append(struct())
    337                 dresp[-1].descriptor=tokens[ 0]
    338                 print('  '+str(dresp[-1].descriptor))
    339                 dresp[-1].mean      =tokens[ 3]
    340                 dresp[-1].stddev    =tokens[ 6]
    341                 dresp[-1].coefvar   =tokens[12]
    342 
    343         print('  Number of Dakota response functions='+str(len(dresp))+'.')
    344 
    345         return dresp
    346  # ]]]
    347 
    348 def mbstats_read(fidi,dresp,fline): # [[[
    349 ##  function to find and read the moment-based statistics
    350 
    351         if fline == None or fline == '' or fline.isspace():
    352                 fline=findline(fidi,'Moment-based statistics for each response function')
    353                 return
    354 
    355         print('Reading moment-based statistics for response functions:')
    356 
    357         #  skip column headings of moment-based statistics
    358 
    359         fline=fidi.readline()
    360 
    361         while True:
    362                 fline=fidi.readline()
    363                 if fline == '' or fline.isspace():
    364                         break
    365 
    366                 [ntokens,tokens]=fltokens(fline)
    367 
    368                 #  add new response function and moment-based statistics
    369 
    370                 dresp.append(struct())
    371                 dresp[-1].descriptor=tokens[ 0]
    372                 print('  '+str(dresp[-1].descriptor))
    373                 dresp[-1].mean      =tokens[ 1]
    374                 dresp[-1].stddev    =tokens[ 2]
    375                 dresp[-1].skewness  =tokens[ 3]
    376                 dresp[-1].kurtosis  =tokens[ 4]
    377        
    378         print('  Number of Dakota response functions='+str(len(dresp))+'.')
    379 
    380         return dresp
    381  # ]]]
    382 
    383 def cis_read(fidi,dresp,fline): # [[[
    384 ##  function to find and read the confidence intervals
    385 
    386         if fline == None or fline == '' or fline.isspace():
    387                 fline=findline(fidi,'95% confidence intervals for each response function')
    388                 return
    389 
    390         print('Reading 95% confidence intervals for response functions:')
    391 
    392         while True:
    393                 fline=fidi.readline()
    394                 if fline == '' or fline.isspace():
    395                         break
    396                
    397                 [ntokens,tokens]=fltokens(fline)
    398 
    399                 #  check for column headings in Dakota 5.2
    400 
    401                 if (ntokens == 4):
    402                         fline=fidi.readline()
    403                         if fline == '' or fline.isspace():
    404                                 break
    405                        
    406                         [ntokens,tokens]=fltokens(fline)
    407                
    408                 #  find response function associated with confidence intervals
    409 
    410                 idresp=-1
    411                 for i in range(len(dresp)):
    412                         if strcmpi(tokens[0],dresp[i].descriptor):
    413                                 idresp=i
    414                                 break
    415                        
    416                 if idresp < 0:
    417                         idresp=len(dresp)
    418                         dresp.append(struct())
    419                         dresp[idresp].descriptor=tokens[0]
    420                         print('  '+str(dresp[idresp].descriptor))
    421                
    422                 #  add confidence intervals to response functions
    423                 dresp[i].meanci = np.array([[np.nan],[np.nan]])
    424                 dresp[i].stddevci = np.array([[np.nan],[np.nan]])
    425 
    426                 if (ntokens == 14):
    427                         dresp[i].meanci  [0,0]=tokens[ 4]
    428                         dresp[i].meanci  [1,0]=tokens[ 5]
    429                         dresp[i].stddevci[0,0]=tokens[11]
    430                         dresp[i].stddevci[1,0]=tokens[12]
    431                 else:
    432                         dresp[i].meanci  [0,0]=tokens[ 1]
    433                         dresp[i].meanci  [1,0]=tokens[ 2]
    434                         dresp[i].stddevci[0,0]=tokens[ 3]
    435                         dresp[i].stddevci[1,0]=tokens[ 4]
    436 
    437         print('  Number of Dakota response functions='+str(len(dresp))+'.')
    438 
    439         return dresp
    440  # ]]]
    441 
    442 def cdfs_read(fidi,dresp,fline): # [[[
    443 ##  function to find and read the cdf's
    444 
    445         if fline == None or fline == '' or fline.isspace():
    446                 fline=findline(fidi,'Probabilities for each response function')
    447                 if fline == None:
    448                         fline=findline(fidi,'Level mappings for each response function')
    449                         if fline == None:
    450                                 return
    451 
    452         print('Reading CDF''s for response functions:')
    453 
    454         while fline == '' or fline.isspace():
    455                 fline=fidi.readline()
    456                 if fline == '' or fline.isspace():
    457                         break
    458                
    459                 #  process header line of cdf
    460 
    461                 while (fline != '' and not fline.isspace()):
    462                         [ntokens,tokens]=fltokens(fline)
    463 
    464                         #  find response function associated with cdf
    465                         # idresp is an index, so it can be 0, default to -1
    466                         idresp=-1
    467                         for i in range(len(dresp)):
    468                                 if strcmpi(tokens[ 5],dresp[i].descriptor):
    469                                         idresp=i
    470                                         break
    471                                
    472                        
    473                         if idresp < 0:
    474                                 idresp=len(dresp)
    475                                 dresp.append(struct())
    476                                 dresp[idresp].descriptor=tokens[ 5]
    477                                 print('  '+str(dresp(idresp).descriptor))
    478                        
    479 
    480                         #  skip column headings of cdf
    481 
    482                         fline=fidi.readline()
    483                         fline=fidi.readline()
    484 
    485                         #  read and add cdf table to response function
    486 
    487                         fline=fidi.readline()
    488                         icdf=0
    489                         while (fline != '' and not fline.isspace()) and not strncmpi(fline,'Cumulative Distribution Function',32):
    490                                 [ntokens,tokens]=fltokens(fline)
    491                                 icdf=icdf+1
    492                                 dresp[idresp].cdf = np.zeros((icdf,4))
    493                                 dresp[idresp].cdf[icdf-1,0:4]=np.nan
    494                                 #  in later versions of Dakota, uncalculated columns are now blank
    495                                 itoken=0
    496                                 for i in range(len(fline)/19):
    497                                         if not isempty(fline[(i-1)*19:i*19]):
    498                                                 itoken=itoken+1
    499                                                 dresp[idresp].cdf[icdf-1,i]=tokens[itoken]
    500 
    501                                 fline=fidi.readline()
    502 
    503         print('  Number of Dakota response functions='+str(len(dresp))+'.')
    504 
    505         return dresp
    506  # ]]]
    507 
    508 def pdfs_read(fidi,dresp,fline): # [[[
    509 ##  function to find and read the pdf's
    510 
    511         if fline == None or fline == '' or fline.isspace():
    512                 fline=findline(fidi,'Probability Density Function (PDF) histograms for each response function')
    513                 return
    514 
    515         print('Reading PDF''s for response functions:')
    516 
    517         while (fline != '' and not fline.isspace()):
    518                 fline=fidi.readline()
    519                 if fline == '' or fline.isspace():
    520                         break
    521                
    522 
    523                 #  process header line of pdf
    524 
    525                 while (fline != '' and not fline.isspace()):
    526                         [ntokens,tokens]=fltokens(fline)
    527 
    528                         #  find response function associated with pdf
    529                         # idresp is an index, so it can be 0, default to -1
    530                         idresp=-1
    531                         for i in range(len(dresp)):
    532                                 if strcmpi(tokens[ 2],dresp[i].descriptor):
    533                                         idresp=i
    534                                         break
    535                                
    536                        
    537                         if idresp < 0:
    538                                 idresp=len(dresp)
    539                                 dresp.append(struct)
    540                                 dresp[idresp].descriptor=tokens[ 2]
    541                                 print('  '+str(dresp[idresp].descriptor))
    542                        
    543 
    544                         #  skip column headings of pdf
    545 
    546                         fline=fidi.readline()
    547                         fline=fidi.readline()
    548 
    549                         #  read and add pdf table to response function
    550 
    551                         fline=fidi.readline()
    552                         ipdf=0
    553                         while (fline != '' and not fline.isspace()) and not strncmpi(fline,'PDF for', 7):
    554                                 [ntokens,tokens]=fltokens(fline)
    555                                 ipdf=ipdf+1
    556                                 dresp[idresp].pdf = np.zeros((ipdf,4))
    557                                 dresp[idresp].pdf[ipdf-1,0:3]=np.nan
    558                                 for i in range(3):
    559                                         dresp[idresp].pdf[ipdf-1,i]=tokens[i]
    560                                
    561                                 fline=fidi.readline()
    562 
    563         print('  Number of Dakota response functions='+str(len(dresp))+'.')
    564 
    565         return dresp
    566  # ]]]
    567 
    568 def corrmat_read(fidi,cmstr,fline): # [[[
    569 ##  function to find and read a correlation matrix
    570 
    571         if fline == None or fline == '' or fline.isspace():
    572                 fline=findline(fidi,cmstr)
    573                 if fline == '' or fline.isspace():
    574                         cmat=struct()
    575                         return
    576 
    577         print('Reading ' +fline+ '.')
    578 
    579         cmat.title=fline
    580 
    581         while (fline != '' and not fline.isspace()):
    582                 fline=fidi.readline()
    583                 if fline == '' or fline.isspace():
    584                         break
    585                
    586                 #  process column headings of matrix
    587 
    588                 [ntokens,tokens]=fltokens(fline)
    589                 cmat.column= np.empty((1,ntokens))
    590                 cmat.column.fill(0.0)
    591                 cmat.row   = np.empty((1,1))
    592                 cmat.row.fill(0.0)
    593                 cmat.matrix=np.zeros((1,ntokens))
    594 
    595                 for i in range(ntokens):
    596                         cmat.column[1,i]=str(tokens[i])
    597                
    598                 #  process rows of matrix, reading until blank line
    599 
    600                 nrow=0
    601                 while True:
    602                         fline=fidi.readline()
    603                         if fline == '' or fline.isspace():
    604                                 break
    605                        
    606                         [ntokens,tokens]=fltokens(fline)
    607 
    608                         #  add row heading to matrix
    609 
    610                         nrow=nrow+1
    611                         cmat.row[nrow-1,0]=str(tokens[0])
    612 
    613                         #  add row values to matrix
    614 
    615                         for i in range(1,ntokens):
    616                                 cmat.matrix[nrow-1,i-1]=tokens[i]
    617        
    618         return cmat
    619  # ]]]
    620 
    621 def mvstats_read(fidi,dresp,fline): # [[[
    622 ##  function to find and read the MV statistics
    623 
    624         if fline == None or fline == '' or fline.isspace():
    625                 fline=findline(fidi,'MV Statistics for ')
    626                 if fline == None:
    627                         return
    628 
    629         print('Reading MV statistics for response functions:')
    630 
    631         ndresp=0
    632 
    633         while (fline != '' and not fline.isspace()) and strncmpi(fline,'MV Statistics for ',18):
    634 
    635                 #  add new response function and moments
    636 
    637                 [ntokens,tokens]=fltokens(fline)
    638                 dresp.append(struct())
    639                 dresp[-1].descriptor=tokens[3]
    640                 print('  '+str(dresp[-1].descriptor))
    641                 fline=fidi.readline()
    642                 [ntokens,tokens]=fltokens(fline)
    643                 dresp[-1].mean      =tokens[4]
    644                 fline=fidi.readline()
    645                 [ntokens,tokens]=fltokens(fline)
    646                 dresp[-1].stddev    =tokens[6]
    647 
    648                 #  read and add importance factors to response function
    649 
    650                 idvar=0
    651                 fline=fidi.readline()
    652                 if fline == '' or fline.isspace():
    653                         break
    654 
    655                 # shape: [[0],[0],[0]...]
    656                 dresp[-1].var =    []
    657                 dresp[-1].impfac = []
    658                 dresp[-1].sens =   []
    659 
    660                 while (fline != '' and not fline.isspace()) and strncmpi(fline,'  Importance Factor for variable ',33):
    661                         [ntokens,tokens]=fltokens(fline)
    662                         idvar=idvar+1
    663                         dresp[-1].var.append(str(tokens[4]))
    664                         dresp[-1].impfac.append(tokens[6])
    665                         if (ntokens >= 10):
    666                                 dresp[-1].sens.append(tokens[9])
    667                         else:
    668                                 dresp[-1].sens.append(np.nan)
    669                        
    670 
    671                         fline=fidi.readline()
    672                
    673                 #  if importance factors missing, skip to cdf
    674 
    675                 if not idvar:
    676                         print('    Importance Factors not available.')
    677                         dresp[-1].var   =[]
    678                         dresp[-1].impfac=[]
    679                         dresp[-1].sens  =[]
    680                         while type(fline) == str and (fline != '' and not fline.isspace()) and not strncmpi(fline,'Cumulative Distribution Function',32) and not strncmpi(fline,'MV Statistics for ',18) and not strncmp(fline,'-',1):
    681                                 fline=fidi.readline()
    682 
    683                 #  process header line of cdf
    684 
    685                 icdf=0
    686 
    687                 # If there is a warning it MAY involve a lot of spaces; skip over them
    688                 if fline == '' or fline.isspace():
    689                         fline=fidi.readline()
    690                         # Usually: "Warning: negligible standard deviation renders CDF results suspect."
    691                         if strncmpi(fline,'Warn',4):
    692                                 fline = fidi.readline()
    693                                 if fline == '' or fline.isspace():
    694                                         fline = fidi.readline()
    695 
    696                 while (fline != '' and not fline.isspace()) and strncmpi(fline,'Cumulative Distribution Function',32):
    697                         [ntokens,tokens]=fltokens(fline)
    698 
    699                         #  find response function associated with cdf
    700                         # idresp is an index, so it can be 0, default to -1
    701                         idresp=-1
    702                         for i in range(len(dresp)):
    703                                 if strcmpi(tokens[ 5],dresp[i].descriptor):
    704                                         idresp=i
    705                                         break
    706 
    707                         if idresp < 0:
    708                                 idresp=len(dresp)
    709                                 dresp.append(struct())
    710                                 dresp[idresp].descriptor=tokens[ 5]
    711                                 print('  '+str(dresp[idresp].descriptor))
    712                        
    713                         #  skip column headings of cdf
    714                         fline=fidi.readline()
    715                         fline=fidi.readline()
    716 
    717                         #  read and add cdf table to response function
    718 
    719                         fline=fidi.readline()
    720                         while (fline != '' and not fline.isspace()) and not strncmpi(fline,'MV Statistics for ',18) and not strncmp (fline,'-',1):
    721                                 [ntokens,tokens]=fltokens(fline)
    722                                 icdf=icdf+1
    723                                 dresp[idresp].cdf = np.zeros((icdf,4))
    724                                 dresp[idresp].cdf[icdf-1,0]=tokens[0]
    725                                 dresp[idresp].cdf[icdf-1,1]=tokens[1]
    726                                 if (ntokens == 4):
    727                                         dresp[idresp].cdf[icdf-1,2]=tokens[2]
    728                                         dresp[idresp].cdf[icdf-1,3]=tokens[3]
    729                                 else:
    730                                         dresp[idresp].cdf[icdf-1,2]=np.nan
    731                                         dresp[idresp].cdf[icdf-1,3]=np.nan
    732                                
    733                                 fline=fidi.readline()
    734 
    735                 #  if cdf missing, skip to end of response function
    736 
    737                 if not icdf:
    738                         print('    Cumulative Distribution Function not available.')
    739                         dresp[ndresp].cdf=[]
    740                         while (fline != '' and not fline.isspace()) and not strncmpi(fline,'MV Statistics for ',18) and not strncmp (fline,'-',1):
    741                                 fline=fidi.readline()
    742 
    743         print('  Number of Dakota response functions='+str(len(dresp))+'.')
    744 
    745         return dresp
    746  # ]]]
    747 
    748 def best_read(fidi,dresp,fline): # [[[
    749 ##  function to find and read the best evaluation
    750 
    751         if fline == None or fline == '' or fline.isspace():
    752                 fline=findline(fidi,'<<<<< Best ')
    753                 if fline == None:
    754                         return
    755 
    756         if isempty(dresp):
    757                 dresp.append(struct())
    758                 dresp[-1].best=struct()
    759        
    760         print('Reading values for best function evaluation:')
    761 
    762         while (fline != '' and not fline.isspace()) and strncmpi(fline,'<<<<< Best ',11):
    763                 [ntokens,tokens]=fltokens(fline)
    764 
    765                 #  read and add best parameter(s)
    766 
    767                 if strncmpi(str(tokens[2]),'parameter', 9):
    768                         print('  '+fline)
    769 
    770                         fline=fidi.readline()
    771                         dresp.best.param     =[]
    772                         dresp.best.descriptor=''
    773 
    774                         while (fline != '' and not fline.isspace()) and not strncmpi(fline,'<<<<< Best ',11):
    775                                 [ntokens,tokens]=fltokens(fline)
    776                                 dresp.best.param.append([0])
    777                                 dresp.best.param[-1]=      tokens[0]
    778                                 dresp.best.descriptor= str(tokens[1])
    779                                 fline=fidi.readline()
    780                        
    781                         #  read and add best objective function(s)
    782 
    783                 elif strncmpi(str(tokens[2]),'objective', 9) and strncmpi(str(tokens[3]),'function' , 8):
    784                         print('  '+fline)
    785 
    786                         fline=fidi.readline()
    787                         dresp.best.of=[]
    788 
    789                         while (fline != '' and not fline.isspace()) and not strncmpi(fline,'<<<<< Best ',11):
    790                                 [ntokens,tokens]=fltokens(fline)
    791                                 dresp.best.of.append(0)
    792                                 dresp.best.of[-1]=tokens[0]
    793                                 fline=fidi.readline()
    794                        
    795                         #  read and add best residual norms
    796 
    797                 elif strncmpi(str(tokens[2]),'residual', 8) and strncmpi(str(tokens[3]),'norm'    , 4):
    798                         print('  '+fline)
    799                         dresp.best.norm   =        tokens[ 5]
    800                         dresp.best.hnormsq=        tokens[10]
    801 
    802                         fline=fidi.readline()
    803 
    804                         while (fline != '' and not fline.isspace()) and not strncmpi(fline,'<<<<< Best ',11):
    805                                 fline=fidi.readline()
    806                        
    807                         #  read and add best residual term(s)
    808 
    809                 elif strncmpi(str(tokens[2]),'residual', 8) and strncmpi(str(tokens[3]),'term'    , 4):
    810                         print('  '+fline)
    811 
    812                         fline=fidi.readline()
    813                         dresp.best.res=[]
    814 
    815                         while (fline != '' and not fline.isspace()) and not strncmpi(fline,'<<<<< Best ',11):
    816                                 [ntokens,tokens]=fltokens(fline)
    817                                 dresp.best.res.append(0)
    818                                 dresp.best.res[-1]=        tokens[0]
    819                                 fline=fidi.readline()
    820                        
    821                         #  read and add best constraint value(s)
    822 
    823                 elif strncmpi(str(tokens[2]),'constraint',10) and strncmpi(str(tokens[3]),'value'     , 5):
    824                         print('  '+fline)
    825 
    826                         fline=fidi.readline()
    827                         dresp.best.nc=[]
    828 
    829                         while (fline != '' and not fline.isspace()) and not strncmpi(fline,'<<<<< Best ',11):
    830                                 [ntokens,tokens]=fltokens(fline)
    831                                 dresp.best.nc.append(0)
    832                                 dresp.best.nc[-1]=        tokens[0]
    833                                 fline=fidi.readline()
    834                        
    835                         #  read and add best data captured
    836 
    837                 elif strncmpi(str(tokens[2]),'data'    , 4) and strncmpi(str(tokens[3]),'captured', 8):
    838                         print('  '+fline)
    839                         dresp.best.eval=        tokens[7]
    840 
    841                         fline=fidi.readline()
    842 
    843                         while (fline != '' and not fline.isspace()) and not strncmpi(fline,'<<<<< Best ',11):
    844                                 fline=fidi.readline()
    845 
    846                         #  read until next best or blank or end
    847                 else:
    848                         print('  '+fline+'  (ignored)')
    849 
    850                         fline=fidi.readline()
    851 
    852                         while (fline != '' and not fline.isspace()) and not strncmpi(fline,'<<<<< Best ',11):
    853                                 fline=fidi.readline()
    854 
    855         return dresp
    856  # ]]]
    857 
    858 def vum_read(fidi,dresp,fline): # [[[
    859 ##  function to find and read the volumetric uniformity measures
    860 
    861         if fline == None or fline == '' or fline.isspace():
    862                 fline=findline(fidi,'The following lists volumetric uniformity measures')
    863                 if fline == None:
    864                         return
    865 
    866         if isempty(dresp):
    867                 dresp.append(struct())
    868                 dresp[-1].vum=[]
    869        
    870         print('Reading measures for volumetric uniformity.')
    871 
    872         fline=fidi.readline()
    873         fline=fidi.readline()
    874 
    875         while (fline != '' and not fline.isspace()):
    876                 [ntokens,tokens]=fltokens(fline)
    877                 check = tokens[0].lower()
    878                 if check == 'chi':
    879                                 dresp.vum.chi=tokens[3]
    880                 elif check == 'd':
    881                                 dresp.vum.d  =tokens[3]
    882                 elif check == 'h':
    883                                 dresp.vum.h  =tokens[3]
    884                 elif check == 'tau':
    885                                 dresp.vum.tau=tokens[3]
    886                
    887                 fline=fidi.readline()
    888        
    889         return dresp
    890  # ]]]
    891 
    892 def itcomp_read(fidi,fline): # [[[
    893 ##  function to find and read the iterator completion
    894 
    895         if fline == None or fline == '' or fline.isspace():
    896                 while True:
    897                         fline=findline(fidi,'<<<<< Iterator ')
    898                         if fline == None:
    899                                 return
    900                        
    901                         if (len(fline) > 26) and not (' completed.' in fline[15:]):
    902                                 break
    903 
    904         [ntokens,tokens]=fltokens(fline)
    905         method=tokens[2]
    906         print('Dakota iterator \''+str(method)+'\' completed.')
    907 
    908         return method
    909  # ]]]
    910 
    911 def findline(fidi,string,goto_line=False): # [[[
    912 ##  function to find a file line starting with a specified string
    913 ##  by default, return to previous position, before search
    914 ##  if final argument is True, return such that fidi.readline() will read the line
    915 ##      immediately after the searched line (or the first line if the search failed)
    916 
    917         ipos=fidi.tell()
    918         npos = 0
    919         for fline in fidi:
    920                 npos += len(fline)
    921                 if (strncmpi(fline,string,len(string))):
    922                         if goto_line:
    923                                 fidi.seek(npos,0)
    924                         else:
    925                                 fidi.seek(ipos,0)
    926                         return fline
    927 
    928         #  issue warning and reset file position
    929         print('Warning: findline:str_not_found: String '+str(string)+' not found in file.')
    930         fidi.seek(ipos,0)
    931         return None
    932  # ]]]
    933 
    934 def fltokens(fline): # [[[
    935         ##  function to parse a file line into tokens
    936         if fline == None:
    937                 ntokens=-1
    938                 tokens=[]
    939                 return [None,None]
    940        
    941         if fline == '' or fline.isspace():
    942                 ntokens=0
    943                 tokens=[]
    944                 return [None,None]
    945        
    946         # split wherever ' ' (space) or ':' occur
    947         strings = re.split(':| ',fline)
    948         # remove blank strings
    949         strings = [a for a in strings if (a != '' and not a.isspace())]
    950 
    951         ntokens=0
    952         tokens = ['' for i in range(len(strings))]
    953 
    954         # try to format substrings to float where possible and count tokens and ignore invalid values
    955         for i in range(len(strings)):
    956                 if isempty(strings[i]):
    957                         continue
    958 
    959                 # if the string is a number, make it a float, otherwise leave it alone
    960                 try:
    961                         tokens[ntokens] = float(strings[i])
    962                 except ValueError:
    963                         tokens[ntokens] = strings[i]
    964                
    965                 ntokens=ntokens+1
    966 
    967         return [ntokens,tokens]
    968  # ]]]
    969 
    970        
     50    if filei is None:
     51        help(dakota_out_parse)
     52        return
     53
     54    if not isfile(filei) or getsize(filei) == 0:
     55        filei = str(eval(input('Input file?  ')))
     56
     57    #fidi = fopen(sprintf('%s', filei), 'r')
     58    #try:
     59    with open(filei, 'r') as fidi:
     60        #  check the first line for the Dakota tabular output file
     61        method = []
     62        fline = fidi.readline()
     63        if getsize(filei) == 0 or fline == '':
     64            raise RuntimeError('File ' + filei + ' is empty.')
     65
     66        dresp = []  # of struct()
     67        scm = struct()
     68        pcm = struct()
     69        srcm = struct()
     70        prcm = struct()
     71
     72        if '%eval_id' in fline:
     73            method = 'unknown'
     74            dresp = dak_tab_out(fidi, fline)
     75            return [method, dresp, scm, pcm, srcm, prcm]
     76        else:
     77            fidi.seek(0, 0)
     78
     79    #  loop through the file to find the Dakota method name
     80        fline = findline(fidi, 'method', True)
     81        if fline is None:
     82            #do nothing
     83            pass
     84        else:
     85            if fline[6] == ',':
     86                fline = fidi.readline()
     87                [ntokens, tokens] = fltokens(fline)
     88                method = tokens[0].strip()
     89                print('Dakota method =\'' + method + '\'.')
     90            elif fline[6] in ['N', 'n']:
     91                fline = findline(fidi, 'methodName = ')
     92                [ntokens, tokens] = fltokens(fline)
     93                method = tokens[2].strip()
     94                print('Dakota methodName = "' + method + '".')
     95
     96    #  loop through the file to find the function evaluation summary
     97        counter = 0
     98        fline = ''
     99        nfeval = nfeval_read(fidi, fline)
     100
     101        #  process each results section based on content of the file
     102        while counter < 10:
     103            # because python makes file i / o difficult
     104            # if we see 10 + blank lines in a row then we have reached EOF
     105            # (tests show actual maximum number of blank lines is around 5)
     106            if fline == '' or fline.isspace():
     107                counter += 1
     108            else:
     109                counter = 0
     110    #     ipos = ftell(fidi)
     111            fline = fidi.readline()
     112            if fline == '' or fline.isspace():
     113                pass
     114            elif '<<<<< Function evaluation summary' in fline:
     115                nfeval = nfeval_read(fidi, fline)
     116            elif 'Statistics based on ' in fline:
     117                nsamp = nsamp_read(fidi, fline)
     118            elif 'Moments for each response function' in fline:
     119                dresp = moments_read(fidi, dresp, fline)
     120            elif 'Moment-based statistics for each response function' in fline:
     121                dresp = mbstats_read(fidi, dresp, fline)
     122            elif '95% confidence intervals for each response function' in fline:
     123                dresp = cis_read(fidi, dresp, fline)
     124            elif 'Probabilities for each response function' in fline or 'Level mappings for each response function' in fline:
     125                dresp = cdfs_read(fidi, dresp, fline)
     126            elif 'Probability Density Function (PDF) histograms for each response function' in fline:
     127                dresp = pdfs_read(fidi, dresp, fline)
     128            elif 'Simple Correlation Matrix' in fline:
     129                scm = corrmat_read(fidi, 'Simple Correlation Matrix', fline)
     130            elif 'Partial Correlation Matrix' in fline:
     131                pcm = corrmat_read(fidi, 'Partial Correlation Matrix', fline)
     132            elif 'Simple Rank Correlation Matrix' in fline:
     133                srcm = corrmat_read(fidi, 'Simple Rank Correlatio:n Matrix', fline)
     134            elif 'Partial Rank Correlation Matrix' in fline:
     135                prcm = corrmat_read(fidi, 'Partial Rank Correlation Matrix', fline)
     136            elif 'MV Statistics for ' in fline:
     137                dresp = mvstats_read(fidi, dresp, fline)
     138            elif '<<<<< Best ' in fline:
     139                dresp = best_read(fidi, dresp, fline)
     140            elif 'The following lists volumetric uniformity measures' in fline:
     141                dresp = vum_read(fidi, dresp, fline)
     142            elif '<<<<< Iterator ' in fline and (len(fline) > 26) and (' completed.' in fline[15:]):
     143                method = itcomp_read(fidi, fline)
     144            elif '-----' in fline:
     145                pass
     146            else:
     147                'Unexpected line: ' + str(fline)
     148
     149    #     fidi.seek(ipos, 0)
     150
     151    #  loop through the file to verify the end
     152
     153    # fline = findline(fidi, '<<<<< Single Method Strategy completed')
     154    # if not ischar(fline)
     155    #     return
     156    #
     157        print('End of file successfully reached.')
     158    #close(fidi)
     159    #except Exception as err:
     160    #print "ERROR in dakota_out_parse: " + err
     161    #raise err
     162    #raise RuntimeError(filei + ' could not be opened.')
     163
     164    return [method, dresp, scm, pcm, srcm, prcm]
     165    # }}}
     166
     167
     168def dak_tab_out(fidi, fline):  # {{{
     169    #  function to parse the dakota tabular output file
     170
     171    print('Reading Dakota tabular output file.')
     172
     173    #  process column headings of matrix (skipping eval_id)
     174    [ntokens, tokens] = fltokens(fline)
     175
     176    # New file DAKOTA versions > 6
     177    if strncmpi(fline, '%eval_id interface', 18):
     178        offset = 2
     179    else:  #DAKOTA versions < 6
     180        offset = 1
     181
     182    desc = [['' for i in range(ntokens - offset)]]
     183    data = np.zeros((1, ntokens - offset))
     184
     185    for i in range(ntokens - offset):
     186        desc[0][i] = str(tokens[i + offset])
     187
     188    print("Number of columns (Dakota V + R)=" + str(ntokens - 2) + '.')
     189
     190    #  process rows of matrix
     191    nrow = 0
     192    while True:
     193
     194        fline = fidi.readline()
     195
     196        if fline == '' or fline.isspace():
     197            break
     198
     199        if nrow > 0:
     200            data = np.concatenate((data, [np.zeros(ntokens - offset)]))
     201
     202        [ntokens, tokens] = fltokens(fline)
     203
     204    #  add row values to matrix (skipping eval_id)
     205
     206        for i in range(ntokens - offset):
     207            data[nrow, i] = tokens[i + offset]
     208
     209        nrow = nrow + 1
     210
     211    print('Number of rows (Dakota func evals) = ' + str(nrow) + '.')
     212
     213    #  calculate statistics
     214
     215    #  since normfit doesn't have a dim argument, and matlab isvector is True
     216    #  for a 1xn matrix, handle the case of one row explicitly
     217
     218    #  Update: normfit_issm.py does handle this case
     219    if (np.size(data, 0) > 1):
     220        #dmean  =mean   (data)
     221        #dstddev = std    (data, 0)
     222        [dmean, dstddev, dmeanci, dstddevci] = normfit_issm(data, 0.05)
     223    else:
     224        dmean = np.zeros((1, np.size(data, 1)))
     225        dstddev = np.zeros((1, np.size(data, 1)))
     226        dmeanci = np.zeros((2, np.size(data, 1)))
     227        dstddevci = np.zeros((2, np.size(data, 1)))
     228        for i in range(np.size(data, 1)):
     229            [dmean[0, i], dstddev[0, i], dmeanci[:, i], dstddevci[:, i]] = normfit_issm(data[:, i], 0.05)
     230
     231    dmin = data.min(0)
     232    dquart1 = prctile_issm(data, 25, 0)
     233    dmedian = np.median(data, 0)
     234    dquart3 = prctile_issm(data, 75, 0)
     235    dmax = data.max(0)
     236    dmin95 = prctile_issm(data, 5, 0)
     237    dmax95 = prctile_issm(data, 95, 0)
     238
     239    # Note: the following line may cause the following warning
     240    #    (should not crash or invalidate results) when one of
     241    #    the inputs does not change with respect to the
     242    #    other / s causing an internal divide-by - zero error
     243
     244    # / usr / local / lib / python2.7 / dist - packages / numpy / lib / function_base.py:3163:
     245    #    RuntimeWarning: invalid value encountered in true_divide
     246    #    c / = stddev[:, None]
     247
     248    #    (and / or the same but with "c / = stddev[None, :]")
     249
     250    dcorrel = np.corrcoef(data.T)
     251
     252    #  divide the data into structures for consistency
     253    dresp = []
     254
     255    for i in range(len(desc)):
     256        dresp.append(struct())
     257        dresp[i].descriptor = str(desc[i])
     258        dresp[i].sample = data[:, i]
     259        dresp[i].mean = dmean[i]
     260        dresp[i].stddev = dstddev[i]
     261        dresp[i].meanci = dmeanci[:, i]
     262        dresp[i].stddevci = dstddevci[:, i]
     263        dresp[i].min = dmin[i]
     264        dresp[i].quart1 = dquart1[i]
     265        dresp[i].median = dmedian[i]
     266        dresp[i].quart3 = dquart3[i]
     267        dresp[i].max = dmax[i]
     268        dresp[i].dmin95 = dmin95[i]
     269        dresp[i].dmax95 = dmax95[i]
     270
     271    #  draw box plot
     272
     273    # figure
     274    # subplot(2, 1, 1)
     275    # plot_boxplot(dresp)
     276
     277    #  draw normal probability plot
     278
     279    # subplot(2, 1, 2)
     280    # plot_normplot(dresp)
     281
     282    return dresp
     283    # }}}
     284
     285
     286def nfeval_read(fidi, fline):  # {{{
     287    #  function to find and read the number of function evaluations
     288
     289    if fline is None or fline == '' or fline.isspace():
     290        fline = findline(fidi, '<<<<< Function evaluation summary')
     291        nfeval = 0
     292        return
     293
     294    [ntokens, tokens] = fltokens(fline)
     295    nfeval = tokens[4]
     296    print('  Dakota function evaluations = ' + str(int(nfeval)) + '.')
     297
     298    return nfeval
     299    # }}}
     300
     301
     302def nsamp_read(fidi, fline):  # {{{
     303    #  function to find and read the number of samples
     304
     305    if fline is None or fline == '' or fline.isspace():
     306        fline = findline(fidi, 'Statistics based on ')
     307        return
     308
     309    [ntokens, tokens] = fltokens(fline)
     310    nsamp = tokens[3]
     311    print('  Dakota samples = ' + str(int(nsamp)) + '.')
     312
     313    return nsamp
     314    # }}}
     315
     316
     317def moments_read(fidi, dresp, fline):  # {{{
     318    #  function to find and read the moments
     319
     320    if fline is None or fline == '' or fline.isspace():
     321        fline = findline(fidi, 'Moments for each response function')
     322        return
     323
     324    print('Reading moments for response functions:')
     325
     326    while True:
     327        fline = fidi.readline()
     328        if fline == '' or fline.isspace():
     329            break
     330
     331        [ntokens, tokens] = fltokens(fline)
     332
     333    #  add new response function and moments
     334
     335        dresp.append(struct())
     336        dresp[-1].descriptor = tokens[0]
     337        print('  ' + str(dresp[-1].descriptor))
     338        dresp[-1].mean = tokens[3]
     339        dresp[-1].stddev = tokens[6]
     340        dresp[-1].coefvar = tokens[12]
     341
     342    print('  Number of Dakota response functions = ' + str(len(dresp)) + '.')
     343
     344    return dresp
     345    # }}}
     346
     347
     348def mbstats_read(fidi, dresp, fline):  # {{{
     349    #  function to find and read the moment - based statistics
     350
     351    if fline is None or fline == '' or fline.isspace():
     352        fline = findline(fidi, 'Moment - based statistics for each response function')
     353        return
     354
     355    print('Reading moment - based statistics for response functions:')
     356
     357    #  skip column headings of moment - based statistics
     358
     359    fline = fidi.readline()
     360
     361    while True:
     362        fline = fidi.readline()
     363        if fline == '' or fline.isspace():
     364            break
     365
     366        [ntokens, tokens] = fltokens(fline)
     367
     368    #  add new response function and moment - based statistics
     369
     370        dresp.append(struct())
     371        dresp[-1].descriptor = tokens[0]
     372        print('  ' + str(dresp[-1].descriptor))
     373        dresp[-1].mean = tokens[1]
     374        dresp[-1].stddev = tokens[2]
     375        dresp[-1].skewness = tokens[3]
     376        dresp[-1].kurtosis = tokens[4]
     377
     378    print('  Number of Dakota response functions = ' + str(len(dresp)) + '.')
     379
     380    return dresp
     381    # }}}
     382
     383
     384def cis_read(fidi, dresp, fline):  # {{{
     385    #  function to find and read the confidence intervals
     386
     387    if fline is None or fline == '' or fline.isspace():
     388        fline = findline(fidi, '95% confidence intervals for each response function')
     389        return
     390
     391    print('Reading 95% confidence intervals for response functions:')
     392
     393    while True:
     394        fline = fidi.readline()
     395        if fline == '' or fline.isspace():
     396            break
     397
     398        [ntokens, tokens] = fltokens(fline)
     399        #  check for column headings in Dakota 5.2
     400        if (ntokens == 4):
     401            fline = fidi.readline()
     402            if fline == '' or fline.isspace():
     403                break
     404
     405            [ntokens, tokens] = fltokens(fline)
     406
     407        #  find response function associated with confidence intervals
     408        idresp = -1
     409        for i in range(len(dresp)):
     410            if strcmpi(tokens[0], dresp[i].descriptor):
     411                idresp = i
     412                break
     413
     414        if idresp < 0:
     415            idresp = len(dresp)
     416            dresp.append(struct())
     417            dresp[idresp].descriptor = tokens[0]
     418            print('  ' + str(dresp[idresp].descriptor))
     419
     420        #  add confidence intervals to response functions
     421        dresp[i].meanci = np.array([[np.nan], [np.nan]])
     422        dresp[i].stddevci = np.array([[np.nan], [np.nan]])
     423
     424        if (ntokens == 14):
     425            dresp[i].meanci[0, 0] = tokens[4]
     426            dresp[i].meanci[1, 0] = tokens[5]
     427            dresp[i].stddevci[0, 0] = tokens[11]
     428            dresp[i].stddevci[1, 0] = tokens[12]
     429        else:
     430            dresp[i].meanci[0, 0] = tokens[1]
     431            dresp[i].meanci[1, 0] = tokens[2]
     432            dresp[i].stddevci[0, 0] = tokens[3]
     433            dresp[i].stddevci[1, 0] = tokens[4]
     434
     435    print('  Number of Dakota response functions = ' + str(len(dresp)) + '.')
     436
     437    return dresp
     438    # }}}
     439
     440
     441def cdfs_read(fidi, dresp, fline):  # {{{
     442    #  function to find and read the cdf's
     443
     444    if fline is None or fline == '' or fline.isspace():
     445        fline = findline(fidi, 'Probabilities for each response function')
     446        if fline is None:
     447            fline = findline(fidi, 'Level mappings for each response function')
     448            if fline is None:
     449                return
     450
     451    print('Reading CDF''s for response functions:')
     452
     453    while fline == '' or fline.isspace():
     454        fline = fidi.readline()
     455        if fline == '' or fline.isspace():
     456            break
     457
     458    #  process header line of cdf
     459
     460        while (fline != '' and not fline.isspace()):
     461            [ntokens, tokens] = fltokens(fline)
     462
     463    #  find response function associated with cdf
     464    # idresp is an index, so it can be 0, default to - 1
     465            idresp = -1
     466            for i in range(len(dresp)):
     467                if strcmpi(tokens[5], dresp[i].descriptor):
     468                    idresp = i
     469                    break
     470            if idresp < 0:
     471                idresp = len(dresp)
     472                dresp.append(struct())
     473                dresp[idresp].descriptor = tokens[5]
     474                print('  ' + str(dresp(idresp).descriptor))
     475
     476            #  skip column headings of cdf
     477            fline = fidi.readline()
     478            fline = fidi.readline()
     479
     480            #  read and add cdf table to response function
     481            fline = fidi.readline()
     482            icdf = 0
     483            while (fline != '' and not fline.isspace()) and not strncmpi(fline, 'Cumulative Distribution Function', 32):
     484                [ntokens, tokens] = fltokens(fline)
     485                icdf = icdf + 1
     486                dresp[idresp].cdf = np.zeros((icdf, 4))
     487                dresp[idresp].cdf[icdf - 1, 0:4] = np.nan
     488                #  in later versions of Dakota, uncalculated columns are now blank
     489                itoken = 0
     490                for i in range(len(fline) / 19):
     491                    if not isempty(fline[(i - 1) * 19:i * 19]):
     492                        itoken = itoken + 1
     493                        dresp[idresp].cdf[icdf - 1, i] = tokens[itoken]
     494
     495                fline = fidi.readline()
     496
     497    print('  Number of Dakota response functions = ' + str(len(dresp)) + '.')
     498
     499    return dresp
     500    # }}}
     501
     502
     503def pdfs_read(fidi, dresp, fline):  # {{{
     504    #  function to find and read the pdf's
     505
     506    if fline is None or fline == '' or fline.isspace():
     507        fline = findline(fidi, 'Probability Density Function (PDF) histograms for each response function')
     508        return
     509
     510    print('Reading PDF''s for response functions:')
     511
     512    while (fline != '' and not fline.isspace()):
     513        fline = fidi.readline()
     514        if fline == '' or fline.isspace():
     515            break
     516
     517        #  process header line of pdf
     518        while (fline != '' and not fline.isspace()):
     519            [ntokens, tokens] = fltokens(fline)
     520
     521            #  find response function associated with pdf
     522            # idresp is an index, so it can be 0, default to - 1
     523            idresp = -1
     524            for i in range(len(dresp)):
     525                if strcmpi(tokens[2], dresp[i].descriptor):
     526                    idresp = i
     527                    break
     528
     529            if idresp < 0:
     530                idresp = len(dresp)
     531                dresp.append(struct)
     532                dresp[idresp].descriptor = tokens[2]
     533                print('  ' + str(dresp[idresp].descriptor))
     534
     535            #  skip column headings of pdf
     536            fline = fidi.readline()
     537            fline = fidi.readline()
     538
     539            #  read and add pdf table to response function
     540            fline = fidi.readline()
     541            ipdf = 0
     542            while (fline != '' and not fline.isspace()) and not strncmpi(fline, 'PDF for', 7):
     543                [ntokens, tokens] = fltokens(fline)
     544                ipdf = ipdf + 1
     545                dresp[idresp].pdf = np.zeros((ipdf, 4))
     546                dresp[idresp].pdf[ipdf - 1, 0:3] = np.nan
     547                for i in range(3):
     548                    dresp[idresp].pdf[ipdf - 1, i] = tokens[i]
     549
     550                fline = fidi.readline()
     551
     552    print('  Number of Dakota response functions = ' + str(len(dresp)) + '.')
     553
     554    return dresp
     555    # }}}
     556
     557
     558def corrmat_read(fidi, cmstr, fline):  # {{{
     559    #  function to find and read a correlation matrix
     560
     561    if fline is None or fline == '' or fline.isspace():
     562        fline = findline(fidi, cmstr)
     563        if fline == '' or fline.isspace():
     564            cmat = struct()
     565            return
     566
     567    print('Reading ' + fline + '.')
     568
     569    cmat.title = fline
     570
     571    while (fline != '' and not fline.isspace()):
     572        fline = fidi.readline()
     573        if fline == '' or fline.isspace():
     574            break
     575
     576        #  process column headings of matrix
     577        [ntokens, tokens] = fltokens(fline)
     578        cmat.column = np.empty((1, ntokens))
     579        cmat.column.fill(0.0)
     580        cmat.row = np.empty((1, 1))
     581        cmat.row.fill(0.0)
     582        cmat.matrix = np.zeros((1, ntokens))
     583
     584        for i in range(ntokens):
     585            cmat.column[1, i] = str(tokens[i])
     586
     587        #  process rows of matrix, reading until blank line
     588        nrow = 0
     589        while True:
     590            fline = fidi.readline()
     591            if fline == '' or fline.isspace():
     592                break
     593
     594            [ntokens, tokens] = fltokens(fline)
     595
     596            #  add row heading to matrix
     597            nrow = nrow + 1
     598            cmat.row[nrow - 1, 0] = str(tokens[0])
     599
     600            #  add row values to matrix
     601            for i in range(1, ntokens):
     602                cmat.matrix[nrow - 1, i - 1] = tokens[i]
     603
     604    return cmat
     605    # }}}
     606
     607
     608def mvstats_read(fidi, dresp, fline):  # {{{
     609    #  function to find and read the MV statistics
     610
     611    if fline is None or fline == '' or fline.isspace():
     612        fline = findline(fidi, 'MV Statistics for ')
     613        if fline is None:
     614            return
     615
     616    print('Reading MV statistics for response functions:')
     617
     618    ndresp = 0
     619
     620    while (fline != '' and not fline.isspace()) and strncmpi(fline, 'MV Statistics for ', 18):
     621
     622        #  add new response function and moments
     623        [ntokens, tokens] = fltokens(fline)
     624        dresp.append(struct())
     625        dresp[-1].descriptor = tokens[3]
     626        print('  ' + str(dresp[-1].descriptor))
     627        fline = fidi.readline()
     628        [ntokens, tokens] = fltokens(fline)
     629        dresp[-1].mean = tokens[4]
     630        fline = fidi.readline()
     631        [ntokens, tokens] = fltokens(fline)
     632        dresp[-1].stddev = tokens[6]
     633
     634        #  read and add importance factors to response function
     635        idvar = 0
     636        fline = fidi.readline()
     637        if fline == '' or fline.isspace():
     638            break
     639
     640        # shape: [[0], [0], [0]...]
     641        dresp[-1].var = []
     642        dresp[-1].impfac = []
     643        dresp[-1].sens = []
     644
     645        while (fline != '' and not fline.isspace()) and strncmpi(fline, '  Importance Factor for variable ', 33):
     646            [ntokens, tokens] = fltokens(fline)
     647            idvar = idvar + 1
     648            dresp[-1].var.append(str(tokens[4]))
     649            dresp[-1].impfac.append(tokens[6])
     650            if (ntokens >= 10):
     651                dresp[-1].sens.append(tokens[9])
     652            else:
     653                dresp[-1].sens.append(np.nan)
     654
     655            fline = fidi.readline()
     656
     657        #  if importance factors missing, skip to cdf
     658        if not idvar:
     659            print('    Importance Factors not available.')
     660            dresp[-1].var = []
     661            dresp[-1].impfac = []
     662            dresp[-1].sens = []
     663            while type(fline) == str and (fline != '' and not fline.isspace()) and not strncmpi(fline, 'Cumulative Distribution Function', 32) and not strncmpi(fline, 'MV Statistics for ', 18) and not strncmp(fline, ' - ', 1):
     664                fline = fidi.readline()
     665
     666        #  process header line of cdf
     667        icdf = 0
     668
     669        # If there is a warning it MAY involve a lot of spaces; skip over them
     670        if fline == '' or fline.isspace():
     671            fline = fidi.readline()
     672            # Usually: "Warning: negligible standard deviation renders CDF results suspect."
     673            if strncmpi(fline, 'Warn', 4):
     674                fline = fidi.readline()
     675                if fline == '' or fline.isspace():
     676                    fline = fidi.readline()
     677
     678        while (fline != '' and not fline.isspace()) and strncmpi(fline, 'Cumulative Distribution Function', 32):
     679            [ntokens, tokens] = fltokens(fline)
     680
     681            #  find response function associated with cdf
     682            # idresp is an index, so it can be 0, default to - 1
     683            idresp = -1
     684            for i in range(len(dresp)):
     685                if strcmpi(tokens[5], dresp[i].descriptor):
     686                    idresp = i
     687                    break
     688
     689            if idresp < 0:
     690                idresp = len(dresp)
     691                dresp.append(struct())
     692                dresp[idresp].descriptor = tokens[5]
     693                print('  ' + str(dresp[idresp].descriptor))
     694
     695            #  skip column headings of cdf
     696            fline = fidi.readline()
     697            fline = fidi.readline()
     698
     699            #  read and add cdf table to response function
     700            fline = fidi.readline()
     701            while (fline != '' and not fline.isspace()) and not strncmpi(fline, 'MV Statistics for ', 18) and not strncmp(fline, ' - ', 1):
     702                [ntokens, tokens] = fltokens(fline)
     703                icdf = icdf + 1
     704                dresp[idresp].cdf = np.zeros((icdf, 4))
     705                dresp[idresp].cdf[icdf - 1, 0] = tokens[0]
     706                dresp[idresp].cdf[icdf - 1, 1] = tokens[1]
     707                if (ntokens == 4):
     708                    dresp[idresp].cdf[icdf - 1, 2] = tokens[2]
     709                    dresp[idresp].cdf[icdf - 1, 3] = tokens[3]
     710                else:
     711                    dresp[idresp].cdf[icdf - 1, 2] = np.nan
     712                    dresp[idresp].cdf[icdf - 1, 3] = np.nan
     713
     714                fline = fidi.readline()
     715
     716        #  if cdf missing, skip to end of response function
     717        if not icdf:
     718            print('    Cumulative Distribution Function not available.')
     719            dresp[ndresp].cdf = []
     720            while (fline != '' and not fline.isspace()) and not strncmpi(fline, 'MV Statistics for ', 18) and not strncmp(fline, ' - ', 1):
     721                fline = fidi.readline()
     722
     723    print('  Number of Dakota response functions = ' + str(len(dresp)) + '.')
     724
     725    return dresp
     726    # }}}
     727
     728
     729def best_read(fidi, dresp, fline):  # {{{
     730    #  function to find and read the best evaluation
     731
     732    if fline is None or fline == '' or fline.isspace():
     733        fline = findline(fidi, ' < < < < < Best ')
     734        if fline is None:
     735            return
     736
     737    if isempty(dresp):
     738        dresp.append(struct())
     739        dresp[-1].best = struct()
     740
     741    print('Reading values for best function evaluation:')
     742
     743    while (fline != '' and not fline.isspace()) and strncmpi(fline, ' < < < < < Best ', 11):
     744        [ntokens, tokens] = fltokens(fline)
     745
     746    #  read and add best parameter(s)
     747
     748        if strncmpi(str(tokens[2]), 'parameter', 9):
     749            print('  ' + fline)
     750
     751            fline = fidi.readline()
     752            dresp.best.param = []
     753            dresp.best.descriptor = ''
     754
     755            while (fline != '' and not fline.isspace()) and not strncmpi(fline, ' < < < < < Best ', 11):
     756                [ntokens, tokens] = fltokens(fline)
     757                dresp.best.param.append([0])
     758                dresp.best.param[-1] = tokens[0]
     759                dresp.best.descriptor = str(tokens[1])
     760                fline = fidi.readline()
     761
     762        #  read and add best objective function(s)
     763        elif strncmpi(str(tokens[2]), 'objective', 9) and strncmpi(str(tokens[3]), 'function', 8):
     764            print('  ' + fline)
     765
     766            fline = fidi.readline()
     767            dresp.best.of = []
     768
     769            while (fline != '' and not fline.isspace()) and not strncmpi(fline, ' < < < < < Best ', 11):
     770                [ntokens, tokens] = fltokens(fline)
     771                dresp.best.of.append(0)
     772                dresp.best.of[-1] = tokens[0]
     773                fline = fidi.readline()
     774
     775        #  read and add best residual norms
     776        elif strncmpi(str(tokens[2]), 'residual', 8) and strncmpi(str(tokens[3]), 'norm', 4):
     777            print('  ' + fline)
     778            dresp.best.norm = tokens[5]
     779            dresp.best.hnormsq = tokens[10]
     780
     781            fline = fidi.readline()
     782
     783            while (fline != '' and not fline.isspace()) and not strncmpi(fline, ' < < < < < Best ', 11):
     784                fline = fidi.readline()
     785
     786        #  read and add best residual term(s)
     787        elif strncmpi(str(tokens[2]), 'residual', 8) and strncmpi(str(tokens[3]), 'term', 4):
     788            print('  ' + fline)
     789
     790            fline = fidi.readline()
     791            dresp.best.res = []
     792
     793            while (fline != '' and not fline.isspace()) and not strncmpi(fline, '<<<<<Best ', 11):
     794                [ntokens, tokens] = fltokens(fline)
     795                dresp.best.res.append(0)
     796                dresp.best.res[-1] = tokens[0]
     797                fline = fidi.readline()
     798
     799        #  read and add best constraint value(s)
     800        elif strncmpi(str(tokens[2]), 'constraint', 10) and strncmpi(str(tokens[3]), 'value', 5):
     801            print('  ' + fline)
     802
     803            fline = fidi.readline()
     804            dresp.best.nc = []
     805
     806            while (fline != '' and not fline.isspace()) and not strncmpi(fline, '<<<<<Best ', 11):
     807                [ntokens, tokens] = fltokens(fline)
     808                dresp.best.nc.append(0)
     809                dresp.best.nc[-1] = tokens[0]
     810                fline = fidi.readline()
     811
     812        #  read and add best data captured
     813        elif strncmpi(str(tokens[2]), 'data', 4) and strncmpi(str(tokens[3]), 'captured', 8):
     814            print('  ' + fline)
     815            dresp.best.eval = tokens[7]
     816
     817            fline = fidi.readline()
     818
     819            while (fline != '' and not fline.isspace()) and not strncmpi(fline, ' < < < < < Best ', 11):
     820                fline = fidi.readline()
     821
     822        #  read until next best or blank or end
     823        else:
     824            print('  ' + fline + '  (ignored)')
     825
     826            fline = fidi.readline()
     827
     828            while (fline != '' and not fline.isspace()) and not strncmpi(fline, ' < < < < < Best ', 11):
     829                fline = fidi.readline()
     830
     831    return dresp
     832    # }}}
     833
     834
     835def vum_read(fidi, dresp, fline):  # {{{
     836    #  function to find and read the volumetric uniformity measures
     837
     838    if fline is None or fline == '' or fline.isspace():
     839        fline = findline(fidi, 'The following lists volumetric uniformity measures')
     840        if fline is None:
     841            return
     842
     843    if isempty(dresp):
     844        dresp.append(struct())
     845        dresp[-1].vum = []
     846
     847    print('Reading measures for volumetric uniformity.')
     848    fline = fidi.readline()
     849    fline = fidi.readline()
     850
     851    while (fline != '' and not fline.isspace()):
     852        [ntokens, tokens] = fltokens(fline)
     853        check = tokens[0].lower()
     854        if check == 'chi':
     855            dresp.vum.chi = tokens[3]
     856        elif check == 'd':
     857            dresp.vum.d = tokens[3]
     858        elif check == 'h':
     859            dresp.vum.h = tokens[3]
     860        elif check == 'tau':
     861            dresp.vum.tau = tokens[3]
     862
     863        fline = fidi.readline()
     864
     865    return dresp
     866    # }}}
     867
     868
     869def itcomp_read(fidi, fline):  # {{{
     870    #  function to find and read the iterator completion
     871
     872    if fline is None or fline == '' or fline.isspace():
     873        while True:
     874            fline = findline(fidi, '<<<<< Iterator ')
     875            if fline is None:
     876                return
     877
     878            if (len(fline) > 26) and not (' completed.' in fline[15:]):
     879                break
     880
     881    [ntokens, tokens] = fltokens(fline)
     882    method = tokens[2]
     883    print('Dakota iterator \'' + str(method) + '\' completed.')
     884
     885    return method
     886    # }}}
     887
     888
     889def findline(fidi, string, goto_line=False):  # {{{
     890    #  function to find a file line starting with a specified string
     891    #  by default, return to previous position, before search
     892    #  if final argument is True, return such that fidi.readline() will read the line
     893    #    immediately after the searched line (or the first line if the search failed)
     894
     895    ipos = fidi.tell()
     896    npos = 0
     897    for fline in fidi:
     898        npos += len(fline)
     899        if (strncmpi(fline, string, len(string))):
     900            if goto_line:
     901                fidi.seek(npos, 0)
     902            else:
     903                fidi.seek(ipos, 0)
     904            return fline
     905
     906    #  issue warning and reset file position
     907    print('Warning: findline:str_not_found: String ' + str(string) + ' not found in file.')
     908    fidi.seek(ipos, 0)
     909    return None
     910    # }}}
     911
     912
     913def fltokens(fline):  # {{{
     914    #  function to parse a file line into tokens
     915    if fline is None:
     916        ntokens = -1
     917        tokens = []
     918        return [None, None]
     919
     920    if fline == '' or fline.isspace():
     921        ntokens = 0
     922        tokens = []
     923        return [None, None]
     924
     925    # split wherever ' ' (space) or ':' occur
     926    strings = re.split(':| ', fline)
     927    # remove blank strings
     928    strings = [a for a in strings if (a != '' and not a.isspace())]
     929
     930    ntokens = 0
     931    tokens = ['' for i in range(len(strings))]
     932
     933    # try to format substrings to float where possible and count tokens and ignore invalid values
     934    for i in range(len(strings)):
     935        if isempty(strings[i]):
     936            continue
     937
     938        # if the string is a number, make it a float, otherwise leave it alone
     939        try:
     940            tokens[ntokens] = float(strings[i])
     941        except ValueError:
     942            tokens[ntokens] = strings[i]
     943
     944        ntokens = ntokens + 1
     945
     946    return [ntokens, tokens]
     947    # }}}
  • issm/trunk-jpl/src/m/qmu/expandresponses.py

    r23716 r24213  
    22from helpers import *
    33
    4 def expandresponses(md,responses):
    5         #EXPANDRESPONSES - expand responses
    64
    7         fnames=fieldnames(responses)
     5def expandresponses(md, responses):
     6    #EXPANDRESPONSES - expand responses
    87
    9         # maintain order attributes were added
    10         dresp = OrderedStruct()
    11        
    12         for k in fnames:
    13                 v = eval('responses.{}'.format(k))
    14                 exec('dresp.{} = type(v)()'.format(k))
    15                 for j in range(len(v)):
    16                         #call setupdesign
    17                         exec('dresp.{}=QmuSetupResponses(md,dresp.{},v[j])'.format(k,k))
     8    fnames = fieldnames(responses)
    189
    19         return dresp
     10    # maintain order attributes were added
     11    dresp = OrderedStruct()
     12
     13    for k in fnames:
     14        v = eval('responses.{}'.format(k))
     15        exec('dresp.{} = type(v)()'.format(k))
     16        for j in range(len(v)):
     17            #call setupdesign
     18            exec('dresp.{}=QmuSetupResponses(md, dresp.{}, v[j])'.format(k, k))
     19
     20    return dresp
  • issm/trunk-jpl/src/m/qmu/expandvariables.py

    r23716 r24213  
    44from qmu_classes import *
    55
    6 def expandvariables(md,variables):
    76
    8         fnames=fieldnames(variables)
     7def expandvariables(md, variables):
    98
    10         # maintain order attributes were added
    11         dvar = OrderedStruct()
     9    fnames = fieldnames(variables)
    1210
    13         for k in fnames:
    14                 v = eval('variables.{}'.format(k))
     11    # maintain order attributes were added
     12    dvar = OrderedStruct()
    1513
    16                 #  for linear constraints, just copy
    17                 if isinstance(v,linear_inequality_constraint) or isinstance(v,linear_equality_constraint):
    18                         exec('dvar.{} = v'.format(k))
     14    for k in fnames:
     15        v = eval('variables.{}'.format(k))
    1916
    20                 #  for variables, call the setup function
    21                 else:
    22                         exec('dvar.{} = type(v)()'.format(k))
    23                         for j in range(len(v)):
    24                                 #call setupdesign
    25                                 exec('dvar.{}=QmuSetupVariables(md,dvar.{},v[j])'.format(k,k))
     17    #  for linear constraints, just copy
     18        if isinstance(v, linear_inequality_constraint) or isinstance(v, linear_equality_constraint):
     19            exec('dvar.{} = v'.format(k))
    2620
    27 
    28         return dvar
     21    #  for variables, call the setup function
     22        else:
     23            exec('dvar.{} = type(v)()'.format(k))
     24            for j in range(len(v)):
     25                #call setupdesign
     26                exec('dvar.{}=QmuSetupVariables(md, dvar.{}, v[j])'.format(k, k))
     27    return dvar
  • issm/trunk-jpl/src/m/qmu/helpers.py

    r23716 r24213  
    33from copy import deepcopy
    44
     5
    56class struct(object):
    6         '''An empty struct that can be assigned arbitrary attributes'''
    7         pass
     7    '''An empty struct that can be assigned arbitrary attributes'''
     8    pass
     9
    810
    911class Lstruct(list):
    10         '''
    11 An empty struct that can be assigned arbitrary attributes;
    12         but can also be accesed as a list. Eg. x.y = 'hello', x[:] = ['w','o','r','l','d']
     12    '''
     13An empty struct that can be assigned arbitrary attributes
     14    but can also be accesed as a list. Eg. x.y = 'hello', x[:] = ['w', 'o', 'r', 'l', 'd']
    1315
    1416Note that 'x' returns the array and x.__dict__ will only return
    15         attributes other than the array
    16 
    17 List-based and struct-based behaviors work normally, however they are referenced
    18         as if the other does not exist; len(x) corresponds only to
    19         the list component of x, len(x.a) corresponds to x.a, x.__dict__
    20         corresponds only to the non-x-list attributes
     17    attributes other than the array
     18
     19List - based and struct - based behaviors work normally, however they are referenced
     20    as if the other does not exist; len(x) corresponds only to
     21    the list component of x, len(x.a) corresponds to x.a, x.__dict__
     22    corresponds only to the non - x - list attributes
    2123
    2224Example uses:
    2325
    24 x = Lstruct(1,2,3,4) -> [1,2,3,4]
    25         x.a = 'hello'
    26         len(x) -> 4
    27         x.append(5)
    28         len(x) -> 5
    29         x[2] -> 3
    30         x.a -> 'hello'
    31         print x -> [1,2,3,4,5]
    32         x.__dict__ -> {'a': 'hello'}
    33         x.b = [6,7,8,9]
    34         x.b[-1] -> 9
    35         len(x.b) -> 4
    36 
    37 Other valid constructors: 
    38               x = Lstruct(1,2,3,a='hello') -> x.a -> 'hello', x -> [1,2,3]
    39               x = Lstruct(1,2,3)(a='hello')
    40               x = Lstruct([1,2,3],x='hello')
    41               x = Lstruct((1,2,3),a='hello')
    42 
    43 Credit: https://github.com/Vectorized/Python-Attribute-List
     26x = Lstruct(1, 2, 3, 4) - > [1, 2, 3, 4]
     27    x.a = 'hello'
     28    len(x) - > 4
     29    x.append(5)
     30    len(x) - > 5
     31    x[2] - > 3
     32    x.a - > 'hello'
     33    print x - > [1, 2, 3, 4, 5]
     34    x.__dict__ - > {'a': 'hello'}
     35    x.b = [6, 7, 8, 9]
     36    x.b[-1] - > 9
     37    len(x.b) - > 4
     38
     39Other valid constructors:
     40          x = Lstruct(1, 2, 3, a = 'hello') - > x.a - > 'hello', x - > [1, 2, 3]
     41          x = Lstruct(1, 2, 3)(a = 'hello')
     42          x = Lstruct([1, 2, 3], x = 'hello')
     43          x = Lstruct((1, 2, 3), a = 'hello')
     44
     45Credit: https: / / github.com / Vectorized / Python - Attribute-List
    4446'''
    4547
    46         def __new__(self, *args, **kwargs):
    47                 return super(Lstruct, self).__new__(self, args, kwargs)
    48 
    49         def __init__(self, *args, **kwargs):
    50                 if len(args) == 1 and hasattr(args[0], '__iter__'):
    51                         list.__init__(self, args[0])
    52                 else:
    53                         list.__init__(self, args)
    54                 self.__dict__.update(kwargs)
    55 
    56         def __call__(self, **kwargs):
    57                 self.__dict__.update(kwargs)
    58                 return self
     48    def __new__(self, *args, **kwargs):
     49        return super(Lstruct, self).__new__(self, args, kwargs)
     50
     51    def __init__(self, *args, **kwargs):
     52        if len(args) == 1 and hasattr(args[0], '__iter__'):
     53            list.__init__(self, args[0])
     54        else:
     55            list.__init__(self, args)
     56        self.__dict__.update(kwargs)
     57
     58    def __call__(self, **kwargs):
     59        self.__dict__.update(kwargs)
     60        return self
     61
    5962
    6063class OrderedStruct(object):
    61         '''
    62 A form of dictionary-like structure that maintains the
    63         ordering in which its fields/attributes and their
    64         corresponding values were added.
     64    '''
     65A form of dictionary - like structure that maintains the
     66    ordering in which its fields / attributes and their
     67    corresponding values were added.
    6568
    6669OrderedDict is a similar device, however this class
    67         can be used as an "ordered struct/class" giving
    68         it much more flexibility in practice. It is
    69         also easier to work with fixed valued keys in-code.
     70    can be used as an "ordered struct / class" giving
     71    it much more flexibility in practice. It is
     72    also easier to work with fixed valued keys in - code.
    7073
    7174Eg:
    72 OrderedDict:            # a bit clumsy to use and look at
    73         x['y'] = 5
    74 
    75 OrderedStruct:          # nicer to look at, and works the same way
    76         x.y    = 5
    77         OR
    78         x['y'] = 5      # supports OrderedDict-style usage
    79    
    80 Supports: len(x), str(x), for-loop iteration.
     75OrderedDict:  # a bit clumsy to use and look at
     76    x['y'] = 5
     77
     78OrderedStruct:  # nicer to look at, and works the same way
     79    x.y = 5
     80    OR
     81    x['y'] = 5  # supports OrderedDict - style usage
     82
     83Supports: len(x), str(x), for - loop iteration.
    8184Has methods: x.keys(), x.values(), x.items(), x.iterkeys()
    8285
    8386Usage:
    84         x = OrderedStruct()
    85         x.y = 5
    86         x.z = 6
    87         OR
    88         x = OrderedStruct('y',5,'z',6)
    89 
    90         # note below that the output fields as iterables are always
    91         #       in the same order as the inputs
    92 
    93         x.keys()   -> ['y','z']
    94         x.values() -> [5,6]
    95         x.items()  -> [('y',6),('z',6)]
    96         x.__dict__ -> [('y',6),('z',6)]
    97         vars(x)    -> [('y',6),('z',6)]
    98 
    99         x.y    -> 5
    100         x['y'] -> 5
    101         x.z    -> 6
    102         x['z'] -> 6
    103 
    104         for i in x:     # same as x.items()
    105                 print i
    106         ->
    107         ('x',5)
    108         ('y',6)
    109 
    110         Note: to access internal fields use dir(x)
    111                 (input fields will be included, but
    112                 are not technically internals)
    113         '''
    114    
    115         def __init__(self,*args):
    116                 '''Provided either nothing or a series of strings, construct a structure that will,
     87    x = OrderedStruct()
     88    x.y = 5
     89    x.z = 6
     90    OR
     91    x = OrderedStruct('y', 5, 'z', 6)
     92
     93    # note below that the output fields as iterables are always
     94    #    in the same order as the inputs
     95
     96    x.keys() - > ['y', 'z']
     97    x.values() - > [5, 6]
     98    x.items() - > [('y', 6), ('z', 6)]
     99    x.__dict__ - > [('y', 6), ('z', 6)]
     100    vars(x) - > [('y', 6), ('z', 6)]
     101
     102    x.y - > 5
     103    x['y'] - > 5
     104    x.z - > 6
     105    x['z'] - > 6
     106
     107    for i in x:  # same as x.items()
     108        print i
     109     - >
     110    ('x', 5)
     111    ('y', 6)
     112
     113    Note: to access internal fields use dir(x)
     114        (input fields will be included, but
     115        are not technically internals)
     116    '''
     117
     118    def __init__(self, *args):
     119        '''Provided either nothing or a series of strings, construct a structure that will,
    117120when accessed as a list, return its fields in the same order in which they were provided'''
    118121
    119                 # keys and values
    120                 self._k = []
    121                 self._v = []
    122            
    123                 if len(args) == 0:
    124                         return
    125 
    126                 if len(args) % 2 != 0:
    127                         raise RuntimeError('OrderedStruct input error: OrderedStruct(*args) call must have an even number of inputs, in key/value pairs')
    128 
    129                 for a,b in zip(args[0::2],args[1::2]):
    130                         exec(('self.%s = b')%(a))
    131                 return
    132 
    133         def __repr__(self):
    134                 s = 'OrderedStruct:\n\t'
    135                 for a,b in zip(self._k,self._v):
    136                         s += str(a) + ' : ' + str(b) + '\n\t'
    137                 return s
    138 
    139         def __len__(self):
    140                 return len(self._k)
    141 
    142         def __getattr__(self, attr):
    143                 # called when __getattribute__ fails
    144                 try:
    145                         # check if in keys, then access
    146                         _k = object.__getattribute__(self, '_k')
    147                         _v = object.__getattribute__(self, '_v')
    148                         pos = _k.index(attr)
    149                         return _v[pos]
    150                 except ValueError:
    151                         # not in keys, not a valid attribute, raise error
    152                         raise AttributeError('Attribute "'+str(attr)+'" does not exist.')
    153 
    154         def __getattribute__(self, attr):
    155                 # re-route calls to vars(x) and x.__dict__
    156                 if attr == '__dict__':
    157                         return OrderedDict(list(self.items()))
    158                 else:
    159                         return object.__getattribute__(self, attr)
    160 
    161         def __getitem__(self, key):
    162                 return self._v[self._k.index(key)]
    163 
    164         def __setattr__(self, name, value):
    165                 #super(OrderedStruct, self).__setattr__(name,value)
    166                 if name in ['_k','_v']:
    167                         object.__setattr__(self, name, value)
    168                 elif name not in self._k:
    169                         self._k.append(name)
    170                         self._v.append(value)
    171                 else:
    172                         self._v[self._k.index(name)] = value
    173 
    174         def __delattr__(self, key):
    175                 if name not in self._k:
    176                         raise AttributeError('Attribute "'+str(attr)+'" does not exist or is an internal field and therefore cannot be deleted safely.')
    177                 self.pop(key)
    178 
    179         def __iter__(self):
    180                 for a,b in zip(self._k,self._v):
    181                         yield(a,b)
    182 
    183         def __copy__(self):
    184                 # shallow copy, hard copies of trivial attributes,
    185                 # references to structures like lists/OrderedDicts
    186                 # unless redefined as an entirely different structure
    187                 newInstance = type(self)()
    188                 for k,v in list(self.items()):
    189                         exec(('newInstance.%s = v')%(k))
    190                 return newInstance
    191 
    192         def __deepcopy__(self,memo=None):
    193                 # hard copy of all attributes
    194                 # same thing but call deepcopy recursively
    195                 # technically not how it should be done,
    196                 # (see https://docs.python.org/2/library/copy.html#copy.deepcopy )
    197                 # but will generally work in this case
    198                 newInstance = type(self)()
    199                 for k,v in list(self.items()):
    200                         exec(('newInstance.%s = deepcopy(v)')%(k))
    201                 return newInstance
    202 
    203         def iterkeys(self):
    204                 for k in self._k:
    205                         yield k
    206 
    207         def pop(self,key):
    208                 i = self._k.index(key)
    209                 k = self._k.pop(i)
    210                 v = self._v.pop(i)
    211                 #exec('del self.%s')%(key)
    212                 return (k,v)
    213 
    214         def keys(self):
    215                 return self._k
    216         def values(self):
    217                 return self._v
    218         def items(self):
    219                 return list(zip(self._k,self._v))
     122    # keys and values
     123        self._k = []
     124        self._v = []
     125
     126        if len(args) == 0:
     127            return
     128
     129        if len(args) % 2 != 0:
     130            raise RuntimeError('OrderedStruct input error: OrderedStruct(*args) call must have an even number of inputs, in key / value pairs')
     131
     132        for a, b in zip(args[0::2], args[1::2]):
     133            exec(('self.%s = b') % (a))
     134        return
     135
     136    def __repr__(self):
     137        s = 'OrderedStruct:\n\t'
     138        for a, b in zip(self._k, self._v):
     139            s += str(a) + ' : ' + str(b) + '\n\t'
     140        return s
     141
     142    def __len__(self):
     143        return len(self._k)
     144
     145    def __getattr__(self, attr):
     146        # called when __getattribute__ fails
     147        try:
     148            # check if in keys, then access
     149            _k = object.__getattribute__(self, '_k')
     150            _v = object.__getattribute__(self, '_v')
     151            pos = _k.index(attr)
     152            return _v[pos]
     153        except ValueError:
     154            # not in keys, not a valid attribute, raise error
     155            raise AttributeError('Attribute "' + str(attr) + '" does not exist.')
     156
     157    def __getattribute__(self, attr):
     158        # re-route calls to vars(x) and x.__dict__
     159        if attr == '__dict__':
     160            return OrderedDict(list(self.items()))
     161        else:
     162            return object.__getattribute__(self, attr)
     163
     164    def __getitem__(self, key):
     165        return self._v[self._k.index(key)]
     166
     167    def __setattr__(self, name, value):
     168        #super(OrderedStruct, self).__setattr__(name, value)
     169        if name in ['_k', '_v']:
     170            object.__setattr__(self, name, value)
     171        elif name not in self._k:
     172            self._k.append(name)
     173            self._v.append(value)
     174        else:
     175            self._v[self._k.index(name)] = value
     176
     177    def __delattr__(self, key):
     178        if name not in self._k:
     179            raise AttributeError('Attribute "' + str(attr) + '" does not exist or is an internal field and therefore cannot be deleted safely.')
     180        self.pop(key)
     181
     182    def __iter__(self):
     183        for a, b in zip(self._k, self._v):
     184            yield(a, b)
     185
     186    def __copy__(self):
     187        # shallow copy, hard copies of trivial attributes,
     188        # references to structures like lists / OrderedDicts
     189        # unless redefined as an entirely different structure
     190        newInstance = type(self)()
     191        for k, v in list(self.items()):
     192            exec(('newInstance.%s = v') % (k))
     193        return newInstance
     194
     195    def __deepcopy__(self, memo=None):
     196        # hard copy of all attributes
     197        # same thing but call deepcopy recursively
     198        # technically not how it should be done,
     199        # (see https: / / docs.python.org / 2 / library / copy.html  #copy.deepcopy )
     200        # but will generally work in this case
     201        newInstance = type(self)()
     202        for k, v in list(self.items()):
     203            exec(('newInstance.%s = deepcopy(v)') % (k))
     204        return newInstance
     205
     206    def iterkeys(self):
     207        for k in self._k:
     208            yield k
     209
     210    def pop(self, key):
     211        i = self._k.index(key)
     212        k = self._k.pop(i)
     213        v = self._v.pop(i)
     214    #exec('del self.%s')%(key)
     215        return (k, v)
     216
     217    def keys(self):
     218        return self._k
     219
     220    def values(self):
     221        return self._v
     222
     223    def items(self):
     224        return list(zip(self._k, self._v))
     225
    220226
    221227def isempty(x):
    222         '''returns true if object is +\-infinity, NaN, None, '', has length 0, or is an
    223         array/matrix composed only of such components (includes mixtures of "empty" types)'''
    224 
    225         if type(x) in [list,np.ndarray,tuple]:
    226                 if np.size(x) == 0:
    227                         return True
    228 
    229                 # if anything in that array/matrix is not empty, the whole thing is not empty
    230                 try:
    231                         x = np.concatenate(x)
    232                 except (ValueError):
    233                         pass
    234                 for i in x:
    235                         if not isempty(i):
    236                                 return False
    237                 # the array isn't empty but is full of "empty" type objects, so return True
    238                 return True
    239 
    240         if x == None:
    241                 return True
    242         if type(x) == str and x.lower() in ['','nan','none','inf','infinity','-inf','-infinity']:
    243                 return True
    244 
    245         # type may not be understood by numpy, in which case it definitely is NOT NaN or infinity
    246         try:
    247                 if np.isnan(x) or np.isinf(x):
    248                         return True
    249         except (TypeError):
    250                 pass
    251 
    252         # if all of that fails, then it is not empty
    253         return False
    254 
    255 def fieldnames(x,ignore_internals = True):
    256         '''returns a list of fields of x
    257         ignore_internals ignores all fieldnames starting with '_' and is True by default'''
    258         result = list(vars(x).keys())
    259 
    260         if ignore_internals:
    261                 result = [i for i in result if i[0] != '_']
    262 
    263         return result
    264 
    265 def isfield(x,y,ignore_internals=True):
    266         '''is y is a field of x?
    267         ignore_internals ignores all fieldnames starting with '_' and is True by default'''
    268         return str(y) in fieldnames(x,ignore_internals)
     228    '''
     229    returns true if object is +  - infinity, NaN, None, '', has length 0, or is an
     230    array / matrix composed only of such components (includes mixtures of "empty" types)'''
     231
     232    if type(x) in [list, np.ndarray, tuple]:
     233        if np.size(x) == 0:
     234            return True
     235
     236    # if anything in that array / matrix is not empty, the whole thing is not empty
     237        try:
     238            x = np.concatenate(x)
     239        except (ValueError):
     240            pass
     241        for i in x:
     242            if not isempty(i):
     243                return False
     244    # the array isn't empty but is full of "empty" type objects, so return True
     245        return True
     246
     247    if x is None:
     248        return True
     249    if type(x) == str and x.lower() in ['', 'nan', 'none', 'inf', 'infinity', ' - inf', ' - infinity']:
     250        return True
     251
     252    # type may not be understood by numpy, in which case it definitely is NOT NaN or infinity
     253    try:
     254        if np.isnan(x) or np.isinf(x):
     255            return True
     256    except (TypeError):
     257        pass
     258
     259    # if all of that fails, then it is not empty
     260    return False
     261
     262
     263def fieldnames(x, ignore_internals=True):
     264    '''returns a list of fields of x
     265    ignore_internals ignores all fieldnames starting with '_' and is True by default'''
     266    result = list(vars(x).keys())
     267
     268    if ignore_internals:
     269        result = [i for i in result if i[0] != '_']
     270
     271    return result
     272
     273
     274def isfield(x, y, ignore_internals=True):
     275    '''is y is a field of x?
     276    ignore_internals ignores all fieldnames starting with '_' and is True by default'''
     277    return str(y) in fieldnames(x, ignore_internals)
     278
    269279
    270280def fileparts(x):
    271         '''
    272         given:   "path/path/.../file_name.ext"
    273         returns: [path,file_name,ext] (list of strings)'''
    274         try:
    275                 a = x[:x.rindex('/')]           #path
    276                 b = x[x.rindex('/')+1:]         #full filename
    277         except ValueError:                      #no path provided
    278                 a = ''
    279                 b = x
    280         try:
    281                 c,d = b.split('.')              #file name, extension
    282         except ValueError:                      #no extension provided
    283                 return [a,b,'']
    284         return [a,c,'.'+d]
     281    '''
     282    given:   "path / path / ... / file_name.ext"
     283    returns: [path, file_name, ext] (list of strings)'''
     284    try:
     285        a = x[:x.rindex('/')]  #path
     286        b = x[x.rindex('/') + 1:]  #full filename
     287    except ValueError:  #no path provided
     288        a = ''
     289        b = x
     290    try:
     291        c, d = b.split('.')  #file name, extension
     292    except ValueError:  #no extension provided
     293        return [a, b, '']
     294    return [a, c, '.' + d]
     295
    285296
    286297def fullfile(*args):
    287         '''
    288         use:
    289 
    290         fullfile(path, path, ... , file_name+ext)
    291         returns: "path/path/.../file_name.ext"
    292 
    293         with all arguments as strings with no "/"s
    294 
    295         regarding extensions and the '.':
    296         as final arguments ('file.doc') or ('file'+'.doc') will work;
    297         ('final','.doc'), and the like, will not (you'd get 'final/.doc')
     298    '''
     299    use:
     300
     301    fullfile(path, path, ... , file_name + ext)
     302    returns: "path / path / ... / file_name.ext"
     303
     304    with all arguments as strings with no " / "s
     305
     306    regarding extensions and the '.':
     307    as final arguments ('file.doc') or ('file' + '.doc') will work
     308    ('final', '.doc'), and the like, will not (you'd get 'final/.doc')
    298309'''
    299         result = str(args[0])
    300         for i in range(len(args[1:])):
    301                 # if last argument wasn't empty, add a '/' between it and the next argument
    302                 if len(args[i]) != 0:
    303                         result += '/'+str(args[i+1])
    304                 else:
    305                         result += str(args[i+1])
    306         return result
    307 
    308 def findline(fidi,s):
    309         '''
    310         returns full first line containing s (as a string), or None
    311         Note: will include any newlines or tabs that occur in that line,
    312         use str(findline(f,s)).strip() to remove these, str() in case result is None'''
    313         for line in fidi:
    314                 if s in line:
    315                         return line
    316         return None
    317 
    318 def empty_nd_list(shape,filler=0.,as_numpy_ndarray=False):
    319         '''
    320 returns a python list of the size/shape given (shape must be int or tuple)
    321         the list will be filled with the optional second argument
    322 
    323         filler is 0.0 by default
    324 
    325         as_numpy_ndarray will return the result as a numpy.ndarray and is False by default
    326 
    327         Note: the filler must be either None/np.nan/float('NaN'), float/double, or int
    328                 other numpy and float values such as +/- np.inf will also work
     310    result = str(args[0])
     311    for i in range(len(args[1:])):
     312        # if last argument wasn't empty, add a '/' between it and the next argument
     313        if len(args[i]) != 0:
     314            result += '/' + str(args[i + 1])
     315        else:
     316            result += str(args[i + 1])
     317    return result
     318
     319
     320def findline(fidi, s):
     321    '''
     322    returns full first line containing s (as a string), or None
     323    Note: will include any newlines or tabs that occur in that line,
     324    use str(findline(f, s)).strip() to remove these, str() in case result is None'''
     325    for line in fidi:
     326        if s in line:
     327            return line
     328    return None
     329
     330
     331def empty_nd_list(shape, filler=0., as_numpy_ndarray=False):
     332    '''
     333returns a python list of the size / shape given (shape must be int or tuple)
     334    the list will be filled with the optional second argument
     335
     336    filler is 0.0 by default
     337
     338    as_numpy_ndarray will return the result as a numpy.ndarray and is False by default
     339
     340    Note: the filler must be either None / np.nan / float('NaN'), float / double, or int
     341        other numpy and float values such as + / - np.inf will also work
    329342
    330343use:
    331         empty_nd_list((5,5), 0.0)       # returns a 5x5 matrix of 0.0's
    332         empty_nd_list(5, None)          # returns a 5 long array of NaN
     344    empty_nd_list((5, 5), 0.0)  # returns a 5x5 matrix of 0.0's
     345    empty_nd_list(5, None)  # returns a 5 long array of NaN
    333346'''
    334         result = np.empty(shape)
    335         result.fill(filler)
    336         if not as_numpy_ndarray:
    337                 return result.tolist()
    338         return result
    339 
     347    result = np.empty(shape)
     348    result.fill(filler)
     349    if not as_numpy_ndarray:
     350        return result.tolist()
     351    return result
  • issm/trunk-jpl/src/m/qmu/importancefactors.py

    r24173 r24213  
    22from MatlabFuncs import *
    33
    4 def importancefactors(md,variablename,responsename):
    5         '''IMPORTANCEFACTORS - compute importance factors for a certain variable and response.
    6        
     4
     5def importancefactors(md, variablename, responsename):
     6    '''IMPORTANCEFACTORS - compute importance factors for a certain variable and response.
     7
    78Usage:
    8         factors=importancefactors(md,variablename,responsename)
    9        
    10         Example: factors=importancefactors(md,'drag','max_vel')
     9    factors = importancefactors(md, variablename, responsename)
     10
     11    Example: factors = importancefactors(md, 'drag', 'max_vel')
    1112'''
    1213
    13         variablenamelength=len(variablename)
     14    variablenamelength = len(variablename)
    1415
    15         #go through all response functions and find the one corresponding to the correct responsename
    16         responsefunctions=md.qmu.results.dresp_out
    17         found=-1
    18         for i in range(len(responsefunctions)):
    19                 if strcmpi(responsefunctions[i].descriptor,responsename):
    20                         found=i
    21                         break
    22         if found < 0:
    23                 raise RuntimeError('importancefactors error message: could not find correct response function')
     16    #go through all response functions and find the one corresponding to the correct responsename
     17    responsefunctions = md.qmu.results.dresp_out
     18    found = -1
     19    for i in range(len(responsefunctions)):
     20        if strcmpi(responsefunctions[i].descriptor, responsename):
     21            found = i
     22            break
     23    if found < 0:
     24        raise RuntimeError('importancefactors error message: could not find correct response function')
    2425
    25         responsefunctions=responsefunctions[found]
    26         nfun=np.size(responsefunctions.var)
     26    responsefunctions = responsefunctions[found]
     27    nfun = np.size(responsefunctions.var)
    2728
    28         #Now recover response to the correct design variable
    29         importancefactors=[]
    30         count=0
    31         for i in range(nfun):
    32                 desvar=responsefunctions.var[i]
    33                 if strncmpi(desvar,variablename,variablenamelength):
    34                         importancefactors.append(responsefunctions.impfac[i])
    35                         count=count+1
    36        
    37         if count==0:
    38                 raise RuntimeError('importancefactors error message: either response does not exist, or importancefactors are empty')
     29    #Now recover response to the correct design variable
     30    importancefactors = []
     31    count = 0
     32    for i in range(nfun):
     33        desvar = responsefunctions.var[i]
     34        if strncmpi(desvar, variablename, variablenamelength):
     35            importancefactors.append(responsefunctions.impfac[i])
     36            count = count + 1
    3937
    40         importancefactors = np.array(importancefactors)
     38    if count == 0:
     39        raise RuntimeError('importancefactors error message: either response does not exist, or importancefactors are empty')
    4140
    42         if count==1: #we have scalar
    43                 factors=importancefactors
    44                 return factors
    45         elif count==np.max(md.qmu.epartition+1):
    46                 #distribute importance factor
    47                 factors=importancefactors[(md.qmu.epartition.conj().T).flatten().astype(int)]
    48                 #md.qmu.partition was created to index "c" style
    49         else:
    50                 #distribute importance factor
    51                 factors=importancefactors[(md.qmu.vpartition.conj().T).flatten().astype(int)]
    52                 #md.qmu.partition was created to index "c" style
     41    importancefactors = np.array(importancefactors)
    5342
    54         #weight importancefactors by area
    55         #if numel(factors)==md.mesh.numberofvertices,
    56         #       #get areas for each vertex.
    57         #       aire=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y)
    58         #       num_elements_by_node=md.nodeconnectivity(:,)
    59         #       grid_aire=zeros(md.mesh.numberofvertices,1)
    60         #       for i=1:md.mesh.numberofvertices,
    61         #               for j=1:num_elements_by_node(i),
    62         #                       grid_aire(i)=grid_aire(i)+aire(md.nodeconnectivity(i,j))
    63         #               
    64         #       
    65         #       factors=factors./grid_aire
    66         #
    67         return factors
     43    if count == 1:  #we have scalar
     44        factors = importancefactors
     45        return factors
     46    elif count == np.max(md.qmu.epartition + 1):
     47        #distribute importance factor
     48        factors = importancefactors[(md.qmu.epartition.conj().T).flatten().astype(int)]
     49    #md.qmu.partition was created to index "c" style
     50    else:
     51        #distribute importance factor
     52        factors = importancefactors[(md.qmu.vpartition.conj().T).flatten().astype(int)]
     53    #md.qmu.partition was created to index "c" style
     54
     55    #weight importancefactors by area
     56    #if numel(factors) == md.mesh.numberofvertices,
     57    #  #get areas for each vertex.
     58    #    aire = GetAreas(md.mesh.elements, md.mesh.x, md.mesh.y)
     59    #    num_elements_by_node = md.nodeconnectivity(:, )
     60    #    grid_aire = zeros(md.mesh.numberofvertices, 1)
     61    #    for i = 1:md.mesh.numberofvertices,
     62    #        for j = 1:num_elements_by_node(i),
     63    #            grid_aire(i)=grid_aire(i) + aire(md.nodeconnectivity(i, j))
     64    #
     65    #
     66    #    factors = factors. / grid_aire
     67    #
     68    return factors
  • issm/trunk-jpl/src/m/qmu/lclist_write.py

    r23716 r24213  
    88from linear_inequality_constraint import *
    99
    10 def lclist_write(fidi,cstring,cstring2,dvar):
    11         '''
     10
     11def lclist_write(fidi, cstring, cstring2, dvar):
     12    '''
    1213function to write linear constraint list
    1314'''
    14         if dvar == None:
    15                 return
     15    if dvar is None:
     16        return
    1617
    17         #  put linear constraints into lists for writing
     18    #  put linear constraints into lists for writing
    1819
    19         nvar=0
    20         pmatrix=[]
    21         plower =[]
    22         pupper =[]
    23         ptarget=[]
    24         pstype =[]
    25         pscale =[]
     20    nvar = 0
     21    pmatrix = []
     22    plower = []
     23    pupper = []
     24    ptarget = []
     25    pstype = []
     26    pscale = []
    2627
    27         fnames=fieldnames(dvar)
    28         for i in range(np.size(fnames)):
    29                 nvar=nvar+np.size(vars(dvar)[fnames[i]])
    30                 pmatrix=[pmatrix,prop_matrix(vars(dvar)[fnames[i]])]
    31                 plower =[plower ,prop_lower(vars(dvar)[fnames[i]]) ]
    32                 pupper =[pupper ,prop_upper(vars(dvar)[fnames[i]]) ]
    33                 ptarget=[ptarget,prop_target(vars(dvar)[fnames[i]])]
    34                 pstype =[pstype ,prop_stype(vars(dvar)[fnames[i]]) ]
    35                 pscale =[pscale ,prop_scale(vars(dvar)[fnames[i]]) ]
     28    fnames = fieldnames(dvar)
     29    for i in range(np.size(fnames)):
     30        nvar = nvar + np.size(vars(dvar)[fnames[i]])
     31        pmatrix = [pmatrix, prop_matrix(vars(dvar)[fnames[i]])]
     32        plower = [plower, prop_lower(vars(dvar)[fnames[i]])]
     33        pupper = [pupper, prop_upper(vars(dvar)[fnames[i]])]
     34        ptarget = [ptarget, prop_target(vars(dvar)[fnames[i]])]
     35        pstype = [pstype, prop_stype(vars(dvar)[fnames[i]])]
     36        pscale = [pscale, prop_scale(vars(dvar)[fnames[i]])]
    3637
     38    #  write linear constraints
     39    print('  Writing ' + str(nvar) + ' ' + cstring + ' linear constraints.')
    3740
    38         #  write linear constraints
     41    if len(pmatrix) != 0:
     42        fidi.write('\t  ' + cstring2 + '_matrix =\n')
     43        vector_write(fidi, '\t    ', pmatrix, 6, 76)
    3944
    40         print('  Writing '+str(nvar)+' '+cstring+' linear constraints.')
     45    if len(plower) != 0:
     46        fidi.write('\t  ' + cstring2 + '_lower_bounds =\n')
     47        vector_write(fidi, '\t    ', plower, 6, 76)
    4148
    42         if len(pmatrix) != 0:
    43                 fidi.write('\t  '+cstring2+'_matrix =\n')
    44                 vector_write(fidi,'\t    ',pmatrix,6,76)
     49    if len(pupper) != 0:
     50        fidi.write('\t  ' + cstring2 + '_upper_bounds =\n')
     51        vector_write(fidi, '\t    ', pupper, 6, 76)
    4552
    46         if len(plower) != 0:
    47                 fidi.write('\t  '+cstring2+'_lower_bounds =\n')
    48                 vector_write(fidi,'\t    ',plower ,6,76)
     53    if len(ptarget) != 0:
     54        fidi.write('\t  ' + cstring2 + '_targets =\n')
     55        vector_write(fidi, '\t    ', ptarget, 6, 76)
    4956
    50         if len(pupper) != 0:
    51                 fidi.write('\t  '+cstring2+'_upper_bounds =\n')
    52                 vector_write(fidi,'\t    ',pupper ,6,76)
     57    if len(pstype) != 0:
     58        fidi.write('\t  ' + cstring2 + '_scale_types =\n')
     59        vector_write(fidi, '\t    ', pstype, 6, 76)
    5360
    54         if len(ptarget) != 0:
    55                 fidi.write('\t  '+cstring2+'_targets =\n')
    56                 vector_write(fidi,'\t    ',ptarget,6,76)
    57 
    58         if len(pstype) != 0:
    59                 fidi.write('\t  '+cstring2+'_scale_types =\n')
    60                 vector_write(fidi,'\t    ',pstype ,6,76)
    61 
    62         if len(pscale) != 0:
    63                 fidi.write('\t  '+cstring2+'_scales =\n')
    64                 vector_write(fidi,'\t    ',pscale ,6,76)
    65 
    66 
    67 
     61    if len(pscale) != 0:
     62        fidi.write('\t  ' + cstring2 + '_scales =\n')
     63        vector_write(fidi, '\t    ', pscale, 6, 76)
  • issm/trunk-jpl/src/m/qmu/param_write.py

    r23716 r24213  
    22from helpers import *
    33
    4 def param_write(fidi,sbeg,pname,smid,s,params):
    5         '''
     4
     5def param_write(fidi, sbeg, pname, smid, s, params):
     6    '''
    67function to write a parameter
    78'''
    8         if not isfield(params,pname):
    9                 print('WARNING: param_write:param_not_found: Parameter {} not found in structure.'.format(pname))
    10                 return
     9    if not isfield(params, pname):
     10        print('WARNING: param_write:param_not_found: Parameter {} not found in structure.'.format(pname))
     11        return
    1112
    12         params_pname = vars(params)[pname]
     13    params_pname = vars(params)[pname]
    1314
    14         if type(params_pname) == bool and (not params_pname):
    15                 return
     15    if type(params_pname) == bool and (not params_pname):
     16        return
    1617
    17         if type(params_pname) == bool:
    18                 fidi.write(sbeg+str(pname)+s)
     18    if type(params_pname) == bool:
     19        fidi.write(sbeg + str(pname) + s)
    1920
    20         elif type(params_pname) in [str]:
    21                 fidi.write(sbeg+pname+smid+params_pname+s)
     21    elif type(params_pname) in [str]:
     22        fidi.write(sbeg + pname + smid + params_pname + s)
    2223
    23         elif type(params_pname) in [int, float]:
    24                 fidi.write(sbeg+str(pname)+smid+str(params_pname)+s)
     24    elif type(params_pname) in [int, float]:
     25        fidi.write(sbeg + str(pname) + smid + str(params_pname) + s)
  • issm/trunk-jpl/src/m/qmu/postqmu.py

    r23716 r24213  
    1 from os import system,getpid,stat
     1from os import getpid, stat
    22from os.path import isfile
    33from subprocess import Popen
    4 
    54from dakota_out_parse import *
    65from helpers import *
    76
    8 def postqmu(md,qmufile,qmudir='qmu'+str(getpid())):
    9         '''
    10 Deal with dakota output results in files.
    117
    12 INPUT function
    13         md=postqmu(md,qmufile,qmudir)
     8def postqmu(md, qmufile, qmudir='qmu' + str(getpid())):
     9    '''
     10    Deal with dakota output results in files.
    1411
    15 By default: qmudir = 'qmu'+pid (eg. 'qmu2189')
    16 '''
     12    INPUT function
     13    md = postqmu(md, qmufile, qmudir)
    1714
    18         # check to see if dakota returned errors in the err file
    19         qmuerrfile=str(md.miscellaneous.name)+'.qmu.err'
     15    By default: qmudir = 'qmu' + pid (eg. 'qmu2189')
     16    '''
    2017
    21         if isfile(qmuerrfile) and stat(qmuerrfile).st_size > 0:
    22                 with open(qmuerrfile,'r') as fide:
    23                         fline=fide.read()
    24                         print(fline)
     18    # check to see if dakota returned errors in the err file
     19    qmuerrfile = str(md.miscellaneous.name) + '.qmu.err'
    2520
    26                 raise RuntimeError('Dakota returned error in '+str(qmuerrfile)+' file.  '+str(qmudir)+' directory retained.')
     21    if isfile(qmuerrfile) and stat(qmuerrfile).st_size > 0:
     22        with open(qmuerrfile, 'r') as fide:
     23            fline = fide.read()
     24            print(fline)
    2725
    28         # parse inputs and results from dakota
    29         qmuinfile=str(md.miscellaneous.name)+'.qmu.in'
    30         qmuoutfile=str(md.miscellaneous.name)+'.qmu.out'
     26        raise RuntimeError('Dakota returned error in ' + str(qmuerrfile) + ' file.  ' + str(qmudir) + ' directory retained.')
    3127
    32         # unused and unimplemented
    33         #[method,dvar,dresp_in]=dakota_in_parse(qmuinfile)
    34         #dakotaresults.method   =method
    35         #dakotaresults.dvar     =dvar
    36         #dakotaresults.dresp_in =dresp_in
     28    # parse inputs and results from dakota
     29    qmuinfile = str(md.miscellaneous.name) + '.qmu.in'
     30    qmuoutfile = str(md.miscellaneous.name) + '.qmu.out'
    3731
    38         [method,dresp_out,scm,pcm,srcm,prcm]=dakota_out_parse(qmuoutfile)
    39         dakotaresults = struct()
    40         dakotaresults.dresp_out=dresp_out
    41         dakotaresults.scm      =scm
    42         dakotaresults.pcm      =pcm
    43         dakotaresults.srcm     =srcm
    44         dakotaresults.prcm     =prcm
     32    # unused and unimplemented
     33    #[method, dvar, dresp_in] = dakota_in_parse(qmuinfile)
     34    #dakotaresults.method   =method
     35    #dakotaresults.dvar     =dvar
     36    #dakotaresults.dresp_in =dresp_in
    4537
    46         if isfile('dakota_tabular.dat'):
    47                 # only need a subset of the outputs; dakota_out_parse handles .dat seperately
    48                 [method,dresp_dat,_,_,_,_]=dakota_out_parse('dakota_tabular.dat')
    49                 dakotaresults.dresp_dat=dresp_dat
     38    [method, dresp_out, scm, pcm, srcm, prcm] = dakota_out_parse(qmuoutfile)
     39    dakotaresults = struct()
     40    dakotaresults.dresp_out = dresp_out
     41    dakotaresults.scm = scm
     42    dakotaresults.pcm = pcm
     43    dakotaresults.srcm = srcm
     44    dakotaresults.prcm = prcm
    5045
    51         # put dakotaresults in their right location.
    52         md.results.dakota=dakotaresults
     46    if isfile('dakota_tabular.dat'):
     47        # only need a subset of the outputs; dakota_out_parse handles .dat seperately
     48        [method, dresp_dat, _, _, _, _] = dakota_out_parse('dakota_tabular.dat')
     49        dakotaresults.dresp_dat = dresp_dat
    5350
    54         # move all the individual function evalutations into zip files
    55         if not md.qmu.isdakota:
    56                 Popen('zip -mq params.in.zip params.in.[1-9]*',shell=True)
    57                 Popen('zip -mq results.out.zip results.out.[1-9]*',shell=True)
    58                 Popen('zip -mq matlab.out.zip matlab*.out.[1-9]*',shell=True)
     51    # put dakotaresults in their right location.
     52    md.results.dakota = dakotaresults
    5953
    60         return md
     54    # move all the individual function evalutations into zip files
     55    if not md.qmu.isdakota:
     56        Popen('zip - mq params.in.zip params.in.[1 - 9] * ', shell=True)
     57        Popen('zip - mq results.out.zip results.out.[1 - 9] * ', shell=True)
     58        Popen('zip - mq matlab.out.zip matlab * .out.[1 - 9] * ', shell=True)
     59
     60    return md
  • issm/trunk-jpl/src/m/qmu/preqmu.py

    r23716 r24213  
    77from process_qmu_response_data import *
    88
    9 def preqmu(md,options):
    10         '''QMU - apply Quantification of Margins and Uncertainties techniques
    11         to a solution sequence (like stressbalance.py, progonstic.py, etc ...),
    12         using the Dakota software from Sandia.
     9
     10def preqmu(md, options):
     11    '''QMU - apply Quantification of Margins and Uncertainties techniques
     12    to a solution sequence (like stressbalance.py, progonstic.py, etc ...),
     13    using the Dakota software from Sandia.
    1314
    1415   options come from the solve.py routine. They can include Dakota options:
    1516
    16         qmudir:  any directory where to run the qmu analysis
    17         qmufile: input file for Dakota
     17    qmudir:  any directory where to run the qmu analysis
     18    qmufile: input file for Dakota
    1819
    19         (ivap, iresp, imethod, and iparams are currently unimplemented)
    20         ivar: selection number for variables input (if several are specified in variables)
    21         iresp: same thing for response functions
    22         imethod: same thing for methods
    23         iparams: same thing for params
     20    (ivap, iresp, imethod, and iparams are currently unimplemented)
     21    ivar: selection number for variables input (if several are specified in variables)
     22    iresp: same thing for response functions
     23    imethod: same thing for methods
     24    iparams: same thing for params
    2425
    25         overwrite: overwrite qmudir before analysis
     26    overwrite: overwrite qmudir before analysis
    2627'''
    2728
    28         print('preprocessing dakota inputs')
    29         qmudir    = options.getfieldvalue('qmudir','qmu'+str(os.getpid()))
    30         # qmudir = ['qmu_' datestr(now,'yyyymmdd_HHMMSS')]
    31         qmufile   = options.getfieldvalue('qmufile','qmu')
    32         # qmufile cannot be changed unless ????script.sh is also changed
    33         overwrite = options.getfieldvalue('overwrite','n')
    34         ivar      = options.getfieldvalue('ivar',0)
    35         iresp     = options.getfieldvalue('iresp',0)
    36         imethod   = options.getfieldvalue('imethod',0)
    37         iparams   = options.getfieldvalue('iparams',0)
     29    print('preprocessing dakota inputs')
     30    qmudir = options.getfieldvalue('qmudir', 'qmu' + str(os.getpid()))
     31    # qmudir = ['qmu_' datestr(now, 'yyyymmdd_HHMMSS')]
     32    qmufile = options.getfieldvalue('qmufile', 'qmu')
     33    # qmufile cannot be changed unless ????script.sh is also changed
     34    overwrite = options.getfieldvalue('overwrite', 'n')
     35    options.addfielddefault('ivar', 0)
     36    options.addfielddefault('iresp', 0)
     37    options.addfielddefault('imethod', 0)
     38    options.addfielddefault('iparams', 0)
    3839
    39         # first create temporary directory in which we will work
    40         if strncmpi(overwrite,'y',1):
    41                 os.system('rm -rf '+qmudir+'/*')
    42         else:
    43                 # does the directory exist? if so, then error out
    44                 if os.path.isdir(qmudir):
    45                         raise RuntimeError('Existing '+str(options.qmudir)+' directory, cannot overwrite. Specify "overwrite","y" option in solve arguments.')
    46        
    47         # os.makedirs() raises error when dir exists, matlab's mkdir() does not
    48         if not os.path.isdir(qmudir):
    49                 os.makedirs(qmudir)
    50         os.chdir(qmudir)
     40    # first create temporary directory in which we will work
     41    if strncmpi(overwrite, 'y', 1):
     42        os.system('rm -rf ' + qmudir + '/* ')
     43    else:
     44        # does the directory exist? if so, then error out
     45        if os.path.isdir(qmudir):
     46            raise RuntimeError('Existing ' + str(options.qmudir) + ' directory, cannot overwrite. Specify "overwrite", "y" option in solve arguments.')
    5147
    52         # when running in library mode, the in file needs to be called md.miscellaneous.name.qmu.in
    53         qmufile=md.miscellaneous.name
     48    # os.makedirs() raises error when dir exists, matlab's mkdir() does not
     49    if not os.path.isdir(qmudir):
     50        os.makedirs(qmudir)
     51    os.chdir(qmudir)
    5452
    55         # retrieve variables and resposnes for this particular analysis.
    56         #print type(md.qmu.variables)
    57         #print md.qmu.variables.__dict__
    58         #print ivar
    59         variables=md.qmu.variables#[ivar]
    60         responses=md.qmu.responses#[iresp]
     53    # when running in library mode, the in file needs to be called md.miscellaneous.name.qmu.in
     54    qmufile = md.miscellaneous.name
    6155
    62         # expand variables and responses
    63         #print variables.__dict__
    64         #print responses.__dict__
    65         variables=expandvariables(md,variables)
    66         responses=expandresponses(md,responses)
     56    # retrieve variables and resposnes for this particular analysis.
     57    #print type(md.qmu.variables)
     58    #print md.qmu.variables.__dict__
     59    #print ivar
     60    variables = md.qmu.variables  #[ivar]
     61    responses = md.qmu.responses  #[iresp]
    6762
    68         # go through variables and responses, and check they don't have more than
    69         #   md.qmu.numberofpartitions values. Also determine numvariables and numresponses
    70         #[[[
    71         numvariables=0
    72         variable_fieldnames=fieldnames(variables)
    73         for i in range(len(variable_fieldnames)):
    74                 field_name=variable_fieldnames[i]
    75                 fieldvariables=vars(variables)[field_name]
    76                 for j in range(np.size(fieldvariables)):
    77                         if strncmpi(fieldvariables[j].descriptor,'\'scaled_',8) and str2int(fieldvariables[j].descriptor,'last')>md.qmu.numberofpartitions:
    78                                 raise RuntimeError('preqmu error message: one of the expanded variables has more values than the number of partitions (setup in md.qmu.numberofpartitions)')
     63    # expand variables and responses
     64    #print variables.__dict__
     65    #print responses.__dict__
     66    variables = expandvariables(md, variables)
     67    responses = expandresponses(md, responses)
    7968
    80                 numvariables=numvariables+np.size(vars(variables)[field_name])
     69    # go through variables and responses, and check they don't have more than
     70    #   md.qmu.numberofpartitions values. Also determine numvariables and numresponses
     71    #[[[
     72    numvariables = 0
     73    variable_fieldnames = fieldnames(variables)
     74    for i in range(len(variable_fieldnames)):
     75        field_name = variable_fieldnames[i]
     76        fieldvariables = vars(variables)[field_name]
     77        for j in range(np.size(fieldvariables)):
     78            if strncmpi(fieldvariables[j].descriptor, '\'scaled_', 8) and str2int(fieldvariables[j].descriptor, 'last') > md.qmu.numberofpartitions:
     79                raise RuntimeError('preqmu error message: one of the expanded variables has more values than the number of partitions (setup in md.qmu.numberofpartitions)')
    8180
    82         numresponses=0
    83         response_fieldnames=fieldnames(responses)
    84         for i in range(len(response_fieldnames)):
    85                 field_name=response_fieldnames[i]
    86                 fieldresponses=vars(responses)[field_name]
    87                 for j in range(np.size(fieldresponses)):
    88                         if strncmpi(fieldresponses[j].descriptor,'\'scaled_',8) and str2int(fieldresponses[j].descriptor,'last')>md.qmu.numberofpartitions:
    89                                 raise RuntimeError('preqmu error message: one of the expanded responses has more values than the number of partitions (setup in md.qmu.numberofpartitions)')
     81        numvariables = numvariables + np.size(vars(variables)[field_name])
    9082
    91                 numresponses=numresponses+np.size(vars(responses)[field_name])
     83    numresponses = 0
     84    response_fieldnames = fieldnames(responses)
     85    for i in range(len(response_fieldnames)):
     86        field_name = response_fieldnames[i]
     87        fieldresponses = vars(responses)[field_name]
     88        for j in range(np.size(fieldresponses)):
     89            if strncmpi(fieldresponses[j].descriptor, '\'scaled_', 8) and str2int(fieldresponses[j].descriptor, 'last') > md.qmu.numberofpartitions:
     90                raise RuntimeError('preqmu error message: one of the expanded responses has more values than the number of partitions (setup in md.qmu.numberofpartitions)')
    9291
    93         #]]]
     92        numresponses = numresponses + np.size(vars(responses)[field_name])
    9493
    95         # create in file for dakota
    96         #dakota_in_data(md.qmu.method[imethod],variables,responses,md.qmu.params[iparams],qmufile)
    97         dakota_in_data(md.qmu.method,variables,responses,md.qmu.params,qmufile)
     94    #]]]
    9895
    99 #====================================================================================#
    100         #REMOVED FOR DEBUGGING ONLY:
    101         #os.system('rm -rf '+str(md.miscellaneous.name)+'.py')
    102 #====================================================================================#
     96    # create in file for dakota
     97    #dakota_in_data(md.qmu.method[imethod], variables, responses, md.qmu.params[iparams], qmufile)
     98    dakota_in_data(md.qmu.method, variables, responses, md.qmu.params, qmufile)
    10399
    104         # build a list of variables and responses descriptors. the list is not expanded.
    105         #[[[
    106         variabledescriptors=[]
    107         # variable_fieldnames=fieldnames(md.qmu.variables[ivar])
    108         variable_fieldnames=fieldnames(md.qmu.variables)
    109         for i in range(len(variable_fieldnames)):
    110                 field_name=variable_fieldnames[i]
    111                 #fieldvariables=vars(md.qmu.variables[ivar])[field_name]
    112                 fieldvariables=vars(md.qmu.variables)[field_name]
    113                 if type(fieldvariables) in [list,np.ndarray]:
    114                         for j in range(np.size(fieldvariables)):
    115                                 variabledescriptors.append(fieldvariables[j].descriptor)
    116                 else:
    117                         variabledescriptors.append(fieldvariables.descriptor)
     100    #====================================================================================  #
     101    #REMOVED FOR DEBUGGING ONLY:
     102    #os.system('rm -rf ' + str(md.miscellaneous.name) + '.py')
     103    #====================================================================================  #
    118104
     105    # build a list of variables and responses descriptors. the list is not expanded.
     106    #{{{
     107    variabledescriptors = []
     108    # variable_fieldnames = fieldnames(md.qmu.variables[ivar])
     109    variable_fieldnames = fieldnames(md.qmu.variables)
     110    for i in range(len(variable_fieldnames)):
     111        field_name = variable_fieldnames[i]
     112    #fieldvariables = vars(md.qmu.variables[ivar])[field_name]
     113        fieldvariables = vars(md.qmu.variables)[field_name]
     114        if type(fieldvariables) in [list, np.ndarray]:
     115            for j in range(np.size(fieldvariables)):
     116                variabledescriptors.append(fieldvariables[j].descriptor)
     117        else:
     118            variabledescriptors.append(fieldvariables.descriptor)
    119119
    120         responsedescriptors=[]
    121         # response_fieldnames=fieldnames(md.qmu.responses[iresp])
    122         response_fieldnames=fieldnames(md.qmu.responses)
    123         for i in range(len(response_fieldnames)):
    124                 field_name=response_fieldnames[i]
    125                 #fieldresponses=vars(md.qmu.responses[iresp])[field_name]
    126                 fieldresponses=vars(md.qmu.responses)[field_name]
    127                 for j in range(np.size(fieldresponses)):
    128                         responsedescriptors.append(fieldresponses[j].descriptor)
    129        
     120    responsedescriptors = []
     121    # response_fieldnames = fieldnames(md.qmu.responses[iresp])
     122    response_fieldnames = fieldnames(md.qmu.responses)
     123    for i in range(len(response_fieldnames)):
     124        field_name = response_fieldnames[i]
     125    #fieldresponses = vars(md.qmu.responses[iresp])[field_name]
     126        fieldresponses = vars(md.qmu.responses)[field_name]
     127        for j in range(np.size(fieldresponses)):
     128            responsedescriptors.append(fieldresponses[j].descriptor)
     129    #}}}
    130130
    131         #]]]
     131    # register the fields that will be needed by the Qmu model.
     132    md.qmu.numberofresponses = numresponses
     133    md.qmu.variabledescriptors = variabledescriptors
     134    md.qmu.responsedescriptors = responsedescriptors
    132135
    133         # register the fields that will be needed by the Qmu model.
    134         md.qmu.numberofresponses=numresponses
    135         md.qmu.variabledescriptors=variabledescriptors
    136         md.qmu.responsedescriptors=responsedescriptors
     136    # now, we have to provide all the info necessary for the solutions to compute the
     137    # responses. For ex, if mass_flux is a response, we need a profile of points.
     138    # For a misfit, we need the observed velocity, etc ...
     139    md = process_qmu_response_data(md)
    137140
    138         # now, we have to provide all the info necessary for the solutions to compute the
    139         # responses. For ex, if mass_flux is a response, we need a profile of points.
    140         # For a misfit, we need the observed velocity, etc ...
    141         md=process_qmu_response_data(md)
    142 
    143         return md
     141    return md
  • issm/trunk-jpl/src/m/qmu/process_qmu_response_data.py

    r23095 r24213  
    22import numpy as np
    33from MeshProfileIntersection import *
    4 
    54from helpers import empty_nd_list
    65
     6
    77def process_qmu_response_data(md):
    8         '''
    9 PROCESS_QMU_RESPONSE_DATA - process any data necessary for the solutions to process the data. 
     8    '''
     9PROCESS_QMU_RESPONSE_DATA - process any data necessary for the solutions to process the data.
    1010
    11         Usage: md=process_qmu_response_data(md)
    12        
    13         See also PREQMU, PRESOLVE
     11    Usage: md = process_qmu_response_data(md)
     12
     13    See also PREQMU, PRESOLVE
    1414'''
    1515
    16         # preliminary data
    17         process_mass_flux_profiles=0
    18         num_mass_flux=0
     16    # preliminary data
     17    process_mass_flux_profiles = 0
     18    num_mass_flux = 0
    1919
    20         # loop through response descriptors, and act accordingly
    21         for i in range(np.size(md.qmu.responsedescriptors)):
     20    # loop through response descriptors, and act accordingly
     21    for i in range(np.size(md.qmu.responsedescriptors)):
    2222
    23                 # Do we have to process  mass flux profiles?
    24                 if strncmpi(md.qmu.responsedescriptors[i],'indexed_MassFlux',16):
    25                         num_mass_flux+=1
    26                         process_mass_flux_profiles=1
     23        # Do we have to process  mass flux profiles?
     24        if strncmpi(md.qmu.responsedescriptors[i], 'indexed_MassFlux', 16):
     25            num_mass_flux += 1
     26            process_mass_flux_profiles = 1
    2727
    28         # deal with mass flux profiles
    29         if process_mass_flux_profiles:
    30                 # we need a profile of points on which to compute the mass_flux, is it here?
    31                 if type(md.qmu.mass_flux_profiles) == float and np.isnan(md.qmu.mass_flux_profiles):
    32                         raise RuntimeError('process_qmu_response_data error message: could not find a mass_flux exp profile!')
    33        
    34                 if type(md.qmu.mass_flux_profiles) != list:
    35                         raise RuntimeError('process_qmu_response_data error message: qmu_mass_flux_profiles field should be a list of domain outline names')
    36        
    37                 if np.size(md.qmu.mass_flux_profiles) == 0:
    38                         raise RuntimeError('process_qmu_response_data error message: qmu_mass_flux_profiles cannot be empty!')
    39        
    40                 if num_mass_flux!=np.size(md.qmu.mass_flux_profiles):
    41                         raise RuntimeError('process_qmu_response_data error message: qmu_mass_flux_profiles should be of the same size as the number of MassFlux responses asked for in the Qmu analysis')
    42        
    43                 # ok, process the domains named in qmu_mass_flux_profiles,
    44                 #     to build a list of segments (MatArray)           
    45                 md.qmu.mass_flux_segments = empty_nd_list((num_mass_flux,1))
     28    # deal with mass flux profiles
     29    if process_mass_flux_profiles:
     30        # we need a profile of points on which to compute the mass_flux, is it here?
     31        if type(md.qmu.mass_flux_profiles) == float and np.isnan(md.qmu.mass_flux_profiles):
     32            raise RuntimeError('process_qmu_response_data error message: could not find a mass_flux exp profile!')
    4633
    47                 for i in range(num_mass_flux):
    48                         md.qmu.mass_flux_segments[i]=np.array(MeshProfileIntersection(md.mesh.elements,md.mesh.x,md.mesh.y,md.qmu.mass_flux_profile_directory+'/'+md.qmu.mass_flux_profiles[i])[0])
     34        if type(md.qmu.mass_flux_profiles) != list:
     35            raise RuntimeError('process_qmu_response_data error message: qmu_mass_flux_profiles field should be a list of domain outline names')
    4936
    50         return md
     37        if np.size(md.qmu.mass_flux_profiles) == 0:
     38            raise RuntimeError('process_qmu_response_data error message: qmu_mass_flux_profiles cannot be empty!')
    5139
     40        if num_mass_flux != np.size(md.qmu.mass_flux_profiles):
     41            raise RuntimeError('process_qmu_response_data error message: qmu_mass_flux_profiles should be of the same size as the number of MassFlux responses asked for in the Qmu analysis')
     42
     43    # ok, process the domains named in qmu_mass_flux_profiles,
     44    #     to build a list of segments (MatArray)
     45        md.qmu.mass_flux_segments = empty_nd_list((num_mass_flux, 1))
     46
     47        for i in range(num_mass_flux):
     48            md.qmu.mass_flux_segments[i] = np.array(MeshProfileIntersection(md.mesh.elements, md.mesh.x, md.mesh.y, md.qmu.mass_flux_profile_directory + '/' + md.qmu.mass_flux_profiles[i])[0])
     49
     50    return md
  • issm/trunk-jpl/src/m/qmu/rlev_write.py

    r23735 r24213  
    44from vector_write import *
    55from param_write import *
    6 
    76#import relevent qmu classes
    87from MatlabArray import *
    98
    10 def rlevi_write(fidi,ltype,levels):
    11         '''
     9
     10def rlevi_write(fidi, ltype, levels):
     11    '''
    1212  function to each type of response level
    1313'''
    1414
    15         fidi.write('\t  num_'+str(ltype)+' =')
    16         levels = np.array(levels)
     15    fidi.write('\t  num_' + str(ltype) + ' = ')
     16    levels = np.array(levels)
    1717
    18         if len(levels) > 0 and type(levels[0]) in [list,np.ndarray]:
    19                 for i in range(len(levels)):
    20                         fidi.write(' ' + str(len(levels[i])))
    21         else:
    22                 fidi.write(' ' + str(len(levels)))
     18    if len(levels) > 0 and type(levels[0]) in [list, np.ndarray]:
     19        for i in range(len(levels)):
     20            fidi.write(' ' + str(len(levels[i])))
     21    else:
     22        fidi.write(' ' + str(len(levels)))
    2323
    24         fidi.write('\n')
    25         fidi.write('\t  '+str(ltype)+' =\n')
     24    fidi.write('\n')
     25    fidi.write('\t  ' + str(ltype) + ' =\n')
    2626
    27         # check if we have a vector of vectors, or just 1 vector
    28         if np.size(levels) > 0 and type(levels[0]) in [list,np.ndarray]:
    29                 for i in range(len(levels)):
    30                         if len(levels[i]) != 0:
    31                                 vector_write(fidi,'\t    ',levels[i],8,76)
    32         else:
    33                 vector_write(fidi,'\t    ',levels,8,76)
     27    # check if we have a vector of vectors, or just 1 vector
     28    if np.size(levels) > 0 and type(levels[0]) in [list, np.ndarray]:
     29        for i in range(len(levels)):
     30            if len(levels[i]) != 0:
     31                vector_write(fidi, '\t    ', levels[i], 8, 76)
     32    else:
     33        vector_write(fidi, '\t    ', levels, 8, 76)
    3434
    35         return
     35    return
    3636
    37 def rlev_write(fidi,dresp,cstring,params):
    38         '''
     37
     38def rlev_write(fidi, dresp, cstring, params):
     39    '''
    3940  function to write response levels
    4041'''
    41         from response_function import response_function
     42    from response_function import response_function
    4243
    43         if len(dresp) == 0 or len(fieldnames(dresp[0])) == 0:
    44                 return
     44    if len(dresp) == 0 or len(fieldnames(dresp[0])) == 0:
     45        return
    4546
    46         if type(dresp) in [list,np.ndarray]:
    47                 if len(dresp) > 0 and type(dresp[0]) == struct:
    48                         func = eval(cstring)
    49                 else:
    50                         func = type(dresp[0])
    51         elif type(dresp) == struct:
    52                 # type is defined within struct's contents
    53                 func = None
    54                 dresp = [dresp]
    55         else:
    56                 func = type(dresp)
    57                 dresp = [dresp]
     47    if type(dresp) in [list, np.ndarray]:
     48        if len(dresp) > 0 and type(dresp[0]) == struct:
     49            func = eval(cstring)
     50        else:
     51            func = type(dresp[0])
     52    elif type(dresp) == struct:
     53        # type is defined within struct's contents
     54        func = None
     55        dresp = [dresp]
     56    else:
     57        func = type(dresp)
     58        dresp = [dresp]
    5859
    59         # put responses into lists for writing
     60    # put responses into lists for writing
    6061
    61         nresp = 0
    62         respl = []
    63         probl = []
    64         rell = []
    65         grell = []
     62    nresp = 0
     63    respl = []
     64    probl = []
     65    rell = []
     66    grell = []
    6667
    67         # assume all fields in dvar[0:n] are consistent (ex. all are normal_uncertain)
    68         #   which will always be true since this is called per field
    69         fnames=fieldnames(dresp[0])
    70         for j in range(len(dresp)):
    71                 for i in range(np.size(fnames)):
    72                         if func == None:
    73                                 func = type(vars(dresp[j])[fnames[i]])
     68    # assume all fields in dvar[0:n] are consistent (ex. all are normal_uncertain)
     69    #   which will always be true since this is called per field
     70    fnames = fieldnames(dresp[0])
     71    for j in range(len(dresp)):
     72        for i in range(np.size(fnames)):
     73            if func is None:
     74                func = type(vars(dresp[j])[fnames[i]])
    7475
    75                         nresp+=1
    76                         [respli,probli,relli,grelli]=func.prop_levels([vars(dresp[j])[fnames[i]]])
    77                         respl.extend(respli)
    78                         probl.extend(probli)
    79                         rell.extend(relli)
    80                         grell.extend(grelli)
     76            nresp += 1
     77            [respli, probli, relli, grelli] = func.prop_levels([vars(dresp[j])[fnames[i]]])
     78            respl.extend(respli)
     79            probl.extend(probli)
     80            rell.extend(relli)
     81            grell.extend(grelli)
    8182
     83    # write response levels
     84    respl = allempty(respl)
     85    probl = allempty(probl)
     86    rell = allempty(rell)
     87    grell = allempty(grell)
    8288
    83         # write response levels
     89    param_write(fidi, '\t  ', 'distribution', ' ', '\n', params)
     90    if len(respl) != 0:
     91        rlevi_write(fidi, 'response_levels', respl)
     92        param_write(fidi, '\t  ', 'compute', ' ', '\n', params)
    8493
    85         respl=allempty(respl)
    86         probl=allempty(probl)
    87         rell =allempty(rell)
    88         grell=allempty(grell)
     94    if len(probl) != 0:
     95        rlevi_write(fidi, 'probability_levels', probl)
    8996
    90         param_write(fidi,'\t  ','distribution',' ','\n',params)
    91         if len(respl) != 0:
    92             rlevi_write(fidi,'response_levels',respl)
    93             param_write(fidi,'\t  ','compute',' ','\n',params)
     97    if len(rell) != 0:
     98        rlevi_write(fidi, 'reliability_levels', rell)
    9499
    95         if len(probl) != 0:
    96             rlevi_write(fidi,'probability_levels',probl)
     100    if len(grell) != 0:
     101        rlevi_write(fidi, 'gen_reliability_levels', grell)
    97102
    98         if len(rell) != 0:
    99             rlevi_write(fidi,'reliability_levels',rell)
    100 
    101         if len(grell) != 0:
    102             rlevi_write(fidi,'gen_reliability_levels',grell)
    103 
    104         return
     103    return
  • issm/trunk-jpl/src/m/qmu/rlist_write.py

    r23716 r24213  
    11import numpy as np
    2 
    32#move this later
    43from helpers import *
     
    76from response_function import *
    87
    9 def rlist_write(fidi,cstring,cstring2,dresp,rdesc):
    10         '''
     8
     9def rlist_write(fidi, cstring, cstring2, dresp, rdesc):
     10    '''
    1111  function to write response list
    1212'''
    1313
    14         if dresp == None:
    15                 return
     14    if dresp is None:
     15        return
    1616
    17         func = eval(cstring)
     17    func = eval(cstring)
    1818
    19         if type(dresp) not in [list,np.ndarray]:
    20                 dresp = [dresp]
     19    if type(dresp) not in [list, np.ndarray]:
     20        dresp = [dresp]
    2121
    22         # put responses into lists for writing
    23         # (and accumulate descriptors into list for subsequent writing)
     22    # put responses into lists for writing
     23    # (and accumulate descriptors into list for subsequent writing)
    2424
    25         nresp=0
    26         pstype =[]
    27         pscale =[]
    28         pweight=[]
    29         plower =[]
    30         pupper =[]
    31         ptarget=[]
     25    nresp = 0
     26    pstype = []
     27    pscale = []
     28    pweight = []
     29    plower = []
     30    pupper = []
     31    ptarget = []
    3232
    33         # assume all fields in dvar[0:n] are consistent (ex. all are normal_uncertain)
    34         #   which will always be true since this is called per field
    35         fnames=fieldnames(dresp[0])
    36         for j in range(len(dresp)):
    37                 for i in range(np.size(fnames)):
    38                         nresp=nresp+np.size(vars(dresp[j])[fnames[i]])
    39                         pstype.extend( func.prop_stype( vars(dresp[j])[fnames[i]]))
    40                         pscale.extend( func.prop_scale( vars(dresp[j])[fnames[i]]))
    41                         pweight.extend(func.prop_weight(vars(dresp[j])[fnames[i]]))
    42                         plower.extend( func.prop_lower( vars(dresp[j])[fnames[i]]))
    43                         pupper.extend( func.prop_upper( vars(dresp[j])[fnames[i]]))
    44                         ptarget.extend(func.prop_target(vars(dresp[j])[fnames[i]]))
    45                         rdesc.extend(  func.prop_desc(  vars(dresp[j])[fnames[i]],fnames[i]))
     33    # assume all fields in dvar[0:n] are consistent (ex. all are normal_uncertain)
     34    #   which will always be true since this is called per field
     35    fnames = fieldnames(dresp[0])
     36    for j in range(len(dresp)):
     37        for i in range(np.size(fnames)):
     38            nresp = nresp + np.size(vars(dresp[j])[fnames[i]])
     39            pstype.extend(func.prop_stype(vars(dresp[j])[fnames[i]]))
     40            pscale.extend(func.prop_scale(vars(dresp[j])[fnames[i]]))
     41            pweight.extend(func.prop_weight(vars(dresp[j])[fnames[i]]))
     42            plower.extend(func.prop_lower(vars(dresp[j])[fnames[i]]))
     43            pupper.extend(func.prop_upper(vars(dresp[j])[fnames[i]]))
     44            ptarget.extend(func.prop_target(vars(dresp[j])[fnames[i]]))
     45            rdesc.extend(func.prop_desc(vars(dresp[j])[fnames[i]], fnames[i]))
    4646
     47    # write responses
     48    print('  Writing ' + str(nresp) + ' ' + cstring + ' responses.')
    4749
    48         # write responses
     50    if strcmp(cstring, 'calibration_terms') == 1:
     51        fidi.write('\t' + cstring + ' = ' + str(nresp) + '\n')
    4952
    50         print('  Writing '+str(nresp)+' '+cstring+' responses.')
     53    else:
     54        fidi.write('\tnum_' + cstring + 's = ' + str(nresp) + '\n')
    5155
    52         if strcmp(cstring,'calibration_terms')==1:
    53                 fidi.write('\t'+cstring+' = '+str(nresp)+'\n')
    54        
    55         else:
    56                 fidi.write('\tnum_'+cstring+'s = '+str(nresp)+'\n')
     56    if not isempty(pstype):
     57        fidi.write('\t  ' + cstring2 + '_scale_types =\n')
     58        vector_write(fidi, '\t    ', pstype, 6, 76)
    5759
    58         if not isempty(pstype):
    59                 fidi.write('\t  '+cstring2+'_scale_types =\n')
    60                 vector_write(fidi,'\t    ',pstype ,6,76)
     60    if not isempty(pscale):
     61        fidi.write('\t  ' + cstring2 + '_scales =\n')
     62        vector_write(fidi, '\t    ', pscale, 6, 76)
    6163
    62         if not isempty(pscale):
    63                 fidi.write('\t  '+cstring2+'_scales =\n')
    64                 vector_write(fidi,'\t    ',pscale ,6,76)
     64    if not isempty(pweight):
     65        if cstring2 == 'objective_function':
     66            fidi.write('\t  multi_objective_weights =\n')
     67            vector_write(fidi, '\t    ', pweight, 6, 76)
     68        elif cstring2 == 'least_squares_term':
     69            fidi.write('\t  least_squares_weights =\n')
     70            vector_write(fidi, '\t    ', pweight, 6, 76)
    6571
    66         if not isempty(pweight):
    67                 if cstring2 == 'objective_function':
    68                         fidi.write('\t  multi_objective_weights =\n')
    69                         vector_write(fidi,'\t    ',pweight,6,76)
    70                 elif cstring2 == 'least_squares_term':
    71                         fidi.write('\t  least_squares_weights =\n')
    72                         vector_write(fidi,'\t    ',pweight,6,76)
     72    if not isempty(plower):
     73        fidi.write('\t  ' + cstring2 + '_lower_bounds =\n')
     74        vector_write(fidi, '\t    ', plower, 6, 76)
    7375
    74         if not isempty(plower):
    75                 fidi.write('\t  '+cstring2+'_lower_bounds =\n')
    76                 vector_write(fidi,'\t    ',plower ,6,76)
     76    if not isempty(pupper):
     77        fidi.write('\t  ' + cstring2 + '_upper_bounds =\n')
     78        vector_write(fidi, '\t    ', pupper, 6, 76)
    7779
    78         if not isempty(pupper):
    79                 fidi.write('\t  '+cstring2+'_upper_bounds =\n')
    80                 vector_write(fidi,'\t    ',pupper ,6,76)
     80    if not isempty(ptarget):
     81        fidi.write('\t  ' + cstring2 + '_targets =\n')
     82        vector_write(fidi, '\t    ', ptarget, 6, 76)
    8183
    82         if not isempty(ptarget):
    83                 fidi.write('\t  '+cstring2+'_targets =\n')
    84                 vector_write(fidi,'\t    ',ptarget,6,76)
     84    # because qmu in files need '' for strings
     85    for i in range(len(rdesc)):
     86        if type(rdesc[i]) in [list, np.ndarray]:
     87            for j in range(len(rdesc[i])):
     88                rdesc[i][j] = "'" + rdesc[i][j] + "'"
     89        else:
     90            rdesc[i] = "'" + rdesc[i] + "'"
    8591
    86         # because qmu in files need '' for strings
    87         for i in range(len(rdesc)):
    88                 if type(rdesc[i]) in [list,np.ndarray]:
    89                         for j in range(len(rdesc[i])):
    90                                 rdesc[i][j] = "'" + rdesc[i][j] + "'"
    91                 else:
    92                         rdesc[i] = "'" + rdesc[i] + "'"
    93 
    94         return rdesc
     92    return rdesc
  • issm/trunk-jpl/src/m/qmu/setupdesign/QmuSetupResponses.py

    r23095 r24213  
    22from copy import deepcopy
    33
    4 def QmuSetupResponses(md,dresp,responses):
    54
    6         #get descriptor
    7         descriptor=responses.descriptor
     5def QmuSetupResponses(md, dresp, responses):
    86
    9         #decide whether this is a distributed response, which will drive whether we expand it into npart values,
    10         #or if we just carry it forward as is.
     7    #get descriptor
     8    descriptor = responses.descriptor
    119
    12         #ok, key off according to type of descriptor:
    13         if strncmp(descriptor,'scaled_',7):
    14                 #we have a scaled response, expand it over the partition.
    15                 #ok, dealing with semi-discrete distributed response. Distribute according to how many
    16                 #partitions we want
    17                 for j in range(md.qmu.numberofpartitions):
    18                         dresp.append(deepcopy(responses))
    19                         dresp[-1].descriptor=str(responses.descriptor)+'_'+str(j+1)
    20         else:
    21                 dresp.append(responses)
     10    #decide whether this is a distributed response, which will drive whether we expand it into npart values,
     11    #or if we just carry it forward as is.
    2212
    23         return dresp
     13    #ok, key off according to type of descriptor:
     14    if strncmp(descriptor, 'scaled_', 7):
     15        #we have a scaled response, expand it over the partition.
     16        #ok, dealing with semi - discrete distributed response. Distribute according to how many
     17        #partitions we want
     18        for j in range(md.qmu.numberofpartitions):
     19            dresp.append(deepcopy(responses))
     20            dresp[-1].descriptor = str(responses.descriptor) + '_' + str(j + 1)
     21    else:
     22        dresp.append(responses)
     23
     24    return dresp
  • issm/trunk-jpl/src/m/qmu/setupdesign/QmuSetupVariables.py

    r23095 r24213  
    11from MatlabFuncs import *
    2 from uniform_uncertain import*
     2from uniform_uncertain import *
    33from normal_uncertain import *
    44from copy import deepcopy
    55
    6 def QmuSetupVariables(md,dvar,variables):
    76
    8         #get descriptor
    9         descriptor=variables.descriptor
     7def QmuSetupVariables(md, dvar, variables):
    108
    11         #decide whether this is a distributed variable, which will drive whether we expand it into npart values,
    12         #or if we just carry it forward as is.
     9    #get descriptor
     10    descriptor = variables.descriptor
    1311
    14         #ok, key off according to type of descriptor:
    15         if strncmp(descriptor,'scaled_',7):
    16                 #we have a scaled variable, expand it over the partition.
     12    #decide whether this is a distributed variable, which will drive whether we expand it into npart values,
     13    #or if we just carry it forward as is.
    1714
    18                 if isinstance(variables,uniform_uncertain):
    19                         if ((type(variables.lower) in [list,np.ndarray] and len(variables.lower) > md.qmu.numberofpartitions) or (type(variables.upper) in [list,np.ndarray] and len(variables.upper) > md.qmu.numberofpartitions)):
    20                                 raise RuntimeError('QmuSetupDesign error message: upper and lower should be either a scalar or a "npart" length vector')
    21                        
    22                 elif isinstance(variables,normal_uncertain):
    23                         if type(variables.stddev) in [list,np.ndarray] and len(variables.stddev) > md.qmu.numberofpartitions:
    24                                 raise RuntimeError('QmuSetupDesign error message: stddev should be either a scalar or a "npart" length vector')
     15    #ok, key off according to type of descriptor:
     16    if strncmp(descriptor, 'scaled_', 7):
     17        #we have a scaled variable, expand it over the partition.
     18        if isinstance(variables, uniform_uncertain):
     19            if ((type(variables.lower) in [list, np.ndarray] and len(variables.lower) > md.qmu.numberofpartitions) or (type(variables.upper) in [list, np.ndarray] and len(variables.upper) > md.qmu.numberofpartitions)):
     20                raise RuntimeError('QmuSetupDesign error message: upper and lower should be either a scalar or a "npart" length vector')
    2521
    26                 #ok, dealing with semi-discrete distributed variable. Distribute according to how many
    27                 #partitions we want
     22        elif isinstance(variables, normal_uncertain):
     23            if type(variables.stddev) in [list, np.ndarray] and len(variables.stddev) > md.qmu.numberofpartitions:
     24                raise RuntimeError('QmuSetupDesign error message: stddev should be either a scalar or a "npart" length vector')
    2825
    29                 for j in range(md.qmu.numberofpartitions):
    30                         dvar.append(deepcopy(variables))
    31                         # "'" is because qmu.in files need for strings to be in actual ''
    32                         # must also account for whether we are given 1 instance or an array of instances
     26        #ok, dealing with semi - discrete distributed variable. Distribute according to how many
     27        #partitions we want
     28        for j in range(md.qmu.numberofpartitions):
     29            dvar.append(deepcopy(variables))
     30            # "'" is because qmu.in files need for strings to be in actual ''
     31            # must also account for whether we are given 1 instance or an array of instances
     32            # handle descriptors for everything
     33            if type(dvar[-1].descriptor) in [list, np.ndarray] and len(variables.descriptor) > 1 and len(variables.upper) != md.qmu.numberofpartitions:
     34                if type(variables.descriptor) == np.ndarray:
     35                    dvar[-1].descriptor = np.append(dvar[-1].descriptor, "'" + str(variables.descriptor) + '_' + str(j + 1) + "'")
     36                else:
     37                    dvar[-1].descriptor.append("'" + str(variables.descriptor) + '_' + str(j + 1) + "'")
     38            else:
     39                dvar[-1].descriptor = "'" + str(variables.descriptor) + '_' + str(j + 1) + "'"
    3340
    34                         # handle descriptors for everything
    35                         if type(dvar[-1].descriptor) in [list,np.ndarray] and len(variables.descriptor) > 1 and len(variables.upper) != md.qmu.numberofpartitions:
    36                                 if type(variables.descriptor) == np.ndarray:
    37                                         dvar[-1].descriptor = np.append(dvar[-1].descriptor,"'"+str(variables.descriptor)+'_'+str(j+1)+"'")
    38                                 else:
    39                                         dvar[-1].descriptor.append("'"+str(variables.descriptor)+'_'+str(j+1)+"'")
    40                         else:
    41                                 dvar[-1].descriptor = "'"+str(variables.descriptor)+'_'+str(j+1)+"'"
     41    # handle uniform_uncertain
     42            if isinstance(variables, uniform_uncertain):
     43                if type(variables.lower) in [list, np.ndarray] and len(variables.lower) > 1 and len(variables.upper) != md.qmu.numberofpartitions:
     44                    if type(variables.lower) == np.ndarray:
     45                        dvar[-1].lower = np.append(dvar[-1].lower, variables.lower[j])
     46                    else:
     47                        dvar[-1].lower.append(variables.lower[j])
     48                else:
     49                    dvar[-1].lower = variables.lower
    4250
    43                         # handle uniform_uncertain
    44                         if isinstance(variables,uniform_uncertain):
    45                                 if type(variables.lower) in [list,np.ndarray] and len(variables.lower) > 1 and len(variables.upper) != md.qmu.numberofpartitions:
    46                                         if type(variables.lower) == np.ndarray:
    47                                                 dvar[-1].lower = np.append(dvar[-1].lower, variables.lower[j])
    48                                         else:
    49                                                 dvar[-1].lower.append(variables.lower[j])
    50                                 else:
    51                                         dvar[-1].lower = variables.lower
     51                if type(variables.upper) in [list, np.ndarray] and len(variables.upper) > 1 and len(variables.upper) != md.qmu.numberofpartitions:
     52                    if type(variables.upper) == np.ndarray:
     53                        dvar[-1].upper = np.append(dvar[-1].upper, variables.upper[j])
     54                    else:
     55                        dvar[-1].upper.append(variables.upper[j])
     56                else:
     57                    dvar[-1].upper = variables.upper
    5258
    53                                 if type(variables.upper) in [list,np.ndarray] and len(variables.upper) > 1 and len(variables.upper) != md.qmu.numberofpartitions:
    54                                         if type(variables.upper) == np.ndarray:
    55                                                 dvar[-1].upper = np.append(dvar[-1].upper, variables.upper[j])
    56                                         else:
    57                                                 dvar[-1].upper.append(variables.upper[j])
    58                                 else:
    59                                         dvar[-1].upper = variables.upper
     59    # handle normal_uncertain
     60            elif isinstance(variables, normal_uncertain):
     61                if type(variables.stddev) in [list, np.ndarray] and len(variables.stddev) > 1 and len(variables.upper) != md.qmu.numberofpartitions:
     62                    if type(variables.stddev) == np.ndarray:
     63                        dvar[-1].stddev = np.append(dvar[-1].stddev, variables.stddev[j])
     64                    else:
     65                        dvar[-1].stddev.append(variables.stddev[j])
     66                else:
     67                    dvar[-1].stddev = variables.stddev
    6068
    61                         # handle normal_uncertain
    62                         elif isinstance(variables,normal_uncertain):
    63                                 if type(variables.stddev) in [list,np.ndarray] and len(variables.stddev) > 1 and len(variables.upper) != md.qmu.numberofpartitions:
    64                                         if type(variables.stddev) == np.ndarray:
    65                                                 dvar[-1].stddev = np.append(dvar[-1].stddev, variables.stddev[j])
    66                                         else:
    67                                                 dvar[-1].stddev.append(variables.stddev[j])
    68                                 else:
    69                                         dvar[-1].stddev = variables.stddev
     69    # running with a single instance, and therefore length 1 arrays of qmu classes
     70    else:
     71        dvar.append(variables)
     72    # text parsing in dakota requires literal "'identifier'" not just "identifier"
     73        for v in dvar:
     74            v.descriptor = "'" + str(v.descriptor) + "'"
    7075
    71         # running with a single instance, and therefore length 1 arrays of qmu classes
    72         else:
    73                 dvar.append(variables)
    74                 # text parsing in dakota requires literal "'identifier'" not just "identifier"
    75                 for v in dvar:
    76                         v.descriptor = "'"+str(v.descriptor)+"'"
    77 
    78         return dvar
    79        
     76    return dvar
  • issm/trunk-jpl/src/m/qmu/vector_write.py

    r23095 r24213  
    11import numpy as np
    22
    3 def vector_write(fidi,sbeg,vec,nmax,cmax):
    4         '''
     3
     4def vector_write(fidi, sbeg, vec, nmax, cmax):
     5    '''
    56function to write a vector on multiple lines
    67'''
    7         if nmax == None:
    8                 nmax=np.inf
     8    if nmax is None:
     9        nmax = np.inf
    910
    10         if cmax == None:
    11                 cmax=np.inf
     11    if cmax is None:
     12        cmax = np.inf
    1213
    13         # set up first iteration
    14         svec =[]
    15         nitem=nmax
    16         lsvec=cmax
     14    # set up first iteration
     15    svec = []
     16    nitem = nmax
     17    lsvec = cmax
    1718
    18         # transpose vector from column-wise to row-wise
    19         vec=np.array(vec).conj().T
     19    # transpose vector from column - wise to row - wise
     20    vec = np.array(vec).conj().T
    2021
    21         # assemble each line, flushing when necessary
    22         for i in range(np.size(vec,0)):
     22    # assemble each line, flushing when necessary
     23    for i in range(np.size(vec, 0)):
    2324
    24                 # [[1],[1],[1]...] should be [1,1,1,...]
    25                 if type(vec[i]) in [list,np.ndarray] and len(vec[i]) == 1:
    26                         sitem = str(vec[i][0])
    27                 else:
    28                         sitem = str(vec[i])
     25        # [[1], [1], [1]...] should be [1, 1, 1, ...]
     26        if type(vec[i]) in [list, np.ndarray] and len(vec[i]) == 1:
     27            sitem = str(vec[i][0])
     28        else:
     29            sitem = str(vec[i])
    2930
    30                 nitem=nitem+1
    31                 lsvec=lsvec+1+len(sitem)
     31        nitem = nitem + 1
     32        lsvec = lsvec + 1 + len(sitem)
    3233
    33                 if (nitem <= nmax) and (lsvec <= cmax):
    34                         svec=str(svec)+' '+str(sitem)
    35                 else:
    36                         if len(svec) > 0:
    37                                 fidi.write(str(svec)+'\n')
    38                
    39                         svec=str(sbeg)+str(sitem)
    40                         nitem=1
    41                         lsvec=len(svec)
    42            
    43         # flush buffer at , if necessary
    44         if len(svec) > 0:
    45                 fidi.write(str(svec)+'\n')
     34        if (nitem <= nmax) and (lsvec <= cmax):
     35            svec = str(svec) + ' ' + str(sitem)
     36        else:
     37            if len(svec) > 0:
     38                fidi.write(str(svec) + '\n')
    4639
    47         return
     40            svec = str(sbeg) + str(sitem)
     41            nitem = 1
     42            lsvec = len(svec)
     43
     44    # flush buffer at , if necessary
     45    if len(svec) > 0:
     46        fidi.write(str(svec) + '\n')
     47
     48    return
  • issm/trunk-jpl/src/m/qmu/vlist_write.py

    r23716 r24213  
    22#move this later
    33from helpers import *
    4 
    54from vector_write import *
    6 
    75from uniform_uncertain import *
    86from normal_uncertain import *
    97
    10 def check(a,l,p):
    11         '''in the event that a and b are equal, return a;
    12 in the event that a and b are not equal, return their concatenation
    138
    14         This is used for when both the input dvar and the 'cstring' variables have non-1 length
    15 '''
     9def check(a, l, p):
     10    '''in the event that a and b are equal, return a
     11    in the event that a and b are not equal, return their concatenation
    1612
    17         if np.size(a) == l:
    18                 if p == 0:
    19                         if type(a) in [list,np.ndarray]:
    20                                 return a
    21                         else:
    22                                 return [a]
    23                 else:
    24                         return []
    25         elif np.size(a) == 1:
    26                 if type(a) in [list,np.ndarray]:
    27                         return a
    28                 else:
    29                         return [a]
    30         elif np.size(a) == 0:
    31                 return []
    32         else:
    33                 raise RuntimeError('ERROR vlist_write: input field had size '+str(np.size(a))+'; must have size of 0, 1, or match size of provided dvar ('+str(l)+').')
     13    This is used for when both the input dvar and the 'cstring' variables have non - 1 length
     14    '''
    3415
    35         return
     16    if np.size(a) == l:
     17        if p == 0:
     18            if type(a) in [list, np.ndarray]:
     19                return a
     20            else:
     21                return [a]
     22        else:
     23            return []
     24    elif np.size(a) == 1:
     25        if type(a) in [list, np.ndarray]:
     26            return a
     27        else:
     28            return [a]
     29    elif np.size(a) == 0:
     30        return []
     31    else:
     32        raise RuntimeError('ERROR vlist_write: input field had size ' + str(np.size(a)) + '; must have size of 0, 1, or match size of provided dvar (' + str(l) + ').')
    3633
    37 def vlist_write(fidi,cstring,cstring2,dvar):
    38         '''
    39 function to write variable list
    40 '''
    41         if dvar == None:
    42                 return
    43         #from uniform_uncertain import *
    44         func = eval(cstring)
     34    return
    4535
    46         # put variables into lists for writing
    4736
    48         if type(dvar) not in [list,np.ndarray]:
    49                 dvar = [dvar]
     37def vlist_write(fidi, cstring, cstring2, dvar):
     38    '''
     39    function to write variable list
     40    '''
     41    if dvar is None:
     42        return
     43    #from uniform_uncertain import *
     44    func = eval(cstring)
    5045
    51         # assume all fields in dvar[0:n] are consistent (ex. all are normal_uncertain)
    52         #   which will always be true since this vlist_write is called per field
    53         fnames=fieldnames(dvar[0])
     46    # put variables into lists for writing
    5447
    55         nvar=0
    56         pinitpt=[[] for i in range(len(fnames))]
    57         plower =[[] for i in range(len(fnames))]
    58         pupper =[[] for i in range(len(fnames))]
    59         pmean  =[[] for i in range(len(fnames))]
    60         pstddev=[[] for i in range(len(fnames))]
    61         pinitst=[[] for i in range(len(fnames))]
    62         pstype =[[] for i in range(len(fnames))]
    63         pscale =[[] for i in range(len(fnames))]
    64         pdesc  =[[] for i in range(len(fnames))]
     48    if type(dvar) not in [list, np.ndarray]:
     49        dvar = [dvar]
    6550
    66         for i in range(len(fnames)):
    67                 nvar += len(dvar)
    68                 for j in dvar:
    69                         j = vars(j)[fnames[i]]
    70                         pinitpt[i].extend(check(func.prop_initpt(j),len(dvar),len(pinitpt[i])))
    71                         plower[i].extend(check(func.prop_lower(j),len(dvar),len(plower[i])))
    72                         pupper[i].extend(check(func.prop_upper(j),len(dvar),len(pupper[i])))
    73                         pmean[i].extend(check(func.prop_mean(j),len(dvar),len(pmean[i])))
    74                         pstddev[i].extend(check(func.prop_stddev(j),len(dvar),len(pstddev[i])))
    75                         pinitst[i].extend(check(func.prop_initst(j),len(dvar),len(pinitst[i])))
    76                         pstype[i].extend(check(func.prop_stype(j),len(dvar),len(pstype[i])))
    77                         pscale[i].extend(check(func.prop_scale(j),len(dvar),len(pscale[i])))
    78                         pdesc[i].extend(check(func.prop_desc(j,fnames[i]),len(dvar),len(pdesc[i])))
     51    # assume all fields in dvar[0:n] are consistent (ex. all are normal_uncertain)
     52    #   which will always be true since this vlist_write is called per field
     53    fnames = fieldnames(dvar[0])
    7954
    80         pinitpt=allempty(pinitpt)
    81         plower =allempty(plower)
    82         pupper =allempty(pupper)
    83         pmean  =allempty(pmean)
    84         pstddev=allempty(pstddev)
    85         pinitst=allempty(pinitst)
    86         pstype =allempty(pstype)
    87         pscale =allempty(pscale)
    88         pdesc  =allempty(pdesc)
     55    nvar = 0
     56    pinitpt = [[] for i in range(len(fnames))]
     57    plower = [[] for i in range(len(fnames))]
     58    pupper = [[] for i in range(len(fnames))]
     59    pmean = [[] for i in range(len(fnames))]
     60    pstddev = [[] for i in range(len(fnames))]
     61    pinitst = [[] for i in range(len(fnames))]
     62    pstype = [[] for i in range(len(fnames))]
     63    pscale = [[] for i in range(len(fnames))]
     64    pdesc = [[] for i in range(len(fnames))]
    8965
    90         # write variables
    91         print('  Writing '+str(nvar)+' '+cstring+' variables.')
     66    for i in range(len(fnames)):
     67        nvar += len(dvar)
     68        for j in dvar:
     69            j = vars(j)[fnames[i]]
     70            pinitpt[i].extend(check(func.prop_initpt(j), len(dvar), len(pinitpt[i])))
     71            plower[i].extend(check(func.prop_lower(j), len(dvar), len(plower[i])))
     72            pupper[i].extend(check(func.prop_upper(j), len(dvar), len(pupper[i])))
     73            pmean[i].extend(check(func.prop_mean(j), len(dvar), len(pmean[i])))
     74            pstddev[i].extend(check(func.prop_stddev(j), len(dvar), len(pstddev[i])))
     75            pinitst[i].extend(check(func.prop_initst(j), len(dvar), len(pinitst[i])))
     76            pstype[i].extend(check(func.prop_stype(j), len(dvar), len(pstype[i])))
     77            pscale[i].extend(check(func.prop_scale(j), len(dvar), len(pscale[i])))
     78            pdesc[i].extend(check(func.prop_desc(j, fnames[i]), len(dvar), len(pdesc[i])))
    9279
    93         fidi.write('\t'+cstring+' = '+str(nvar)+'\n')
    94         if not isempty(pinitpt):
    95                 fidi.write('\t  '+cstring2+'_initial_point =\n')
    96                 vector_write(fidi,'\t    ',pinitpt,6,76)
     80    pinitpt = allempty(pinitpt)
     81    plower = allempty(plower)
     82    pupper = allempty(pupper)
     83    pmean = allempty(pmean)
     84    pstddev = allempty(pstddev)
     85    pinitst = allempty(pinitst)
     86    pstype = allempty(pstype)
     87    pscale = allempty(pscale)
     88    pdesc = allempty(pdesc)
    9789
    98         if not isempty(plower):
    99                 fidi.write('\t  '+cstring2+'_lower_bounds =\n')
    100                 vector_write(fidi,'\t    ',plower ,6,76)
     90    # write variables
     91    print('  Writing ' + str(nvar) + ' ' + cstring + ' variables.')
    10192
    102         if not isempty(pupper):
    103                 fidi.write('\t  '+cstring2+'_upper_bounds =\n')
    104                 vector_write(fidi,'\t    ',pupper ,6,76)
     93    fidi.write('\t' + cstring + ' = ' + str(nvar) + '\n')
     94    if not isempty(pinitpt):
     95        fidi.write('\t  ' + cstring2 + '_initial_point =\n')
     96        vector_write(fidi, '\t    ', pinitpt, 6, 76)
    10597
    106         if not isempty(pmean):
    107                 fidi.write('\t  '+cstring2+'_means =\n')
    108                 vector_write(fidi,'\t    ',pmean  ,6,76)
     98    if not isempty(plower):
     99        fidi.write('\t  ' + cstring2 + '_lower_bounds =\n')
     100        vector_write(fidi, '\t    ', plower, 6, 76)
    109101
    110         if not isempty(pstddev):
    111                 fidi.write('\t  '+cstring2+'_std_deviations =\n')
    112                 vector_write(fidi,'\t    ',pstddev,6,76)
     102    if not isempty(pupper):
     103        fidi.write('\t  ' + cstring2 + '_upper_bounds =\n')
     104        vector_write(fidi, '\t    ', pupper, 6, 76)
    113105
    114         if not isempty(pinitst):
    115                 fidi.write('\t  '+cstring2+'_initial_state =\n')
    116                 vector_write(fidi,'\t    ',pinitst,6,76)
     106    if not isempty(pmean):
     107        fidi.write('\t  ' + cstring2 + '_means =\n')
     108        vector_write(fidi, '\t    ', pmean, 6, 76)
    117109
    118         if not isempty(pstype):
    119                 fidi.write('\t  '+cstring2+'_scale_types =\n')
    120                 vector_write(fidi,'\t    ',pstype ,6,76)
     110    if not isempty(pstddev):
     111        fidi.write('\t  ' + cstring2 + '_std_deviations =\n')
     112        vector_write(fidi, '\t    ', pstddev, 6, 76)
    121113
    122         if not isempty(pscale):
    123                 fidi.write('\t  '+cstring2+'_scales =\n')
    124                 vector_write(fidi,'\t    ',pscale ,6,76)
     114    if not isempty(pinitst):
     115        fidi.write('\t  ' + cstring2 + '_initial_state =\n')
     116        vector_write(fidi, '\t    ', pinitst, 6, 76)
    125117
    126         if not isempty(pdesc):
    127                 fidi.write('\t  '+cstring2+'_descriptors =\n')
    128                 vector_write(fidi,'\t    ',pdesc  ,6,76)
     118    if not isempty(pstype):
     119        fidi.write('\t  ' + cstring2 + '_scale_types =\n')
     120        vector_write(fidi, '\t    ', pstype, 6, 76)
    129121
    130         return
     122    if not isempty(pscale):
     123        fidi.write('\t  ' + cstring2 + '_scales =\n')
     124        vector_write(fidi, '\t    ', pscale, 6, 76)
     125
     126    if not isempty(pdesc):
     127        fidi.write('\t  ' + cstring2 + '_descriptors =\n')
     128        vector_write(fidi, '\t    ', pdesc, 6, 76)
     129
     130    return
  • issm/trunk-jpl/src/m/shp/shp2exp.py

    r21659 r24213  
    33from expwrite import expwrite
    44
    5 def shp2exp(shapefilename,*expfilename):
    6         '''
    7         Convert a shapefile to an .exp file.  Optionally, expfilename can be
    8         specified to give a name for the .exp file to be created, otherwise the
    9         .exp file will have the same prefix as the .shp file.
    105
    11         Usage:
    12                 shp2exp(shapefilename)
    13                 shp2exp(shapefilename,expfilename)
     6def shp2exp(shapefilename, * expfilename):
     7    '''
     8    Convert a shapefile to an .exp file.  Optionally, expfilename can be
     9    specified to give a name for the .exp file to be created, otherwise the
     10    .exp file will have the same prefix as the .shp file.
    1411
    15         Examples:
    16                 shp2exp('Domain.shp') % creates Domain.exp
    17                 shp2exp('Domain.shp','DomainForISSM.exp')
    18         '''
    19        
    20         if not os.path.exists(shapefilename):
    21                 raise IOError("shp2exp error message: file '%s' not found!" % parametername)
    22         if not len(expfilename):
    23                 expfile=os.path.splitext(shapefilename)[0]+'.exp'
    24         else:
    25                 expfile=expfilename[0]
     12    Usage:
     13        shp2exp(shapefilename)
     14        shp2exp(shapefilename, expfilename)
    2615
    27         shp=shapefile.Reader(shapefilename)
    28         expdict=dict(density=1)
     16    Examples:
     17        shp2exp('Domain.shp') % creates Domain.exp
     18        shp2exp('Domain.shp', 'DomainForISSM.exp')
     19    '''
    2920
    30         x=[]
    31         y=[]
    32         for i in range(len(shp.shapes())):
    33                 geom=shp.shapes()[i].shapeType
    34                 if geom==5: # polygon
    35                         expdict['closed']=1
    36                         tmpx=[p[0] for p in shp.shapes()[i].points]
    37                         tmpy=[q[1] for q in shp.shapes()[i].points]
    38                         x.append(tmpx)
    39                         y.append(tmpy)
    40                 elif geom==3: # line
    41                         expdict['closed']=0
    42                         tmpx=[p[0] for p in shp.shapes()[i].points]
    43                         tmpy=[q[1] for q in shp.shapes()[i].points]
    44                         x.append(tmpx)
    45                         y.append(tmpy)
    46                 elif geom==1: # point
    47                         expdict['closed']=0
    48                         x.append(shp.shapes()[i].points[0][0])
    49                         y.append(shp.shapes()[i].points[0][1])
     21    if not os.path.exists(shapefilename):
     22        raise IOError("shp2exp error message: file '%s' not found!" % shapefilename)
     23    if not len(expfilename):
     24        expfile = os.path.splitext(shapefilename)[0] + '.exp'
     25    else:
     26        expfile = expfilename[0]
    5027
    51         expdict['x']=x
    52         expdict['y']=y
    53         expwrite(expdict,expfile)
     28    shp = shapefile.Reader(shapefilename)
     29    expdict = dict(density=1)
     30
     31    x = []
     32    y = []
     33    for i in range(len(shp.shapes())):
     34        geom = shp.shapes()[i].shapeType
     35        if geom == 5:  # polygon
     36            expdict['closed'] = 1
     37            tmpx = [p[0] for p in shp.shapes()[i].points]
     38            tmpy = [q[1] for q in shp.shapes()[i].points]
     39            x.append(tmpx)
     40            y.append(tmpy)
     41        elif geom == 3:  # line
     42            expdict['closed'] = 0
     43            tmpx = [p[0] for p in shp.shapes()[i].points]
     44            tmpy = [q[1] for q in shp.shapes()[i].points]
     45            x.append(tmpx)
     46            y.append(tmpy)
     47        elif geom == 1:  # point
     48            expdict['closed'] = 0
     49            x.append(shp.shapes()[i].points[0][0])
     50            y.append(shp.shapes()[i].points[0][1])
     51
     52    expdict['x'] = x
     53    expdict['y'] = y
     54    expwrite(expdict, expfile)
  • issm/trunk-jpl/src/m/solve/WriteData.py

    r23772 r24213  
    3131
    3232    datatype = options.getfieldvalue('format')
    33     mattype = options.getfieldvalue('mattype', 0)    #only required for matrices
    34     timeserieslength = options.getfieldvalue('timeserieslength', -1)
     33    mattype = options.getfieldvalue('mattype', 0)  #only required for matrices
     34    timeserieslength = options.getfieldvalue('timeserieslength', - 1)
    3535
    3636    #Process sparse matrices
    37 #       if issparse(data),
    38 #               data = full(data);
    39 #       end
     37    #       if issparse(data),
     38    #               data = full(data)
     39    #       end
    4040
    4141    #Scale data if necesarry
     
    4444        scale = options.getfieldvalue('scale')
    4545        if np.size(data) > 1 and np.ndim(data) > 1 and np.size(data, 0) == timeserieslength:
    46             data[0:-1, :] = scale * data[0:-1, :]
     46            data[0: - 1, :] = scale * data[0: - 1, :]
    4747        else:
    4848            data = scale * data
     
    7575        #first write length of record
    7676        fid.write(pack('q', 4 + 4))  #1 integer + code
    77 
    7877        #write data code:
    7978        fid.write(pack('i', FormatToCode(datatype)))
    80 
    8179        #now write integer
    8280        try:
     
    9088        fid.write(pack('q', 8 + 4))  #1 double + code
    9189
    92         #write data code:
    93         fid.write(pack('i', FormatToCode(datatype)))
    94 
    95         #now write double
     90    #write data code:
     91        fid.write(pack('i', FormatToCode(datatype)))
     92
     93    #now write double
    9694        try:
    9795            fid.write(pack('d', data))
    9896        except error as Err:
    9997            raise ValueError('field {} cannot be marshaled, {}'.format(name, Err))
    100         # }}}
     98    # }}}
    10199
    102100    elif datatype == 'String':  # {{{
    103101        #first write length of record
    104102        fid.write(pack('q', len(data) + 4 + 4))  #string + string size + code
    105 
    106103        #write data code:
    107104        fid.write(pack('i', FormatToCode(datatype)))
    108 
    109105        #now write string
    110106        fid.write(pack('i', len(data)))
     
    116112            data = np.array([data])
    117113        elif isinstance(data, (list, tuple)):
    118             data = np.array(data).reshape(-1,)
     114            data = np.array(data).reshape(- 1, )
    119115        if np.ndim(data) == 1:
    120116            if np.size(data):
    121                 data = data.reshape(np.size(data),)
     117                data = data.reshape(np.size(data), )
    122118            else:
    123119                data = data.reshape(0, 0)
    124120
    125         #Get size
     121    #Get size
    126122        s = data.shape
    127         #if matrix = NaN, then do not write anything
     123    #if matrix = NaN, then do not write anything
    128124        if np.ndim(data) == 2 and np.product(s) == 1 and np.all(np.isnan(data)):
    129125            s = (0, 0)
    130126
    131         #first write length of record
    132         recordlength = 4 + 4 + 8 * np.product(s) + 4 + 4    #2 integers (32 bits) + the double matrix + code + matrix type
     127    #first write length of record
     128        recordlength = 4 + 4 + 8 * np.product(s) + 4 + 4  #2 integers (32 bits) + the double matrix + code + matrix type
    133129        fid.write(pack('q', recordlength))
    134130
    135         #write data code and matrix type:
     131    #write data code and matrix type:
    136132        fid.write(pack('i', FormatToCode(datatype)))
    137133        fid.write(pack('i', mattype))
    138134
    139         #now write matrix
     135    #now write matrix
    140136        fid.write(pack('i', s[0]))
    141137        try:
     
    145141        for i in range(s[0]):
    146142            if np.ndim(data) == 1:
    147                 fid.write(pack('d', float(data[i])))    #get to the "c" convention, hence the transpose
     143                fid.write(pack('d', float(data[i])))  #get to the "c" convention, hence the transpose
    148144            else:
    149145                for j in range(s[1]):
    150                     fid.write(pack('d', float(data[i][j])))    #get to the "c" convention, hence the transpose
     146                    fid.write(pack('d', float(data[i][j])))  #get to the "c" convention, hence the transpose
    151147    # }}}
    152148
     
    156152            data = np.array([data])
    157153        elif isinstance(data, (list, tuple)):
    158             data = np.array(data).reshape(-1,)
     154            data = np.array(data).reshape(- 1, )
    159155        if np.ndim(data) == 1:
    160156            if np.size(data):
    161                 data = data.reshape(np.size(data),)
     157                data = data.reshape(np.size(data), )
    162158            else:
    163159                data = data.reshape(0, 0)
    164160
    165         #Get size
     161    #Get size
    166162        s = data.shape
    167         #if matrix = NaN, then do not write anything
     163    #if matrix = NaN, then do not write anything
    168164        if np.ndim(data) == 1 and np.product(s) == 1 and np.all(np.isnan(data)):
    169165            s = (0, 0)
    170166
    171         #first write length of record
    172         recordlength = 4 + 4 + 8 * np.product(s) + 4 + 4   #2 integers (32 bits) + the double matrix + code + matrix type
     167    #first write length of record
     168        recordlength = 4 + 4 + 8 * np.product(s) + 4 + 4  #2 integers (32 bits) + the double matrix + code + matrix type
    173169
    174170        try:
     
    177173            raise ValueError('Field {} can not be marshaled, {}, with "number" the lenght of the record.'.format(name, Err))
    178174
    179         #write data code and matrix type:
     175    #write data code and matrix type:
    180176        fid.write(pack('i', FormatToCode(datatype)))
    181177        fid.write(pack('i', mattype))
    182         #now write matrix
     178    #now write matrix
    183179        fid.write(pack('i', s[0]))
    184180        try:
     
    188184        for i in range(s[0]):
    189185            if np.ndim(data) == 1:
    190                 fid.write(pack('d', float(data[i])))    #get to the "c" convention, hence the transpose
     186                fid.write(pack('d', float(data[i])))  #get to the "c" convention, hence the transpose
    191187            else:
    192188                for j in range(s[1]):
    193                     fid.write(pack('d', float(data[i][j])))    #get to the "c" convention, hence the transpose
    194         # }}}
    195 
    196     elif datatype == 'CompressedMat':    # {{{
     189                    fid.write(pack('d', float(data[i][j])))  #get to the "c" convention, hence the transpose
     190    # }}}
     191
     192    elif datatype == 'CompressedMat':  # {{{
    197193        if isinstance(data, (bool, int, float)):
    198194            data = np.array([data])
    199195        elif isinstance(data, (list, tuple)):
    200             data = np.array(data).reshape(-1,)
     196            data = np.array(data).reshape(- 1, )
    201197        if np.ndim(data) == 1:
    202198            if np.size(data):
    203                 data = data.reshape(np.size(data),)
     199                data = data.reshape(np.size(data), )
    204200            else:
    205201                data = data.reshape(0, 0)
    206202
    207         #Get size
     203    #Get size
    208204        s = data.shape
    209205        if np.ndim(data) == 1:
     
    212208            n2 = s[1]
    213209
    214         #if matrix = NaN, then do not write anything
     210    #if matrix = NaN, then do not write anything
    215211        if np.ndim(data) == 1 and np.product(s) == 1 and np.all(np.isnan(data)):
    216212            s = (0, 0)
    217213            n2 = 0
    218214
    219         #first write length of record
     215    #first write length of record
    220216        recordlength = 4 + 4 + 8 + 8 + 1 * (s[0] - 1) * n2 + 8 * n2 + 4 + 4  #2 integers (32 bits) + the matrix + code + matrix type
    221217        try:
     
    224220            raise ValueError('Field {} can not be marshaled, {}, with "number" the lenght of the record.'.format(name, Err))
    225221
    226         #write data code and matrix type:
     222    #write data code and matrix type:
    227223        fid.write(pack('i', FormatToCode(datatype)))
    228224        fid.write(pack('i', mattype))
    229225
    230         #Write offset and range
     226    #Write offset and range
    231227        A = data[0:s[0] - 1]
    232228        offsetA = A.min()
     
    238234            A = (A - offsetA) / rangeA * 255.
    239235
    240         #now write matrix
     236    #now write matrix
    241237        fid.write(pack('i', s[0]))
    242238        try:
     
    249245            for i in range(s[0] - 1):
    250246                fid.write(pack('B', int(A[i])))
    251             fid.write(pack('d', float(data[s[0] - 1])))    #get to the "c" convention, hence the transpose
     247            fid.write(pack('d', float(data[s[0] - 1])))  #get to the "c" convention, hence the transpose
    252248
    253249        elif np.product(s) > 0:
    254250            for i in range(s[0] - 1):
    255251                for j in range(s[1]):
    256                     fid.write(pack('B', int(A[i][j])))    #get to the "c" convention, hence the transpose
     252                    fid.write(pack('B', int(A[i][j])))  #get to the "c" convention, hence the transpose
    257253
    258254            for j in range(s[1]):
     
    261257    # }}}
    262258
    263     elif datatype == 'MatArray':    # {{{
    264 
     259    elif datatype == 'MatArray':  # {{{
    265260        #first get length of record
    266         recordlength = 4 + 4    #number of records + code
     261        recordlength = 4 + 4  #number of records + code
    267262        for matrix in data:
    268263            if isinstance(matrix, (bool, int, float)):
    269264                matrix = np.array([matrix])
    270265            elif isinstance(matrix, (list, tuple)):
    271                 matrix = np.array(matrix).reshape(-1,)
     266                matrix = np.array(matrix).reshape(- 1, )
    272267            if np.ndim(matrix) == 1:
    273268                if np.size(matrix):
    274                     matrix = matrix.reshape(np.size(matrix),)
     269                    matrix = matrix.reshape(np.size(matrix), )
    275270                else:
    276271                    matrix = matrix.reshape(0, 0)
    277272
    278273            s = matrix.shape
    279             recordlength += 4 * 2 + np.product(s) * 8    #row and col of matrix + matrix of doubles
    280 
    281         #write length of record
     274            recordlength += 4 * 2 + np.product(s) * 8  #row and col of matrix + matrix of doubles
     275
     276    #write length of record
    282277        fid.write(pack('q', recordlength))
    283278
    284         #write data code:
    285         fid.write(pack('i', FormatToCode(datatype)))
    286 
    287         #write data, first number of records
     279    #write data code:
     280        fid.write(pack('i', FormatToCode(datatype)))
     281
     282    #write data, first number of records
    288283        fid.write(pack('i', len(data)))
    289284
     
    292287                matrix = np.array([matrix])
    293288            elif isinstance(matrix, (list, tuple)):
    294                 matrix = np.array(matrix).reshape(-1,)
     289                matrix = np.array(matrix).reshape(- 1, )
    295290            if np.ndim(matrix) == 1:
    296                 matrix = matrix.reshape(np.size(matrix),)
     291                matrix = matrix.reshape(np.size(matrix), )
    297292
    298293            s = matrix.shape
     
    305300            for i in range(s[0]):
    306301                if np.ndim(matrix) == 1:
    307                     fid.write(pack('d', float(matrix[i])))    #get to the "c" convention, hence the transpose
     302                    fid.write(pack('d', float(matrix[i])))  #get to the "c" convention, hence the transpose
    308303                else:
    309304                    for j in range(s[1]):
     
    311306    # }}}
    312307
    313     elif datatype == 'StringArray':    # {{{
     308    elif datatype == 'StringArray':  # {{{
    314309        #first get length of record
    315         recordlength = 4 + 4    #for length of array + code
     310        recordlength = 4 + 4  #for length of array + code
    316311        for string in data:
    317             recordlength += 4 + len(string)    #for each string
     312            recordlength += 4 + len(string)  #for each string
    318313
    319314        #write length of record
    320315        fid.write(pack('q', recordlength))
    321 
    322316        #write data code:
    323317        fid.write(pack('i', FormatToCode(datatype)))
    324 
    325318        #now write length of string array
    326319        fid.write(pack('i', len(data)))
    327 
    328320        #now write the strings
    329321        for string in data:
     
    332324    # }}}
    333325
    334     else:    # {{{
     326    else:  # {{{
    335327        raise TypeError('WriteData error message: data type: {} not supported yet! ({})'.format(datatype, name))
    336328    # }}}
     
    366358        raise IOError('FormatToCode error message: data type not supported yet!')
    367359    return code
    368 # }}}
     360    # }}}
  • issm/trunk-jpl/src/m/solve/loadresultsfromcluster.py

    r24115 r24213  
    33import platform
    44from loadresultsfromdisk import loadresultsfromdisk
    5 
    65from helpers import *
    76
    8 def loadresultsfromcluster(md,runtimename=False):
    9         """
    10         LOADRESULTSFROMCLUSTER - load results of solution sequence from cluster
    117
    12            Usage:
    13               md=loadresultsfromcluster(md,runtimename);
    14         """
     8def loadresultsfromcluster(md, runtimename=False):
     9    """
     10    LOADRESULTSFROMCLUSTER - load results of solution sequence from cluster
    1511
    16         #retrieve cluster, to be able to call its methods
    17         cluster=md.cluster
     12       Usage:
     13          md = loadresultsfromcluster(md, runtimename)
     14    """
    1815
    19         if runtimename:
    20                 md.private.runtimename=runtimename
     16    #retrieve cluster, to be able to call its methods
     17    cluster = md.cluster
    2118
    22         #Download outputs from the cluster
    23         filelist=[md.miscellaneous.name+'.outlog',md.miscellaneous.name+'.errlog']
     19    if runtimename:
     20        md.private.runtimename = runtimename
     21
     22    #Download outputs from the cluster
     23    filelist = [md.miscellaneous.name + '.outlog', md.miscellaneous.name + '.errlog']
     24    if md.qmu.isdakota:
     25        filelist.append(md.miscellaneous.name + '.qmu.err')
     26        filelist.append(md.miscellaneous.name + '.qmu.out')
     27        if 'tabular_graphics_data' in fieldnames(md.qmu.params):
     28            if md.qmu.params.tabular_graphics_data:
     29                filelist.append('dakota_tabular.dat')
     30    else:
     31        filelist.append(md.miscellaneous.name + '.outbin')
     32    cluster.Download(md.private.runtimename, filelist)
     33
     34    #If we are here, no errors in the solution sequence, call loadresultsfromdisk.
     35    if os.path.exists(md.miscellaneous.name + '.outbin'):
     36        if os.path.getsize(md.miscellaneous.name + '.outbin') > 0:
     37            md = loadresultsfromdisk(md, md.miscellaneous.name + '.outbin')
     38        else:
     39            print(('WARNING, outbin file is empty for run ' + md.miscellaneous.name))
     40    elif not md.qmu.isdakota:
     41        print(('WARNING, outbin file does not exist ' + md.miscellaneous.name))
     42
     43    #erase the log and output files
     44    if md.qmu.isdakota:
     45        #filename = os.path.join('qmu' + str(os.getpid()), md.miscellaneous.name)
     46        filename = md.miscellaneous.name
     47
     48        # this will not work like normal as dakota doesn't generate outbin files,
     49        #   instead calls postqmu to store results directly in the model
     50        #   at md.results.dakota via dakota_out_parse
     51        md = loadresultsfromdisk(md, md.miscellaneous.name + '.outbin')
     52    else:
     53        filename = md.miscellaneous.name
     54        TryRem('.outbin', filename)
     55        if not platform.system() == 'Windows':
     56            TryRem('.tar.gz', md.private.runtimename)
     57
     58    TryRem('.errlog', filename)
     59    TryRem('.outlog', filename)
     60
     61    #erase input file if run was carried out on same platform.
     62    hostname = socket.gethostname()
     63    if hostname == cluster.name:
    2464        if md.qmu.isdakota:
    25                 filelist.append(md.miscellaneous.name+'.qmu.err')
    26                 filelist.append(md.miscellaneous.name+'.qmu.out')
    27                 if 'tabular_graphics_data' in fieldnames(md.qmu.params):
    28                         if md.qmu.params.tabular_graphics_data:
    29                                 filelist.append('dakota_tabular.dat')
     65            #filename = os.path.join('qmu' + str(os.getpid()), md.miscellaneous.name)
     66            filename = md.miscellaneous.name
     67            TryRem('.queue', filename)
    3068        else:
    31                 filelist.append(md.miscellaneous.name+'.outbin')
    32         cluster.Download(md.private.runtimename,filelist)
     69            filename = md.miscellaneous.name
     70            TryRem('.toolkits', filename)
     71            if not platform.system() == 'Windows':
     72                TryRem('.queue', filename)
     73            else:
     74                TryRem('.bat', filename)
    3375
    34         #If we are here, no errors in the solution sequence, call loadresultsfromdisk.
    35         if os.path.exists(md.miscellaneous.name+'.outbin'):
    36                 if os.path.getsize(md.miscellaneous.name+'.outbin')>0:
    37                         md=loadresultsfromdisk(md,md.miscellaneous.name+'.outbin')
    38                 else:
    39                         print(('WARNING, outbin file is empty for run '+md.miscellaneous.name))
    40         elif not md.qmu.isdakota:
    41                 print(('WARNING, outbin file does not exist '+md.miscellaneous.name))
     76    # remove this for bin file debugging
     77        TryRem('.bin', filename)
    4278
    43         #erase the log and output files
    44         if md.qmu.isdakota:
    45                 #filename=os.path.join('qmu'+str(os.getpid()),md.miscellaneous.name)
    46                 filename = md.miscellaneous.name
     79    #cwd = os.getcwd().split('/')[-1]
     80    if md.qmu.isdakota:
     81        os.chdir('..')
     82    #TryRem('', cwd)
    4783
    48                 # this will not work like normal as dakota doesn't generate outbin files,
    49                 #   instead calls postqmu to store results directly in the model
    50                 #   at md.results.dakota via dakota_out_parse
    51                 md=loadresultsfromdisk(md,md.miscellaneous.name+'.outbin')
    52         else:
    53                 filename=md.miscellaneous.name
    54                 TryRem('.outbin',filename)
    55                 if not platform.system()=='Windows':
    56                         TryRem('.tar.gz',md.private.runtimename)
     84    return md
    5785
    58         TryRem('.errlog',filename)
    59         TryRem('.outlog',filename)
    6086
    61         #erase input file if run was carried out on same platform.
    62         hostname=socket.gethostname()
    63         if hostname==cluster.name:
    64                 if md.qmu.isdakota:
    65                         #filename=os.path.join('qmu'+str(os.getpid()),md.miscellaneous.name)
    66                         filename = md.miscellaneous.name
    67                         TryRem('.queue',filename)
    68                 else:
    69                         filename=md.miscellaneous.name
    70                         TryRem('.toolkits',filename)
    71                         if not platform.system()=='Windows':
    72                                 TryRem('.queue',filename)
    73                         else:
    74                                 TryRem('.bat',filename)
    75 
    76                 # remove this for bin file debugging
    77                 TryRem('.bin',filename)
    78 
    79         #cwd = os.getcwd().split('/')[-1]
    80         if md.qmu.isdakota:
    81                 os.chdir('..')
    82                 #TryRem('',cwd)
    83 
    84         return md
    85 
    86 def TryRem(extension,filename):
    87         try:
    88                 os.remove(filename+extension)
    89         except OSError:
    90                 print(('WARNING, no '+extension+'  is present for run '+filename))
     87def TryRem(extension, filename):
     88    try:
     89        os.remove(filename + extension)
     90    except OSError:
     91        print(('WARNING, no ' + extension + '  is present for run ' + filename))
  • issm/trunk-jpl/src/m/solve/loadresultsfromdisk.py

    r24115 r24213  
    55
    66
    7 def loadresultsfromdisk(md,filename):
     7def loadresultsfromdisk(md, filename):
    88    """
    99    LOADRESULTSFROMDISK - load results of solution sequence from disk file "filename"
    1010
    1111       Usage:
    12           md=loadresultsfromdisk(md=False,filename=False);
     12          md = loadresultsfromdisk(md = False, filename = False)
    1313    """
    1414
    15     #check number of inputs/outputs
     15    #check number of inputs / outputs
    1616    if not md or not filename:
    1717        raise ValueError("loadresultsfromdisk: error message.")
     
    2424
    2525        #initialize md.results if not a structure yet
    26         if not isinstance(md.results,results):
    27             md.results=results()
     26        if not isinstance(md.results, results):
     27            md.results = results()
    2828
    29         #load results onto model
    30         structure=parseresultsfromdisk(md,filename,not md.settings.io_gather)
     29            #load results onto model
     30        structure = parseresultsfromdisk(md, filename, not md.settings.io_gather)
    3131        if not len(structure):
    3232            raise RuntimeError("No result found in binary file '{}'. Check for solution crash.".format(filename))
    3333
    34         setattr(md.results,structure[0].SolutionType,structure)
     34        setattr(md.results, structure[0].SolutionType, structure)
    3535
    3636        #recover solution_type from results
    37         md.private.solution=structure[0].SolutionType
     37        md.private.solution = structure[0].SolutionType
    3838
    3939        #read log files onto fields
    40         if os.path.exists(md.miscellaneous.name+'.errlog'):
    41                 with open(md.miscellaneous.name+'.errlog','r') as f:
    42                         setattr(getattr(md.results,structure[0].SolutionType)[0],'errlog',[line[:-1] for line in f])
     40        if os.path.exists(md.miscellaneous.name + '.errlog'):
     41            with open(md.miscellaneous.name + '.errlog', 'r') as f:
     42                setattr(getattr(md.results, structure[0].SolutionType)[0], 'errlog', [line[: - 1] for line in f])
    4343        else:
    44                 setattr(getattr(md.results,structure[0].SolutionType)[0],'errlog',[])
     44            setattr(getattr(md.results, structure[0].SolutionType)[0], 'errlog', [])
    4545
    46         if os.path.exists(md.miscellaneous.name+'.outlog'):
    47                 with open(md.miscellaneous.name+'.outlog','r') as f:
    48                         setattr(getattr(md.results,structure[0].SolutionType)[0],'outlog',[line[:-1] for line in f])
     46        if os.path.exists(md.miscellaneous.name + '.outlog'):
     47            with open(md.miscellaneous.name + '.outlog', 'r') as f:
     48                setattr(getattr(md.results, structure[0].SolutionType)[0], 'outlog', [line[: - 1] for line in f])
    4949        else:
    50                 setattr(getattr(md.results,structure[0].SolutionType)[0],'outlog',[])
     50            setattr(getattr(md.results, structure[0].SolutionType)[0], 'outlog', [])
    5151
    52         if len(getattr(md.results,structure[0].SolutionType)[0].errlog):
    53                 print ("loadresultsfromcluster info message: error during solution. Check your errlog and outlog model fields.")
     52        if len(getattr(md.results, structure[0].SolutionType)[0].errlog):
     53            print("loadresultsfromcluster info message: error during solution. Check your errlog and outlog model fields.")
    5454
    5555        #if only one solution, extract it from list for user friendliness
    56         if len(structure) == 1 and not structure[0].SolutionType=='TransientSolution':
    57                 setattr(md.results,structure[0].SolutionType,structure[0])
     56        if len(structure) == 1 and not structure[0].SolutionType == 'TransientSolution':
     57            setattr(md.results, structure[0].SolutionType, structure[0])
    5858
    5959    #post processes qmu results if necessary
    6060    else:
    61         md=postqmu(md,filename)
     61        md = postqmu(md, filename)
    6262
    6363    return md
  • issm/trunk-jpl/src/m/solve/marshall.py

    r24115 r24213  
    77
    88       The routine creates a compatible binary file from @model md
    9        This binary file will be used for parallel runs in JPL-package
     9       This binary file will be used for parallel runs in JPL - package
    1010
    1111       Usage:
     
    1919        fid = open(md.miscellaneous.name + '.bin', 'wb')
    2020    except IOError as e:
    21         raise IOError("marshall error message: could not open '%s.bin' file for binary writing." % md.miscellaneous.name)
     21        raise IOError("marshall error message: could not open '%s.bin' file for binary writing. Due to: ".format(md.miscellaneous.name), e)
    2222
    2323    for field in md.properties():
    24 
    2524        #Some properties do not need to be marshalled
    2625        if field in ['results', 'radaroverlay', 'toolkits', 'cluster', 'private']:
    2726            continue
    2827
    29         #Check that current field is an object
     28    #Check that current field is an object
    3029        if not hasattr(getattr(md, field), 'marshall'):
    3130            raise TypeError("field '{}' is not an object.".format(field))
    3231
    33         #Marshall current object
    34         #print "marshalling %s ..." % field
    35         exec("md.{}.marshall('md.{}',md,fid)".format(field, field))
     32    #Marshall current object
     33    #print "marshalling %s ..." % field
     34        exec("md.{}.marshall('md.{}', md, fid)".format(field, field))
    3635
    3736    #Last, write "md.EOF" to make sure that the binary file is not corrupt
     
    4241        fid.close()
    4342    except IOError as e:
    44         raise IOError("marshall error message: could not close file '%s.bin'." % md.miscellaneous.name)
     43        print("marshall error message: could not close file '{}.bin' due to:".format(md.miscellaneous.name), e)
  • issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py

    r23921 r24213  
    1313
    1414
    15 def parseresultsfromdiskioserial(md, filename):    # {{{
     15def parseresultsfromdiskioserial(md, filename):  # {{{
    1616    #Open file
    1717    try:
     
    3131
    3232    while loadres:
    33         #check that the new result does not add a step,  which would be an error:
     33        #check that the new result does not add a step, which would be an error:
    3434        if check_nomoresteps:
    3535            if loadres['step'] >= 1:
    36                 raise TypeError("parsing results for a steady-state core, which incorporates transient results!")
    37 
    38         #Check step,  increase counter if this is a new step
     36                raise TypeError("parsing results for a steady - state core, which incorporates transient results!")
     37
     38        #Check step, increase counter if this is a new step
    3939        if(step != loadres['step'] and loadres['step'] > 1):
    4040            counter = counter + 1
     
    4343        #Add result
    4444        if loadres['step'] == 0:
    45             #if we have a step = 0,  this is a steady state solution, don't expect more steps.
     45            #if we have a step = 0, this is a steady state solution, don't expect more steps.
    4646            index = 0
    4747            check_nomoresteps = 1
     
    5858            saveres[index] = resultsclass.results()
    5959
    60         #Get time and step
    61         if loadres['step'] != -9999.:
     60    #Get time and step
     61        if loadres['step'] != - 9999.:
    6262            saveres[index].__dict__['step'] = loadres['step']
    63         if loadres['time'] != -9999.:
     63        if loadres['time'] != - 9999.:
    6464            saveres[index].__dict__['time'] = loadres['time']
    6565
    66         #Add result
     66    #Add result
    6767        saveres[index].__dict__[loadres['fieldname']] = loadres['field']
    6868
    69         #read next result
     69    #read next result
    7070        loadres = ReadData(fid, md)
    7171
     
    7676
    7777
    78 def parseresultsfromdiskiosplit(md, filename):    # {{{
     78def parseresultsfromdiskiosplit(md, filename):  # {{{
    7979    #Open file
    8080    try:
     
    8585    saveres = []
    8686
    87     #if we have done split I/O,  ie, we have results that are fragmented across patches,
    88     #do a first pass,  and figure out the structure of results
     87    #if we have done split I / O, ie, we have results that are fragmented across patches,
     88    #do a first pass, and figure out the structure of results
    8989    loadres = ReadDataDimensions(fid)
    9090    while loadres:
     
    9898        setattr(saveres[loadres['step'] - 1], 'time', loadres['time'])
    9999
    100         #Add result
     100    #Add result
    101101        setattr(saveres[loadres['step'] - 1], loadres['fieldname'], float('NaN'))
     102
     103    #read next result
     104        loadres = ReadDataDimensions(fid)
     105
     106    #do a second pass, and figure out the size of the patches
     107    fid.seek(0)  #rewind
     108    loadres = ReadDataDimensions(fid)
     109    while loadres:
    102110
    103111        #read next result
    104112        loadres = ReadDataDimensions(fid)
    105113
    106     #do a second pass,  and figure out the size of the patches
    107     fid.seek(0)    #rewind
    108     loadres = ReadDataDimensions(fid)
    109     while loadres:
    110 
    111         #read next result
    112         loadres = ReadDataDimensions(fid)
    113 
    114     #third pass,  this time to read the real information
    115     fid.seek(0)    #rewind
     114    #third pass, this time to read the real information
     115    fid.seek(0)  #rewind
    116116    loadres = ReadData(fid, md)
    117117    while loadres:
     
    125125        setattr(saveres[loadres['step'] - 1], 'time', loadres['time'])
    126126
    127         #Add result
     127    #Add result
    128128        setattr(saveres[loadres['step'] - 1], loadres['fieldname'], loadres['field'])
    129129
    130         #read next result
     130    #read next result
    131131        loadres = ReadData(fid, md)
    132132
     
    138138
    139139
    140 def ReadData(fid, md):    # {{{
     140def ReadData(fid, md):  # {{{
    141141    """
    142142    READDATA -
     
    149149    try:
    150150        length = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
    151         fieldname = struct.unpack('{}s'.format(length), fid.read(length))[0][:-1]
     151        fieldname = struct.unpack('{}s'.format(length), fid.read(length))[0][: - 1]
    152152        fieldname = fieldname.decode()  #strings are binaries when stored so need to be converted back
    153153        time = struct.unpack('d', fid.read(struct.calcsize('d')))[0]
     
    159159
    160160        elif datatype == 2:
    161             field = struct.unpack('{}s'.format(M), fid.read(M))[0][:-1]
     161            field = struct.unpack('{}s'.format(M), fid.read(M))[0][: - 1]
    162162            field = field.decode()
    163163
    164164        elif datatype == 3:
    165165            N = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
    166             #field = transpose(fread(fid, [N M], 'double'));
     166    #field = transpose(fread(fid, [N M], 'double'))
    167167            field = np.zeros(shape=(M, N), dtype=float)
    168168            for i in range(M):
     
    171171        elif datatype == 4:
    172172            N = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
    173             # field = transpose(fread(fid, [N M], 'int'));
     173    # field = transpose(fread(fid, [N M], 'int'))
    174174            field = np.zeros(shape=(M, N), dtype=int)
    175175            for i in range(M):
     
    179179            raise TypeError("cannot read data of datatype {}".format(datatype))
    180180
    181         #Process units here FIXME: this should not be done here!
     181    #Process units here FIXME: this should not be done here!
    182182        yts = md.constants.yts
    183183        if fieldname == 'BalancethicknessThickeningRate':
     
    200200            field = field * yts
    201201        elif fieldname == 'TotalFloatingBmb':
    202             field = field / 10.**12 * yts  #(GigaTon/year)
     202            field = field / 10.**12 * yts  #(GigaTon / year)
    203203        elif fieldname == 'TotalFloatingBmbScaled':
    204             field = field / 10.**12 * yts  #(GigaTon/year)
     204            field = field / 10.**12 * yts  #(GigaTon / year)
    205205        elif fieldname == 'TotalGroundedBmb':
    206             field = field / 10.**12 * yts  #(GigaTon/year)
     206            field = field / 10.**12 * yts  #(GigaTon / year)
    207207        elif fieldname == 'TotalGroundedBmbScaled':
    208             field = field / 10.**12 * yts  #(GigaTon/year)
     208            field = field / 10.**12 * yts  #(GigaTon / year)
    209209        elif fieldname == 'TotalSmb':
    210             field = field / 10.**12 * yts  #(GigaTon/year)
     210            field = field / 10.**12 * yts  #(GigaTon / year)
    211211        elif fieldname == 'TotalSmbScaled':
    212             field = field / 10.**12 * yts  #(GigaTon/year)
     212            field = field / 10.**12 * yts  #(GigaTon / year)
    213213        elif fieldname == 'GroundinglineMassFlux':
    214             field = field /10.**12 * yts   #(GigaTon/year)
     214            field = field / 10.**12 * yts  #(GigaTon / year)
    215215        elif fieldname == 'IcefrontMassFlux':
    216             field = field /10.**12 * yts   #(GigaTon/year)
     216            field = field / 10.**12 * yts  #(GigaTon / year)
    217217        elif fieldname == 'IcefrontMassFluxLevelset':
    218             field = field /10.**12 * yts   #(GigaTon/year)
     218            field = field / 10.**12 * yts  #(GigaTon / year)
    219219        elif fieldname == 'SmbMassBalance':
    220220            field = field * yts
     
    241241            degmax = md.love.sh_nmax
    242242            nfreq = md.love.nfreq
    243             #for numpy 1.8+ only
    244             #temp_field = np.full((degmax+1, nfreq, nlayer+1, 6), 0.0)
     243    #for numpy 1.8 + only
     244    #temp_field = np.full((degmax + 1, nfreq, nlayer + 1, 6), 0.0)
    245245            temp_field = np.empty((degmax + 1, nfreq, nlayer + 1, 6))
    246246            temp_field.fill(0.0)
     
    253253            field = temp_field
    254254
    255         if time != -9999:
     255        if time != - 9999:
    256256            time = time / yts
    257257
     
    269269
    270270
    271 def ReadDataDimensions(fid):    # {{{
     271def ReadDataDimensions(fid):  # {{{
    272272    """
    273     READDATADIMENSIONS - read data dimensions,  step and time, but not the data itself.
     273    READDATADIMENSIONS - read data dimensions, step and time, but not the data itself.
    274274
    275275        Usage:
     
    280280    try:
    281281        length = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
    282         fieldname = struct.unpack('{}s'.format(length), fid.read(length))[0][:-1]
     282        fieldname = struct.unpack('{}s'.format(length), fid.read(length))[0][: - 1]
    283283        time = struct.unpack('d', fid.read(struct.calcsize('d')))[0]
    284284        step = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
    285285        datatype = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
    286286        M = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
    287         N = 1    #default
     287        N = 1  #default
    288288        if datatype == 1:
    289289            fid.seek(M * 8, 1)
  • issm/trunk-jpl/src/m/solve/solve.py

    r23716 r24213  
    1010#from MatlabFuncs import *
    1111
    12 def solve(md,solutionstring,*args):
    13         """
    14         SOLVE - apply solution sequence for this model
    1512
    16            Usage:
    17               md=solve(md,solutionstring,varargin)
    18               where varargin is a list of paired arguments of string OR enums
     13def solve(md, solutionstring, *args):
     14    """
     15    SOLVE - apply solution sequence for this model
    1916
    20                 solution types available comprise:
    21                  - 'Stressbalance'    or 'sb'
    22                  - 'Masstransport'    or 'mt'
    23                  - 'Thermal'          or 'th'
    24                  - 'Steadystate'      or 'ss'
    25                  - 'Transient'        or 'tr'
    26                  - 'Balancethickness' or 'mc'
    27                  - 'Balancevelocity'  or 'bv'
    28                  - 'BedSlope'         or 'bsl'
    29                  - 'SurfaceSlope'     or 'ssl'
    30                  - 'Hydrology'        or 'hy'
    31                  - 'DamageEvolution'  or 'da'
    32                  - 'Gia'              or 'gia'
    33                  - 'Esa'              or 'esa'
    34                  - 'Sealevelrise'     or 'slr'
    35                  - 'Love'             or 'lv'
     17       Usage:
     18          md = solve(md, solutionstring, varargin)
     19          where varargin is a list of paired arguments of string OR enums
    3620
    37            extra options:
    38         - loadonly : does not solve. only load results
    39                   - checkconsistency : 'yes' or 'no' (default is 'yes'), ensures checks on consistency of model
    40                   - restart: 'directory name (relative to the execution directory) where the restart file is located.
     21        solution types available comprise:
     22         - 'Stressbalance'    or 'sb'
     23         - 'Masstransport'    or 'mt'
     24         - 'Thermal'          or 'th'
     25         - 'Steadystate'      or 'ss'
     26         - 'Transient'        or 'tr'
     27         - 'Balancethickness' or 'mc'
     28         - 'Balancevelocity'  or 'bv'
     29         - 'BedSlope'         or 'bsl'
     30         - 'SurfaceSlope'     or 'ssl'
     31         - 'Hydrology'        or 'hy'
     32         - 'DamageEvolution'  or 'da'
     33         - 'Gia'              or 'gia'
     34         - 'Esa'          or 'esa'
     35         - 'Sealevelrise'     or 'slr'
     36         - 'Love'             or 'lv'
    4137
    42            Examples:
    43               md=solve(md,'Stressbalance');
    44          md=solve(md,'sb');
    45         """
     38       extra options:
     39 - loadonly : does not solve. only load results
     40         - checkconsistency : 'yes' or 'no' (default is 'yes'), ensures checks on consistency of model
     41         - restart: 'directory name (relative to the execution directory) where the restart file is located.
    4642
    47         #recover and process solve options
    48         if solutionstring.lower() == 'sb' or solutionstring.lower() == 'stressbalance':
    49                 solutionstring = 'StressbalanceSolution';
    50         elif solutionstring.lower() == 'mt' or solutionstring.lower() == 'masstransport':
    51                 solutionstring = 'MasstransportSolution';
    52         elif solutionstring.lower() == 'th' or solutionstring.lower() == 'thermal':
    53                 solutionstring = 'ThermalSolution';
    54         elif solutionstring.lower() == 'st' or solutionstring.lower() == 'steadystate':
    55                 solutionstring = 'SteadystateSolution';
    56         elif solutionstring.lower() == 'tr' or solutionstring.lower() == 'transient':
    57                 solutionstring = 'TransientSolution';
    58         elif solutionstring.lower() == 'mc' or solutionstring.lower() == 'balancethickness':
    59                 solutionstring = 'BalancethicknessSolution';
    60         elif solutionstring.lower() == 'bv' or solutionstring.lower() == 'balancevelocity':
    61                 solutionstring = 'BalancevelocitySolution';
    62         elif solutionstring.lower() == 'bsl' or solutionstring.lower() == 'bedslope':
    63                 solutionstring = 'BedSlopeSolution';
    64         elif solutionstring.lower() == 'ssl' or solutionstring.lower() == 'surfaceslope':
    65                 solutionstring = 'SurfaceSlopeSolution';
    66         elif solutionstring.lower() == 'hy' or solutionstring.lower() == 'hydrology':
    67                 solutionstring = 'HydrologySolution';
    68         elif solutionstring.lower() == 'da' or solutionstring.lower() == 'damageevolution':
    69                 solutionstring = 'DamageEvolutionSolution';
    70         elif solutionstring.lower() == 'gia' or solutionstring.lower() == 'gia':
    71                 solutionstring = 'GiaSolution';
    72         elif solutionstring.lower() == 'lv' or solutionstring.lower() == 'love':
    73                 solutionstring = 'LoveSolution';
    74         elif solutionstring.lower() == 'esa':
    75                 solutionstring = 'EsaSolution';
    76         elif solutionstring.lower() == 'slr' or solutionstring.lower() == 'sealevelrise':
    77                 solutionstring = 'SealevelriseSolution';
    78         else:
    79                 raise ValueError("solutionstring '%s' not supported!" % solutionstring)
    80         options=pairoptions('solutionstring',solutionstring,*args)
     43       Examples:
     44          md = solve(md, 'Stressbalance')
     45         md = solve(md, 'sb')
     46    """
    8147
    82         #recover some fields
    83         md.private.solution=solutionstring
    84         cluster=md.cluster
    85         if options.getfieldvalue('batch','no')=='yes':
    86                 batch=1
    87         else:
    88                 batch=0;
     48    #recover and process solve options
     49    if solutionstring.lower() == 'sb' or solutionstring.lower() == 'stressbalance':
     50        solutionstring = 'StressbalanceSolution'
     51    elif solutionstring.lower() == 'mt' or solutionstring.lower() == 'masstransport':
     52        solutionstring = 'MasstransportSolution'
     53    elif solutionstring.lower() == 'th' or solutionstring.lower() == 'thermal':
     54        solutionstring = 'ThermalSolution'
     55    elif solutionstring.lower() == 'st' or solutionstring.lower() == 'steadystate':
     56        solutionstring = 'SteadystateSolution'
     57    elif solutionstring.lower() == 'tr' or solutionstring.lower() == 'transient':
     58        solutionstring = 'TransientSolution'
     59    elif solutionstring.lower() == 'mc' or solutionstring.lower() == 'balancethickness':
     60        solutionstring = 'BalancethicknessSolution'
     61    elif solutionstring.lower() == 'bv' or solutionstring.lower() == 'balancevelocity':
     62        solutionstring = 'BalancevelocitySolution'
     63    elif solutionstring.lower() == 'bsl' or solutionstring.lower() == 'bedslope':
     64        solutionstring = 'BedSlopeSolution'
     65    elif solutionstring.lower() == 'ssl' or solutionstring.lower() == 'surfaceslope':
     66        solutionstring = 'SurfaceSlopeSolution'
     67    elif solutionstring.lower() == 'hy' or solutionstring.lower() == 'hydrology':
     68        solutionstring = 'HydrologySolution'
     69    elif solutionstring.lower() == 'da' or solutionstring.lower() == 'damageevolution':
     70        solutionstring = 'DamageEvolutionSolution'
     71    elif solutionstring.lower() == 'gia' or solutionstring.lower() == 'gia':
     72        solutionstring = 'GiaSolution'
     73    elif solutionstring.lower() == 'lv' or solutionstring.lower() == 'love':
     74        solutionstring = 'LoveSolution'
     75    elif solutionstring.lower() == 'esa':
     76        solutionstring = 'EsaSolution'
     77    elif solutionstring.lower() == 'slr' or solutionstring.lower() == 'sealevelrise':
     78        solutionstring = 'SealevelriseSolution'
     79    else:
     80        raise ValueError("solutionstring '%s' not supported!" % solutionstring)
     81    options = pairoptions('solutionstring', solutionstring, *args)
    8982
    90         #check model consistency
    91         if options.getfieldvalue('checkconsistency','yes')=='yes':
    92                 if md.verbose.solution:
    93                         print("checking model consistency")
    94                 ismodelselfconsistent(md)
     83    #recover some fields
     84    md.private.solution = solutionstring
     85    cluster = md.cluster
     86    if options.getfieldvalue('batch', 'no') == 'yes':
     87        batch = 1
     88    else:
     89        batch = 0
    9590
    96         #First, build a runtime name that is unique
    97         restart=options.getfieldvalue('restart','')
    98         if restart == 1:
    99                 pass #do nothing
    100         else:
    101                 if restart:
    102                         md.private.runtimename=restart
    103                 else:
    104                         if options.getfieldvalue('runtimename',True):
    105                                 c=datetime.datetime.now()
    106                                 md.private.runtimename="%s-%02i-%02i-%04i-%02i-%02i-%02i-%i" % (md.miscellaneous.name,c.month,c.day,c.year,c.hour,c.minute,c.second,os.getpid())
    107                         else:
    108                                 md.private.runtimename=md.miscellaneous.name
     91    #check model consistency
     92    if options.getfieldvalue('checkconsistency', 'yes') == 'yes':
     93        if md.verbose.solution:
     94            print("checking model consistency")
     95        ismodelselfconsistent(md)
    10996
    110         #if running qmu analysis, some preprocessing of dakota files using models
    111         #fields needs to be carried out.
    112         if md.qmu.isdakota:
    113                 md=preqmu(md,options)
     97    #First, build a runtime name that is unique
     98    restart = options.getfieldvalue('restart', '')
     99    if restart == 1:
     100        pass  #do nothing
     101    else:
     102        if restart:
     103            md.private.runtimename = restart
     104        else:
     105            if options.getfieldvalue('runtimename', True):
     106                c = datetime.datetime.now()
     107                md.private.runtimename = "%s-%02i-%02i-%04i-%02i-%02i-%02i-%i" % (md.miscellaneous.name, c.month, c.day, c.year, c.hour, c.minute, c.second, os.getpid())
     108            else:
     109                md.private.runtimename = md.miscellaneous.name
    114110
    115         #Do we load results only?
    116         if options.getfieldvalue('loadonly',False):
    117                 md=loadresultsfromcluster(md)
    118                 return md
     111    #if running qmu analysis, some preprocessing of dakota files using models
     112    #fields needs to be carried out.
     113    if md.qmu.isdakota:
     114        md = preqmu(md, options)
    119115
     116    #Do we load results only?
     117    if options.getfieldvalue('loadonly', False):
     118        md = loadresultsfromcluster(md)
     119        return md
    120120
    121         #Write all input files
    122         marshall(md)                                                                                                                                                                    # bin file
    123         md.toolkits.ToolkitsFile(md.miscellaneous.name+'.toolkits')              # toolkits file
    124         cluster.BuildQueueScript(md.private.runtimename,md.miscellaneous.name,md.private.solution,md.settings.io_gather,md.debug.valgrind,md.debug.gprof,md.qmu.isdakota,md.transient.isoceancoupling)          # queue file
     121    #Write all input files
     122    marshall(md) # bin file
     123    md.toolkits.ToolkitsFile(md.miscellaneous.name + '.toolkits') # toolkits file
     124    cluster.BuildQueueScript(md.private.runtimename, md.miscellaneous.name, md.private.solution, md.settings.io_gather, md.debug.valgrind, md.debug.gprof, md.qmu.isdakota, md.transient.isoceancoupling)  # queue file
    125125
    126         #Stop here if batch mode
    127         if options.getfieldvalue('batch','no')=='yes':
    128                 print('batch mode requested: not launching job interactively')
    129                 print('launch solution sequence on remote cluster by hand')
    130                 return md
     126    #Stop here if batch mode
     127    if options.getfieldvalue('batch', 'no') == 'yes':
     128        print('batch mode requested: not launching job interactively')
     129        print('launch solution sequence on remote cluster by hand')
     130        return md
    131131
    132         #Upload all required files:
    133         modelname = md.miscellaneous.name
    134         filelist  = [modelname+'.bin ',modelname+'.toolkits ',modelname+'.queue ']
    135         if md.qmu.isdakota:
    136                 filelist.append(modelname+'.qmu.in')
     132    #Upload all required files:
     133    modelname = md.miscellaneous.name
     134    filelist = [modelname + '.bin ', modelname + '.toolkits ', modelname + '.queue ']
     135    if md.qmu.isdakota:
     136        filelist.append(modelname + '.qmu.in')
    137137
    138         if not restart:
    139                 cluster.UploadQueueJob(md.miscellaneous.name,md.private.runtimename,filelist)
     138    if not restart:
     139        cluster.UploadQueueJob(md.miscellaneous.name, md.private.runtimename, filelist)
    140140
    141         #Launch job
    142         cluster.LaunchQueueJob(md.miscellaneous.name,md.private.runtimename,filelist,restart,batch)
     141    #Launch job
     142    cluster.LaunchQueueJob(md.miscellaneous.name, md.private.runtimename, filelist, restart, batch)
    143143
    144         #wait on lock
    145         if md.settings.waitonlock>0:
    146                 #we wait for the done file
    147                 islock=waitonlock(md)
    148                 if islock==0:    #no results to be loaded
    149                         print('The results must be loaded manually with md=loadresultsfromcluster(md).')
    150                 else:            #load results
    151                         if md.verbose.solution:
    152                                 print('loading results from cluster')
    153                         md=loadresultsfromcluster(md)
     144    #wait on lock
     145    if md.settings.waitonlock > 0:
     146        #we wait for the done file
     147        islock = waitonlock(md)
     148        if islock == 0:  #no results to be loaded
     149            print('The results must be loaded manually with md = loadresultsfromcluster(md).')
     150        else:  #load results
     151            if md.verbose.solution:
     152                print('loading results from cluster')
     153            md = loadresultsfromcluster(md)
    154154
    155         #post processes qmu results if necessary
    156         if md.qmu.isdakota:
    157                 if not strncmpi(options.getfieldvalue('keep','y'),'y',1):
    158                         shutil.rmtree('qmu'+str(os.getpid()))
     155    #post processes qmu results if necessary
     156    if md.qmu.isdakota:
     157        if not strncmpi(options.getfieldvalue('keep', 'y'), 'y', 1):
     158            shutil.rmtree('qmu' + str(os.getpid()))
    159159
    160         return md
     160    return md
  • issm/trunk-jpl/src/m/solve/waitonlock.py

    r23716 r24213  
    44import MatlabFuncs as m
    55
     6
    67def waitonlock(md):
    7         """
    8         WAITONLOCK - wait for a file
    9  
    10            This routine will return when a file named 'filename' is written to disk.
    11            If the time limit given in input is exceeded, return 0
    12  
    13            Usage:
    14               flag=waitonlock(md)
    15         """
     8    """
     9    WAITONLOCK - wait for a file
    1610
    17         #Get filename (lock file) and options
    18         executionpath=md.cluster.executionpath
    19         cluster=md.cluster.name
    20         login=md.cluster.login
    21         port=md.cluster.port
    22         timelimit=md.settings.waitonlock
    23         filename=os.path.join(executionpath,md.private.runtimename,md.miscellaneous.name+'.lock')
     11       This routine will return when a file named 'filename' is written to disk.
     12       If the time limit given in input is exceeded, return 0
    2413
    25         #waitonlock will work if the lock is on the same machine only:
    26         if not m.strcmpi(gethostname(),cluster):
     14       Usage:
     15          flag = waitonlock(md)
     16    """
    2717
    28                 print('solution launched on remote cluster. log in to detect job completion.')
    29                 choice=eval(input('Is the job successfully completed? (y/n) '))
    30                 if not m.strcmp(choice,'y'):
    31                         print('Results not loaded... exiting')
    32                         flag=0
    33                 else:
    34                         flag=1
     18    #Get filename (lock file) and options
     19    executionpath = md.cluster.executionpath
     20    cluster = md.cluster.name
     21    timelimit = md.settings.waitonlock
     22    filename = os.path.join(executionpath, md.private.runtimename, md.miscellaneous.name + '.lock')
    3523
    36         #job is running on the same machine
    37         else:
     24    #waitonlock will work if the lock is on the same machine only:
     25    if not m.strcmpi(gethostname(), cluster):
    3826
    39                 if 'interactive' in vars(md.cluster) and md.cluster.interactive:
    40                         #We are in interactive mode, no need to check for job completion
    41                         flag=1
    42                         return flag
    43                 #initialize time and file presence test flag
    44                 etime=0
    45                 ispresent=0
    46                 print(("waiting for '%s' hold on... (Ctrl+C to exit)" % filename))
     27        print('solution launched on remote cluster. log in to detect job completion.')
     28        choice = eval(input('Is the job successfully completed? (y / n) '))
     29        if not m.strcmp(choice, 'y'):
     30            print('Results not loaded... exiting')
     31            flag = 0
     32        else:
     33            flag = 1
    4734
    48                 #loop till file .lock exist or time is up
    49                 while ispresent==0 and etime<timelimit:
    50                         ispresent=os.path.exists(filename)
    51                         time.sleep(1)
    52                         etime+=1/60
     35    #job is running on the same machine
     36    else:
    5337
    54                 #build output
    55                 if etime>timelimit:
    56                         print('Time limit exceeded. Increase md.settings.waitonlock')
    57                         print('The results must be loaded manually with md=loadresultsfromcluster(md).')
    58                         raise RuntimeError('waitonlock error message: time limit exceeded.')
    59                         flag=0
    60                 else:
    61                         flag=1
     38        if 'interactive' in vars(md.cluster) and md.cluster.interactive:
     39            #We are in interactive mode, no need to check for job completion
     40            flag = 1
     41            return flag
     42        #initialize time and file presence test flag
     43        etime = 0
     44        ispresent = 0
     45        print(("waiting for '%s' hold on... (Ctrl + C to exit)" % filename))
    6246
    63         return flag
     47        #loop till file .lock exist or time is up
     48        while ispresent == 0 and etime < timelimit:
     49            ispresent = os.path.exists(filename)
     50            time.sleep(1)
     51            etime += 1 / 60
    6452
     53        #build output
     54        if etime > timelimit:
     55            print('Time limit exceeded. Increase md.settings.waitonlock')
     56            print('The results must be loaded manually with md = loadresultsfromcluster(md).')
     57            raise RuntimeError('waitonlock error message: time limit exceeded.')
     58            flag = 0
     59        else:
     60            flag = 1
     61
     62    return flag
  • issm/trunk-jpl/src/m/solvers/asmoptions.py

    r21988 r24213  
    11import pairoptions
    22
     3
    34def asmoptions(*args):
    4         #ASMOPTIONS - return ASM petsc options
    5         #
    6         #   Usage:
    7         #      options=asmoptions;
    8        
    9         #retrieve options provided in varargin
    10         arguments=pairoptions.pairoptions(*args)
    11        
    12         options=[['toolkit','petsc'],['mat_type','mpiaij'],['ksp_type','gmres'],['pc_type','asm'],['sub_pc_type','lu'],['pc_asm_overlap',3],['ksp_max_it',100],['ksp_rtol',1e-30]];
     5    #ASMOPTIONS - return ASM petsc options
     6    #
     7    #   Usage:
     8    #      options = asmoptions
    139
    14         #now, go through our arguments, and write over default options.
    15         for i in range(len(arguments.list)):
    16                 arg1=arguments.list[i][0]
    17                 arg2=arguments.list[i][1]
    18                 found=0;
    19                 for j in range(len(options)):
    20                         joption=options[j][0]
    21                         if joption==arg1:
    22                                 joption[1]=arg2;
    23                                 options[j]=joption;
    24                                 found=1;
    25                                 break
    26                 if not found:
    27                         #this option did not exist, add it:
    28                         options.append([arg1,arg2])
    29         return options
     10    #retrieve options provided in varargin
     11    arguments = pairoptions.pairoptions(*args)
     12
     13    options = [['toolkit', 'petsc'],
     14               ['mat_type', 'mpiaij'],
     15               ['ksp_type', 'gmres'],
     16               ['pc_type', 'asm'],
     17               ['sub_pc_type', 'lu'],
     18               ['pc_asm_overlap', 3],
     19               ['ksp_max_it', 100],
     20               ['ksp_rtol', 1e-30]]
     21
     22    #now, go through our arguments, and write over default options.
     23    for i in range(len(arguments.list)):
     24        arg1 = arguments.list[i][0]
     25        arg2 = arguments.list[i][1]
     26        found = 0
     27        for j in range(len(options)):
     28            joption = options[j][0]
     29            if joption == arg1:
     30                joption[1] = arg2
     31                options[j] = joption
     32                found = 1
     33                break
     34        if not found:
     35            #this option did not exist, add it:
     36            options.append([arg1, arg2])
     37    return options
  • issm/trunk-jpl/src/m/solvers/iluasmoptions.py

    r21990 r24213  
    22import pairoptions
    33
     4
    45def iluasmoptions(*args):
    5         """
    6         ILUASMOPTIONS -
     6    """
     7    ILUASMOPTIONS -
    78
    8            Usage:
    9               options=iluasmoptions;
    10         """
    11                          
    12         #retrieve options provided in varargin
    13         options=pairoptions.pairoptions(*args)
    14         iluasm=OrderedDict()
     9       Usage:
     10          options = iluasmoptions
     11    """
    1512
    16         #default iluasm options
    17         iluasm['toolkit']='petsc'
    18         iluasm['mat_type']=options.getfieldvalue('mat_type','aij')
    19         iluasm['ksp_type']=options.getfieldvalue('ksp_type','gmres')
    20         iluasm['pc_type']=options.getfieldvalue('pc_type','asm')
    21         iluasm['sub_pc_type']=options.getfieldvalue('sub_pc_type','ilu')
    22         iluasm['pc_asm_overlap']=options.getfieldvalue('pc_asm_overlap',5)
    23         iluasm['ksp_max_it']=options.getfieldvalue('ksp_max_it',100)
    24         iluasm['ksp_rtol']=options.getfieldvalue('ksp_rtol',1e-15)
     13    #retrieve options provided in varargin
     14    options = pairoptions.pairoptions(*args)
     15    iluasm = OrderedDict()
    2516
    26         return iluasm
     17    #default iluasm options
     18    iluasm['toolkit'] = 'petsc'
     19    iluasm['mat_type'] = options.getfieldvalue('mat_type', 'aij')
     20    iluasm['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
     21    iluasm['pc_type'] = options.getfieldvalue('pc_type', 'asm')
     22    iluasm['sub_pc_type'] = options.getfieldvalue('sub_pc_type', 'ilu')
     23    iluasm['pc_asm_overlap'] = options.getfieldvalue('pc_asm_overlap', 5)
     24    iluasm['ksp_max_it'] = options.getfieldvalue('ksp_max_it', 100)
     25    iluasm['ksp_rtol'] = options.getfieldvalue('ksp_rtol', 1e-15)
    2726
     27    return iluasm
  • issm/trunk-jpl/src/m/solvers/issmgslsolver.py

    r19998 r24213  
    22import pairoptions
    33
     4
    45def issmgslsolver(*args):
    5         #ISSMSOLVE - return issm solver options
    6         #
    7         #   Usage:
    8         #      options=issmsolver;
    9        
    10         #retrieve options provided in varargin
    11         arguments=pairoptions.pairoptions(*args)
    12        
    13         options=OrderedDict()
    14         options['toolkit'] = 'issm'
    15         options['mat_type'] = 'dense'
    16         options['vec_type'] = 'seq'
    17         options['solver_type'] = 'gsl'
     6    #ISSMSOLVE - return issm solver options
     7    #
     8    #   Usage:
     9    #      options = issmsolver
    1810
    19         #now, go through our arguments, and write over default options.
    20         for i in range(len(arguments.list)):
    21                 arg1=arguments.list[i][0]
    22                 arg2=arguments.list[i][1]
    23                 found=0;
    24                 for j in range(len(options)):
    25                         joption=options[j][0]
    26                         if joption==arg1:
    27                                 joption[1]=arg2;
    28                                 options[j]=joption;
    29                                 found=1;
    30                                 break
    31                 if not found:
    32                         #this option did not exist, add it:
    33                         options.append([arg1,arg2])
    34         return options
     11    #retrieve options provided in varargin
     12    arguments = pairoptions.pairoptions(*args)
     13
     14    options = OrderedDict()
     15    options['toolkit'] = 'issm'
     16    options['mat_type'] = 'dense'
     17    options['vec_type'] = 'seq'
     18    options['solver_type'] = 'gsl'
     19
     20    #now, go through our arguments, and write over default options.
     21    for i in range(len(arguments.list)):
     22        arg1 = arguments.list[i][0]
     23        arg2 = arguments.list[i][1]
     24        found = 0
     25        for j in range(len(options)):
     26            joption = options[j][0]
     27            if joption == arg1:
     28                joption[1] = arg2
     29                options[j] = joption
     30                found = 1
     31                break
     32        if not found:
     33            #this option did not exist, add it:
     34            options.append([arg1, arg2])
     35    return options
  • issm/trunk-jpl/src/m/solvers/issmmumpssolver.py

    r23748 r24213  
    22import pairoptions
    33
     4
    45def issmmumpssolver(*args):
    5         #ISSMSOLVE - return issm solver options
    6         #
    7         #   Usage:
    8         #      options=issmsolver;
     6    #ISSMSOLVE - return issm solver options
     7    #
     8    #   Usage:
     9    #      options = issmsolver
    910
    10         #retrieve options provided in varargin
    11         arguments=pairoptions.pairoptions(*args)
     11    #retrieve options provided in varargin
     12    arguments = pairoptions.pairoptions(*args)
    1213
    13         options=OrderedDict()
    14         options['toolkit'] = 'issm'
    15         options['mat_type'] = 'mpisparse'
    16         options['vec_type'] = 'mpi'
    17         options['solver_type'] = 'mumps'
     14    options = OrderedDict()
     15    options['toolkit'] = 'issm'
     16    options['mat_type'] = 'mpisparse'
     17    options['vec_type'] = 'mpi'
     18    options['solver_type'] = 'mumps'
    1819
    19         #now, go through our arguments, and write over default options.
    20         for i in range(len(arguments.list)):
    21                 arg1=arguments.list[i][0]
    22                 arg2=arguments.list[i][1]
    23                 found=0;
    24                 for j in range(len(options)):
    25                         joption=options[j][0]
    26                         if joption==arg1:
    27                                 joption[1]=arg2;
    28                                 options[j]=joption;
    29                                 found=1;
    30                                 break
    31                 if not found:
    32                         #this option did not exist, add it:
    33                         options.append([arg1,arg2])
    34         return options
     20    #now, go through our arguments, and write over default options.
     21    for i in range(len(arguments.list)):
     22        arg1 = arguments.list[i][0]
     23        arg2 = arguments.list[i][1]
     24        found = 0
     25        for j in range(len(options)):
     26            joption = options[j][0]
     27            if joption == arg1:
     28                joption[1] = arg2
     29                options[j] = joption
     30                found = 1
     31                break
     32        if not found:
     33            #this option did not exist, add it:
     34            options.append([arg1, arg2])
     35    return options
  • issm/trunk-jpl/src/m/solvers/jacobiasmoptions.py

    r21988 r24213  
    11import pairoptions
    22
     3
    34def jacobiasmoptions(*args):
    4         #ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
    5         #
    6         #   Usage:
    7         #      options=jacobiasmoptions;
    8        
    9         #retrieve options provided in varargin
    10         arguments=pairoptions.pairoptions(*args)
    11        
    12         options=[['toolkit','petsc'],['mat_type','mpiaij'],['ksp_type','gmres'],['pc_type','asm'],['sub_pc_type','jacobi'],['pc_asm_overlap',3],['ksp_max_it',100],['ksp_rtol',1e-15]];
     5    #ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
     6    #
     7    #   Usage:
     8    #      options = jacobiasmoptions
    139
    14         #now, go through our arguments, and write over default options.
    15         for i in range(len(arguments.list)):
    16                 arg1=arguments.list[i][0]
    17                 arg2=arguments.list[i][1]
    18                 found=0;
    19                 for j in range(len(options)):
    20                         joption=options[j][0]
    21                         if joption==arg1:
    22                                 joption[1]=arg2;
    23                                 options[j]=joption;
    24                                 found=1;
    25                                 break
    26                 if not found:
    27                         #this option did not exist, add it:
    28                         options.append([arg1,arg2])
    29         return options
     10    #retrieve options provided in varargin
     11    arguments = pairoptions.pairoptions(*args)
     12
     13    options = [['toolkit', 'petsc'],
     14               ['mat_type', 'mpiaij'],
     15               ['ksp_type', 'gmres'],
     16               ['pc_type', 'asm'],
     17               ['sub_pc_type', 'jacobi'],
     18               ['pc_asm_overlap', 3],
     19               ['ksp_max_it', 100],
     20               ['ksp_rtol', 1e-15]]
     21
     22    #now, go through our arguments, and write over default options.
     23    for i in range(len(arguments.list)):
     24        arg1 = arguments.list[i][0]
     25        arg2 = arguments.list[i][1]
     26        found = 0
     27        for j in range(len(options)):
     28            joption = options[j][0]
     29            if joption == arg1:
     30                joption[1] = arg2
     31                options[j] = joption
     32                found = 1
     33                break
     34        if not found:
     35            #this option did not exist, add it:
     36            options.append([arg1, arg2])
     37    return options
  • issm/trunk-jpl/src/m/solvers/jacobicgoptions.py

    r21988 r24213  
    1 import pairoptions
     1import pairoptions
     2
    23
    34def jacobicgoptions(*args):
    4         #ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
    5         #
    6         #   Usage:
    7         #      options=jacobicgoptions;
    8        
    9         #retrieve options provided in varargin
    10         arguments=pairoptions.pairoptions(*args)
    11        
    12         options=[['toolkit','petsc'],['mat_type','mpiaij'],['ksp_type','cg'],['ksp_max_it',100],['ksp_rtol',1e-15]];
     5    #ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
     6    #
     7    #   Usage:
     8    #      options = jacobicgoptions
    139
    14         #now, go through our arguments, and write over default options.
    15         for i in range(len(arguments.list)):
    16                 arg1=arguments.list[i][0]
    17                 arg2=arguments.list[i][1]
    18                 found=0;
    19                 for j in range(len(options)):
    20                         joption=options[j][0]
    21                         if joption==arg1:
    22                                 joption[1]=arg2;
    23                                 options[j]=joption;
    24                                 found=1;
    25                                 break
    26                 if not found:
    27                         #this option did not exist, add it:
    28                         options.append([arg1,arg2])
    29         return options
     10    #retrieve options provided in varargin
     11    arguments = pairoptions.pairoptions(*args)
     12
     13    options = [['toolkit', 'petsc'],
     14               ['mat_type', 'mpiaij'],
     15               ['ksp_type', 'cg'],
     16               ['ksp_max_it', 100],
     17               ['ksp_rtol', 1e-15]]
     18
     19    #now, go through our arguments, and write over default options.
     20    for i in range(len(arguments.list)):
     21        arg1 = arguments.list[i][0]
     22        arg2 = arguments.list[i][1]
     23        found = 0
     24        for j in range(len(options)):
     25            joption = options[j][0]
     26            if joption == arg1:
     27                joption[1] = arg2
     28                options[j] = joption
     29                found = 1
     30                break
     31        if not found:
     32            #this option did not exist, add it:
     33            options.append([arg1, arg2])
     34    return options
  • issm/trunk-jpl/src/m/solvers/matlaboptions.py

    r17497 r24213  
    11import pairoptions
    22
     3
    34def matlaboptions(*args):
    4         #MATLABOPTIONS - return Matlab petsc options
    5         #
    6         #   Usage:
    7         #      options=matlaboptions;
    8        
    9         #retrieve options provided in varargin
    10         arguments=pairoptions.pairoptions(*args)
    11        
    12         options=[['toolkit','petsc'],['ksp_type','matlab']];
     5    #MATLABOPTIONS - return Matlab petsc options
     6    #
     7    #   Usage:
     8    #      options = matlaboptions
    139
    14         #now, go through our arguments, and write over default options.
    15         for i in range(len(arguments.list)):
    16                 arg1=arguments.list[i][0]
    17                 arg2=arguments.list[i][1]
    18                 found=0;
    19                 for j in range(len(options)):
    20                         joption=options[j][0]
    21                         if joption==arg1:
    22                                 joption[1]=arg2;
    23                                 options[j]=joption;
    24                                 found=1;
    25                                 break
    26                 if not found:
    27                         #this option did not exist, add it:
    28                         options.append([arg1,arg2])
    29         return options
     10    #retrieve options provided in varargin
     11    arguments = pairoptions.pairoptions(*args)
     12
     13    options = [['toolkit', 'petsc'],
     14               ['ksp_type', 'matlab']]
     15
     16    #now, go through our arguments, and write over default options.
     17    for i in range(len(arguments.list)):
     18        arg1 = arguments.list[i][0]
     19        arg2 = arguments.list[i][1]
     20        found = 0
     21        for j in range(len(options)):
     22            joption = options[j][0]
     23            if joption == arg1:
     24                joption[1] = arg2
     25                options[j] = joption
     26                found = 1
     27                break
     28        if not found:
     29            #this option did not exist, add it:
     30            options.append([arg1, arg2])
     31    return options
  • issm/trunk-jpl/src/m/solvers/mumpsoptions.py

    r23716 r24213  
    33from IssmConfig import IssmConfig
    44
     5
    56def mumpsoptions(*args):
    6         """
    7         MUMPSOPTIONS - return MUMPS direct solver  petsc options
     7    """
     8    MUMPSOPTIONS - return MUMPS direct solver  petsc options
    89
    9            Usage:
    10               options=mumpsoptions;
    11         """
     10       Usage:
     11          options = mumpsoptions
     12    """
    1213
    13         #retrieve options provided in varargin
    14         options=pairoptions.pairoptions(*args)
    15         mumps=OrderedDict()
     14    #retrieve options provided in varargin
     15    options = pairoptions.pairoptions(*args)
     16    mumps = OrderedDict()
    1617
    17         #default mumps options
    18         PETSC_MAJOR=IssmConfig('_PETSC_MAJOR_')[0]
    19         PETSC_MINOR=IssmConfig('_PETSC_MINOR_')[0]
    20         if PETSC_MAJOR==2.:
    21                 mumps['toolkit']='petsc'
    22                 mumps['mat_type']=options.getfieldvalue('mat_type','aijmumps')
    23                 mumps['ksp_type']=options.getfieldvalue('ksp_type','preonly')
    24                 mumps['pc_type']=options.getfieldvalue('pc_type','lu')
    25                 mumps['mat_mumps_icntl_14']=options.getfieldvalue('mat_mumps_icntl_14',120)
    26         if PETSC_MAJOR==3.:
    27                 mumps['toolkit']='petsc'
    28                 mumps['mat_type']=options.getfieldvalue('mat_type','mpiaij')
    29                 mumps['ksp_type']=options.getfieldvalue('ksp_type','preonly')
    30                 mumps['pc_type']=options.getfieldvalue('pc_type','lu')
    31                 if PETSC_MINOR>8.:
    32                         mumps['pc_factor_mat_solver_type']=options.getfieldvalue('pc_factor_mat_solver_type','mumps')
    33                 else:
    34                         mumps['pc_factor_mat_solver_package']=options.getfieldvalue('pc_factor_mat_solver_package','mumps')
    35                 mumps['mat_mumps_icntl_14']=options.getfieldvalue('mat_mumps_icntl_14',120)
     18    #default mumps options
     19    PETSC_MAJOR = IssmConfig('_PETSC_MAJOR_')[0]
     20    PETSC_MINOR = IssmConfig('_PETSC_MINOR_')[0]
     21    if PETSC_MAJOR == 2.:
     22        mumps['toolkit'] = 'petsc'
     23        mumps['mat_type'] = options.getfieldvalue('mat_type', 'aijmumps')
     24        mumps['ksp_type'] = options.getfieldvalue('ksp_type', 'preonly')
     25        mumps['pc_type'] = options.getfieldvalue('pc_type', 'lu')
     26        mumps['mat_mumps_icntl_14'] = options.getfieldvalue('mat_mumps_icntl_14', 120)
     27    if PETSC_MAJOR == 3.:
     28        mumps['toolkit'] = 'petsc'
     29        mumps['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
     30        mumps['ksp_type'] = options.getfieldvalue('ksp_type', 'preonly')
     31        mumps['pc_type'] = options.getfieldvalue('pc_type', 'lu')
     32        if PETSC_MINOR > 8.:
     33            mumps['pc_factor_mat_solver_type'] = options.getfieldvalue('pc_factor_mat_solver_type', 'mumps')
     34        else:
     35            mumps['pc_factor_mat_solver_package'] = options.getfieldvalue('pc_factor_mat_solver_package', 'mumps')
     36        mumps['mat_mumps_icntl_14'] = options.getfieldvalue('mat_mumps_icntl_14', 120)
    3637
    37         return mumps
     38    return mumps
  • issm/trunk-jpl/src/m/solvers/soroptions.py

    r21988 r24213  
    11import pairoptions
    22
     3
    34def soroptions(*args):
    4         #SOROPTIONS - return Relaxation Solver petsc options
    5         #
    6         #   Usage:
    7         #      options=soroptions;
    8        
    9         #retrieve options provided in varargin
    10         arguments=pairoptions.pairoptions(*args)
    11        
    12         options=[['toolkit','petsc'],['mat_type','mpiaij'],['ksp_type','cg'],['pc_type','sor'],['pc_sor_omega',1.1],['pc_sor_its',2]];
     5    #SOROPTIONS - return Relaxation Solver petsc options
     6    #
     7    #   Usage:
     8    #      options = soroptions
    139
    14         #now, go through our arguments, and write over default options.
    15         for i in range(len(arguments.list)):
    16                 arg1=arguments.list[i][0]
    17                 arg2=arguments.list[i][1]
    18                 found=0;
    19                 for j in range(len(options)):
    20                         joption=options[j][0]
    21                         if joption==arg1:
    22                                 joption[1]=arg2;
    23                                 options[j]=joption;
    24                                 found=1;
    25                                 break
    26                 if not found:
    27                         #this option did not exist, add it:
    28                         options.append([arg1,arg2])
    29         return options
     10    #retrieve options provided in varargin
     11    arguments = pairoptions.pairoptions(*args)
     12
     13    options = [['toolkit', 'petsc'],
     14               ['mat_type', 'mpiaij'],
     15               ['ksp_type', 'cg'],
     16               ['pc_type', 'sor'],
     17               ['pc_sor_omega', 1.1],
     18               ['pc_sor_its', 2]]
     19
     20    #now, go through our arguments, and write over default options.
     21    for i in range(len(arguments.list)):
     22        arg1 = arguments.list[i][0]
     23        arg2 = arguments.list[i][1]
     24        found = 0
     25        for j in range(len(options)):
     26            joption = options[j][0]
     27            if joption == arg1:
     28                joption[1] = arg2
     29                options[j] = joption
     30                found = 1
     31                break
     32        if not found:
     33            #this option did not exist, add it:
     34            options.append([arg1, arg2])
     35    return options
  • issm/trunk-jpl/src/m/solvers/stokesoptions.py

    r23910 r24213  
    22from IssmConfig import IssmConfig
    33
     4
    45def stokesoptions(*args):
    5         #STOKESOPTIONS - return STOKES multi-physics solver petsc options
    6         #
    7         #   Usage:
    8         #      options=stokesoptions;
    9        
    10         #retrieve options provided in varargin
    11         arguments=pairoptions.pairoptions(*args)
     6    #STOKESOPTIONS - return STOKES multi - physics solver petsc options
     7    #
     8    #   Usage:
     9    #      options = stokesoptions
    1210
     11    #retrieve options provided in varargin
     12    arguments = pairoptions.pairoptions(*args)
    1313
    14         #default stokes options
    15         PETSC_VERSION=IssmConfig('_PETSC_MAJOR_')[0]
     14    #default stokes options
     15    PETSC_VERSION = IssmConfig('_PETSC_MAJOR_')[0]
    1616
    17         if PETSC_VERSION==2.:
    18                 raise RuntimeError('stokesoptions error message: multi-physics options not supported in Petsc 2')
    19         if PETSC_VERSION==3.:
    20                 options=[['toolkit','petsc'],['mat_type','mpiaij'],['ksp_type','cr'],['pc_type','bjacobi'],['tol',0.6],\
    21         ['elltol',5e-5],['schur_pc',1],\
    22         ['max_iter',10000],['issm_option_solver','stokes']]
     17    if PETSC_VERSION == 2.:
     18        raise RuntimeError('stokesoptions error message: multi-physics options not supported in Petsc 2')
     19    if PETSC_VERSION == 3.:
     20        options = [['toolkit', 'petsc'],
     21                   ['mat_type', 'mpiaij'],
     22                   ['ksp_type', 'cr'],
     23                   ['pc_type', 'bjacobi'],
     24                   ['tol', 0.6],
     25                   ['elltol', 5e-5],
     26                   ['schur_pc', 1],
     27                   ['max_iter', 10000],
     28                   ['issm_option_solver', 'stokes']]
    2329
    24         #now, go through our arguments, and write over default options.
    25         for i in range(len(arguments.list)):
    26                 arg1=arguments.list[i][0]
    27                 arg2=arguments.list[i][1]
    28                 found=0;
    29                 for j in range(len(options)):
    30                         joption=options[j][0]
    31                         if joption==arg1:
    32                                 joption[1]=arg2;
    33                                 options[j]=joption;
    34                                 found=1;
    35                                 break
    36                 if not found:
    37                         #this option did not exist, add it:
    38                         options.append([arg1,arg2])
    39         return options
     30    #now, go through our arguments, and write over default options.
     31    for i in range(len(arguments.list)):
     32        arg1 = arguments.list[i][0]
     33        arg2 = arguments.list[i][1]
     34        found = 0
     35        for j in range(len(options)):
     36            joption = options[j][0]
     37            if joption == arg1:
     38                joption[1] = arg2
     39                options[j] = joption
     40                found = 1
     41                break
     42        if not found:
     43            #this option did not exist, add it:
     44            options.append([arg1, arg2])
     45    return options
Note: See TracChangeset for help on using the changeset viewer.