Notebook to scope out using constant current simulations

Let's try and calculate the global current for a simulation.

$$ I = \frac{D c}{\delta} F n A \beta $$

where $A$ is the inital surface area of the electrode and $\beta$ is a factor, 0.75 in this case.


In [5]:
import json
from collections import namedtuple

with open('../scripts/constant_current.json', 'r') as fp:
    params_dict = json.load(fp)
    
params = namedtuple('ParamClass', params_dict.keys())(*params_dict.values())

In [11]:
R = params.router
D = params.diffusionCupric
c = params.bulkCupric
#delta = params.delta
delta = 15e-6
n = params.charge
F = params.faradaysConstant
A = R**2 / 2
b = 1.0
I = D * c * n  * F * A * b / (params.featureDepth)

print 'current:',I


current: 4.7940984375e-07

In [9]:
print params


ParamClass(diffusionSuppressor=9.2e-11, faradaysConstant=96485.0, appliedPotential=-0.25, areaRatio=0.093, bulkCupric=1000.0, rboundary=5e-05, kPlus=100.0, Nx=100, diffusionCupric=2.65e-10, alpha=0.4, levelset_update_ncell=15, gasConstant=8.314, temperature=298.0, solver_tol=1e-10, current=2e-07, capacitance=0.0, charge=2, deltaRef=0.03, tol=1e-10, dtMax=1.0, totalTime=5000.0, i1=-40.0, i0=40.0, rinner=0.0, delta=5e-05, dtMin=5e-08, dt=0.01, cap_radius=0.0, omega=7.1e-06, totalSteps=100000000000000000000L, CFL=0.1, kappa=15.26, data_frequency=10, sweeps=4, shutdown_deposition_rate=1e-13, NxBase=1000, featureDepth=7.5e-05, gamma=2.5e-07, router=3.75e-05, bulkSuppressor=0.0, spacing_ratio=1.1, kMinus=24500000.0)

The simulations are actually using a current of $2\times 10^{-7}$ A as this seems to work better numerically


In [1]:
%load_ext autoreload
%autoreload 4
from sumatra.projects import load_project
from extremefill2D.tools import smt_ipy_table
from extremefill2D.multiViewer import MultiViewer

project = load_project('../scripts')


/users/wd15/git/fipy/fipy/solvers/__init__.py:116: UserWarning: Could not import any solver package. If you are using Trilinos, make sure you have all of the necessary Trilinos packages installed - Epetra, EpetraExt, AztecOO, Amesos, ML, and IFPACK.
  warnings.warn("Could not import any solver package. If you are using Trilinos, make sure you have all of the necessary Trilinos packages installed - Epetra, EpetraExt, AztecOO, Amesos, ML, and IFPACK.")
/users/wd15/git/fipy/fipy/solvers/__init__.py:118: UserWarning: ImportError: No module named pysparse
  warnings.warn(inst.__class__.__name__ + ': ' + inst.message)
/users/wd15/git/fipy/fipy/solvers/__init__.py:118: UserWarning: ImportError: No module named PyTrilinos
  warnings.warn(inst.__class__.__name__ + ': ' + inst.message)
/users/wd15/git/fipy/fipy/solvers/__init__.py:118: UserWarning: ImportError: No module named scipy.sparse.linalg
  warnings.warn(inst.__class__.__name__ + ': ' + inst.message)
/users/wd15/hg/sumatra/sumatra/programs.py:57: Warning: Python could not be found. Please supply the path to the /users/wd15/anaconda/bin/python executable.
  warnings.warn(errmsg)

In [2]:
import json

fields = ['label', 'reason', 'timestamp', 'parameters', 'duration', 'version', 'tags']
parameters = ['current', 'rboundary', 'Nx', 'capacitance', 'totalTime', 'delta', 'router', 'rboundary', 'featureDepth']
              
jsonfile = '../scripts/constant_current.json'
with open(jsonfile, 'rb') as ff:
    params_dict = json.load(ff)
    
print params_dict
print params_dict['router']


