Ejemplo n.º 1
0
def get_oil_distillation_cuts(oil_columns, field_indexes):
    '''
        There are two distinct sets of distillation cut data in the EC
        spreadsheet. They are:
        - Boiling Point: Distribution, Temperature (C).  Here the labels are
                         percent values representing the fraction boiled off,
                         and the data is the temperature at which the
                         fractional value occurs.
        - Boiling Point: Cumulative Weight Fraction (%).  Here the labels are
                         temperatures (C) values, and the data is the fraction
                         that is boiled off at that temperature.

        We will try to get both sets of data and then merge them if possible.
        Most oils will have either one set or the other, not both.
        Dimensional parameters are simply (weathering).
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)

    bp_distribution = get_cuts_from_bp_distribution(oil_columns, field_indexes,
                                                    weathering)

    bp_cumulative_frac = get_cuts_from_bp_cumulative_frac(
        oil_columns, field_indexes, weathering)

    return [
        item for sublist in (bp_distribution, bp_cumulative_frac)
        for item in sublist
    ]
Ejemplo n.º 2
0
def get_oil_distillation_cuts(oil_columns, field_indexes):
    '''
        There are two distinct sets of distillation cut data in the EC
        spreadsheet. They are:
        - Boiling Point: Distribution, Temperature (C).  Here the labels are
                         percent values representing the fraction boiled off,
                         and the data is the temperature at which the
                         fractional value occurs.
        - Boiling Point: Cumulative Weight Fraction (%).  Here the labels are
                         temperatures (C) values, and the data is the fraction
                         that is boiled off at that temperature.

        We will try to get both sets of data and then merge them if possible.
        Most oils will have either one set or the other, not both.
        Dimensional parameters are simply (weathering).
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)

    bp_distribution = get_cuts_from_bp_distribution(oil_columns,
                                                    field_indexes,
                                                    weathering)

    bp_cumulative_frac = get_cuts_from_bp_cumulative_frac(oil_columns,
                                                          field_indexes,
                                                          weathering)

    return [item for sublist in (bp_distribution, bp_cumulative_frac)
            for item in sublist]
Ejemplo n.º 3
0
def get_oil_wax_content(oil_columns, field_indexes):
    '''
        Dimensional parameters are (weathering).
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    wax_contents = get_wax_content_by_weathering(oil_columns, field_indexes,
                                                 weathering)

    return wax_contents
Ejemplo n.º 4
0
def get_oil_adhesions(oil_columns, field_indexes):
    '''
        Getting the adhesion is fairly straightforward.  We simply get the
        value in g/cm^2 and convert to kg/m^2.
        Dimensional parameters are simply (weathering).
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    adhesions = get_adhesions_by_weathering(oil_columns, field_indexes,
                                            weathering)

    return adhesions
Ejemplo n.º 5
0
def get_oil_emulsions(oil_columns, field_indexes):
    '''
        The Evironment Canada data sheet contains data for emulsion properties,
        which we will try to capture.
        Dimensional parameters are (temperature, age, weathering).
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    emulsion_age_0 = get_emulsion_age_0(oil_columns, field_indexes, weathering)

    emulsion_age_7 = get_emulsion_age_7(oil_columns, field_indexes, weathering)

    return emulsion_age_0 + emulsion_age_7
Ejemplo n.º 6
0
def get_oil_flash_points(oil_columns, field_indexes):
    '''
        Getting the flash point is similar to Adios2 in that the values
        contain '>' and '<' symbols.  This indicates we need to interpret the
        content to come up with minimum and maximum values.
        Dimensional parameters are simply (weathering).
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    flash_points = get_flash_points_by_weathering(oil_columns, field_indexes,
                                                  weathering)

    return flash_points
Ejemplo n.º 7
0
def get_oil_sulfur_content(oil_columns, field_indexes):
    '''
        Getting the sulfur content is very straightforward.  Just get the
        float value.
        Dimensional parameters are (weathering).
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    sulfur_contents = get_sulfur_content_by_weathering(oil_columns,
                                                       field_indexes,
                                                       weathering)

    return sulfur_contents
Ejemplo n.º 8
0
def get_oil_emulsions(oil_columns, field_indexes):
    '''
        The Evironment Canada data sheet contains data for emulsion properties,
        which we will try to capture.
        Dimensional parameters are (temperature, age, weathering).
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    emulsion_age_0 = get_emulsion_age_0(oil_columns, field_indexes, weathering)

    emulsion_age_7 = get_emulsion_age_7(oil_columns, field_indexes, weathering)

    return emulsion_age_0 + emulsion_age_7
