Exemplo n.º 1
0
    def __init__(   self,
                    mc,
                    ln_gamma,
                    q_factor,
                    r0,
                    q0,
                    drift_period,
                    symmetry = []
                ):
        import math
        import numpy
        hoomd.util.print_status_line();
        # initialize base class
        _compute.__init__(self);

        if type(r0) == numpy.ndarray:
            self.lattice_positions = r0.tolist();
        else:
            self.lattice_positions = list(r0);

        if type(q0) == numpy.ndarray:
            self.lattice_orientations = q0.tolist();
        else:
            self.lattice_orientations = list(q0);


        self.mc = mc;
        self.q_factor = q_factor;
        self.trans_spring_const = math.exp(ln_gamma);
        self.rotat_spring_const = self.q_factor*self.trans_spring_const;
        self.lattice = lattice_field(   self.mc,
                                        position = self.lattice_positions,
                                        orientation = self.lattice_orientations,
                                        k = self.trans_spring_const,
                                        q = self.rotat_spring_const,
                                        symmetry=symmetry);
        self.remove_drift = hoomd.hpmc.update.remove_drift(self.mc, self.lattice, period=drift_period);
Exemplo n.º 2
0
    def __init__(self,
                 mc,
                 ln_gamma,
                 q_factor,
                 r0,
                 q0,
                 drift_period,
                 symmetry=[]):
        import math
        import numpy
        hoomd.util.print_status_line()
        # initialize base class
        _compute.__init__(self)

        if type(r0) == numpy.ndarray:
            self.lattice_positions = r0.tolist()
        else:
            self.lattice_positions = list(r0)

        if type(q0) == numpy.ndarray:
            self.lattice_orientations = q0.tolist()
        else:
            self.lattice_orientations = list(q0)

        self.mc = mc
        self.q_factor = q_factor
        self.trans_spring_const = math.exp(ln_gamma)
        self.rotat_spring_const = self.q_factor * self.trans_spring_const
        self.lattice = lattice_field(self.mc,
                                     position=self.lattice_positions,
                                     orientation=self.lattice_orientations,
                                     k=self.trans_spring_const,
                                     q=self.rotat_spring_const,
                                     symmetry=symmetry)
        self.remove_drift = hoomd.hpmc.update.remove_drift(self.mc,
                                                           self.lattice,
                                                           period=drift_period)
Exemplo n.º 3
0
 def __init__(self):
     _compute.__init__(self);
     self.cpp_compute = None;
Exemplo n.º 4
0
 def __init__(self):
     _compute.__init__(self)
     self.cpp_compute = None