{u'diffusionSuppressor': 9.2e-11, u'faradaysConstant': 96485.0, u'appliedPotential': -0.25, u'areaRatio': 0.093, u'bulkCupric': 1000.0, u'rboundary': 5e-05, u'kPlus': 100.0, u'Nx': 100, u'diffusionCupric': 2.65e-10, u'alpha': 0.4, u'levelset_update_ncell': 15, u'gasConstant': 8.314, u'temperature': 298.0, u'solver_tol': 1e-10, u'current': 2e-07, u'capacitance': 0.0, u'charge': 2, u'deltaRef': 0.03, u'tol': 1e-10, u'dtMax': 1.0, u'totalTime': 5000.0, u'i1': -40.0, u'i0': 40.0, u'rinner': 0.0, u'delta': 5e-05, u'dtMin': 5e-08, u'dt': 0.01, u'cap_radius': 0.0, u'omega': 7.1e-06, u'totalSteps': 100000000000000000000L, u'CFL': 0.1, u'kappa': 15.26, u'data_frequency': 10, u'sweeps': 4, u'shutdown_deposition_rate': 1e-13, u'NxBase': 1000, u'featureDepth': 7.5e-05, u'gamma': 2.5e-07, u'router': 3.75e-05, u'bulkSuppressor': 0.0, u'spacing_ratio': 1.1, u'kMinus': 24500000.0}
3.75e-05

Constant Current Simulation

The following is a constant current simulation with side wall wetting.


In [3]:
records = project.record_store.list(project.name, tags=['constant_current2'])

viewer = MultiViewer(records, figsize=(5., 5.))

viewer.plot(times=(0., 800.), xlim=49e-6, ylim=-90e-6)
smt_ipy_table(records, fields=fields, parameters=parameters)


/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:43: DeprecationWarning: openFile() is pending deprecation, use open_file() instead. You may use the pt2to3 tool to update your source code.
  self.h5fileread = tables.openFile(self.h5filename, mode='r')

/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:56: DeprecationWarning: listNodes() is pending deprecation, use list_nodes() instead. You may use the pt2to3 tool to update your source code.
  for array in h5file.listNodes(s, classname='Array'):

/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:62: DeprecationWarning: getNode() is pending deprecation, use get_node() instead. You may use the pt2to3 tool to update your source code.
  d = h5file.getNode(s, classname='Array').read()

Created Django record store using PostgreSQL
Out[3]:
LabelTimestampParametersDurationVersionTags
25539c292014-04-15&nbsp17:59current:&nbsp5.3e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-051h&nbsp58m&nbsp36.01s388f334f0304constant_current2

No Wetting Simulation

The following is a no wetting simulation.


In [4]:
records = project.record_store.list(project.name, tags=['constant_current5'])

viewer = MultiViewer(records, figsize=(5., 5.))

viewer.plot(times=(0., 500.), xlim=49e-6, ylim=-90e-6)
smt_ipy_table(records, fields=fields, parameters=parameters)


Out[4]:
LabelTimestampParametersDurationVersionTags
ecce00ac2014-04-16&nbsp15:47current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp500.0,&nbspdelta:&nbsp5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-0514m&nbsp39.28sea4f6a1ab955constant_current5

No Wetting Simulation - Modified

No wet simulation but corner cells can deposit. This leads to an anomalous growth from the corners.


In [5]:
records = project.record_store.list(project.name, tags=['constant_current6'])

viewer = MultiViewer(records, figsize=(5., 5.))

viewer.plot(times=(0., 100, 200, 300, 400, 500.), xlim=49e-6, ylim=-90e-6)
smt_ipy_table(records, fields=fields, parameters=parameters)


Out[5]:
LabelTimestampParametersDurationVersionTags
d471e5452014-04-16&nbsp17:12current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp500.0,&nbspdelta:&nbsp5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-0514m&nbsp46.03s175ae202fbb0constant_current6

Simulations with deposision

The following simulations allow deposition at cells which have more than one neighbouring cell that lies across the interface.

The aim of this was to try and remove the strange one cell thick gap that occurs during deposition when all side wall wetting is prevented.

Unfortunately, this leads to side wall wetting up the feature, which is not really physical either.


In [6]:
records = project.record_store.list(project.name, tags=['constant_current7'])

viewer = MultiViewer(records, figsize=(5., 5.))

viewer.plot(times=np.linspace(0., 5000., 10), xlim=49e-6, ylim=-90e-6)
smt_ipy_table(records, fields=fields, parameters=parameters)


Out[6]:
LabelTimestampParametersDurationVersionTags
07506c162014-04-17&nbsp10:48current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp200,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-057h&nbsp38m&nbsp29.94see5a5791aa3dconstant_current7
9e9adf802014-04-17&nbsp10:48current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-052h&nbsp12m&nbsp51.89see5a5791aa3dconstant_current7
61b224442014-04-17&nbsp10:48current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp400,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-051d&nbsp13h&nbsp52m&nbsp10.41see5a5791aa3dconstant_current7

