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)
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)
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)
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)
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
def get_potential(self): pot = LJCluster.get_potential(self) frozen_pot = FrozenPotWrapper(pot, self.reference_coords, self.frozen_dof) return frozen_pot