コード例 #1
0
ファイル: frozen_lj.py プロジェクト: cjforman/pele
def main():
    natoms = 4
    pot = LJ()

    reference_coords = np.random.uniform(-1, 1, [3 * natoms])
    print reference_coords

    # freeze the first two atoms (6 degrees of freedom)
    frozen_dof = range(6)

    fpot = FrozenPotWrapper(pot, reference_coords, frozen_dof)

    reduced_coords = fpot.coords_converter.get_reduced_coords(reference_coords)

    print "the energy in the full representation:"
    print pot.getEnergy(reference_coords)
    print "is the same as the energy in the reduced representation:"
    print fpot.getEnergy(reduced_coords)

    ret = mylbfgs(reduced_coords, fpot)
    print "after a minimization the energy is ", ret.energy, "and the rms gradient is", ret.rms
    print "the coordinates of the frozen degrees of freedom are unchanged"
    print "starting coords:", reference_coords
    print "minimized coords:", fpot.coords_converter.get_full_coords(
        ret.coords)
コード例 #2
0
def test2():  # pragma: no cover
    import numpy as np
    from pele.potentials import LJ
    from pele.utils.frozen_atoms import FrozenPotWrapper
    from pele.optimize import mylbfgs

    natoms = 4
    pot = LJ()

    reference_coords = np.random.uniform(-1, 1, [3 * natoms])
    print reference_coords

    # freeze the first two atoms (6 degrees of freedom)
    frozen_dof = range(6)

    fpot = FrozenPotWrapper(pot, reference_coords, frozen_dof)

    reduced_coords = fpot.coords_converter.get_reduced_coords(reference_coords)

    print "the energy in the full representation:"
    print pot.getEnergy(reference_coords)
    print "is the same as the energy in the reduced representation:"
    print fpot.getEnergy(reduced_coords)

    ret = mylbfgs(reduced_coords, fpot)
    print "after a minimization the energy is ", ret.energy, "and the rms gradient is", ret.rms
    print "the coordinates of the frozen degrees of freedom are unchanged"
    print "starting coords:", reference_coords
    print "minimized coords:", fpot.coords_converter.get_full_coords(
        ret.coords)
コード例 #3
0
ファイル: frozen_atoms.py プロジェクト: js850/pele
def test2():
    import numpy as np
    from pele.potentials import LJ
    from pele.utils.frozen_atoms import FrozenPotWrapper
    from pele.optimize import mylbfgs

    natoms = 4
    pot = LJ()

    reference_coords = np.random.uniform(-1, 1, [3 * natoms])
    print reference_coords

    # freeze the first two atoms (6 degrees of freedom)
    frozen_dof = range(6)

    fpot = FrozenPotWrapper(pot, reference_coords, frozen_dof)

    reduced_coords = fpot.coords_converter.get_reduced_coords(reference_coords)

    print "the energy in the full representation:"
    print pot.getEnergy(reference_coords)
    print "is the same as the energy in the reduced representation:"
    print fpot.getEnergy(reduced_coords)

    ret = mylbfgs(reduced_coords, fpot)
    print "after a minimization the energy is ", ret.energy, "and the rms gradient is", ret.rms
    print "the coordinates of the frozen degrees of freedom are unchanged"
    print "starting coords:", reference_coords
    print "minimized coords:", fpot.coords_converter.get_full_coords(ret.coords)
コード例 #4
0
    def get_potential(self):
        try:
            return self.pot
        except AttributeError:
            if self.one_frozen:
                # freeze one spin to remove the global rotational symmetry
                base_pot = HeisenbergModel(dim=self.dims, field_disorder=0.)
                reference_coords = np.zeros(base_pot.nspins * 2)
                n = reference_coords.size
                frozen_dof = np.array([n-2, n-1])
#                self.coords_converter = FrozenCoordsConverter(reference_coords, frozen_dof)
                self.pot = FrozenPotWrapper(base_pot, reference_coords, frozen_dof)
                self.coords_converter = self.pot.coords_converter
                self.pot.G = base_pot.G
                self.pot.indices = base_pot.indices
                return self.pot
            else:
                return HeisenbergModelRA(dim=self.dims, field_disorder=self.field_disorder)
コード例 #5
0
ファイル: xy_model_system.py プロジェクト: yangxi1209/pele
 def get_potential(self, phases=None):
     try:
         return self.pot
     except AttributeError:
         assert self.one_frozen
         base_pot = XYModel(dim=self.dim,
                            phi=self.phi_disorder,
                            phases=phases)
         reference_coords = np.zeros(base_pot.nspins)
         n = reference_coords.size
         frozen_node = (0, 0)
         frozen_index = base_pot.indices[frozen_node]
         frozen_dof = np.array([frozen_index])
         print "making frozen spin at", self.node2xyz(
             base_pot.index2node[frozen_index])
         #                self.coords_converter = FrozenCoordsConverter(reference_coords, frozen_dof)
         self.pot = FrozenPotWrapper(base_pot, reference_coords, frozen_dof)
         #            self.coords_converter = self.pot.coords_converter
         #            self.pot.G = base_pot.G
         #            self.pot.indices = base_pot.indices
         return self.pot
コード例 #6
0
ファイル: ljcluster_frozen.py プロジェクト: cjforman/pele
 def get_potential(self):
     pot = LJCluster.get_potential(self)
     frozen_pot = FrozenPotWrapper(pot, self.reference_coords, self.frozen_dof)
     return frozen_pot