Simulations with no corner deposition

These simulations are for no corner deposition for longer times and for different grid densities.

The aim of these simulations is to demonstrate that

  • (a) as the grid is refined the non-wetting at the side wall has no impact on the filling

  • (b) that the filling remains flat during the entire filling


In [7]:
records = project.record_store.list(project.name, tags=['constant_current8'])
viewer = MultiViewer(records, figsize=(5., 5.))

viewer.plot(times=np.linspace(0.0, 5000., 10), xlim=49e-6, ylim=-90e-6)
smt_ipy_table(records, fields=fields, parameters=parameters)


Out[7]:
LabelTimestampParametersDurationVersionTags
acb15e6c2014-04-17&nbsp12:21current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp400,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-051d&nbsp10h&nbsp46m&nbsp45.15s1a44ae751e61constant_current8
7133de382014-04-17&nbsp12:21current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-052h&nbsp15m&nbsp57.78s1a44ae751e61constant_current8
7cd4212a2014-04-17&nbsp12:21current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp200,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-057h&nbsp15m&nbsp27.49s1a44ae751e61constant_current8

Simulations with no corner deposition

These simulations are for no corner deposition for longer times and for different grid densities.

The aim of these simulations is to demonstrate that

  • (a) as the grid is refined the non-wetting at the side wall has no impact on the filling

  • (b) that the filling remains flat during the entire filling

  • (c) the filling exits the trench

One simulation was lost due to a database crash.


In [8]:
records = project.record_store.list(project.name, tags=['constant_current9'])
viewer = MultiViewer(records, figsize=(5., 5.))

viewer.plot(times=np.linspace(0.0, 8000., 20), xlim=49e-6, ylim=-90e-6)
smt_ipy_table(records, fields=fields, parameters=parameters)


Out[8]:
LabelTimestampParametersDurationVersionTags
4ea5433b2014-04-18&nbsp15:24current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp10000.0,&nbspdelta:&nbsp5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-054h&nbsp10m&nbsp1.40s885f68f35012constant_current9
4b94b60e2014-04-18&nbsp15:24current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp200,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp10000.0,&nbspdelta:&nbsp5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-0513h&nbsp35m&nbsp24.50s885f68f35012constant_current9

Running constant_current10: run jobs for longer, Nx=100, 200 and 400.


In [10]:
!qstat


job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID 
-----------------------------------------------------------------------------------------------------------------
1724283 0.50282 launcher   wd15         r     04/21/2014 11:39:29 ctcms@r017                         1        

Simulations with $\delta = 15 \mu m$

These simulations test that changing the boundary layer height doesn't impace the flat growth front.

The database for storing the simulation meta-data crashed and so the $Nx=100$ simulation was lost.


In [9]:
records = project.record_store.list(project.name, tags=['constant_current10'])
viewer = MultiViewer(records, figsize=(5., 5.))

viewer.plot(times=np.linspace(0.0, 8000., 20), xlim=49e-6, ylim=-90e-6)
smt_ipy_table(records, fields=fields, parameters=parameters)


Out[9]:
LabelTimestampParametersDurationVersionTags
4324d2bf2014-04-21&nbsp11:39current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp200,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp10000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-0511h&nbsp12m&nbsp39.86sa0757be80b31constant_current10

Hemispherical shaped boundary layer

The boundary layer is the shape of a hemispherical cap. This is designed as a gross approximation to the shape that the boundary layer might have with a large feature and a convection field. The goal is to ascertain whether the filling becomes convex or maintains a flat shape. Intuitively the fill shape should be convex.

The tag for these simulations is constant_current11.


In [4]:
!qstat


job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID 
-----------------------------------------------------------------------------------------------------------------
1724283 0.25525 launcher   wd15         r     04/21/2014 11:39:29 ctcms@r017                         1        
1724321 0.25207 launcher   wd15         r     04/22/2014 16:14:29 ctcms@r015                         1        

In [8]:
records = project.record_store.list(project.name, tags=['constant_current11'])
viewer = MultiViewer(records, figsize=(5., 5.))

viewer.plot(times=np.linspace(0.0, 8000., 20), xlim=49e-6, ylim=-90e-6)
smt_ipy_table(records, fields=fields, parameters=parameters + ['cap_radius'])