Exemplo n.º 5
0
    def __init__(self, mc, seed, suffix='', test_type=None, nsample=None):

        # initialize base class
        _compute.__init__(self);

        # create the c++ mirror class
        cl = _hoomd.CellList(hoomd.context.current.system_definition);
        hoomd.context.current.system.addCompute(cl, "auto_cl3")

        cls = None;
        if not hoomd.context.current.device.cpp_exec_conf.isCUDAEnabled():
            if isinstance(mc, integrate.sphere):
                cls = _hpmc.ComputeFreeVolumeSphere;
            elif isinstance(mc, integrate.convex_polygon):
                cls = _hpmc.ComputeFreeVolumeConvexPolygon;
            elif isinstance(mc, integrate.simple_polygon):
                cls = _hpmc.ComputeFreeVolumeSimplePolygon;
            elif isinstance(mc, integrate.convex_polyhedron):
                cls = _hpmc.ComputeFreeVolumeConvexPolyhedron;
            elif isinstance(mc, integrate.convex_spheropolyhedron):
                cls = _hpmc.ComputeFreeVolumeSpheropolyhedron;
            elif isinstance(mc, integrate.ellipsoid):
                cls = _hpmc.ComputeFreeVolumeEllipsoid;
            elif isinstance(mc, integrate.convex_spheropolygon):
                cls =_hpmc.ComputeFreeVolumeSpheropolygon;
            elif isinstance(mc, integrate.faceted_ellipsoid):
                cls =_hpmc.ComputeFreeVolumeFacetedEllipsoid;
            elif isinstance(mc, integrate.polyhedron):
                cls =_hpmc.ComputeFreeVolumePolyhedron;
            elif isinstance(mc, integrate.sphinx):
                cls =_hpmc.ComputeFreeVolumeSphinx;
            elif isinstance(mc, integrate.convex_spheropolyhedron_union):
                cls = _hpmc.ComputeFreeVolumeConvexPolyhedronUnion
            elif isinstance(mc, integrate.faceted_ellipsoid_union):
                cls = _hpmc.ComputeFreeVolumeFacetedEllipsoidUnion
            elif isinstance(mc, integrate.sphere_union):
                cls = _hpmc.ComputeFreeVolumeSphereUnion;
            else:
                hoomd.context.current.device.cpp_msg.error("compute.free_volume: Unsupported integrator.\n");
                raise RuntimeError("Error initializing compute.free_volume");
        else:
            if isinstance(mc, integrate.sphere):
                cls = _hpmc.ComputeFreeVolumeGPUSphere;
            elif isinstance(mc, integrate.convex_polygon):
                cls = _hpmc.ComputeFreeVolumeGPUConvexPolygon;
            elif isinstance(mc, integrate.simple_polygon):
                cls = _hpmc.ComputeFreeVolumeGPUSimplePolygon;
            elif isinstance(mc, integrate.convex_polyhedron):
                cls = _hpmc.ComputeFreeVolumeGPUConvexPolyhedron;
            elif isinstance(mc, integrate.convex_spheropolyhedron):
                cls = _hpmc.ComputeFreeVolumeGPUSpheropolyhedron;
            elif isinstance(mc, integrate.ellipsoid):
                cls = _hpmc.ComputeFreeVolumeGPUEllipsoid;
            elif isinstance(mc, integrate.convex_spheropolygon):
                cls =_hpmc.ComputeFreeVolumeGPUSpheropolygon;
            elif isinstance(mc, integrate.faceted_ellipsoid):
                cls =_hpmc.ComputeFreeVolumeGPUFacetedEllipsoid;
            elif isinstance(mc, integrate.polyhedron):
                cls =_hpmc.ComputeFreeVolumeGPUPolyhedron;
            elif isinstance(mc, integrate.sphinx):
                cls =_hpmc.ComputeFreeVolumeGPUSphinx;
            elif isinstance(mc, integrate.sphere_union):
                cls = _hpmc.ComputeFreeVolumeGPUSphereUnion;
            elif isinstance(mc, integrate.faceted_ellipsoid_union):
                cls = _hpmc.ComputeFreeVolumeGPUFacetedEllipsoidUnion;
            elif isinstance(mc, integrate.convex_spheropolyhedron_union):
                cls = _hpmc.ComputeFreeVolumeGPUConvexPolyhedronUnion;
            else:
                hoomd.context.current.device.cpp_msg.error("compute.free_volume: Unsupported integrator.\n");
                raise RuntimeError("Error initializing compute.free_volume");

        if suffix is not '':
            suffix = '_' + suffix

        self.cpp_compute = cls(hoomd.context.current.system_definition,
                                mc.cpp_integrator,
                                cl,
                                seed,
                                suffix)

        if test_type is not None:
            itype = hoomd.context.current.system_definition.getParticleData().getTypeByName(test_type)
            self.cpp_compute.setTestParticleType(itype)
        if nsample is not None:
            self.cpp_compute.setNumSamples(int(nsample))

        hoomd.context.current.system.addCompute(self.cpp_compute, self.compute_name)
        self.enabled = True