Ejemplo n.º 9
0
def get_oil_adhesions(oil_columns, field_indexes):
    '''
        Getting the adhesion is fairly straightforward.  We simply get the
        value in g/cm^2 and convert to kg/m^2.
        Dimensional parameters are simply (weathering).
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    adhesions = get_adhesions_by_weathering(oil_columns,
                                            field_indexes,
                                            weathering)

    return adhesions
Ejemplo n.º 10
0
def get_oil_flash_points(oil_columns, field_indexes):
    '''
        Getting the flash point is similar to Adios2 in that the values
        contain '>' and '<' symbols.  This indicates we need to interpret the
        content to come up with minimum and maximum values.
        Dimensional parameters are simply (weathering).
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    flash_points = get_flash_points_by_weathering(oil_columns,
                                                  field_indexes,
                                                  weathering)

    return flash_points
Ejemplo n.º 11
0
def get_oil_sara_total_fractions(oil_columns, field_indexes):
    '''
        Dimensional parameters are (weathering).
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    saturates = get_saturates_fraction_by_weathering(oil_columns,
                                                     field_indexes, weathering)
    aromatics = get_aromatics_fraction_by_weathering(oil_columns,
                                                     field_indexes, weathering)
    resins = get_resins_fraction_by_weathering(oil_columns, field_indexes,
                                               weathering)
    asphaltenes = get_asphaltenes_fraction_by_weathering(
        oil_columns, field_indexes, weathering)

    return zip(saturates, aromatics, resins, asphaltenes)
Ejemplo n.º 12
0
def get_oil_densities(oil_columns, field_indexes):
    '''
        Getting densities out of this datasheet is more tricky than it should
        be.  There are two categories, density at 15C, and density at 0/5C.
        I dunno, I would have organized the data in a more orthogonal way.
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    densities_at_0c = get_oil_densities_at_0c(oil_columns, field_indexes,
                                              weathering)
    densities_at_5c = get_oil_densities_at_5c(oil_columns, field_indexes,
                                              weathering)
    densities_at_15c = get_oil_densities_at_15c(oil_columns, field_indexes,
                                                weathering)

    return densities_at_0c + densities_at_5c + densities_at_15c
Ejemplo n.º 13
0
def get_oil_evaporation_eqs(oil_columns, field_indexes):
    '''
        The Evironment Canada data sheet contains equations for evaporative
        loss, along with coefficient values to be used per oil. There are
        three equations and three possible coefficients (A, B, and optionally
        C). We will try to capture both the algorithm and the coefficients.
        Dimensional parameters are simply (weathering).
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    evap_ests_1998 = get_evaporation_eqs_ests_1998(oil_columns, field_indexes,
                                                   weathering)

    evap_mass_loss1 = get_evaporation_eqs_mass_loss1(oil_columns,
                                                     field_indexes, weathering)

    evap_mass_loss2 = get_evaporation_eqs_mass_loss2(oil_columns,
                                                     field_indexes, weathering)

    return evap_ests_1998 + evap_mass_loss1 + evap_mass_loss2
Ejemplo n.º 14
0
def get_oil_viscosities(oil_columns, field_indexes):
    '''
        Getting viscosities out of this datasheet is more tricky than it should
        be.  There are two categories, viscosity at 15C, and viscosity at 0/5C.
        I dunno, I would have organized the data in a more orthogonal way.
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    viscosities_at_0c = get_oil_viscosities_at_0c(oil_columns,
                                                  field_indexes,
                                                  weathering)

    viscosities_at_5c = get_oil_viscosities_at_5c(oil_columns,
                                                  field_indexes,
                                                  weathering)

    viscosities_at_15c = get_oil_viscosities_at_15c(oil_columns,
                                                    field_indexes,
                                                    weathering)

    return viscosities_at_0c + viscosities_at_5c + viscosities_at_15c
Ejemplo n.º 15
0
def get_oil_interfacial_tensions(oil_columns, field_indexes):
    '''
        Getting interfacial tensions out of this datasheet is a bit tricky,
        but understandably so since we are dealing with a number of dimensional
        parameters (temperature, interface, weathering).
        There are two categories, surface/interfacial tension at 15C, and
        surface/interfacial tension at 0/5C.
        I still think it could have been organized more orthogonally.
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    tensions_at_0c = get_oil_tensions_at_0c(oil_columns, field_indexes,
                                            weathering)

    tensions_at_5c = get_oil_tensions_at_5c(oil_columns, field_indexes,
                                            weathering)

    tensions_at_15c = get_oil_tensions_at_15c(oil_columns, field_indexes,
                                              weathering)

    return tensions_at_0c + tensions_at_5c + tensions_at_15c
Ejemplo n.º 16
0
def get_oil_evaporation_eqs(oil_columns, field_indexes):
    '''
        The Evironment Canada data sheet contains equations for evaporative
        loss, along with coefficient values to be used per oil. There are
        three equations and three possible coefficients (A, B, and optionally
        C). We will try to capture both the algorithm and the coefficients.
        Dimensional parameters are simply (weathering).
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    evap_ests_1998 = get_evaporation_eqs_ests_1998(oil_columns,
                                                   field_indexes,
                                                   weathering)

    evap_mass_loss1 = get_evaporation_eqs_mass_loss1(oil_columns,
                                                     field_indexes,
                                                     weathering)

    evap_mass_loss2 = get_evaporation_eqs_mass_loss2(oil_columns,
                                                     field_indexes,
                                                     weathering)

    return evap_ests_1998 + evap_mass_loss1 + evap_mass_loss2