Out[8]:
LabelReasonTimestampParametersDurationVersionTags
1a7749492014-04-22&nbsp16:14current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp10000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp40m&nbsp37.05s5cb12e02e27dconstant_current11
18c8c62f2014-04-22&nbsp16:14current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp200,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp10000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-0511h&nbsp17m&nbsp16.45s5cb12e02e27dconstant_current11

Clearly the growth is remaining flat even though we have big dip in the boundary layer. What could be happending?

  • the boundary layer shape algorithm could be implemented incorrectly

  • we are not running near the diffusion limit so there isn't much of a decrease in the value of the cupric field down the trench, the remedy is just to increase the overall current

In the above simulations, the metal field is not being saved. To check the above issues, the cupric field will be saved and plotted to diagonse this issue. Also the simulation only needs to be run for a short time.

Saving the Cupric Field


In [11]:
records = project.record_store.list(project.name, tags=['constant_current12'])
viewer = MultiViewer(records, figsize=(5., 5.))

viewer.plot(times=np.linspace(0.0, 2000., 20), xlim=49e-6, ylim=-90e-6)
smt_ipy_table(records, fields=fields, parameters=parameters + ['cap_radius'])


Out[11]:
LabelReasonTimestampParametersDurationVersionTags
059a4ab52014-04-23&nbsp16:37current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp2000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-0548m&nbsp29.31sb9ad310575dbconstant_current12

In [12]:
import os

import fipy as fp
import matplotlib.pyplot as plt
import numpy as np
from extremefill2D.dicttable import DictTable
import brewer2mpl

def plot_cupric(record, datafile=None, index=None):
    if record is not None:
        datafile = os.path.join(record.datastore.root, record.output_data[0].path)
        label = record.label
    else:
        label = ''
        
    data = DictTable(datafile, 'r')
    
    if index is None:
        index = int(data.getLatestIndex())

    data0 = data[0]
    mesh = fp.Grid2D(nx=data0['nx'], ny=data0['ny'], dx=data0['dx'], dy=data0['dy'])  
    dy = mesh.dy
    shape = (mesh.ny, mesh.nx)
    x = mesh.x.value
    y = mesh.y.value
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    
    cupric = data[index]['cupric']
    #set1 = brewer2mpl.get_map('BuGn', 'sequential', 9).mpl_colors
    def flip(a, shape):
        a = np.reshape(a, shape)
        return a.swapaxes(0,1)
    
    x = flip(x, shape)
    y = flip(y, shape)
    cupric = flip(cupric, shape)
    plt.contourf(x, y, cupric, np.linspace(0, 1001, 10))
    plt.colorbar()
    ax.set_aspect(1.)
    plt.title(label)

In [8]:
plot_cupric(records[0])


It is clear from the above image that the cupric variable is not fixed at 1000.0 in the hemisphierical cap of radius 3.75e-5.

Cupric Field Test

Test after fixing some issues with the cupric field solution.


In [63]:
datafile = os.path.join('../scripts/Data', 'data.h5')
plot_cupric(None, datafile)


Simulations with altered boundary region

The boundary region is supposed to move back as the front advances. In the following simulations, the boundary is fixed.


In [62]:
records = project.record_store.list(project.name, tags=['constant_current13'])
viewer = MultiViewer(records, figsize=(5., 5.))

viewer.plot(times=np.linspace(0.0, 2000., 20), xlim=49e-6, ylim=-90e-6)
smt_ipy_table(records, fields=fields, parameters=parameters + ['cap_radius'])


Out[62]:
LabelReasonTimestampParametersDurationVersionTags
35d54b7e2014-04-24&nbsp13:25current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp2000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-0548m&nbsp49.28se9a69a394084constant_current13
f24c5b132014-04-24&nbsp13:25current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp10000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp28m&nbsp5.23se9a69a394084constant_current13
561de14c2014-04-24&nbsp13:25current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp1000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-0525m&nbsp50.37se9a69a394084constant_current13

In [63]:
plot_cupric(records[0])


The filling is still flat even though the shape of the cap is now correct. Probably now need to drive the system with a higher current to get more differential in the cupric.

Increasing $I$


In [4]:
records = project.record_store.list(project.name, tags=['constant_current14'])
smt_ipy_table(records, fields=fields, parameters=parameters + ['cap_radius'])


