Exemplo n.º 1
0
 def build(self):
     params = self.params
     h = self.h
     if params.diamPore is not None:
         diamPore = params.diamPore  # inner (effective) pore diameter
         diamDNA = params.diamDNA  # dna diameter of outer dna layers
         l0 = diamPore + 6. * diamDNA
         l1 = diamPore + 4. * diamDNA
         l2 = diamPore + 2. * diamDNA
         l3 = diamPore
         l4 = l1
         params.update(l0=l0, l1=l1, l2=l2, l3=l3, l4=l4)
     if params.dim == 3:
         geo = pughpore.get_geo(h, **params)
         if geo.params["x0"] is not None:
             molec = curved.Sphere(geo.params["rMolecule"],
                                   geo.params["x0"])
             geo.curved = dict(moleculeb=molec.snap)
     elif params.dim == 2:
         geo = pughpore.get_geo_cyl(h, **params)
         if geo.params["x0"] is not None:
             molec = curved.Circle(geo.params["rMolecule"],
                                   geo.params["x0"])
             geo.curved = dict(moleculeb=molec.snap)
     elif params.dim == 1:
         geo = pughpore.get_geo1D(h, **params)
     return geo
Exemplo n.º 2
0
 def init_geo(self, create_geo=True):
     if self.geop.diamPore is not None:
         diamPore = self.geop.diamPore # inner (effective) pore diameter
         diamDNA = self.geop.diamDNA # dna diameter of outer dna layers
         l0 = diamPore + 6.*diamDNA
         l1 = diamPore + 4.*diamDNA
         l2 = diamPore + 2.*diamDNA
         l3 = diamPore
         l4 = l1
         self.geop.update(l0=l0, l1=l1, l2=l2, l3=l3, l4=l4)
     if not create_geo:
         self.geo = None
         return
     if self.geop.dim == 3:
         geo = pughpore.get_geo(self.solverp.h, **self.geop)
         if geo.params["x0"] is not None:
             molec = nano.curved.Sphere(geo.params["rMolecule"],
                                        geo.params["x0"])
             geo.curved = dict(moleculeb = molec.snap)
     if self.geop.dim == 2:
         geo = pughpore.get_geo_cyl(self.solverp.h, **self.geop)
         if geo.params["x0"] is not None:
             molec = nano.curved.Circle(geo.params["rMolecule"],
                                        geo.params["x0"][::2])
             geo.curved = dict(moleculeb = molec.snap)
     self.geo = geo
Exemplo n.º 3
0
def distance_boundary():
    h = up.h
    geo = pughpore.get_geo(h)
    y = distance_boundary_from_geo(geo)
    print "Max distance:", y.vector().max()

    if not fields.exists("pugh_distance", h=h):
        fields.save_functions("pugh_distance", dict(h=h), y=y)
        fields.update()
    return y
Exemplo n.º 4
0
    bulkcon=300.,
    dnaqsdamp=.5,
    bV=-0.1,
)
solverp = nano.Params(
    h=up.h,
    frac=0.2,
    Nmax=up.Nmax,
    imax=30,
    tol=1e-2,
    cheapest=False,
)

# setup geometry and physics
box.set_tol(None)
geo = pughpore.get_geo(solverp.h, **geop)
#print geo
#nano.plot_sliced(geo)
#dolfin.interactive()
molec = Sphere(R=geo.params["rMolecule"], center=geo.params["x0"])
geo.curved = dict(moleculeb=molec.snap)

phys = nano.Physics("pore_mol", geo, **physp)
solvers.set_sideBCs(phys, geop, physp)

R, H = float(geo.params["R"]), float(geo.params["H"])
print R, H
mesh2D = nano.RectangleMesh([-R, -H / 2.], [R, H / 2.], int(8 * R), int(4 * H))

#simplepnps.SimpleStokesProblem.method["kparams"].update(
#    monitor_convergence = False,