def get_oil_interfacial_tensions(oil_columns, field_indexes):
    '''
        Getting interfacial tensions out of this datasheet is a bit tricky,
        but understandably so since we are dealing with a number of dimensional
        parameters (temperature, interface, weathering).
        There are two categories, surface/interfacial tension at 15C, and
        surface/interfacial tension at 0/5C.
        I still think it could have been organized more orthogonally.
    '''
    weathering = get_oil_weathering(oil_columns, field_indexes)
    tensions_at_0c = get_oil_tensions_at_0c(oil_columns,
                                            field_indexes,
                                            weathering)

    tensions_at_5c = get_oil_tensions_at_5c(oil_columns,
                                            field_indexes,
                                            weathering)

    tensions_at_15c = get_oil_tensions_at_15c(oil_columns,
                                              field_indexes,
                                              weathering)

    return tensions_at_0c + tensions_at_5c + tensions_at_15c
Ejemplo n.º 18
0
    col_indexes = get_oil_column_indexes(db_sheet)
    field_indexes = get_row_field_names(db_sheet)

    for cat, v in field_indexes.iteritems():
        for field, idxs in v.iteritems():
            print cat, field, idxs

    for name, idxs in col_indexes.iteritems():
        # if name == 'Arabian Heavy [2004]':
        # if name == 'Anadarko HIA-376':
        # if name == 'Gail Well E010':
        # if name == 'Access West Winter Blend':
        if name == 'Alaminos Canyon Block 25':
            oil_columns = get_oil_columns(db_sheet, col_indexes[name])
            print 'Weathered %: ', get_oil_weathering(oil_columns, field_indexes)
            print 'Reference: ', get_oil_reference(oil_columns, field_indexes)

            print 'Densities: '
            pp.pprint(get_oil_densities(oil_columns, field_indexes))
            print 'APIs:', get_oil_api(oil_columns, field_indexes)

            print 'DVis: '
            pp.pprint(get_oil_viscosities(oil_columns, field_indexes))

            print 'Interfacial Tensions:'
            pp.pprint(get_oil_interfacial_tensions(oil_columns, field_indexes))

            print 'Flash Points:'
            pp.pprint(get_oil_flash_points(oil_columns, field_indexes))
Ejemplo n.º 19
0
    col_indexes = get_oil_column_indexes(db_sheet)
    field_indexes = get_row_field_names(db_sheet)

    for cat, v in field_indexes.iteritems():
        for field, idxs in v.iteritems():
            print cat, field, idxs

    for name, idxs in col_indexes.iteritems():
        # if name == 'Arabian Heavy [2004]':
        # if name == 'Anadarko HIA-376':
        # if name == 'Gail Well E010':
        # if name == 'Access West Winter Blend':
        if name == 'Alaminos Canyon Block 25':
            oil_columns = get_oil_columns(db_sheet, col_indexes[name])
            print 'Weathered %: ', get_oil_weathering(oil_columns,
                                                      field_indexes)
            print 'Reference: ', get_oil_reference(oil_columns, field_indexes)

            print 'Densities: '
            pp.pprint(get_oil_densities(oil_columns, field_indexes))
            print 'APIs:', get_oil_api(oil_columns, field_indexes)

            print 'DVis: '
            pp.pprint(get_oil_viscosities(oil_columns, field_indexes))

            print 'Interfacial Tensions:'
            pp.pprint(get_oil_interfacial_tensions(oil_columns, field_indexes))

            print 'Flash Points:'
            pp.pprint(get_oil_flash_points(oil_columns, field_indexes))
Ejemplo n.º 20
0
    col_indexes = get_oil_column_indexes(db_sheet)
    field_indexes = get_row_field_names(db_sheet)

    for cat, v in field_indexes.items():
        for field, idxs in v.items():
            print(cat, field, idxs)

    for name, idxs in col_indexes.items():
        # if name == 'Arabian Heavy [2004]':
        # if name == 'Anadarko HIA-376':
        # if name == 'Gail Well E010':
        # if name == 'Access West Winter Blend':
        if name == 'Alaminos Canyon Block 25':
            oil_columns = get_oil_columns(db_sheet, col_indexes[name])
            print('Weathered %: ',
                  get_oil_weathering(oil_columns, field_indexes))
            print('Reference: ', get_oil_reference(oil_columns, field_indexes))

            print('Densities: ')
            pp.pprint(get_oil_densities(oil_columns, field_indexes))
            print('APIs:', get_oil_api(oil_columns, field_indexes))

            print('DVis: ')
            pp.pprint(get_oil_viscosities(oil_columns, field_indexes))

            print('Interfacial Tensions:')
            pp.pprint(get_oil_interfacial_tensions(oil_columns, field_indexes))

            print('Flash Points:')
            pp.pprint(get_oil_flash_points(oil_columns, field_indexes))