Created Django record store using PostgreSQL
Out[4]:
LabelReasonTimestampParametersDurationVersionTags
fb75dbeevarying&nbspcurrent2014-04-24&nbsp15:44current:&nbsp4e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-051h&nbsp47m&nbsp13.27s9bec6a0857aeconstant_current14
8dc1a7afvarying&nbspcurrent2014-04-24&nbsp15:44current:&nbsp8e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-054m&nbsp39.93s9bec6a0857aeconstant_current14
359649bdvarying&nbspcurrent2014-04-24&nbsp15:44current:&nbsp1.6e-06,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-051m&nbsp30.74s9bec6a0857aeconstant_current14

In [5]:
viewer = MultiViewer(records, figsize=(5., 5.))
viewer.plot(times=np.linspace(0.0, 4000., 20), xlim=49e-6, ylim=-90e-6)


/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:43: DeprecationWarning: openFile() is pending deprecation, use open_file() instead. You may use the pt2to3 tool to update your source code.
  self.h5fileread = tables.openFile(self.h5filename, mode='r')

/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:56: DeprecationWarning: listNodes() is pending deprecation, use list_nodes() instead. You may use the pt2to3 tool to update your source code.
  for array in h5file.listNodes(s, classname='Array'):

/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:62: DeprecationWarning: getNode() is pending deprecation, use get_node() instead. You may use the pt2to3 tool to update your source code.
  d = h5file.getNode(s, classname='Array').read()

Increasing $I$ eventually leads to non-planar interface growth, however, there is a critical value (diffusion limit) of $I$ for which the numerical solution becomes unstable. This estimated limit should be about

$$ I = \frac{D c}{\delta} F n A \approx 2.4\times 10^{-6} \text{(A)} $$

for $\delta = 15\times 10^{-6} \text{(m)}$. However, the $I=8\times 10^{-7} \text{(A)}$ (8dc1a7af) simulation is unstable. The simulation output shows NANs after about 170 time steps, likewise for 359649bd. The output from 8dc1a7af on previous time steps to the NANs shows a struggle for the curent to converge and it never exceeds a value of $I=6.1\times 10^{-7} \text{(A)}$, a far lower value than the theoretical diffusion limit. The images below show the cupric fields at early times after they have reached a steady state. It is clear that 8dc1a7af is at the diffusion limit.

The next group of simulations will run with $I$ between $4$ and $6\times 10^{-7} \text{(A)}$ and increasing values of rboundary.


In [9]:
plot_cupric(records[0], index=300)



In [10]:
plot_cupric(records[1], index=100)


Changing current

rboundary = 50e-6


In [3]:
from extremefill2D.tools import getSMTRecords

records = project.record_store.list(project.name, tags=['constant_current15'])
records50 = getSMTRecords(records, parameters={'rboundary' : 50e-6})
smt_ipy_table(records50, fields=fields, parameters=parameters + ['cap_radius'])


Created Django record store using PostgreSQL
Out[3]:
LabelReasonTimestampParametersDurationVersionTags
c0823ce8varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp6e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-051h&nbsp16m&nbsp0.96seee8de7f7550constant_current15
7244ee84varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp4e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp23m&nbsp28.54seee8de7f7550constant_current15
963af4a0varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp2e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp29m&nbsp20.02seee8de7f7550constant_current15
7d46beb2varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp3e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp29m&nbsp47.97seee8de7f7550constant_current15
36ff791bvarying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp5e-06,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp30m&nbsp57.90seee8de7f7550constant_current15

In [7]:
viewer = MultiViewer(records50, figsize=(5., 5.))
viewer.plot(times=np.linspace(0.0, 5000., 20), xlim=49e-6, ylim=-90e-6)


rboundary = 100e-6


In [17]:
records100 = getSMTRecords(records, parameters={'rboundary' : 100e-6})
smt_ipy_table(records100, fields=fields, parameters=parameters + ['cap_radius'])


Out[17]:
LabelReasonTimestampParametersDurationVersionTags
11be6396varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp5e-06,&nbsprboundary:&nbsp0.0001,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0001,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053m&nbsp3.05seee8de7f7550constant_current15
0f1a5c20varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp2e-07,&nbsprboundary:&nbsp0.0001,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0001,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp53m&nbsp23.54seee8de7f7550constant_current15
0777fb78varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp6e-07,&nbsprboundary:&nbsp0.0001,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0001,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp51m&nbsp29.50seee8de7f7550constant_current15
020ea374varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp3e-07,&nbsprboundary:&nbsp0.0001,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0001,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp51m&nbsp8.35seee8de7f7550constant_current15
167eace7varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp4e-07,&nbsprboundary:&nbsp0.0001,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0001,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp46m&nbsp18.46seee8de7f7550constant_current15

