예제 #1
0
def cache_diffusivity(geoname="alphahem", mode="coupled", **params):
    name = "D%s-%s" % (geoname, mode)

    if not fields.exists(name, **params):
        setup = nanopore.Setup(**params)
        r = setup.geop.rMolecule

        if mode == "coupled":
            data_z = diff_profile_z_ahem(**params)
            data_r = diff_profile_plane(r)
        elif mode == "simple":
            data_z = None
            data_r = diff_profile_plane(r)
        elif mode == "profile":
            data_z = diff_profile_z_ahem(**params)
            data_r = diff_profile_trivial(r)
        else:
            raise NotImplementedError

        functions = diffusivity_field(setup,
                                      r,
                                      ddata_z=data_z,
                                      ddata_r=data_r,
                                      boundary="poresolidb",
                                      poreregion="pore")
        fields.save_functions(name, params, **functions)
        fields.update()

    return name
예제 #2
0
def cache_diffusivity_simple(geoname="alphahem", **params):
    name = "D%s" % (geoname, )

    if not fields.exists(name, **params):
        setup = nanopore.Setup(**params)
        r = setup.geop.rMolecule
        functions = diffusivity_field(setup, r, boundary="poresolidb")
        fields.save_functions(name, params, **functions)
        fields.update()
예제 #3
0
def diffusivity_simple(**params):
    from nanopores.models.diffusion_interpolation import diffusivity_field
    name = "diffusivity_simple"
    if not fields.exists(name, **params):
        setup = Setup(**params)
        dic = diffusivity_field(setup,
                                r=params["rMolecule"],
                                boundary="poresolidb")
        fields.save_functions(name, setup.active_params, **dic)
        fields.update()
    D, = fields.get_functions(name, "D", **params)
    return D
예제 #4
0
name = "wei_force_ps"
if not fields.exists(name, **params):
    setup = nanopore.Setup(**params)
    _, pnps = nanopore.solve(setup, True)
    v, cp, cm, u, p = pnps.solutions()

    F, Fel, Fdrag = setup.phys.ForceField(v, u, "fluid")
    fields.save_functions(name, params, F=F, Fel=Fel, Fdrag=Fdrag)
    fields.update()

name_D = "wei_D_2D"
if not fields.exists(name_D, **params):
    setup = nanopore.Setup(**params)
    dic = diffusivity_field(setup,
                            r=params["rMolecule"],
                            boundary="poresolidb")
    fields.save_functions(name_D, params, **dic)
    fields.update()

F, Fel, Fdrag = fields.get_functions(name, "F", "Fel", "Fdrag", **params)
D, dist = fields.get_functions(name_D, "D", "dist", **params)

if __name__ == "__main__":
    Fplot = nano.user_param(Fplot=False)
    Dplot = nano.user_param(Dplot=False)

    if Fplot:
        plt = nanopore.Plotter(dim=2)
        plt.plot_vector(F, title="F", interactive=True)
        #plt.plot_vector(Fel, title="Fel")
예제 #5
0
def simple_D(setup):
    r = setup.geop.rMolecule
    functions = diffusivity_field(setup, r, boundary="poresolidb")
    return functions["D"]