Exemplo n.º 6
0
    def __init__(self, mc, seed, suffix='', test_type=None, nsample=None):
        hoomd.util.print_status_line();

        # initialize base class
        _compute.__init__(self);

        # create the c++ mirror class
        cl = _hoomd.CellList(hoomd.context.current.system_definition);
        hoomd.context.current.system.addCompute(cl, "auto_cl3")

        cls = None;
        if not hoomd.context.exec_conf.isCUDAEnabled():
            if isinstance(mc, integrate.sphere):
                cls = _hpmc.ComputeFreeVolumeSphere;
            elif isinstance(mc, integrate.convex_polygon):
                cls = _hpmc.ComputeFreeVolumeConvexPolygon;
            elif isinstance(mc, integrate.simple_polygon):
                cls = _hpmc.ComputeFreeVolumeSimplePolygon;
            elif isinstance(mc, integrate.convex_polyhedron):
                cls = _hpmc.ComputeFreeVolumeConvexPolyhedron;
            elif isinstance(mc, integrate.convex_spheropolyhedron):
                cls = _hpmc.ComputeFreeVolumeSpheropolyhedron;
            elif isinstance(mc, integrate.ellipsoid):
                cls = _hpmc.ComputeFreeVolumeEllipsoid;
            elif isinstance(mc, integrate.convex_spheropolygon):
                cls =_hpmc.ComputeFreeVolumeSpheropolygon;
            elif isinstance(mc, integrate.faceted_sphere):
                cls =_hpmc.ComputeFreeVolumeFacetedSphere;
            elif isinstance(mc, integrate.polyhedron):
                cls =_hpmc.ComputeFreeVolumePolyhedron;
            elif isinstance(mc, integrate.sphinx):
                cls =_hpmc.ComputeFreeVolumeSphinx;
            elif isinstance(mc, integrate.sphere_union):
                cls = integrate._get_sized_entry('ComputeFreeVolumeSphereUnion', mc.capacity);
            else:
                hoomd.context.msg.error("compute.free_volume: Unsupported integrator.\n");
                raise RuntimeError("Error initializing compute.free_volume");
        else:
            if isinstance(mc, integrate.sphere):
                cls = _hpmc.ComputeFreeVolumeGPUSphere;
            elif isinstance(mc, integrate.convex_polygon):
                cls = _hpmc.ComputeFreeVolumeGPUConvexPolygon;
            elif isinstance(mc, integrate.simple_polygon):
                cls = _hpmc.ComputeFreeVolumeGPUSimplePolygon;
            elif isinstance(mc, integrate.convex_polyhedron):
                cls = _hpmc.ComputeFreeVolumeGPUConvexPolyhedron;
            elif isinstance(mc, integrate.convex_spheropolyhedron):
                cls = _hpmc.ComputeFreeVolumeGPUSpheropolyhedron;
            elif isinstance(mc, integrate.ellipsoid):
                cls = _hpmc.ComputeFreeVolumeGPUEllipsoid;
            elif isinstance(mc, integrate.convex_spheropolygon):
                cls =_hpmc.ComputeFreeVolumeGPUSpheropolygon;
            elif isinstance(mc, integrate.faceted_sphere):
                cls =_hpmc.ComputeFreeVolumeGPUFacetedSphere;
            elif isinstance(mc, integrate.polyhedron):
                cls =_hpmc.ComputeFreeVolumeGPUPolyhedron;
            elif isinstance(mc, integrate.sphinx):
                cls =_hpmc.ComputeFreeVolumeGPUSphinx;
            elif isinstance(mc, integrate.sphere_union):
                cls = integrate._get_sized_entry('ComputeFreeVolumeGPUSphereUnion', mc.capacity);
            else:
                hoomd.context.msg.error("compute.free_volume: Unsupported integrator.\n");
                raise RuntimeError("Error initializing compute.free_volume");

        if suffix is not '':
            suffix = '_' + suffix

        self.cpp_compute = cls(hoomd.context.current.system_definition,
                                mc.cpp_integrator,
                                cl,
                                seed,
                                suffix)

        if test_type is not None:
            itype = hoomd.context.current.system_definition.getParticleData().getTypeByName(test_type)
            self.cpp_compute.setTestParticleType(itype)
        if nsample is not None:
            self.cpp_compute.setNumSamples(int(nsample))

        hoomd.context.current.system.addCompute(self.cpp_compute, self.compute_name)
        self.enabled = True