In [16]:
viewer = MultiViewer(records100, figsize=(5., 5.))
viewer.plot(times=np.linspace(0.0, 4000., 20), xlim=49e-6, ylim=-90e-6)


rboundary = 200e-6


In [19]:
records200 = getSMTRecords(records, parameters={'rboundary' : 200e-6})
smt_ipy_table(records200, fields=fields, parameters=parameters + ['cap_radius'])


Out[19]:
LabelReasonTimestampParametersDurationVersionTags
85ce338bvarying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp2e-07,&nbsprboundary:&nbsp0.0002,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0002,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-054h&nbsp9m&nbsp16.36seee8de7f7550constant_current15
6281d406varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp4e-07,&nbsprboundary:&nbsp0.0002,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0002,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp1m&nbsp14.12seee8de7f7550constant_current15
40746fb8varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp3e-07,&nbsprboundary:&nbsp0.0002,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0002,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp35m&nbsp33.72seee8de7f7550constant_current15
fb5259c1varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp5e-06,&nbsprboundary:&nbsp0.0002,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0002,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053m&nbsp34.52seee8de7f7550constant_current15
b2e4baa5varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp6e-07,&nbsprboundary:&nbsp0.0002,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0002,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp40m&nbsp6.17seee8de7f7550constant_current15

In [20]:
viewer = MultiViewer(records200, figsize=(5., 5.))
viewer.plot(times=np.linspace(0.0, 4000., 20), xlim=49e-6, ylim=-90e-6)


rboundary = 400e-6


In [21]:
records400 = getSMTRecords(records, parameters={'rboundary' : 400e-6})
smt_ipy_table(records400, fields=fields, parameters=parameters + ['cap_radius'])


Out[21]:
LabelReasonTimestampParametersDurationVersionTags
93f42582varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp6e-07,&nbsprboundary:&nbsp0.0004,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0004,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp23m&nbsp15.48seee8de7f7550constant_current15
278dfb77varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp3e-07,&nbsprboundary:&nbsp0.0004,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0004,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp47m&nbsp5.97seee8de7f7550constant_current15
92bedcc1varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp5e-06,&nbsprboundary:&nbsp0.0004,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0004,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053m&nbsp51.12seee8de7f7550constant_current15
888e70f2varying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp2e-07,&nbsprboundary:&nbsp0.0004,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0004,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-054h&nbsp23m&nbsp27.67seee8de7f7550constant_current15
2b5ff63bvarying&nbspcurrent&nbspand&nbsprboundary2014-04-25&nbsp15:07current:&nbsp4e-07,&nbsprboundary:&nbsp0.0004,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp0.0004,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp47m&nbsp42.26seee8de7f7550constant_current15

In [22]:
viewer = MultiViewer(records400, figsize=(5., 5.))
viewer.plot(times=np.linspace(0.0, 4000., 20), xlim=49e-6, ylim=-90e-6)



In [ ]:


In [9]:
4e-7 * 1.2**np.arange(10)


Out[9]:
array([  4.00000000e-07,   4.80000000e-07,   5.76000000e-07,
         6.91200000e-07,   8.29440000e-07,   9.95328000e-07,
         1.19439360e-06,   1.43327232e-06,   1.71992678e-06,
         2.06391214e-06])

Retreating Hemispherical Cap

The tag for these simulations is constant_current16. The 10 simulations vary the current frp, 4e-7 tp 2.06e-6, a value that should get close to shutting down. The hemispherical cap retreats away from the advancing interface, maintaining a constant distance.


In [ ]:


In [3]:
from extremefill2D.tools import getSMTRecords

records_17 = project.record_store.list(project.name, tags=['constant_current17'])
smt_ipy_table(records_17, fields=fields, parameters=parameters + ['cap_radius'])


