예제 #1
0
def run(path, film_thickness, logger):
    manager = MeasurementManager(path, Geometry(film_thickness))

    # Calculate the resist R from the U/I-Plot
    for meas in manager.get_all():
        x, y = meas.get_measured_values()
        slope, intercept, std_err = linear_fit(x, y)
        meas.resist = 1 / slope

    # Calculate the contact resists
    for temp in manager.temp_keys:
        manager.contact_resist_dict[temp] = get_contact_resist(
            manager.get_by_temp(temp))

    # Correct the resists with the contact resist and the geometry
    for meas in manager.get_all():
        temp_key = meas.temp_celcius
        meas.contact_resist = manager.contact_resist_dict[temp_key]
        meas.film_resist = get_film_resist(meas, manager.geometry)
        if meas.film_resist < 0:
            logger.warning("Negative film resist in {0}".format(meas.name))

    # Get activation energy and sigma_0 from an linearized Arrhenius plot
    for dist in manager.dist_keys:
        measurements = manager.get_by_dist(dist)
        film_resists = [meas.film_resist for meas in measurements]
        temps = array([meas.temp_kelvin for meas in measurements])
        actv_energy, sigma_0 = arrhenius_fit(temps, film_resists)
        manager.arrhenius_dict[dist] = (actv_energy, sigma_0)

    output = Output(path)
    output.summary(manager)
    output.show_summary()
    output.measurements_raw(manager)
    output.arrhenius_raw(manager)
    output.contact_resist_raw(manager)
    output.film_resist_raw(manager)
예제 #2
0
파일: jual.py 프로젝트: eljost/jual
def run(path, film_thickness, logger):
    manager = MeasurementManager(path, Geometry(film_thickness))
       
    # Calculate the resist R from the U/I-Plot
    for meas in manager.get_all(): 
        x, y = meas.get_measured_values()
        slope, intercept, std_err = linear_fit(x, y)
        meas.resist = 1 / slope
    
    # Calculate the contact resists
    for temp in manager.temp_keys:
        manager.contact_resist_dict[temp] = get_contact_resist(
                                                manager.get_by_temp(temp))
    
    # Correct the resists with the contact resist and the geometry
    for meas in manager.get_all():
        temp_key = meas.temp_celcius
        meas.contact_resist = manager.contact_resist_dict[temp_key]
        meas.film_resist = get_film_resist(meas, manager.geometry)
        if meas.film_resist < 0:
            logger.warning("Negative film resist in {0}".format(meas.name))
    
    # Get activation energy and sigma_0 from an linearized Arrhenius plot
    for dist in manager.dist_keys:
        measurements = manager.get_by_dist(dist)
        film_resists = [meas.film_resist for meas in measurements]
        temps = array([meas.temp_kelvin for meas in measurements])
        actv_energy, sigma_0 = arrhenius_fit(temps, film_resists)
        manager.arrhenius_dict[dist] = (actv_energy, sigma_0)

    output = Output(path)
    output.summary(manager)
    output.show_summary()
    output.measurements_raw(manager)
    output.arrhenius_raw(manager)
    output.contact_resist_raw(manager)
    output.film_resist_raw(manager)