Created Django record store using PostgreSQL
Out[3]:
LabelReasonTimestampParametersDurationVersionTags
a11d2b2atesting&nbspretreating&nbsphemispherical&nbspcap2014-05-02&nbsp15:48current:&nbsp9.95328e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052m&nbsp53.07sd33e6a6250abconstant_current17
0ded0dd7testing&nbspretreating&nbsphemispherical&nbspcap2014-05-02&nbsp15:48current:&nbsp5.76e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-051h&nbsp33m&nbsp59.48sd33e6a6250abconstant_current17
1384ef56testing&nbspretreating&nbsphemispherical&nbspcap2014-05-02&nbsp15:48current:&nbsp1.43327232e-06,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052m&nbsp13.52sd33e6a6250abconstant_current17
f1581933testing&nbspretreating&nbsphemispherical&nbspcap2014-05-02&nbsp15:48current:&nbsp1.719926784e-06,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052m&nbsp10.85sd33e6a6250abconstant_current17
df79ca8ftesting&nbspretreating&nbsphemispherical&nbspcap2014-05-02&nbsp15:48current:&nbsp4e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-051h&nbsp52m&nbsp41.43sd33e6a6250abconstant_current17
ae08ec7etesting&nbspretreating&nbsphemispherical&nbspcap2014-05-02&nbsp15:48current:&nbsp2.0639121408e-06,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052m&nbsp12.10sd33e6a6250abconstant_current17
1c72abfatesting&nbspretreating&nbsphemispherical&nbspcap2014-05-02&nbsp15:48current:&nbsp8.2944e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-054m&nbsp44.91sd33e6a6250abconstant_current17
10db7169testing&nbspretreating&nbsphemispherical&nbspcap2014-05-02&nbsp15:48current:&nbsp1.1943936e-06,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053m&nbsp26.70sd33e6a6250abconstant_current17
0f26f520testing&nbspretreating&nbsphemispherical&nbspcap2014-05-02&nbsp15:48current:&nbsp4.8e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-051h&nbsp33m&nbsp56.02sd33e6a6250abconstant_current17
a58a4baatesting&nbspretreating&nbsphemispherical&nbspcap2014-05-02&nbsp15:48current:&nbsp6.912e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-058m&nbsp16.24sd33e6a6250abconstant_current17

In [4]:
%load_ext autoreload
%autoreload 4
from sumatra.projects import load_project
from extremefill2D.tools import smt_ipy_table
from extremefill2D.multiViewer import MultiViewer

viewer = MultiViewer(records_17, figsize=(5., 5.))
viewer.plot(times=np.linspace(0.0, 4000., 20), xlim=49e-6, ylim=-90e-6)


/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:43: DeprecationWarning: openFile() is pending deprecation, use open_file() instead. You may use the pt2to3 tool to update your source code.
  self.h5fileread = tables.openFile(self.h5filename, mode='r')

/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:56: DeprecationWarning: listNodes() is pending deprecation, use list_nodes() instead. You may use the pt2to3 tool to update your source code.
  for array in h5file.listNodes(s, classname='Array'):

/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:62: DeprecationWarning: getNode() is pending deprecation, use get_node() instead. You may use the pt2to3 tool to update your source code.
  d = h5file.getNode(s, classname='Array').read()

The autoreload extension is already loaded. To reload it, use:
  %reload_ext autoreload

In [15]:
?plot_cupric

In [27]:
plot_cupric(records_17[-2], index=200)



In [28]:
np.logspace(1, 3, 5)


Out[28]:
array([   10.        ,    31.6227766 ,   100.        ,   316.22776602,
        1000.        ])

In [30]:
x0 = np.log10(4.8e-7)
x1 = np.log10(5.76e-7)

np.logspace(x0, x1, 5)


Out[30]:
array([  4.80000000e-07,   5.02384867e-07,   5.25813655e-07,
         5.50335048e-07,   5.76000000e-07])

Simulations close to critical current

The following simulations are run close to the critical current. The aim is to see a little more bend or bow in the filling shape at values close to the critical current.


In [3]:
from extremefill2D.tools import getSMTRecords

records_18 = project.record_store.list(project.name, tags=['constant_current18'])
records_18_sorted = sorted(records_18, key=lambda r: r.parameters['current'])
smt_ipy_table(records_18_sorted, fields=fields, parameters=parameters + ['cap_radius'])


Created Django record store using PostgreSQL
Out[3]:
LabelReasonTimestampParametersDurationVersionTags
2ed61593running&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp4.8e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp8m&nbsp1.07s0a57723b8a24constant_current18
eba5a1f4running&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp4.84628188514e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp13m&nbsp4.22s0a57723b8a24constant_current18
92fe6682running&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp4.89301002296e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp33m&nbsp15.34s0a57723b8a24constant_current18
2ee38aafrunning&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp4.94018871627e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp8m&nbsp11.34s0a57723b8a24constant_current18
ef4f65eerunning&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp4.98782230934e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp4m&nbsp30.74s0a57723b8a24constant_current18
846c492crunning&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp5.03591518834e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp31m&nbsp51.29s0a57723b8a24constant_current18
29d91432running&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp5.08447178174e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp54m&nbsp37.54s0a57723b8a24constant_current18
a35a78a3running&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp5.1334965607e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp31m&nbsp25.26s0a57723b8a24constant_current18
fb5b6624running&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp5.18299403949e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp20m&nbsp43.12s0a57723b8a24constant_current18
e62128cdrunning&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp5.23296877591e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp28m&nbsp24.36s0a57723b8a24constant_current18
416c5788running&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp5.28342537171e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp27m&nbsp53.60s0a57723b8a24constant_current18
c4058e8drunning&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp5.334368473e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp47m&nbsp59.09s0a57723b8a24constant_current18
7b813073running&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp5.3858027707e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp31m&nbsp44.17s0a57723b8a24constant_current18
412832c6running&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp5.43773300095e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp28m&nbsp19.91s0a57723b8a24constant_current18
c77fbcf6running&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp5.49016394557e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp56m&nbsp40.36s0a57723b8a24constant_current18
0ffd0557running&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp5.54310043247e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp40.32s0a57723b8a24constant_current18
27352b43running&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp5.59654733612e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp50m&nbsp37.47s0a57723b8a24constant_current18
d6e1fa21running&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp5.650509578e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp39m&nbsp18.03s0a57723b8a24constant_current18
80edfda9running&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:33current:&nbsp5.70499212701e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-052h&nbsp58m&nbsp19.33s0a57723b8a24constant_current18
2a21c3edrunning&nbspwith&nbspsimulations&nbspnear&nbspto&nbspthe&nbspdiffusion&nbsplimit2014-05-09&nbsp15:34current:&nbsp5.76e-07,&nbsprboundary:&nbsp5e-05,&nbspNx:&nbsp100,&nbspcapacitance:&nbsp0.0,&nbsptotalTime:&nbsp5000.0,&nbspdelta:&nbsp1.5e-05,&nbsprouter:&nbsp3.75e-05,&nbsprboundary:&nbsp5e-05,&nbspfeatureDepth:&nbsp7.5e-05,&nbspcap_radius:&nbsp3.75e-053h&nbsp3m&nbsp42.95s0a57723b8a24constant_current18

In [5]:
%load_ext autoreload
%autoreload 4
from sumatra.projects import load_project
from extremefill2D.tools import smt_ipy_table
from extremefill2D.multiViewer import MultiViewer

reshaped_records = zip(*[iter(records_18_sorted)]*4)

viewer = MultiViewer(reshaped_records, figsize=(5., 5.))
viewer.plot(times=np.linspace(0.0, 4000., 20), xlim=49e-6, ylim=-90e-6)


/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:43: DeprecationWarning: openFile() is pending deprecation, use open_file() instead. You may use the pt2to3 tool to update your source code.
  self.h5fileread = tables.openFile(self.h5filename, mode='r')

WARNING:py.warnings:/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:43: DeprecationWarning: openFile() is pending deprecation, use open_file() instead. You may use the pt2to3 tool to update your source code.
  self.h5fileread = tables.openFile(self.h5filename, mode='r')

/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:56: DeprecationWarning: listNodes() is pending deprecation, use list_nodes() instead. You may use the pt2to3 tool to update your source code.
  for array in h5file.listNodes(s, classname='Array'):

WARNING:py.warnings:/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:56: DeprecationWarning: listNodes() is pending deprecation, use list_nodes() instead. You may use the pt2to3 tool to update your source code.
  for array in h5file.listNodes(s, classname='Array'):

/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:62: DeprecationWarning: getNode() is pending deprecation, use get_node() instead. You may use the pt2to3 tool to update your source code.
  d = h5file.getNode(s, classname='Array').read()

WARNING:py.warnings:/users/wd15/git/extremefill2D/extremefill2D/dicttable.py:62: DeprecationWarning: getNode() is pending deprecation, use get_node() instead. You may use the pt2to3 tool to update your source code.
  d = h5file.getNode(s, classname='Array').read()

The autoreload extension is already loaded. To reload it, use:
  %reload_ext autoreload

In [4]:
print len(records_18)


20

In [ ]: