From dcc19a2d1b25aa569230b341fb0843068e6d2e69 Mon Sep 17 00:00:00 2001 From: Pierre Caradec Date: Sat, 17 Feb 2024 19:40:54 -0300 Subject: [PATCH 01/10] First Implementation of Polymer class Changing particularities of Polymer class vs Molecule class Method Align first implementation --- MolAdsPy/__polymer__.py | 133 ++++++++++++++++++++++++---------------- tests/pla1.xyz | 20 ++++++ tests/test_polymer.py | 124 +++++++++++++++++++++++++++++++++++++ 3 files changed, 224 insertions(+), 53 deletions(-) create mode 100644 tests/pla1.xyz create mode 100644 tests/test_polymer.py diff --git a/MolAdsPy/__polymer__.py b/MolAdsPy/__polymer__.py index bfc3025..25b80fc 100644 --- a/MolAdsPy/__polymer__.py +++ b/MolAdsPy/__polymer__.py @@ -20,10 +20,10 @@ def __init__(self,label,vaccuum=10.0): Parameters ---------- label : string - A label allowing you to identify the type of molecule, for instance, - "benzene" or "C6H12". + A label allowing you to identify the type of polymer, for instance, + "Polyethylene" or "(C2H4)n". vaccuum : float, optional - Vaccuum separating the molecule from its images in a periodic + Vaccuum separating the polymer from its images in a periodic boundary conditions scheme. The default is 10.0 Angstroms. ''' @@ -32,12 +32,12 @@ def __init__(self,label,vaccuum=10.0): if len(label)>0: self._label=label else: - raise MoleculeError("'label' must be a non-empty string!") + raise PolymerError("'label' must be a non-empty string!") if vaccuum>0.0: self._vaccuum=vaccuum else: - raise MoleculeError("'vaccuum' must be a number greater than zero!") + raise PolymerError("'vaccuum' must be a number greater than zero!") self._maxx=self._maxy=self._maxz=None # Maximum Cartesian coordinates self._minx=self._miny=self._minz=None # Minimum Cartesian coordinates @@ -51,15 +51,15 @@ def __init__(self,label,file_name,file_type="XYZ",vaccuum=10.0): Parameters ---------- label : string - A label allowing you to identify the type of molecule, for instance, + A label allowing you to identify the type of polymer, for instance, "benzene" or "C6H12". file_name : string - Name of the file containing the molecule structure. + Name of the file containing the polymer structure. file_type : string - Type of file containing the molecule coordinates. The default is + Type of file containing the polymer coordinates. The default is "XYZ", which is the only type currently supported. vaccuum : float, optional - Vaccuum separating the molecule from its images in a periodic + Vaccuum separating the polymer from its images in a periodic boundary conditions scheme. The default is 10.0 Angstroms. ''' @@ -68,22 +68,22 @@ def __init__(self,label,file_name,file_type="XYZ",vaccuum=10.0): if len(label)>0: self._label=label else: - raise MoleculeError("'label' must be a non-empty string!") + raise PolymerError("'label' must be a non-empty string!") self._anchors={"com":array([0.0,0.0,0.0])} # Anchor points for translations and rotations if vaccuum>0.0: self._vaccuum=vaccuum else: - raise MoleculeError("'vaccuum' must be a number greater than zero!") + raise PolymerError("'vaccuum' must be a number greater than zero!") if len(file_name)>0: if file_type.lower()=='xyz': self._read_xyz(file_name) else: - raise MoleculeError("'file_type' must be 'XYZ'!") + raise PolymerError("'file_type' must be 'XYZ'!") else: - raise MoleculeError("'file_name' must be a valid file name!") + raise PolymerError("'file_name' must be a valid file name!") @dispatch(str,list,vaccuum=(int,float)) def __init__(self,label,atom_list,vaccuum=10.0): @@ -93,12 +93,12 @@ def __init__(self,label,atom_list,vaccuum=10.0): Parameters ---------- label : string - A label allowing you to identify the type of molecule, for instance, + A label allowing you to identify the type of polymer, for instance, "benzene" or "C6H12". atom_list : Python list - List of Atom objects or atom IDs to be added to the molecule. + List of Atom objects or atom IDs to be added to the polymer. vaccuum : float, optional - Vaccuum separating the molecule from its images in a periodic + Vaccuum separating the polymer from its images in a periodic boundary conditions scheme. The default is 10.0 Angstroms. ''' @@ -107,7 +107,7 @@ def __init__(self,label,atom_list,vaccuum=10.0): if len(label)>0: self._label=label else: - raise MoleculeError("'label' must be a non-empty string!") + raise PolymerError("'label' must be a non-empty string!") self._anchors={"com":array([0.0,0.0,0.0])} # Anchor points for translations and rotations self._origin=None @@ -115,7 +115,7 @@ def __init__(self,label,atom_list,vaccuum=10.0): if vaccuum>0.0: self._vaccuum=vaccuum else: - raise MoleculeError("'vaccuum' must be a number greater than zero!") + raise PolymerError("'vaccuum' must be a number greater than zero!") if len(atom_list)>0: for atom in atom_list: @@ -124,19 +124,19 @@ def __init__(self,label,atom_list,vaccuum=10.0): else: print("WARNING! An element in the atom list must be either an Atom object or an atom ID!") else: - raise MoleculeError("'atom_list' must be a non-empyt list!") + raise PolymerError("'atom_list' must be a non-empyt list!") self._update() def add_anchor(self,anchor,pos): ''' add_anchor(anchor,pos) -> adds a new anchor point that can be used as - the reference point of the molecule for translations and rotations. + the reference point of the polymer for translations and rotations. Parameters ---------- anchor : string - Name of the anchor point to be added to the molecule. + Name of the anchor point to be added to the polymer. pos : Numpy array Cartesian coordinates of the anchor point. It can also be provided as a Python list or tuple. @@ -149,9 +149,9 @@ def add_anchor(self,anchor,pos): if isinstance(pos,ndarray) and pos.shape[0]==3: self._anchors[anchor]=pos.astype(float) else: - raise MoleculeError("'pos' must be an array with three components!") + raise PolymerError("'pos' must be an array with three components!") else: - raise MoleculeError("'anchor' must be a non-empty string!") + raise PolymerError("'anchor' must be a non-empty string!") def remove_anchor(self,anchor): ''' @@ -160,7 +160,7 @@ def remove_anchor(self,anchor): Parameters ---------- anchor : string - Name of the anchor point to be removed from the molecule. + Name of the anchor point to be removed from the polymer. ''' if isinstance(anchor,str) and anchor in self._anchors.keys(): @@ -171,27 +171,27 @@ def remove_anchor(self,anchor): else: raise MoleculeError("'anchor' is not a valid anchor point!") - def write_xyz(self,file_name="molecule.xyz"): + def write_xyz(self,file_name="polymer.xyz"): ''' - Saves the atomic coordinates of the molecule into an XYZ file. + Saves the atomic coordinates of the polymer into an XYZ file. Parameters ---------- file_name : string, optional - Name of the XYZ file. The default is "molecule.xyz". + Name of the XYZ file. The default is "polymer.xyz". ''' super().write_xyz(file_name,ucell=True) - def write_pw_input(self,file_name="molecule.in",pseudopotentials={},pwargs={}): + def write_pw_input(self,file_name="polymer.in",pseudopotentials={},pwargs={}): ''' - Creates a basic input file for geometry relaxation of the molecule using + Creates a basic input file for geometry relaxation of the polymer using the pw.x code found in the Quantum Espresso package. Parameters ---------- file_name : string, optional - Name of the input file. The default is "molecule.in". + Name of the input file. The default is "polymer.in". pseudopotentials : Python dictionary, optional Specify for each element provided as a key the name of a pseudopotential file given as the corresponding value. The default is {}. @@ -250,7 +250,7 @@ def copy(self): def displace(self,disp): ''' - displace(disp) -> rigidly displaces the molecule. + displace(disp) -> rigidly displaces the polymer. Parameters ---------- @@ -265,35 +265,35 @@ def displace(self,disp): def move_to(self,x,anchor="com"): ''' - move_to(x,anchor) -> rigidly moves the molecule such that the anchor + move_to(x,anchor) -> rigidly moves the polymer such that the anchor point is located at 'x'. Parameters ---------- x : Numpy array - New position of the molecule's anchor point. It can also be provided + New position of the polymer's anchor point. It can also be provided as a Python list or tuple. anchor : string, optional Anchor point used as reference for translations. The default is - 'com', which means the molecule's center of mass. + 'com', which means the polymer's center of mass. ''' if isinstance(x,(list,tuple)): x=array(x) if not (isinstance(anchor,str) and anchor in self._anchors.keys()): - raise MoleculeError("'anchor' is not a valid anchor point!") + raise PolymerError("'anchor' is not a valid anchor point!") if isinstance(x,ndarray) and x.shape[0]==3: disp=x.astype(float)-self._anchors[anchor] self.displace(disp) else: - raise MoleculeError("'x' must be an array with three components!") + raise PolymerError("'x' must be an array with three components!") def rotate(self,theta,phi,psi,anchor="com"): ''' - rotate(theta,phi,psi,anchor) -> rotates the molecule around an anchor point. + rotate(theta,phi,psi,anchor) -> rotates the polymer around an anchor point. Parameters ---------- @@ -304,8 +304,8 @@ def rotate(self,theta,phi,psi,anchor="com"): psi : float, optional Third rotation angle (around Z axis), in degrees. anchor : string, optional - Anchor point around which the molecule will be rotated. The default - is 'com', which means the molecule's center of mass. + Anchor point around which the polymer will be rotated. The default + is 'com', which means the polymer's center of mass. ''' if isinstance(theta,(float,int)) and \ @@ -315,10 +315,10 @@ def rotate(self,theta,phi,psi,anchor="com"): phi=radians(phi) psi=radians(psi) else: - raise MoleculeError("Rotation angles must be provided as numbers!") + raise PolymerError("Rotation angles must be provided as numbers!") if not (isinstance(anchor,str) and anchor in self._anchors.keys()): - raise MoleculeError("'anchor' is not a valid anchor point!") + raise PolymerError("'anchor' is not a valid anchor point!") a11=cos(theta)*cos(psi) a12=-cos(phi)*sin(psi)+sin(phi)*sin(theta)*cos(psi) @@ -344,16 +344,43 @@ def rotate(self,theta,phi,psi,anchor="com"): self._update() + def align(self, axis): + """ + Aligns the polymer along the specified axis. + + Parameters + ---------- + axis : str + The axis along which to align the polymer ('x', 'y', or 'z'). + """ + # Dictionary to map the axis of the rotatino angles (theta, phi, psi) + # This values are examples and must be adjusted by necessity + # Theta: Axis Y Rotation + # Phi: Axis X Rotation + # Psi: Axis Z Rotation + rotation_map = { + 'x': (0, 0, 90), + 'y': (90, 0, 0), + 'z': (0, 90, 0) + } + + if axis in rotation_map: + theta, phi, psi = rotation_map[axis] + self.rotate(theta, phi, psi, anchor="com") + else: + raise PolymerError(f"Invalid axis '{axis}'. Please choose 'x', 'y', or 'z'.") + + def resize(self): ''' - Does nothing, because this method is not implemented for Molecule objects. + Does nothing, because this method is not implemented for Polymer objects. ''' - raise MoleculeError("Method not available for Molecule objects!") + raise PolymerError("Method not available for Polymer objects!") def _update(self): ''' - _update() -> simultaneously updates the molecule's center of mass and + _update() -> simultaneously updates the polymer's center of mass and the values of its extremities. ''' valid_coords=array([atom._x for atom in self.active_atoms]) @@ -380,34 +407,34 @@ def _update(self): def __str__(self): ''' - __str__() -> returns the type and the ID of the Molecule object. + __str__() -> returns the type and the ID of the Polymer object. Returns ------- String. - A string containing the type and ID of the Molecule object. + A string containing the type and ID of the Polymer object. ''' - return " Type: %s; ID: %d" % (self._label,self._id) + return " Type: %s; ID: %d" % (self._label,self._id) ''' Properties ---------- a0 : float, readonly - Lattice parameter. Meaningless for molecules, it is still necessary + Lattice parameter. Meaningless for polymers, it is still necessary when writing extended XYZ files or PW input files. It is set to 1. lattice_vectors : Numpy array, readonly - Lattice vectors. Meaningless for molecules, it is still necessary + Lattice vectors. Meaningless for polymers, it is still necessary when writing extended XYZ files or PW input files. The vectors are determined by adding the prescribed length of vaccuum to the extremities - of the molecule. + of the polymer. anchors : Python dictionary, readonly Dictionary of anchor points. center_of_mass : Numpy array, readonly - Center of mass of the molecule. + Center of mass of the polymer. maxx,minx,maxy,miny,maxz,minz : floats, readonly - Molecule extremities. + Polymer extremities. origin : Numpy array - Position with minimum values of X, Y, and Z coordinates of molecule. + Position with minimum values of X, Y, and Z coordinates of polymer. ''' @property def a0(self): diff --git a/tests/pla1.xyz b/tests/pla1.xyz new file mode 100644 index 0000000..e5f348e --- /dev/null +++ b/tests/pla1.xyz @@ -0,0 +1,20 @@ +18 +Lattice="7.2 0.0 0.0 0.0 10.0 0.0 0.0 0.0 10.0" Properties=species:S:1:pos:R:3 +C -0.039729 0.329835 0.179181 +C 1.168915 -0.475202 -0.388983 +O 2.307747 -0.238878 0.327535 +C 0.059903 1.78706 -0.265049 +H -0.051334 0.266979 1.277494 +O 1.115352 -1.188029 -1.378666 +H 0.996232 2.223464 0.111169 +H 0.047341 1.851743 -1.362911 +H -0.783038 2.357606 0.146715 +C 3.560278 -0.828986 -0.180146 +C 4.768588 -0.024496 0.388596 +O 5.907506 -0.260432 -0.328279 +C 3.658652 -2.285587 0.265095 +H 3.549853 -0.768757 -1.278748 +O 4.715056 0.684974 1.380599 +H 4.594046 -2.724317 -0.11002 +H 2.816213 -2.856659 -0.146269 +H 3.644843 -2.350873 1.362686 diff --git a/tests/test_polymer.py b/tests/test_polymer.py new file mode 100644 index 0000000..3561e38 --- /dev/null +++ b/tests/test_polymer.py @@ -0,0 +1,124 @@ +from MolAdsPy import Atom +from MolAdsPy import Polymer +from numpy import array + +print("1)") + +h2_mol=Polymer("h2") + +print(h2_mol) + +for atom in h2_mol: + print("Atom ",atom.ID,atom.coords) + +print("\n2)") + +h1=Atom("H",x=[0.5,0.0,0.0]) +h2=h1.copy() +h2.coords[0]=1.5 + +h2_mol.add_atom(h1) +h2_mol.add_atom(h2) +h2_mol.write_xyz("h2.1.xyz") + +for atom in h2_mol: + print("Atom ",atom.ID,atom.coords) + +print("Max ",h2_mol.maxx,h2_mol.maxy,h2_mol.maxz) +print("Min ",h2_mol.minx,h2_mol.miny,h2_mol.minz) +print("COM ",h2_mol.center_of_mass) + +print("\n3)") + +h2_mol.rotate(90,0,0) +h2_mol.write_xyz("h2.2.xyz") + +print("Max ",h2_mol.maxx,h2_mol.maxy,h2_mol.maxz) +print("Min ",h2_mol.minx,h2_mol.miny,h2_mol.minz) +print("COM ",h2_mol.center_of_mass) + +print("\n4)") + +h2_mol.add_anchor("top1",h2_mol[0].coords) +h2_mol.add_anchor("top2",h2_mol[1].coords) +h2_mol.displace([1,1,1]) +h2_mol.write_xyz("h2.3.xyz") + +for key in h2_mol.anchors.keys(): + print(key,h2_mol.anchors[key]) + +print("\n5)") + +h2_mol.rotate(0,90,0,"top1") +h2_mol.write_xyz("h2.4.xyz") + +print("Max ",h2_mol.maxx,h2_mol.maxy,h2_mol.maxz) +print("Min ",h2_mol.minx,h2_mol.miny,h2_mol.minz) +print("COM ",h2_mol.center_of_mass) + +for key in h2_mol.anchors.keys(): + print(key,h2_mol.anchors[key]) + +print("\n6)") + +h2_mol.rotate(0,0,90) +h2_mol.write_xyz("h2.5.xyz") + +print("Max ",h2_mol.maxx,h2_mol.maxy,h2_mol.maxz) +print("Min ",h2_mol.minx,h2_mol.miny,h2_mol.minz) +print("COM ",h2_mol.center_of_mass) + +for key in h2_mol.anchors.keys(): + print(key,h2_mol.anchors[key]) + +print("\n7)") + +h2_mol.move_to([2,2,2],"top2") +h2_mol.write_xyz("h2.6.xyz") + +print("Max ",h2_mol.maxx,h2_mol.maxy,h2_mol.maxz) +print("Min ",h2_mol.minx,h2_mol.miny,h2_mol.minz) +print("COM ",h2_mol.center_of_mass) + +for key in h2_mol.anchors.keys(): + print(key,h2_mol.anchors[key]) + +print("\n8)") + +tcnq=Molecule("tcnq","tcnq.xyz",vaccuum=20.0) + +tcnq.write_xyz("tcnq.1.xyz") + +print("\n9)") + +tcnq2=tcnq.copy() + +tcnq2.rotate(-30,-30,-30) +tcnq.rotate(30,30,30) +tcnq.write_xyz("tcnq.2.xyz") +tcnq2.write_xyz("tcnq.3.xyz") + +print("Max ",tcnq.maxx,tcnq.maxy,tcnq.maxz) +print("Min ",tcnq.minx,tcnq.miny,tcnq.minz) +print("COM ",tcnq.center_of_mass) + +print("\n10)") + +print(tcnq2) + +tcnq2.add_anchor("com+disp",tcnq2.anchors["com"]+array([1,1,2])) + +for anchor in tcnq2.anchors: + print(anchor,tcnq2.anchors[anchor]) + +tcnq2.rotate(10,-70,90,"com+disp") + +tcnq2.write_xyz("tcnq.4.xyz") + +for anchor in tcnq2.anchors: + print(anchor,tcnq2.anchors[anchor]) + +tcnq2.write_pw_input("tcnq.in") + + + From 1934b22f9190189b73df275cb2d70f15e50c97f7 Mon Sep 17 00:00:00 2001 From: Pierre Caradec Date: Sun, 18 Feb 2024 01:50:33 -0300 Subject: [PATCH 02/10] Tests implementation working Cleared problems with references Test now works but align fnuction was not tested yet. --- MolAdsPy/__adsorption__.py | 8 +-- MolAdsPy/__atom__.py | 2 +- MolAdsPy/__atomcollection__.py | 4 +- MolAdsPy/__hybrid__.py | 4 +- MolAdsPy/__init__.py | 2 +- MolAdsPy/__molecule__.py | 6 +- MolAdsPy/__polymer__.py | 6 +- .../__pycache__/__adsorption__.cpython-39.pyc | Bin 0 -> 13177 bytes MolAdsPy/__pycache__/__atom__.cpython-39.pyc | Bin 0 -> 14934 bytes .../__atomcollection__.cpython-39.pyc | Bin 0 -> 27252 bytes .../__pycache__/__exception__.cpython-39.pyc | Bin 0 -> 864 bytes .../__pycache__/__hybrid__.cpython-39.pyc | Bin 0 -> 7377 bytes .../__pycache__/__molecule__.cpython-39.pyc | Bin 0 -> 15087 bytes .../__pycache__/__polymer__.cpython-39.pyc | Bin 0 -> 15607 bytes MolAdsPy/__pycache__/__slab__.cpython-39.pyc | Bin 0 -> 12672 bytes MolAdsPy/__pycache__/core.cpython-39.pyc | Bin 0 -> 926 bytes MolAdsPy/__slab__.py | 6 +- MolAdsPy/core.py | 10 ++-- MolAdsPy/h2.1.xyz | 4 ++ MolAdsPy/h2.2.xyz | 4 ++ MolAdsPy/h2.3.xyz | 4 ++ MolAdsPy/h2.4.xyz | 4 ++ MolAdsPy/h2.5.xyz | 4 ++ MolAdsPy/h2.6.xyz | 4 ++ MolAdsPy/pla1.1.xyz | 20 +++++++ MolAdsPy/pla1.2.xyz | 20 +++++++ MolAdsPy/pla1.3.xyz | 20 +++++++ {tests => MolAdsPy}/pla1.xyz | 0 MolAdsPy/tcnq.4.xyz | 20 +++++++ MolAdsPy/tcnq.in | 53 ++++++++++++++++++ tests/__init__.py | 1 + tests/test_polymer.py | 17 +++--- 32 files changed, 192 insertions(+), 31 deletions(-) create mode 100644 MolAdsPy/__pycache__/__adsorption__.cpython-39.pyc create mode 100644 MolAdsPy/__pycache__/__atom__.cpython-39.pyc create mode 100644 MolAdsPy/__pycache__/__atomcollection__.cpython-39.pyc create mode 100644 MolAdsPy/__pycache__/__exception__.cpython-39.pyc create mode 100644 MolAdsPy/__pycache__/__hybrid__.cpython-39.pyc create mode 100644 MolAdsPy/__pycache__/__molecule__.cpython-39.pyc create mode 100644 MolAdsPy/__pycache__/__polymer__.cpython-39.pyc create mode 100644 MolAdsPy/__pycache__/__slab__.cpython-39.pyc create mode 100644 MolAdsPy/__pycache__/core.cpython-39.pyc create mode 100644 MolAdsPy/h2.1.xyz create mode 100644 MolAdsPy/h2.2.xyz create mode 100644 MolAdsPy/h2.3.xyz create mode 100644 MolAdsPy/h2.4.xyz create mode 100644 MolAdsPy/h2.5.xyz create mode 100644 MolAdsPy/h2.6.xyz create mode 100644 MolAdsPy/pla1.1.xyz create mode 100644 MolAdsPy/pla1.2.xyz create mode 100644 MolAdsPy/pla1.3.xyz rename {tests => MolAdsPy}/pla1.xyz (100%) create mode 100644 MolAdsPy/tcnq.4.xyz create mode 100644 MolAdsPy/tcnq.in create mode 100644 tests/__init__.py diff --git a/MolAdsPy/__adsorption__.py b/MolAdsPy/__adsorption__.py index 236b0ee..3da63c4 100644 --- a/MolAdsPy/__adsorption__.py +++ b/MolAdsPy/__adsorption__.py @@ -1,8 +1,8 @@ from __future__ import print_function -from MolAdsPy.__molecule__ import Molecule -from MolAdsPy.__slab__ import Slab -from MolAdsPy.__hybrid__ import Hybrid -from MolAdsPy.__exception__ import BasicException +from __molecule__ import Molecule +from __slab__ import Slab +from __hybrid__ import Hybrid +from __exception__ import BasicException from numpy import array,dot,max,min,ndarray from multipledispatch import dispatch diff --git a/MolAdsPy/__atom__.py b/MolAdsPy/__atom__.py index 7566f82..30c2abb 100644 --- a/MolAdsPy/__atom__.py +++ b/MolAdsPy/__atom__.py @@ -1,4 +1,4 @@ -from MolAdsPy.__exception__ import BasicException +from __exception__ import BasicException from numpy import array,ndarray class AtomError(BasicException): diff --git a/MolAdsPy/__atomcollection__.py b/MolAdsPy/__atomcollection__.py index c5cc74a..8a2e319 100644 --- a/MolAdsPy/__atomcollection__.py +++ b/MolAdsPy/__atomcollection__.py @@ -1,5 +1,5 @@ -from MolAdsPy.__atom__ import Atom,Species -from MolAdsPy.__exception__ import BasicException +from __atom__ import Atom,Species +from __exception__ import BasicException from multipledispatch import dispatch from numpy import array,ndarray,dot,sqrt from copy import copy diff --git a/MolAdsPy/__hybrid__.py b/MolAdsPy/__hybrid__.py index 48a283a..4688485 100644 --- a/MolAdsPy/__hybrid__.py +++ b/MolAdsPy/__hybrid__.py @@ -1,6 +1,6 @@ from __future__ import print_function -from MolAdsPy.__atomcollection__ import AtomCollection -from MolAdsPy.__exception__ import BasicException +from __atomcollection__ import AtomCollection +from __exception__ import BasicException from abc import ABC,abstractmethod from numpy import array diff --git a/MolAdsPy/__init__.py b/MolAdsPy/__init__.py index 3442301..d1c9428 100644 --- a/MolAdsPy/__init__.py +++ b/MolAdsPy/__init__.py @@ -1,3 +1,3 @@ -from .core import Atom,Molecule,Slab,Adsorption +from .core import Atom,Molecule,Slab,Adsorption,Polymer __version__="1.0.0" diff --git a/MolAdsPy/__molecule__.py b/MolAdsPy/__molecule__.py index 28c7420..3ae2577 100644 --- a/MolAdsPy/__molecule__.py +++ b/MolAdsPy/__molecule__.py @@ -1,7 +1,7 @@ from __future__ import print_function -from MolAdsPy.__atom__ import Atom -from MolAdsPy.__atomcollection__ import AtomCollection -from MolAdsPy.__exception__ import BasicException +from __atom__ import Atom +from __atomcollection__ import AtomCollection +from __exception__ import BasicException from numpy import array,ndarray,min,max,sum,cos,sin,radians,dot from copy import deepcopy from multipledispatch import dispatch diff --git a/MolAdsPy/__polymer__.py b/MolAdsPy/__polymer__.py index 25b80fc..1bd8438 100644 --- a/MolAdsPy/__polymer__.py +++ b/MolAdsPy/__polymer__.py @@ -1,7 +1,7 @@ from __future__ import print_function -from MolAdsPy.__atom__ import Atom -from MolAdsPy.__atomcollection__ import AtomCollection -from MolAdsPy.__exception__ import BasicException +from __atom__ import Atom +from __atomcollection__ import AtomCollection +from __exception__ import BasicException from numpy import array,ndarray,min,max,sum,cos,sin,radians,dot from copy import deepcopy from multipledispatch import dispatch diff --git a/MolAdsPy/__pycache__/__adsorption__.cpython-39.pyc b/MolAdsPy/__pycache__/__adsorption__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1119815edb45f365ae24c2bdb7ffdd5724c5f0f8 GIT binary patch literal 13177 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 BhYA1y literal 0 HcmV?d00001 diff --git a/MolAdsPy/__pycache__/__atom__.cpython-39.pyc b/MolAdsPy/__pycache__/__atom__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..22af846ecfdee86559dfa3da09ffce4759545ead GIT binary patch literal 14934 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 literal 0 HcmV?d00001 diff --git a/MolAdsPy/__pycache__/__atomcollection__.cpython-39.pyc b/MolAdsPy/__pycache__/__atomcollection__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2f9a1be329c17f767bcbd17baa699682e36a7c0c GIT binary patch literal 27252 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 jD8c@0N56qM&5maN_>}!d~DG literal 0 HcmV?d00001 diff --git a/MolAdsPy/__pycache__/__exception__.cpython-39.pyc b/MolAdsPy/__pycache__/__exception__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3db28ab430b866838f5dcb7f10b37c96e52d259f GIT binary patch literal 864 zcmZWn&2H2%5Vn)uZW^&5Bm_5P^+Y6^2dGe0psOMwmWrRtDw5^e-eQ!EgPkCDwKw)< zdgn#B=E@^*>xr3c6SnF|Gxm(<=d(YH@i-l}P{PSA3Bfx7^-sZQ0(oQ>sF4a(xS_L94b*T$W&^bc)lqZ*mGDMRen?$b z#ug2c0hD!ud(_vU9-*%3ns7h>wZZB-W;epQDNM!rvxW9vTC287v@pfxb7ot-BJWcW%EUSASeIN`cA=RvzRbl^ ztCW5E0A1m4Vr=1`P?B}SH$hXa{X2w zWuHCVDl3h4E_+|-Q)j;G?9|G7p^M6AXQp~nUt|lL3+2mY_Ri)nl|Nr*oa>Gc&eL+) zMBV!$7rrHEyn1q*xwOlX@R54KJ!(rJ0$Y=>1jwUPhyNs@ZU{>Yd22@CHY3jAnK^$5 z&UPGKJ-#!pO_@Rq1e6RBWdT%j-o%_Qtg3U|-{bsSE%NP&i*VXL8U(XraIWjndVI-< f#t+)aGzpsh{xh|qox-+Hi#mF-9eRvy{(_Q!R$9li literal 0 HcmV?d00001 diff --git a/MolAdsPy/__pycache__/__hybrid__.cpython-39.pyc b/MolAdsPy/__pycache__/__hybrid__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b43c6c21714530222a859f39d3fca25346c1697c GIT binary patch literal 7377 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 literal 0 HcmV?d00001 diff --git a/MolAdsPy/__pycache__/core.cpython-39.pyc b/MolAdsPy/__pycache__/core.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..68f7a9ba2206a67a4224463fb48c350eda4e8d95 GIT binary patch literal 926 zcmb7C%TDVs5Ow0Tankk*!B?8ixEl%*ViQHOLhVJPqz-nA)HUdS!~F$5hi$j4 z_yty+ad>1^sg5%CIZ5W6%uF#Fr3`ET;#L0-7<(hoT@k=BZubvCF%?uSYxf`vJPxza z?>ysvkFw~JsZjA}rnqKh?}=wUFp=tk>FJ>CgXx3ms~AkI!!iaFgApnLlW1NFFak`f z24Ds{Dibh?3U1l%@Eu;*ctWwe;J@`c#6dIi2XFL6xQb5ZrXIiWm5_2))LP0_DrIfd zqN4Lq%7;Z!wNGA{jgi5JkJGb*{LX3X@@A^7&97(r+)f{Ler_gS#znsqhF7ET% zRE2WQGQTp_iE=l~d}6HLYnC=dHp=MeAOep!axailPhfRy`M0xQk5&+uAW$#AMF?*s z65UqC{TcyEKI#Y%-bf%tRg7)sQ!`s5GeFv{jtt?AWa1lBEo*JpXwZP{bTkO>rWt0V zz?evxVII&w*ErP5e3ZYgu8Q+}?fT`O_e4&M Date: Mon, 26 Feb 2024 14:12:51 -0300 Subject: [PATCH 03/10] Implementation after meeting Fixing updates functions and making tests --- MolAdsPy/__polymer__.py | 59 ++++++-- .../__pycache__/__adsorption__.cpython-37.pyc | Bin 0 -> 13459 bytes MolAdsPy/__pycache__/__atom__.cpython-37.pyc | Bin 0 -> 14843 bytes .../__atomcollection__.cpython-37.pyc | Bin 0 -> 27517 bytes .../__pycache__/__exception__.cpython-37.pyc | Bin 0 -> 823 bytes .../__pycache__/__hybrid__.cpython-37.pyc | Bin 0 -> 7937 bytes .../__pycache__/__molecule__.cpython-37.pyc | Bin 0 -> 15107 bytes .../__pycache__/__polymer__.cpython-37.pyc | Bin 0 -> 15621 bytes MolAdsPy/__pycache__/__slab__.cpython-37.pyc | Bin 0 -> 12718 bytes MolAdsPy/__pycache__/core.cpython-37.pyc | Bin 0 -> 923 bytes pla1.1.xyz | 20 +++ pla1.2.xyz | 20 +++ pla1.3.xyz | 20 +++ pla1.align_x.xyz | 20 +++ pla1.align_y.xyz | 20 +++ pla1.align_z.xyz | 20 +++ tests/test_polymer.py | 136 ++++-------------- 17 files changed, 199 insertions(+), 116 deletions(-) create mode 100644 MolAdsPy/__pycache__/__adsorption__.cpython-37.pyc create mode 100644 MolAdsPy/__pycache__/__atom__.cpython-37.pyc create mode 100644 MolAdsPy/__pycache__/__atomcollection__.cpython-37.pyc create mode 100644 MolAdsPy/__pycache__/__exception__.cpython-37.pyc create mode 100644 MolAdsPy/__pycache__/__hybrid__.cpython-37.pyc create mode 100644 MolAdsPy/__pycache__/__molecule__.cpython-37.pyc create mode 100644 MolAdsPy/__pycache__/__polymer__.cpython-37.pyc create mode 100644 MolAdsPy/__pycache__/__slab__.cpython-37.pyc create mode 100644 MolAdsPy/__pycache__/core.cpython-37.pyc create mode 100644 pla1.1.xyz create mode 100644 pla1.2.xyz create mode 100644 pla1.3.xyz create mode 100644 pla1.align_x.xyz create mode 100644 pla1.align_y.xyz create mode 100644 pla1.align_z.xyz diff --git a/MolAdsPy/__polymer__.py b/MolAdsPy/__polymer__.py index 1bd8438..ee9aeb0 100644 --- a/MolAdsPy/__polymer__.py +++ b/MolAdsPy/__polymer__.py @@ -29,6 +29,8 @@ def __init__(self,label,vaccuum=10.0): ''' super().__init__() + self._orientation = 0 # x by standard + if len(label)>0: self._label=label else: @@ -65,6 +67,8 @@ def __init__(self,label,file_name,file_type="XYZ",vaccuum=10.0): ''' super().__init__() + + if len(label)>0: self._label=label else: @@ -85,6 +89,7 @@ def __init__(self,label,file_name,file_type="XYZ",vaccuum=10.0): else: raise PolymerError("'file_name' must be a valid file name!") + @dispatch(str,list,vaccuum=(int,float)) def __init__(self,label,atom_list,vaccuum=10.0): ''' @@ -165,11 +170,11 @@ def remove_anchor(self,anchor): ''' if isinstance(anchor,str) and anchor in self._anchors.keys(): if anchor=="com": - raise MoleculeError("The center of mass cannot be removed!") + raise PolymerError("The center of mass cannot be removed!") else: self._anchors.pop(anchor) else: - raise MoleculeError("'anchor' is not a valid anchor point!") + raise PolymerError("'anchor' is not a valid anchor point!") def write_xyz(self,file_name="polymer.xyz"): ''' @@ -353,36 +358,62 @@ def align(self, axis): axis : str The axis along which to align the polymer ('x', 'y', or 'z'). """ + # TODO: Permutate new align, change max and min of old axis by new one + # Dictionary to map the axis of the rotatino angles (theta, phi, psi) # This values are examples and must be adjusted by necessity # Theta: Axis Y Rotation # Phi: Axis X Rotation # Psi: Axis Z Rotation rotation_map = { - 'x': (0, 0, 90), + 'x': (0, 90, 0), 'y': (90, 0, 0), - 'z': (0, 90, 0) + 'z': (0, 0, 90) } if axis in rotation_map: theta, phi, psi = rotation_map[axis] self.rotate(theta, phi, psi, anchor="com") + self._update() else: raise PolymerError(f"Invalid axis '{axis}'. Please choose 'x', 'y', or 'z'.") - - def resize(self): + # TODO: Reimplement for new orientation + def resize(self,n_axis): ''' - Does nothing, because this method is not implemented for Polymer objects. - + Resizes the slab in the orientation plane by self._orientation index ''' - raise PolymerError("Method not available for Polymer objects!") + + n, m, l = [0,0,0] + if(self._orientation == 0): + n = n_axis + elif(self._orientation == 1): + m = n_axis + elif(self._orientation == 2): + l = n_axis + + super().resize(n,m,l) def _update(self): ''' _update() -> simultaneously updates the polymer's center of mass and the values of its extremities. ''' + # Obtain polymer orientation from the maximum diff max - min. TODO: Reimplement + old_orientation = self._orientation + old_max_min = self._max_min + + self._max_min = 0 + if(self.maxx - self.minx > self._max_min): + self._max_min = self.maxx - self.minx + self._orientation = 0 + elif(self.maxy - self.miny > self._max_min): + self._max_min = self.maxy - self.miny + self._orientation = 1 + elif(self.maxz - self.minz > self._max_min): + self._max_min = self.maxz - self.minz + self._orientation = 0 + valid_coords=array([atom._x for atom in self.active_atoms]) atomic_mass=array([atom.atomic_mass for atom in self.active_atoms]) @@ -392,10 +423,20 @@ def _update(self): totmass=sum(atomic_mass) self._anchors["com"]=sum(atomic_mass*valid_coords.transpose(), axis=1)/totmass + self._anchors["middle_point"]=array([(self.maxx + self.minx)/2.0],(self.maxy + self.miny)/2.0,(self.maxz + self.minz)/2.0) + + # TODO: Calculate only vacuum on perpendicular orientations + if(old_orientation != self._orientation): + tmpvec = self._latvec[self._orientation] + self._latvec[self._orientation] = self._latvec[old_orientation] + self._latvec[old_orientation] = tmpvec + self._latvec=array([[self._maxx-self._minx+self._vaccuum,0.0,0.0], [0.0,self._maxy-self._miny+self._vaccuum,0.0], [0.0,0.0,self._maxz-self._minz+self._vaccuum]]) + self._origin=array([self._minx,self._miny,self._minz]) + else: self._maxx=self._maxy=self._maxz=None self._minx=self._miny=self._minz=None diff --git a/MolAdsPy/__pycache__/__adsorption__.cpython-37.pyc b/MolAdsPy/__pycache__/__adsorption__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a90f3cfffd77f600257a3b8903d26a2fee1947b0 GIT binary patch literal 13459 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 AkpKVy literal 0 HcmV?d00001 diff --git a/MolAdsPy/__pycache__/__atom__.cpython-37.pyc b/MolAdsPy/__pycache__/__atom__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5c7292918611db57c7c64652fde90c86e14683c2 GIT binary patch literal 14843 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 GB>oQ^F>x&b literal 0 HcmV?d00001 diff --git a/MolAdsPy/__pycache__/__exception__.cpython-37.pyc b/MolAdsPy/__pycache__/__exception__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..33af44a7c080bf5811d443cb7d72ea41d4d83b33 GIT binary patch literal 823 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 LSm1N<6XyQ{8~WFy literal 0 HcmV?d00001 diff --git a/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc b/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e0336f13ad614588e9308c1f21fbff8357ee66be GIT binary patch literal 15621 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 literal 0 HcmV?d00001 diff --git a/MolAdsPy/__pycache__/__slab__.cpython-37.pyc b/MolAdsPy/__pycache__/__slab__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..27fcab5f1a1072beee017e39fe8dfcd7cc0a2a6a GIT binary patch literal 12718 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 Ai~s-t literal 0 HcmV?d00001 diff --git a/MolAdsPy/__pycache__/core.cpython-37.pyc b/MolAdsPy/__pycache__/core.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b6bb40956205d277fcf95ddc7c1707c515361946 GIT binary patch literal 923 zcma)4%TB^T6rJhxF)d&WeuQD;2N+`nV{juOVb?U76lNAQEyXD;SZn+Sf58uO!`79* z;L3AbAuL>Un%=qRQ0_T1_l|nKh+)n6r+Md$eGxb;7s(yo>J33N&2ttvJCAvdo!F^& z5sP|vV|UE7qs1%J!m!MH5wQox)gBnn@XQC}gYk6$CNNGGfC<1z9fAps$RrpECej@+ z9ph#pm{9W>8+5*^s8EIIFKn**H5pFH!&hm8LQYb{>-iZ+5)N7z(tzZVM3j3ipQW v3||}%2Ha6<-6$(nx4mwUrK_@Z085qsYvW$tG!uABqg(Y6B>#JyzG$9bv~Zk) literal 0 HcmV?d00001 diff --git a/pla1.1.xyz b/pla1.1.xyz new file mode 100644 index 0000000..1955067 --- /dev/null +++ b/pla1.1.xyz @@ -0,0 +1,20 @@ +18 +Lattice="26.690544 0.000000 0.000000 0.000000 25.214265 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 +C -0.039729 0.329835 0.179181 +C 1.168915 -0.475202 -0.388983 +O 2.307747 -0.238878 0.327535 +C 0.059903 1.787060 -0.265049 +H -0.051334 0.266979 1.277494 +O 1.115352 -1.188029 -1.378666 +H 0.996232 2.223464 0.111169 +H 0.047341 1.851743 -1.362911 +H -0.783038 2.357606 0.146715 +C 3.560278 -0.828986 -0.180146 +C 4.768588 -0.024496 0.388596 +O 5.907506 -0.260432 -0.328279 +C 3.658652 -2.285587 0.265095 +H 3.549853 -0.768757 -1.278748 +O 4.715056 0.684974 1.380599 +H 4.594046 -2.724317 -0.110020 +H 2.816213 -2.856659 -0.146269 +H 3.644843 -2.350873 1.362686 diff --git a/pla1.2.xyz b/pla1.2.xyz new file mode 100644 index 0000000..e2b012d --- /dev/null +++ b/pla1.2.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.043641 0.000000 0.000000 0.000000 25.722025 0.000000 0.000000 0.000000 25.227567" Properties=species:S:1:pos:R:3 +C 0.821943 0.941277 -1.741539 +C 1.663916 -0.270832 -1.237964 +O 2.262113 -0.000351 -0.039971 +C 1.749779 2.002420 -2.327940 +H 0.236865 1.364374 -0.911448 +O 1.809922 -1.311504 -1.859371 +H 2.452885 2.344460 -1.555055 +H 2.317297 1.586350 -3.173192 +H 1.158744 2.862449 -2.669482 +C 3.199827 -1.007709 0.489862 +C 4.170043 -0.319115 1.497435 +O 5.280506 -1.082558 1.722685 +C 2.420260 -2.110739 1.200640 +H 3.767389 -1.428460 -0.353645 +O 3.941102 0.742812 2.054375 +H 3.119388 -2.859576 1.598913 +H 1.746832 -2.606159 0.489234 +H 1.832838 -1.689603 2.029338 diff --git a/pla1.3.xyz b/pla1.3.xyz new file mode 100644 index 0000000..1011802 --- /dev/null +++ b/pla1.3.xyz @@ -0,0 +1,20 @@ +18 +Lattice="26.104983 0.000000 0.000000 0.000000 24.236068 0.000000 0.000000 0.000000 24.165493" Properties=species:S:1:pos:R:3 +C 0.498905 -1.784249 0.861114 +C 1.469897 -1.256338 -0.238976 +O 2.579949 -0.679204 0.309555 +C -0.279483 -0.616413 1.461983 +H 1.066575 -2.306655 1.645473 +O 1.243547 -1.308100 -1.437538 +H 0.421904 0.101595 1.910558 +H -0.865844 -0.108758 0.682170 +H -0.952860 -0.985627 2.246754 +C 3.521031 -0.014646 -0.611058 +C 4.363280 1.026708 0.186991 +O 4.961194 1.929413 -0.646275 +C 4.448159 -1.053921 -1.235514 +H 2.937831 0.491934 -1.394587 +O 4.511923 1.005807 1.398499 +H 5.152122 -0.558141 -1.918738 +H 3.857929 -1.779895 -1.809655 +H 5.014867 -1.578965 -0.452999 diff --git a/pla1.align_x.xyz b/pla1.align_x.xyz new file mode 100644 index 0000000..a0447ad --- /dev/null +++ b/pla1.align_x.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.722025 0.000000 0.000000 0.000000 25.227567 0.000000 0.000000 0.000000 25.043641" Properties=species:S:1:pos:R:3 +C 3.952208 -1.991612 -1.938915 +C 2.740100 -1.488037 -1.096942 +O 3.010580 -0.290044 -0.498745 +C 5.013352 -2.578013 -1.011080 +H 4.375305 -1.161522 -2.523993 +O 1.699427 -2.109445 -0.950936 +H 5.355392 -1.805128 -0.307973 +H 4.597281 -3.423265 -0.443561 +H 5.873381 -2.919555 -1.602114 +C 2.003222 0.239789 0.438969 +C 2.691817 1.247362 1.409185 +O 1.928374 1.472611 2.519648 +C 0.900193 0.950567 -0.340598 +H 1.582471 -0.603718 1.006531 +O 3.753743 1.804302 1.180244 +H 0.151356 1.348840 0.358530 +H 0.404773 0.239160 -1.014026 +H 1.321328 1.779264 -0.928020 diff --git a/pla1.align_y.xyz b/pla1.align_y.xyz new file mode 100644 index 0000000..ba0b2a3 --- /dev/null +++ b/pla1.align_y.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.227567 0.000000 0.000000 0.000000 25.722025 0.000000 0.000000 0.000000 25.043641" Properties=species:S:1:pos:R:3 +C 4.502445 0.941277 -1.938915 +C 3.998870 -0.270832 -1.096942 +O 2.800877 -0.000351 -0.498745 +C 5.088846 2.002420 -1.011080 +H 3.672354 1.364374 -2.523993 +O 4.620277 -1.311504 -0.950936 +H 4.315961 2.344460 -0.307973 +H 5.934098 1.586350 -0.443561 +H 5.430388 2.862449 -1.602114 +C 2.271044 -1.007709 0.438969 +C 1.263471 -0.319115 1.409185 +O 1.038221 -1.082558 2.519648 +C 1.560266 -2.110739 -0.340598 +H 3.114551 -1.428460 1.006531 +O 0.706531 0.742812 1.180244 +H 1.161993 -2.859576 0.358530 +H 2.271672 -2.606159 -1.014026 +H 0.731568 -1.689603 -0.928020 diff --git a/pla1.align_z.xyz b/pla1.align_z.xyz new file mode 100644 index 0000000..f4e35de --- /dev/null +++ b/pla1.align_z.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.722025 0.000000 0.000000 0.000000 25.043641 0.000000 0.000000 0.000000 25.227567" Properties=species:S:1:pos:R:3 +C 3.952208 -2.188989 1.741587 +C 2.740100 -1.347015 1.238012 +O 3.010580 -0.748819 0.040019 +C 5.013352 -1.261153 2.327988 +H 4.375305 -2.774067 0.911496 +O 1.699427 -1.201009 1.859419 +H 5.355392 -0.558047 1.555103 +H 4.597281 -0.693635 3.173240 +H 5.873381 -1.852187 2.669530 +C 2.003222 0.188896 -0.489814 +C 2.691817 1.159111 -1.497388 +O 1.928374 2.269574 -1.722637 +C 0.900193 -0.590671 -1.200592 +H 1.582471 0.756458 0.353693 +O 3.753743 0.930170 -2.054328 +H 0.151356 0.108456 -1.598865 +H 0.404773 -1.264100 -0.489186 +H 1.321328 -1.178093 -2.029290 diff --git a/tests/test_polymer.py b/tests/test_polymer.py index c7a58f5..952c632 100644 --- a/tests/test_polymer.py +++ b/tests/test_polymer.py @@ -1,127 +1,49 @@ import sys -sys.path.append("C:\\Users\\pierr\\OneDrive\\Documents\\GitHub\\moladspy\\MolAdsPy") +# TODO: Make this computer dettached +path = "E:\\PBC\\GitHub\\moladspy\\MolAdsPy" + +sys.path.append(path) from core import Atom from core import Polymer from numpy import array +import os -print("1)") - -h2_mol=Polymer("h2") - -print(h2_mol) - -for atom in h2_mol: - print("Atom ",atom.ID,atom.coords) - -print("\n2)") - -h1=Atom("H",x=[0.5,0.0,0.0]) -h2=h1.copy() -h2.coords[0]=1.5 - -h2_mol.add_atom(h1) -h2_mol.add_atom(h2) -h2_mol.write_xyz("h2.1.xyz") - -for atom in h2_mol: - print("Atom ",atom.ID,atom.coords) - -print("Max ",h2_mol.maxx,h2_mol.maxy,h2_mol.maxz) -print("Min ",h2_mol.minx,h2_mol.miny,h2_mol.minz) -print("COM ",h2_mol.center_of_mass) - -print("\n3)") - -h2_mol.rotate(90,0,0) -h2_mol.write_xyz("h2.2.xyz") - -print("Max ",h2_mol.maxx,h2_mol.maxy,h2_mol.maxz) -print("Min ",h2_mol.minx,h2_mol.miny,h2_mol.minz) -print("COM ",h2_mol.center_of_mass) - -print("\n4)") - -h2_mol.add_anchor("top1",h2_mol[0].coords) -h2_mol.add_anchor("top2",h2_mol[1].coords) -h2_mol.displace([1,1,1]) -h2_mol.write_xyz("h2.3.xyz") - -for key in h2_mol.anchors.keys(): - print(key,h2_mol.anchors[key]) - -print("\n5)") - -h2_mol.rotate(0,90,0,"top1") -h2_mol.write_xyz("h2.4.xyz") +# TODO: Make a virtual simple polymer and test align, rotate and resize +# TODO: Test same tests on PLA +# TODO: Test same tests on Polypropilene +# TODO: Make Assert Files on results and Unit Tests -print("Max ",h2_mol.maxx,h2_mol.maxy,h2_mol.maxz) -print("Min ",h2_mol.minx,h2_mol.miny,h2_mol.minz) -print("COM ",h2_mol.center_of_mass) - -for key in h2_mol.anchors.keys(): - print(key,h2_mol.anchors[key]) - -print("\n6)") - -h2_mol.rotate(0,0,90) -h2_mol.write_xyz("h2.5.xyz") - -print("Max ",h2_mol.maxx,h2_mol.maxy,h2_mol.maxz) -print("Min ",h2_mol.minx,h2_mol.miny,h2_mol.minz) -print("COM ",h2_mol.center_of_mass) - -for key in h2_mol.anchors.keys(): - print(key,h2_mol.anchors[key]) - -print("\n7)") - -h2_mol.move_to([2,2,2],"top2") -h2_mol.write_xyz("h2.6.xyz") - -print("Max ",h2_mol.maxx,h2_mol.maxy,h2_mol.maxz) -print("Min ",h2_mol.minx,h2_mol.miny,h2_mol.minz) -print("COM ",h2_mol.center_of_mass) - -for key in h2_mol.anchors.keys(): - print(key,h2_mol.anchors[key]) - -print("\n8)") +filename = "pla1" +filepath = os.path.join(path,filename + ".xyz") +name_polymer = "pla" +print("1)") -tcnq=Polymer("pla","pla1.xyz",vaccuum=20.0) +pol=Polymer("pla",filepath,vaccuum=20.0) -tcnq.write_xyz("pla1.1.xyz") +pol.write_xyz(filename + ".1.xyz") print("\n9)") -tcnq2=tcnq.copy() - -tcnq2.rotate(-30,-30,-30) -tcnq.rotate(30,30,30) -tcnq.write_xyz("pla1.2.xyz") -tcnq2.write_xyz("pla1.3.xyz") - -print("Max ",tcnq.maxx,tcnq.maxy,tcnq.maxz) -print("Min ",tcnq.minx,tcnq.miny,tcnq.minz) -print("COM ",tcnq.center_of_mass) - -print("\n10)") - -print(tcnq2) +pol2=pol.copy() -tcnq2.add_anchor("com+disp",tcnq2.anchors["com"]+array([1,1,2])) +pol2.rotate(-30,-30,-30) +pol.rotate(30,30,30) +pol.write_xyz(filename + ".2.xyz") +pol2.write_xyz(filename + ".3.xyz") -for anchor in tcnq2.anchors: - print(anchor,tcnq2.anchors[anchor]) +print("Max ",pol.maxx,pol.maxy,pol.maxz) +print("Min ",pol.minx,pol.miny,pol.minz) +print("COM ",pol.center_of_mass) -tcnq2.rotate(10,-70,90,"com+disp") +pol.align('y') +pol.write_xyz(filename + ".align_y.xyz") -tcnq2.write_xyz("tcnq.4.xyz") +pol.align('x') +pol.write_xyz(filename + ".align_x.xyz") -for anchor in tcnq2.anchors: - print(anchor,tcnq2.anchors[anchor]) - -tcnq2.write_pw_input("tcnq.in") +pol.align('z') +pol.write_xyz(filename + ".align_z.xyz") From 48b1b6d5dc0aaf948806087961d3bb826a1d627e Mon Sep 17 00:00:00 2001 From: pbriquet Date: Thu, 29 Feb 2024 16:42:59 -0300 Subject: [PATCH 04/10] Finished Polymer Class --- MolAdsPy/__adsorption__.py | 64 +++++- MolAdsPy/__polymer__.py | 203 +++++++++++++----- .../__pycache__/__polymer__.cpython-37.pyc | Bin 15621 -> 18929 bytes pla1.1.xyz | 2 +- pla1.2.xyz | 38 ++-- pla1.3.xyz | 38 ++-- pla1.align_x.xyz | 38 ++-- pla1.align_xx.xyz | 20 ++ pla1.align_xy.xyz | 20 ++ pla1.align_xz.xyz | 20 ++ pla1.align_y.xyz | 38 ++-- pla1.align_z.xyz | 38 ++-- tests/test_adsorption.py | 120 +++++++++++ tests/test_polymer.py | 60 ++++-- 14 files changed, 528 insertions(+), 171 deletions(-) create mode 100644 pla1.align_xx.xyz create mode 100644 pla1.align_xy.xyz create mode 100644 pla1.align_xz.xyz create mode 100644 tests/test_adsorption.py diff --git a/MolAdsPy/__adsorption__.py b/MolAdsPy/__adsorption__.py index 3da63c4..cb9f527 100644 --- a/MolAdsPy/__adsorption__.py +++ b/MolAdsPy/__adsorption__.py @@ -2,6 +2,7 @@ from __molecule__ import Molecule from __slab__ import Slab from __hybrid__ import Hybrid +from __polymer__ import Polymer from __exception__ import BasicException from numpy import array,dot,max,min,ndarray from multipledispatch import dispatch @@ -117,6 +118,67 @@ def add_component(self,molecule,ads_site,n=0,m=0,anchor="com",vertsep=1.0, else: raise AdsorptionError("A valid adsorption site must be provided!") + @dispatch(Polymer,str,n=int,m=int,anchor=str,vertsep=(int,float),side=str) + def add_component(self,molecule,ads_site,n=0,m=0,anchor="com",vertsep=1.0, side="top"): + ''' + Adsorbs a molecule onto the substrate. + + Parameters + ---------- + molecule : Molecule object + Adsorbed molecule. + ads_site : string + Label of the adsorption site. + n : integer, optional + Number of translations applied to the position of the adsorption site + along the first lattice vector. The default is zero. + m : integer, optional + Number of translations applied to the position of the adsorption site + along the second lattice vector. The default is zero. + anchor : string, optional + Anchor point in the molecule that will be vertically aligned with + the adsorption site on the substrate. The default is "com", which + is the positon of the molecule's center of mass. + vertsep : float, optional + Nearest vertical distance separating the molecule from the + substrate. The default is 1.0 Angstrom. + side : string, optional + Side of the slab where the molecule will be adsorbed. It must be either + "top" or "bottom" (self-explanatory). The default is "top". + ''' + if molecule._belongs_to is not None: + raise AdsorptionError("The molecule already belongs to another structure!") + elif self._components["substrate"] is None: + raise AdsorptionError("No substrate has been defined!") + elif len(anchor)==0 or anchor not in molecule.anchors.keys(): + raise AdsorptionError("'anchor' must be a valid anchor point!") + elif n<0: + raise AdsorptionError("'n' must be an integer greater than or equal to zero!") + elif m<0: + raise AdsorptionError("'m' must be an integer greater than or equal to zero!") + + if len(ads_site)>0 and ads_site in self._components["substrate"]._ads_sites: + sep=max([vertsep,self._minsep]) + + if side=="top": + dz=self._components["substrate"]._top+sep-molecule._minz + elif side=="bottom": + dz=self._components["substrate"]._bottom-sep-molecule._maxz + else: + raise AdsorptionError("'side' must be either 'top' or 'bottom'!") + + self._components["molecules@"+side].append(molecule) + + molecule._belongs_to=self + x0=self._components["substrate"]._ads_sites[ads_site]+\ + dot(self._a0*array([n,m]),self._latvec[:2,:2]) + x=array([x0[0],x0[1],molecule.anchors[anchor][2]+dz]) + + molecule.move_to(x,anchor) + self._update() + else: + raise AdsorptionError("A valid adsorption site must be provided!") + @dispatch(Molecule,(ndarray,list,tuple),anchor=str,vertsep=(int,float),side=str) def add_component(self,molecule,pos,anchor="com",vertsep=1.0,side="top"): ''' @@ -141,7 +203,7 @@ def add_component(self,molecule,pos,anchor="com",vertsep=1.0,side="top"): "top" or "bottom" (self-explanatory). The default is "top". ''' if molecule._belongs_to is not None: - raise AdsorptionError("The molecule already belongs to another structure!") + raise AdsorptionError("The polymer already belongs to another structure!") elif self._components["substrate"] is None: raise AdsorptionError("No substrate has been defined!") elif len(anchor)==0 or anchor not in molecule.anchors.keys(): diff --git a/MolAdsPy/__polymer__.py b/MolAdsPy/__polymer__.py index ee9aeb0..97cdf90 100644 --- a/MolAdsPy/__polymer__.py +++ b/MolAdsPy/__polymer__.py @@ -2,7 +2,7 @@ from __atom__ import Atom from __atomcollection__ import AtomCollection from __exception__ import BasicException -from numpy import array,ndarray,min,max,sum,cos,sin,radians,dot +from numpy import array,ndarray,min,max,sum,cos,sin,radians,dot,zeros from copy import deepcopy from multipledispatch import dispatch @@ -13,7 +13,7 @@ class Polymer(AtomCollection): __slots__=["_vaccuum","_maxx","_maxy","_maxz","_minx","_miny","_minz","_anchors"] @dispatch(str,vaccuum=(int,float)) - def __init__(self,label,vaccuum=10.0): + def __init__(self,label,vaccuum=10.0,repetition_orientation=0,metric_method='min_max'): ''' Object initialization. @@ -29,7 +29,9 @@ def __init__(self,label,vaccuum=10.0): ''' super().__init__() - self._orientation = 0 # x by standard + self._orientation = self._old_orientation = repetition_orientation # x by standard + self._metric_method = metric_method + self._dic_metric_method = None if len(label)>0: self._label=label @@ -46,7 +48,7 @@ def __init__(self,label,vaccuum=10.0): self._anchors={"com":array([0.0,0.0,0.0])} # Anchor points for translations and rotations @dispatch(str,str,file_type=str,vaccuum=(int,float)) - def __init__(self,label,file_name,file_type="XYZ",vaccuum=10.0): + def __init__(self,label,file_name,file_type="XYZ",vaccuum=10.0,repetition_orientation=0, metric_method='min_max'): ''' Object initialization. @@ -68,6 +70,9 @@ def __init__(self,label,file_name,file_type="XYZ",vaccuum=10.0): super().__init__() + self._metric_method = metric_method + self._dic_metric_method = None + self._orientation = self._old_orientation = repetition_orientation # x by standard if len(label)>0: self._label=label @@ -91,7 +96,7 @@ def __init__(self,label,file_name,file_type="XYZ",vaccuum=10.0): @dispatch(str,list,vaccuum=(int,float)) - def __init__(self,label,atom_list,vaccuum=10.0): + def __init__(self,label,atom_list,vaccuum=10.0,metric_method='min_max',repetition_orientation=0): ''' Object initialization. @@ -108,7 +113,10 @@ def __init__(self,label,atom_list,vaccuum=10.0): ''' super().__init__() - + self._metric_method = metric_method + self._dic_metric_method = None + self._orientation = self._old_orientation = repetition_orientation # x by standard + if len(label)>0: self._label=label else: @@ -296,9 +304,10 @@ def move_to(self,x,anchor="com"): else: raise PolymerError("'x' must be an array with three components!") - def rotate(self,theta,phi,psi,anchor="com"): + def _rotate(self,theta,phi,psi,anchor="com"): ''' - rotate(theta,phi,psi,anchor) -> rotates the polymer around an anchor point. + _rotate(theta,phi,psi,anchor) -> rotates the polymer around an anchor point. + This method is private because it allows to rotate the polymer object with all degrees of freedom. Parameters ---------- @@ -358,30 +367,110 @@ def align(self, axis): axis : str The axis along which to align the polymer ('x', 'y', or 'z'). """ - # TODO: Permutate new align, change max and min of old axis by new one - - # Dictionary to map the axis of the rotatino angles (theta, phi, psi) - # This values are examples and must be adjusted by necessity - # Theta: Axis Y Rotation - # Phi: Axis X Rotation - # Psi: Axis Z Rotation - rotation_map = { - 'x': (0, 90, 0), - 'y': (90, 0, 0), - 'z': (0, 0, 90) + _axis_dic = { + 'x':0, + 'y':1, + 'z':2 } - - if axis in rotation_map: - theta, phi, psi = rotation_map[axis] - self.rotate(theta, phi, psi, anchor="com") - self._update() - else: + # Check if axis is correctly given + try: + new_orientation = _axis_dic[axis] + except: raise PolymerError(f"Invalid axis '{axis}'. Please choose 'x', 'y', or 'z'.") - # TODO: Reimplement for new orientation + # Just align if orientation changes + if(new_orientation != self._orientation): + # Hold previous orientation + self.old_orientation = self._orientation + self._orientation = new_orientation + + # Dictionary to map the axis of the rotation angles (theta, phi, psi) + # This values are examples and must be adjusted by necessity + # Theta: Axis Y Rotation + # Phi: Axis X Rotation + # Psi: Axis Z Rotation + + + ''' + theta : float, optional + First rotation angle (around Y axis), in degrees. + phi : float, optional + Second rotation angle (around X axis), in degrees. + psi : float, optional + Third rotation angle (around Z axis), in degrees. + anchor : string, optional + Anchor point around which the polymer will be rotated. The default + is 'com', which means the polymer's center of mass. + + ''' + # Identify which angle should be rotate by the sum of the old orientation and the new one + choose_angle = { + 1:2, + 3:0, + 2:1 + } + right_angle = choose_angle[self._orientation + self._old_orientation] + rotation_angles = array([0.0,0.0,0.0]) + di = self._orientation - self._old_orientation + + # Just trust this works + angle_sign = (-1)**abs(di)*di/abs(di) + rotation_angles[right_angle] = angle_sign*90.0 + phi, theta, psi = rotation_angles + + self.rotate(theta,phi,psi,"origin") + + self._update() + + + # TODO: Permutate new align, change max and min of old axis by new one + # Obtain polymer orientation from the maximum diff max - min. TODO: Reimplement + + def rotate(self,angle_degrees): + """ + Rotate the polymer in its orientation axis center, + + Parameters + ---------- + angle_degrees : str + The angle in degrees following right-hand rule. + """ + self._calculate_polymer_rotation_axis_center() + rotation_angles = array([angle_degrees if i==self._orientation else 0.0 for i in range(3)]) + phi, theta, psi = rotation_angles + self._rotate(theta,phi,psi,anchor='polymer_axis') + + def _calculate_polymer_rotation_axis_center(self,metric_method='min_max'): + ''' + Calculates the center position in the polymer perpendicular plane through a given metric + + Parameters + ---------- + metric : str + The metric that will be used as standard to calculate the position of the rotation axis in the orientation perpedicular plane. + """ + Metrics accepted: + - 'min_max': Uses the center point between the min and max of a coordinate + - 'geometric_center': Makes the average of atom centroids + - 'mass_center': Uses the center of mass coordinates + + ''' + point = array([0.0,0.0,0.0]) + + if(self._metric_method == None): + self._metric_method = { + 'max_min':lambda: self._anchors["middle_point"], + 'mass_center': lambda: self._anchors["com"], + 'geometric_center': lambda: self._anchors["geometric_center"] + } + point = self._metric_method[metric_method]() + + point[self._orientation] = 0.0 + self._anchors['polymer_axis'] = point + def resize(self,n_axis): ''' - Resizes the slab in the orientation plane by self._orientation index + Resizes the polymer in the orientation plane by self._orientation index ''' n, m, l = [0,0,0] @@ -399,44 +488,44 @@ def _update(self): _update() -> simultaneously updates the polymer's center of mass and the values of its extremities. ''' - # Obtain polymer orientation from the maximum diff max - min. TODO: Reimplement - old_orientation = self._orientation - old_max_min = self._max_min - - self._max_min = 0 - if(self.maxx - self.minx > self._max_min): - self._max_min = self.maxx - self.minx - self._orientation = 0 - elif(self.maxy - self.miny > self._max_min): - self._max_min = self.maxy - self.miny - self._orientation = 1 - elif(self.maxz - self.minz > self._max_min): - self._max_min = self.maxz - self.minz - self._orientation = 0 + valid_coords=array([atom._x for atom in self.active_atoms]) atomic_mass=array([atom.atomic_mass for atom in self.active_atoms]) - + if valid_coords.shape[0]>0: self._maxx,self._maxy,self._maxz=max(valid_coords,axis=0) self._minx,self._miny,self._minz=min(valid_coords,axis=0) totmass=sum(atomic_mass) - self._anchors["com"]=sum(atomic_mass*valid_coords.transpose(), - axis=1)/totmass - self._anchors["middle_point"]=array([(self.maxx + self.minx)/2.0],(self.maxy + self.miny)/2.0,(self.maxz + self.minz)/2.0) + self._anchors["com"]=sum(atomic_mass*valid_coords.transpose(),axis=1)/totmass + self._anchors["middle_point"]=array([(self.maxx + self.minx)/2.0,(self.maxy + self.miny)/2.0,(self.maxz + self.minz)/2.0]) + self._anchors["geometric_center"]=sum(valid_coords.transpose(),axis=1)/len(self) + self._anchors["origin"] = array([0.0,0.0,0.0]) # TODO: Calculate only vacuum on perpendicular orientations - if(old_orientation != self._orientation): + ''' + if(self._old_orientation != self._orientation): tmpvec = self._latvec[self._orientation] - self._latvec[self._orientation] = self._latvec[old_orientation] - self._latvec[old_orientation] = tmpvec + self._latvec[self._orientation] = self._latvec[self._old_orientation] + self._latvec[self._old_orientation] = tmpvec + ''' - self._latvec=array([[self._maxx-self._minx+self._vaccuum,0.0,0.0], - [0.0,self._maxy-self._miny+self._vaccuum,0.0], - [0.0,0.0,self._maxz-self._minz+self._vaccuum]]) + vaccuum_vec =array([0.0,0.0,0.0]),array([0.0,0.0,0.0]),array([0.0,0.0,0.0]) + # Iterate in every axis + for i in range(3): + if(i != self._orientation): + vaccuum_vec[i][i] = self._vaccuum + + self._latvec=array([[self._maxx-self._minx,0.0,0.0], + [0.0,self._maxy-self._miny,0.0], + [0.0,0.0,self._maxz-self._minz]]) + self._latvec = self._latvec + vaccuum_vec + print("Vaccum Vector") + print(vaccuum_vec) self._origin=array([self._minx,self._miny,self._minz]) - + + else: self._maxx=self._maxy=self._maxz=None self._minx=self._miny=self._minz=None @@ -519,4 +608,12 @@ def minz(self): @property def origin(self): - return self._origin \ No newline at end of file + return self._origin + + @property + def min(self): + return array([self._minx,self._miny, self._minz]) + + @property + def max(self): + return array([self._maxx,self._maxy, self._maxz]) \ No newline at end of file diff --git a/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc b/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc index e0336f13ad614588e9308c1f21fbff8357ee66be..3e360e4d7f6c4628cf99cf7afc61b6c6908ca0cf 100644 GIT binary patch delta 7632 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 EzXfi&asU7T delta 4319 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 CE|FOP diff --git a/pla1.1.xyz b/pla1.1.xyz index 1955067..eba0f2d 100644 --- a/pla1.1.xyz +++ b/pla1.1.xyz @@ -1,5 +1,5 @@ 18 -Lattice="26.690544 0.000000 0.000000 0.000000 25.214265 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 +Lattice="6.690544 0.000000 0.000000 0.000000 25.214265 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 C -0.039729 0.329835 0.179181 C 1.168915 -0.475202 -0.388983 O 2.307747 -0.238878 0.327535 diff --git a/pla1.2.xyz b/pla1.2.xyz index e2b012d..a2eb5a3 100644 --- a/pla1.2.xyz +++ b/pla1.2.xyz @@ -1,20 +1,20 @@ 18 -Lattice="25.043641 0.000000 0.000000 0.000000 25.722025 0.000000 0.000000 0.000000 25.227567" Properties=species:S:1:pos:R:3 -C 0.821943 0.941277 -1.741539 -C 1.663916 -0.270832 -1.237964 -O 2.262113 -0.000351 -0.039971 -C 1.749779 2.002420 -2.327940 -H 0.236865 1.364374 -0.911448 -O 1.809922 -1.311504 -1.859371 -H 2.452885 2.344460 -1.555055 -H 2.317297 1.586350 -3.173192 -H 1.158744 2.862449 -2.669482 -C 3.199827 -1.007709 0.489862 -C 4.170043 -0.319115 1.497435 -O 5.280506 -1.082558 1.722685 -C 2.420260 -2.110739 1.200640 -H 3.767389 -1.428460 -0.353645 -O 3.941102 0.742812 2.054375 -H 3.119388 -2.859576 1.598913 -H 1.746832 -2.606159 0.489234 -H 1.832838 -1.689603 2.029338 +Lattice="6.104983 0.000000 0.000000 0.000000 24.236068 0.000000 0.000000 0.000000 24.165493" Properties=species:S:1:pos:R:3 +C 0.498905 -1.784249 0.861114 +C 1.469897 -1.256338 -0.238976 +O 2.579949 -0.679204 0.309555 +C -0.279483 -0.616413 1.461983 +H 1.066575 -2.306655 1.645473 +O 1.243547 -1.308100 -1.437538 +H 0.421904 0.101595 1.910558 +H -0.865844 -0.108758 0.682170 +H -0.952860 -0.985627 2.246754 +C 3.521031 -0.014646 -0.611058 +C 4.363280 1.026708 0.186991 +O 4.961194 1.929413 -0.646275 +C 4.448159 -1.053921 -1.235514 +H 2.937831 0.491934 -1.394587 +O 4.511923 1.005807 1.398499 +H 5.152122 -0.558141 -1.918738 +H 3.857929 -1.779895 -1.809655 +H 5.014867 -1.578965 -0.452999 diff --git a/pla1.3.xyz b/pla1.3.xyz index 1011802..f01c348 100644 --- a/pla1.3.xyz +++ b/pla1.3.xyz @@ -1,20 +1,20 @@ 18 -Lattice="26.104983 0.000000 0.000000 0.000000 24.236068 0.000000 0.000000 0.000000 24.165493" Properties=species:S:1:pos:R:3 -C 0.498905 -1.784249 0.861114 -C 1.469897 -1.256338 -0.238976 -O 2.579949 -0.679204 0.309555 -C -0.279483 -0.616413 1.461983 -H 1.066575 -2.306655 1.645473 -O 1.243547 -1.308100 -1.437538 -H 0.421904 0.101595 1.910558 -H -0.865844 -0.108758 0.682170 -H -0.952860 -0.985627 2.246754 -C 3.521031 -0.014646 -0.611058 -C 4.363280 1.026708 0.186991 -O 4.961194 1.929413 -0.646275 -C 4.448159 -1.053921 -1.235514 -H 2.937831 0.491934 -1.394587 -O 4.511923 1.005807 1.398499 -H 5.152122 -0.558141 -1.918738 -H 3.857929 -1.779895 -1.809655 -H 5.014867 -1.578965 -0.452999 +Lattice="5.043641 0.000000 0.000000 0.000000 25.722025 0.000000 0.000000 0.000000 25.227567" Properties=species:S:1:pos:R:3 +C 0.821943 0.941277 -1.741539 +C 1.663916 -0.270832 -1.237964 +O 2.262113 -0.000351 -0.039971 +C 1.749779 2.002420 -2.327940 +H 0.236865 1.364374 -0.911448 +O 1.809922 -1.311504 -1.859371 +H 2.452885 2.344460 -1.555055 +H 2.317297 1.586350 -3.173192 +H 1.158744 2.862449 -2.669482 +C 3.199827 -1.007709 0.489862 +C 4.170043 -0.319115 1.497435 +O 5.280506 -1.082558 1.722685 +C 2.420260 -2.110739 1.200640 +H 3.767389 -1.428460 -0.353645 +O 3.941102 0.742812 2.054375 +H 3.119388 -2.859576 1.598913 +H 1.746832 -2.606159 0.489234 +H 1.832838 -1.689603 2.029338 diff --git a/pla1.align_x.xyz b/pla1.align_x.xyz index a0447ad..263ae25 100644 --- a/pla1.align_x.xyz +++ b/pla1.align_x.xyz @@ -1,20 +1,20 @@ 18 -Lattice="25.722025 0.000000 0.000000 0.000000 25.227567 0.000000 0.000000 0.000000 25.043641" Properties=species:S:1:pos:R:3 -C 3.952208 -1.991612 -1.938915 -C 2.740100 -1.488037 -1.096942 -O 3.010580 -0.290044 -0.498745 -C 5.013352 -2.578013 -1.011080 -H 4.375305 -1.161522 -2.523993 -O 1.699427 -2.109445 -0.950936 -H 5.355392 -1.805128 -0.307973 -H 4.597281 -3.423265 -0.443561 -H 5.873381 -2.919555 -1.602114 -C 2.003222 0.239789 0.438969 -C 2.691817 1.247362 1.409185 -O 1.928374 1.472611 2.519648 -C 0.900193 0.950567 -0.340598 -H 1.582471 -0.603718 1.006531 -O 3.753743 1.804302 1.180244 -H 0.151356 1.348840 0.358530 -H 0.404773 0.239160 -1.014026 -H 1.321328 1.779264 -0.928020 +Lattice="7.200000 0.000000 0.000000 0.000000 10.000000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C 0.821943 0.941277 -1.741539 +C 1.663916 -0.270832 -1.237964 +O 2.262113 -0.000351 -0.039971 +C 1.749779 2.002420 -2.327940 +H 0.236865 1.364374 -0.911448 +O 1.809922 -1.311504 -1.859371 +H 2.452885 2.344460 -1.555055 +H 2.317297 1.586350 -3.173192 +H 1.158744 2.862449 -2.669482 +C 3.199827 -1.007709 0.489862 +C 4.170043 -0.319115 1.497435 +O 5.280506 -1.082558 1.722685 +C 2.420260 -2.110739 1.200640 +H 3.767389 -1.428460 -0.353645 +O 3.941102 0.742812 2.054375 +H 3.119388 -2.859576 1.598913 +H 1.746832 -2.606159 0.489234 +H 1.832838 -1.689603 2.029338 diff --git a/pla1.align_xx.xyz b/pla1.align_xx.xyz new file mode 100644 index 0000000..eba0f2d --- /dev/null +++ b/pla1.align_xx.xyz @@ -0,0 +1,20 @@ +18 +Lattice="6.690544 0.000000 0.000000 0.000000 25.214265 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 +C -0.039729 0.329835 0.179181 +C 1.168915 -0.475202 -0.388983 +O 2.307747 -0.238878 0.327535 +C 0.059903 1.787060 -0.265049 +H -0.051334 0.266979 1.277494 +O 1.115352 -1.188029 -1.378666 +H 0.996232 2.223464 0.111169 +H 0.047341 1.851743 -1.362911 +H -0.783038 2.357606 0.146715 +C 3.560278 -0.828986 -0.180146 +C 4.768588 -0.024496 0.388596 +O 5.907506 -0.260432 -0.328279 +C 3.658652 -2.285587 0.265095 +H 3.549853 -0.768757 -1.278748 +O 4.715056 0.684974 1.380599 +H 4.594046 -2.724317 -0.110020 +H 2.816213 -2.856659 -0.146269 +H 3.644843 -2.350873 1.362686 diff --git a/pla1.align_xy.xyz b/pla1.align_xy.xyz new file mode 100644 index 0000000..123500b --- /dev/null +++ b/pla1.align_xy.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.214265 0.000000 0.000000 0.000000 6.690544 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 +C -0.329835 -0.039729 0.179181 +C 0.475202 1.168915 -0.388983 +O 0.238878 2.307747 0.327535 +C -1.787060 0.059903 -0.265049 +H -0.266979 -0.051334 1.277494 +O 1.188029 1.115352 -1.378666 +H -2.223464 0.996232 0.111169 +H -1.851743 0.047341 -1.362911 +H -2.357606 -0.783038 0.146715 +C 0.828986 3.560278 -0.180146 +C 0.024496 4.768588 0.388596 +O 0.260432 5.907506 -0.328279 +C 2.285587 3.658652 0.265095 +H 0.768757 3.549853 -1.278748 +O -0.684974 4.715056 1.380599 +H 2.724317 4.594046 -0.110020 +H 2.856659 2.816213 -0.146269 +H 2.350873 3.644843 1.362686 diff --git a/pla1.align_xz.xyz b/pla1.align_xz.xyz new file mode 100644 index 0000000..c20b758 --- /dev/null +++ b/pla1.align_xz.xyz @@ -0,0 +1,20 @@ +18 +Lattice="22.759265 0.000000 0.000000 0.000000 25.214265 0.000000 0.000000 0.000000 6.690544" Properties=species:S:1:pos:R:3 +C -0.179181 0.329835 -0.039729 +C 0.388983 -0.475202 1.168915 +O -0.327535 -0.238878 2.307747 +C 0.265049 1.787060 0.059903 +H -1.277494 0.266979 -0.051334 +O 1.378666 -1.188029 1.115352 +H -0.111169 2.223464 0.996232 +H 1.362911 1.851743 0.047341 +H -0.146715 2.357606 -0.783038 +C 0.180146 -0.828986 3.560278 +C -0.388596 -0.024496 4.768588 +O 0.328279 -0.260432 5.907506 +C -0.265095 -2.285587 3.658652 +H 1.278748 -0.768757 3.549853 +O -1.380599 0.684974 4.715056 +H 0.110020 -2.724317 4.594046 +H 0.146269 -2.856659 2.816213 +H -1.362686 -2.350873 3.644843 diff --git a/pla1.align_y.xyz b/pla1.align_y.xyz index ba0b2a3..80638d3 100644 --- a/pla1.align_y.xyz +++ b/pla1.align_y.xyz @@ -1,20 +1,20 @@ 18 -Lattice="25.227567 0.000000 0.000000 0.000000 25.722025 0.000000 0.000000 0.000000 25.043641" Properties=species:S:1:pos:R:3 -C 4.502445 0.941277 -1.938915 -C 3.998870 -0.270832 -1.096942 -O 2.800877 -0.000351 -0.498745 -C 5.088846 2.002420 -1.011080 -H 3.672354 1.364374 -2.523993 -O 4.620277 -1.311504 -0.950936 -H 4.315961 2.344460 -0.307973 -H 5.934098 1.586350 -0.443561 -H 5.430388 2.862449 -1.602114 -C 2.271044 -1.007709 0.438969 -C 1.263471 -0.319115 1.409185 -O 1.038221 -1.082558 2.519648 -C 1.560266 -2.110739 -0.340598 -H 3.114551 -1.428460 1.006531 -O 0.706531 0.742812 1.180244 -H 1.161993 -2.859576 0.358530 -H 2.271672 -2.606159 -1.014026 -H 0.731568 -1.689603 -0.928020 +Lattice="7.200000 0.000000 0.000000 0.000000 10.000000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C 0.941277 -0.821943 -1.741539 +C -0.270832 -1.663916 -1.237964 +O -0.000351 -2.262113 -0.039971 +C 2.002420 -1.749779 -2.327940 +H 1.364374 -0.236865 -0.911448 +O -1.311504 -1.809922 -1.859371 +H 2.344460 -2.452885 -1.555055 +H 1.586350 -2.317297 -3.173192 +H 2.862449 -1.158744 -2.669482 +C -1.007709 -3.199827 0.489862 +C -0.319115 -4.170043 1.497435 +O -1.082558 -5.280506 1.722685 +C -2.110739 -2.420260 1.200640 +H -1.428460 -3.767389 -0.353645 +O 0.742812 -3.941102 2.054375 +H -2.859576 -3.119388 1.598913 +H -2.606159 -1.746832 0.489234 +H -1.689603 -1.832838 2.029338 diff --git a/pla1.align_z.xyz b/pla1.align_z.xyz index f4e35de..d8da988 100644 --- a/pla1.align_z.xyz +++ b/pla1.align_z.xyz @@ -1,20 +1,20 @@ 18 -Lattice="25.722025 0.000000 0.000000 0.000000 25.043641 0.000000 0.000000 0.000000 25.227567" Properties=species:S:1:pos:R:3 -C 3.952208 -2.188989 1.741587 -C 2.740100 -1.347015 1.238012 -O 3.010580 -0.748819 0.040019 -C 5.013352 -1.261153 2.327988 -H 4.375305 -2.774067 0.911496 -O 1.699427 -1.201009 1.859419 -H 5.355392 -0.558047 1.555103 -H 4.597281 -0.693635 3.173240 -H 5.873381 -1.852187 2.669530 -C 2.003222 0.188896 -0.489814 -C 2.691817 1.159111 -1.497388 -O 1.928374 2.269574 -1.722637 -C 0.900193 -0.590671 -1.200592 -H 1.582471 0.756458 0.353693 -O 3.753743 0.930170 -2.054328 -H 0.151356 0.108456 -1.598865 -H 0.404773 -1.264100 -0.489186 -H 1.321328 -1.178093 -2.029290 +Lattice="7.200000 0.000000 0.000000 0.000000 10.000000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C -1.741539 -0.821943 -0.941277 +C -1.237964 -1.663916 0.270832 +O -0.039971 -2.262113 0.000351 +C -2.327940 -1.749779 -2.002420 +H -0.911448 -0.236865 -1.364374 +O -1.859371 -1.809922 1.311504 +H -1.555055 -2.452885 -2.344460 +H -3.173192 -2.317297 -1.586350 +H -2.669482 -1.158744 -2.862449 +C 0.489862 -3.199827 1.007709 +C 1.497435 -4.170043 0.319115 +O 1.722685 -5.280506 1.082558 +C 1.200640 -2.420260 2.110739 +H -0.353645 -3.767389 1.428460 +O 2.054375 -3.941102 -0.742812 +H 1.598913 -3.119388 2.859576 +H 0.489234 -1.746832 2.606159 +H 2.029338 -1.832838 1.689603 diff --git a/tests/test_adsorption.py b/tests/test_adsorption.py new file mode 100644 index 0000000..9987b3a --- /dev/null +++ b/tests/test_adsorption.py @@ -0,0 +1,120 @@ +import sys + +# TODO: Make this computer dettached +path = "E:\\PBC\\GitHub\\moladspy\\MolAdsPy" + +sys.path.append(path) +from core import Atom +from core import Polymer +from core import Molecule +from core import Adsorption +from numpy import array + +print("1)") + +graphene=Slab("graphene","graphene.xyz") +tcnq=Molecule("tcnq","tcnq.xyz") + +print(graphene) +print(tcnq) +print(graphene.label,len(graphene)) +print(tcnq.label,len(tcnq),tcnq.center_of_mass) + +print("\n2)") + +adsorbed=Adsorption(graphene) +top1_pos=array([graphene[0].coords[0],graphene[0].coords[1]]) +bridge1_pos=array([0.0,(graphene[1].coords[1]+(graphene[2].coords[1]- + graphene[1].coords[1])/2.0)]) + +graphene.add_adsorption_site("top1",top1_pos) +graphene.add_adsorption_site("bridge1",bridge1_pos) +adsorbed.resize(4,4) + +print(len(adsorbed._atoms),len(adsorbed._species)) + +adsorbed.add_component(tcnq,"top1",n=2,m=2,anchor="com",vertsep=2.0,side="top") + +print(len(adsorbed._atoms),len(adsorbed._species)) +print(tcnq.label,tcnq.center_of_mass) + +adsorbed.write_xyz("adsorbed.1.xyz") + +print("\n3)") + +tcnq.rotate(0,0,90) + +adsorbed.write_xyz("adsorbed.2.xyz") + +print("\n4)") + +print("Top: %f; Bottom: %f" % (adsorbed.top,adsorbed.bottom)) + +tcnq2=tcnq.copy() + +adsorbed.add_component(tcnq2,[6.7,4.5],anchor="com",vertsep=2.5,side="bottom") + +print(len(adsorbed._atoms),len(adsorbed._species)) +print(tcnq2.label,tcnq2.center_of_mass) + +print("Top: %f; Bottom: %f" % (adsorbed.top,adsorbed.bottom)) + +adsorbed.write_xyz("adsorbed.3.xyz") + +print("\n5)") + +tcnq2.displace([0,0,5]) + +print(graphene.bottom-tcnq2.maxz) + +adsorbed.write_xyz("adsorbed.4.xyz") + +print("\n6)") + +tcnq2.rotate(90,90,0) + +print(graphene.bottom-tcnq2.maxz) + +adsorbed.write_xyz("adsorbed.5.xyz") + +print("\n7)") + +print(len(adsorbed._atoms)) + +adsorbed.remove_component(tcnq2) + +print(len(adsorbed._atoms)) + +h1=Atom("H",x=[0.5,0.0,0.0]) +h2=h1.copy() +h2.coords[0]=1.5 +h2_mol=Molecule("h2") +h2_mol.add_atom(h1) +h2_mol.add_atom(h2) + +adsorbed.add_component(h2_mol,[6.7,4.5],anchor="com",vertsep=1.0,side="bottom") + +adsorbed.write_xyz("adsorbed.6.xyz") +adsorbed.write_pw_input(pseudopotentials={"C":"C.paw.UPF","H":"H.paw.UPF"}, + pwargs={"ibrav":8,"kvec":[4,4,4,0,0,0], + "occupations":"smearing"}) + +h2_mol.displace([-2,2,5]) + +print(len(adsorbed._atoms)) + +adsorbed.write_xyz("adsorbed.7.xyz") + +print("\n8)") + +adsorbed.set_separation(h2_mol,4) + +print(graphene.bottom-h2_mol.maxz) + +adsorbed.write_xyz("adsorbed.8.xyz") + + + + + + diff --git a/tests/test_polymer.py b/tests/test_polymer.py index 952c632..bb2a9f0 100644 --- a/tests/test_polymer.py +++ b/tests/test_polymer.py @@ -7,6 +7,7 @@ from core import Atom from core import Polymer from numpy import array +import unittest import os # TODO: Make a virtual simple polymer and test align, rotate and resize @@ -14,36 +15,53 @@ # TODO: Test same tests on Polypropilene # TODO: Make Assert Files on results and Unit Tests -filename = "pla1" -filepath = os.path.join(path,filename + ".xyz") -name_polymer = "pla" -print("1)") +class TestPolymerClassMethods(unittest.TestCase): + def test_readwrite(self): + pass -pol=Polymer("pla",filepath,vaccuum=20.0) + def test_rotate(self): + pass -pol.write_xyz(filename + ".1.xyz") + def test_align(self): + filename = "pla1" + filepath = os.path.join(path,filename + ".xyz") + name_polymer = "pla" + print("1)") -print("\n9)") + pol=Polymer("pla",filepath,vaccuum=20.0) -pol2=pol.copy() -pol2.rotate(-30,-30,-30) -pol.rotate(30,30,30) -pol.write_xyz(filename + ".2.xyz") -pol2.write_xyz(filename + ".3.xyz") + pol.write_xyz(filename + ".1.xyz") -print("Max ",pol.maxx,pol.maxy,pol.maxz) -print("Min ",pol.minx,pol.miny,pol.minz) -print("COM ",pol.center_of_mass) + print("\n9)") -pol.align('y') -pol.write_xyz(filename + ".align_y.xyz") + pol3=pol.copy() + pol2=pol.copy() -pol.align('x') -pol.write_xyz(filename + ".align_x.xyz") + pol2._rotate(-30,-30,-30) + pol3._rotate(30,30,30) + pol2.write_xyz(filename + ".2.xyz") + pol3.write_xyz(filename + ".3.xyz") -pol.align('z') -pol.write_xyz(filename + ".align_z.xyz") + print("Max ",pol.maxx,pol.maxy,pol.maxz) + print("Min ",pol.minx,pol.miny,pol.minz) + print("COM ",pol.center_of_mass) + pol_xx = pol.copy() + pol_xx.align('x') + pol_xx.write_xyz(filename + ".align_xx.xyz") + pol_xy = pol.copy() + pol_xy.align('y') + pol_xy.write_xyz(filename + ".align_xy.xyz") + pol_xz = pol.copy() + pol_xz.align('z') + pol_xz.write_xyz(filename + ".align_xz.xyz") + + def test_rotate_axis(self): + pass + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file From a24d1c7e77dad677c83bacd5cbd71d5935d797be Mon Sep 17 00:00:00 2001 From: pbriquet Date: Fri, 15 Mar 2024 17:53:35 -0300 Subject: [PATCH 05/10] Minor correction of function name --- MolAdsPy/__adsorption__.py | 106 ++++++++++++++++++ MolAdsPy/__polymer__.py | 4 +- .../__pycache__/__adsorption__.cpython-37.pyc | Bin 13459 -> 15783 bytes .../__pycache__/__polymer__.cpython-37.pyc | Bin 18929 -> 18957 bytes MolAdsPy/graphene.xyz | 6 + MolAdsPy/tcnq.xyz | 22 ++++ graphene.xyz | 6 + tcnq.xyz | 22 ++++ tests/test_adsorption.py | 1 + 9 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 MolAdsPy/graphene.xyz create mode 100644 MolAdsPy/tcnq.xyz create mode 100644 graphene.xyz create mode 100644 tcnq.xyz diff --git a/MolAdsPy/__adsorption__.py b/MolAdsPy/__adsorption__.py index cb9f527..1997db1 100644 --- a/MolAdsPy/__adsorption__.py +++ b/MolAdsPy/__adsorption__.py @@ -233,6 +233,61 @@ def add_component(self,molecule,pos,anchor="com",vertsep=1.0,side="top"): else: raise AdsorptionError("'pos' must be provided as a list with two components!") + + @dispatch(Polymer,(ndarray,list,tuple),anchor=str,vertsep=(int,float),side=str) + def add_component(self,polymer,pos,anchor="com",vertsep=1.0,side="top"): + ''' + Adsorbs a Polymer molecule onto the substrate. + + Parameters + ---------- + molecule : Molecule object + Adsorbed molecule. + pos : Numpy array + XY coordinates in the substrate above which the molecule will be + placed. + anchor : string, optional + Anchor point in the molecule that will be vertically aligned with + the adsorption site on the substrate. The default is "com", which + is the positon of the molecule's center of mass. + vertsep : float, optional + Nearest vertical distance separating the molecule from the + substrate. The default is 1.0 Angstrom. + side : string, optional + Side of the slab where the molecule will be adsorbed. It must be either + "top" or "bottom" (self-explanatory). The default is "top". + ''' + if polymer._belongs_to is not None: + raise AdsorptionError("The polymer already belongs to another structure!") + elif self._components["substrate"] is None: + raise AdsorptionError("No substrate has been defined!") + elif len(anchor)==0 or anchor not in polymer.anchors.keys(): + raise AdsorptionError("'anchor' must be a valid anchor point!") + + if isinstance(pos,(list,tuple)): + pos=array(pos) + + if isinstance(pos,ndarray) and pos.shape[0]==2: + sep=max([vertsep,self._minsep]) + + if side=="top": + dz=self._components["substrate"]._top+sep-polymer._minz + elif side=="bottom": + dz=self._components["substrate"]._bottom-sep-polymer._maxz + else: + raise AdsorptionError("'side' must be either 'top' or 'bottom'!") + + x=array([pos[0],pos[1],polymer.anchors[anchor][2]+dz]) + + self._components["molecules@"+side].append(polymer) + + polymer._belongs_to=self + + polymer.move_to(x,anchor) + self._update() + else: + raise AdsorptionError("'pos' must be provided as a list with two components!") + @dispatch(Molecule) def remove_component(self,molecule): ''' @@ -253,7 +308,28 @@ def remove_component(self,molecule): molecule._belongs_to=None self._update() + + @dispatch(Polymer) + def remove_component(self,polymer): + ''' + Removes an adsorbed polymer. + + Parameters + ---------- + molecule : Molecule object + Adsorbed molecule to be removed. + ''' + if polymer in self._components["molecules@top"]: + self._components["molecules@top"].remove(polymer) + elif polymer in self._components["molecules@bottom"]: + self._components["molecules@bottom"].remove(polymer) + else: + raise AdsorptionError("Molecule not found!") + polymer._belongs_to=None + + self._update() + @dispatch(int) def remove_component(self,molid): ''' @@ -308,7 +384,37 @@ def set_separation(self,molecule,sep): if abs(dz)>0.0: molecule.displace(array([0.0,0.0,dz])) self._update() + + @dispatch(Polymer,(int,float)) + def set_separation(self,polymer,sep): + ''' + Rigidly displaces the polymer along the direction perpendicular to the + substrate, such that the separation between the top/bottom of the substrate + and the nearest atom in the molecule be equal to 'sep'. + + Parameters + ---------- + molecule : Molecule object + Adsorbed molecule. + sep : float + Nearest distance separating the molecule from the substrate. + ''' + if sep0.0: + polymer.displace(array([0.0,0.0,dz])) + self._update() + @dispatch(int,(int,float)) def set_separation(self,molid,sep): ''' diff --git a/MolAdsPy/__polymer__.py b/MolAdsPy/__polymer__.py index 97cdf90..31897ac 100644 --- a/MolAdsPy/__polymer__.py +++ b/MolAdsPy/__polymer__.py @@ -417,8 +417,8 @@ def align(self, axis): angle_sign = (-1)**abs(di)*di/abs(di) rotation_angles[right_angle] = angle_sign*90.0 phi, theta, psi = rotation_angles - - self.rotate(theta,phi,psi,"origin") + print(phi,theta,psi) + self._rotate(theta,phi,psi,anchor="origin") self._update() diff --git a/MolAdsPy/__pycache__/__adsorption__.cpython-37.pyc b/MolAdsPy/__pycache__/__adsorption__.cpython-37.pyc index a90f3cfffd77f600257a3b8903d26a2fee1947b0..307ec283c07fee88c8e03455c298df711155b932 100644 GIT binary patch delta 3315 zcma)8OKclO7~a|SD~_LeH*pfTO`1As>^#~ueZMGeD5QZF2`pf>^-NnMuWik4sw6%5 z&`3y?K#Hayt{@~XAb|`;s*pGo2~LHIN}z=U95@t^xO0L3pG{&rasXTV?aciDKl8t5 zMgIMpk<;ODP=Vk04?nX57uO;^&q5{4Bs)uByyW+g|t5L$tk~>lUFMv~yK~ zouaT)0OnnFbDt}FOQqekM{>oGYjbtS#wzWt(7shA8>b1{5AQZQKnLO7&N^t4?v$dP zFy2LX%W)Tshv={zceCzSd+46cSqB}VdnIKD+X0l+=B$H`(lJTt1^In+T#ox-oTg_p za*|*P5SgGGvkp2*rzE8x*rw@zIUZmGz;$3__L|~RvV#!7!__6N>>&~H*q=#sLO^&I zfaBK}%ha%0%Hwz}R=CRh#QwmpsElqqa`gkmsx0uEkMxO!=ocg-VzK4cL8M`zc~abo z4OKAyTyEP9Bgd2^*B^ zxsq8f6?H+Gm32vNgo#d0aJ|$j=O;+kG#>Hub{RjsT zW)K>kzz^aYx`59j96~_r`C)`j>-iC!)>+Pv;=(b6n!O?&Z<&?0^5aN3fp8Mx6hfo9 z{4}gB!(&YWC<#%HPef8$z0;~+#~*q^lb5fvWZA81@sn?l3h`fvE`(geH@%W3Q{u($ zx&QFN0379b3VF+Ry!K+bz+4+cxa_sA8)f!?JXG^Wi_8P*4M!`NEI!p3^g2gu=YzY| zOFg&AbP`qYafWH;X042-^toC)rQVAo*4s(`sP5_gl$=6wehxuqd`(t!Gt~q;a@0&4Z`L83`jM#Y!A5_Rg#p(aluBoUe@#-B#QGYB$! zrA}T~rwh0$b&}aD)3Z@AJ`XIjs0}8Ht4*k?@BWOO=!5w@3)MgO9wYsdxzQl#;JRgVUB4~nMxPu(C!~lp23}40IdXg` z?v5@GKY_a^U4dqtXz|D5^4PN(w6*zmP8)b6Z!Vg38FyDa8vFb>2AK~b>_(98LQ`Z7 zrQE7>G_ZNAy{`b%J@H`QOcJxU`LTQiNcY9i_?r;rd*dgb+j1I8x;ZLiC7ZD9x_I5x zYru6}XmqLE{3~%GJ(EP~Z8X5<_>FiceKLu=Z^JYJr0)dDoSTw?QJvuC9c0OCpt+o* z8WZ1(mCVH%DdrXiH()cjD%N{eGu@HtNAY)NX4XB?&1*D!o1>xy!?yD|rr%&WxPh%- zggLR0sTbb4y|Ayu^VjmlU%|v~p-p}Ojpd`sGuLD^&Y-$7$7Hj>Yk;3cNFv~-ZYz;} zrl#As23pRFl5Od_{2Jn6q-aRdEW5(p{Fa%H*Dm)VNNZ~zz-vJEKaLGc29duEBPUSiCAb&u zWm%W9$#5(H#|K>;K6qpPZV!_VC7XZf3uyfa4pUGPfPpj$aj!;V{aMUa%DSYo8#|TwmF delta 2967 zcmZ`*OKcle6rDHz#_>1K$N8siQrAtJI6o(C)Blgq5(-5uEXs81_ezaCw)`ll z1o06drB6j-fha<#2ns^75E~?rxFXsXN+JrXoRvMBb*Hzk!*x0RH42?)QDwcL^-ce zKW$l8XbWpub7k9L9iXkSZe>1L$7%4gk_v77I44}>V{Z(O=P~g)nT>^jZGoSu0`U_b z691BJ^12A9ePl)?)saeuMrd@MtdVShd6<{AvLFjxcQGIHvzF^B^U>IQ9y&|gYPHq~ zjnnpZ1+2ng<%e}g&D!hOuBo(>c1f)WYHjZ(wsvWEh4!o~*(mL$eejIYemVfpHWsIY zbV!=E1HX&zmV5{Bd+4y_J6Y$;U36r76{mY?Qc4mm0g`>&t2j;3{Zi5m_M`NGZW zNY9SRMK9|GlX1GWiqkZmkdi)7o1{~c?`Qp>HNCZZQ*kTV0YHAPT6LA(BqWCY<9+Rj zeg_cSr!AGKZn2cxcAKnlo%e{6e|JQtrwz6GfJCZy{r`ALkGPrmfsBa@(UsN#lws!h zp!g*^T)_l#d2AT=p9%iJk2lw%ln zNT*cGm5g$!$cols@k#8taLQGCO7*jzU)^FpF)ib~6y#|%9z!xNyhCGTLd*;;RB8f8 z(Ik>7B-2Rxf!OXs-n49wwNx%JC&*UZ_Lw*HGUN3~@eGTm6cyuie_DB%F{ zt5s_san*X%F7A%@)p+#;I<$a9M&HCgegUNyk;vkfu6Z2Sp2S`08fMeUS-pS!DG)q@ zpNVifP6ew+4tz(BBTkD@uUlC(^Q+9M5C`v?#%MTm5iAF)6JzmBu)j(s#MSf#k{0*V zgT3|2j{@^py4WVi&WXR%Co0$ji>VGL;6t#mRn3535j$L8Hk?P1BQ&;K_Pm5erZNMY zHKkpTjqTNRt7Mo?Kj3vE2a=ozsjY18#cizatnZc%^`xyf784>oR{d$>DCx(c(IAHL zrkNJkw2NY7>Rb|0Oc5CjJeufp)F_GDQ!68<@ic_{F`5{$Dbmx=jAN|LmFzY^ByTJk zHAS~9zM2017|sd42gzBLSrb^BpOs#~z)&c$^?$(!xJo{~toXv>8W_;bvFvO9$Azqt3A+F3e z*BA$lJL2K&`AL}()edY=W|N~U&Ev9FJ^i70e(vdvG;_LvUj==q6*k9MGp|wUBk}uO zX3lw|Q_y(#JmyuAf^J#)9Mf*G9NbIhr()sIrSV$hp~oA0OFaKlzIYEp>=J(-x(_$X zyN6F#WFAg|8JEQ+Cj{OM{0tH~Q-+X}^Ft1sos!t>2#n2k_h#6)GzM0^SWI<>8>IIOHI5QiR!qLDR4?$it`+K@tUGw?JbRN|vc< z@(Y0nQQ|_03mVR;YFXcS1#uZ=WhZpJ0_3#gIG$wo_zP(4FY^-Ik=BarL^)Pu$=hBS z-EjZQ^4q+W(ef%19SMeRhcqo$&`mSP3I*_NyL2JRNo4@EiQoKK}0S9 diff --git a/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc b/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc index 3e360e4d7f6c4628cf99cf7afc61b6c6908ca0cf..ca9a2e4469cd0c8f0dd21795b47c3abb243eac71 100644 GIT binary patch delta 402 zcmYk$&npCB7zgn8Yu7M4Mj^Y~@(+y2+Sgm{8FZSTU~IXDLtrK+bR~A_}`*j^T%IX#h^rUZKmc|C}q&5Dex#N^Fbr~0Ex8ICL`~m)wZ?XUY delta 399 zcmYk1ze@sP7{}k|G*hpOBFu(xKO?l0h7#0HJuiYH92zRjI#H-7-mV|oWq(1_BTWrC zHOCP|L)6j`jMNU1I-||_aAvWDWSl!tqK#ZqngQ3e?8Wbqu=m+RH_W10LRo1* z7_XJEAoSSpiYmnR*#f%DQRG*k-Ve(RDW*V0$b9b-Q=G0`O$l z;{Pu_DSj( zU=U+!0pf^i8It&;u0a|rX%lkzk}ks(LN9B%T&4My+<^m|@3|M8>68G3z=R{h^N&Nys_OIRzf6OLr+5i9m diff --git a/MolAdsPy/graphene.xyz b/MolAdsPy/graphene.xyz new file mode 100644 index 0000000..cc36dda --- /dev/null +++ b/MolAdsPy/graphene.xyz @@ -0,0 +1,6 @@ +4 +Lattice="2.460 0.0 0.0 0.0 4.261 0.0 0.0 0.0 10.0" Properties=species:S:1:pos:R:3 +C 1.2300000000000000 0.0000000000000000 0.0000000000000000 +C 0.0000000000000000 0.7101408438490120 0.0000000000000000 +C 0.0000000000000000 2.1304225315470360 0.0000000000000000 +C 1.2300000000000000 2.8405633753960480 0.0000000000000000 diff --git a/MolAdsPy/tcnq.xyz b/MolAdsPy/tcnq.xyz new file mode 100644 index 0000000..ddf63ef --- /dev/null +++ b/MolAdsPy/tcnq.xyz @@ -0,0 +1,22 @@ +20 + + C 6.171380 8.422068 9.870778 + C 6.920763 9.652493 9.864589 + C 8.294993 9.651702 9.865653 + C 9.042711 8.420056 9.872673 + C 8.292974 7.189992 9.866488 + C 6.919360 7.190684 9.865660 + C 4.749370 8.422456 9.886849 + C 3.996510 9.630563 9.894764 + C 3.997054 7.213648 9.901798 + C 10.464583 8.418730 9.889876 + C 11.218904 9.625894 9.898188 + C 11.215811 7.209150 9.902931 + N 3.379840 10.630098 9.886468 + N 3.383533 6.212530 9.900916 + N 11.836539 10.624791 9.889775 + N 11.829414 6.208022 9.899456 + H 6.383203 10.599599 9.860799 + H 8.833973 10.597875 9.862825 + H 8.830683 6.242772 9.863397 + H 6.380431 6.244335 9.861782 diff --git a/graphene.xyz b/graphene.xyz new file mode 100644 index 0000000..cc36dda --- /dev/null +++ b/graphene.xyz @@ -0,0 +1,6 @@ +4 +Lattice="2.460 0.0 0.0 0.0 4.261 0.0 0.0 0.0 10.0" Properties=species:S:1:pos:R:3 +C 1.2300000000000000 0.0000000000000000 0.0000000000000000 +C 0.0000000000000000 0.7101408438490120 0.0000000000000000 +C 0.0000000000000000 2.1304225315470360 0.0000000000000000 +C 1.2300000000000000 2.8405633753960480 0.0000000000000000 diff --git a/tcnq.xyz b/tcnq.xyz new file mode 100644 index 0000000..ddf63ef --- /dev/null +++ b/tcnq.xyz @@ -0,0 +1,22 @@ +20 + + C 6.171380 8.422068 9.870778 + C 6.920763 9.652493 9.864589 + C 8.294993 9.651702 9.865653 + C 9.042711 8.420056 9.872673 + C 8.292974 7.189992 9.866488 + C 6.919360 7.190684 9.865660 + C 4.749370 8.422456 9.886849 + C 3.996510 9.630563 9.894764 + C 3.997054 7.213648 9.901798 + C 10.464583 8.418730 9.889876 + C 11.218904 9.625894 9.898188 + C 11.215811 7.209150 9.902931 + N 3.379840 10.630098 9.886468 + N 3.383533 6.212530 9.900916 + N 11.836539 10.624791 9.889775 + N 11.829414 6.208022 9.899456 + H 6.383203 10.599599 9.860799 + H 8.833973 10.597875 9.862825 + H 8.830683 6.242772 9.863397 + H 6.380431 6.244335 9.861782 diff --git a/tests/test_adsorption.py b/tests/test_adsorption.py index 9987b3a..e3bc345 100644 --- a/tests/test_adsorption.py +++ b/tests/test_adsorption.py @@ -6,6 +6,7 @@ sys.path.append(path) from core import Atom from core import Polymer +from core import Slab from core import Molecule from core import Adsorption from numpy import array From ba934937ccd7d5f324df677735b0036be84cc525 Mon Sep 17 00:00:00 2001 From: pbriquet Date: Fri, 15 Mar 2024 18:47:05 -0300 Subject: [PATCH 06/10] Typo Bug orientation correction There was a typo mistake of _old_orientation and old_orientation that was causing not holding new orientations. --- MolAdsPy/__polymer__.py | 30 +++- .../__pycache__/__adsorption__.cpython-37.pyc | Bin 15783 -> 18897 bytes .../__pycache__/__polymer__.cpython-37.pyc | Bin 18957 -> 19329 bytes adsorbed.1.xyz | 122 +++++++++++++++ adsorbed.2.xyz | 122 +++++++++++++++ adsorbed.3.xyz | 142 ++++++++++++++++++ adsorbed.4.xyz | 142 ++++++++++++++++++ adsorbed.5.xyz | 142 ++++++++++++++++++ adsorbed.6.xyz | 124 +++++++++++++++ pla1.align_1.1.xyz | 20 +++ pla1.align_1.2.xyz | 20 +++ pla1.align_1.3.xyz | 20 +++ pla1.align_1.4.xyz | 20 +++ tests/test_adsorption.py | 54 +++++-- tests/test_polymer.py | 27 +++- 15 files changed, 963 insertions(+), 22 deletions(-) create mode 100644 adsorbed.1.xyz create mode 100644 adsorbed.2.xyz create mode 100644 adsorbed.3.xyz create mode 100644 adsorbed.4.xyz create mode 100644 adsorbed.5.xyz create mode 100644 adsorbed.6.xyz create mode 100644 pla1.align_1.1.xyz create mode 100644 pla1.align_1.2.xyz create mode 100644 pla1.align_1.3.xyz create mode 100644 pla1.align_1.4.xyz diff --git a/MolAdsPy/__polymer__.py b/MolAdsPy/__polymer__.py index 31897ac..9e3f59d 100644 --- a/MolAdsPy/__polymer__.py +++ b/MolAdsPy/__polymer__.py @@ -29,7 +29,9 @@ def __init__(self,label,vaccuum=10.0,repetition_orientation=0,metric_method='min ''' super().__init__() - self._orientation = self._old_orientation = repetition_orientation # x by standard + self._orientation = repetition_orientation + self._old_orientation = repetition_orientation + # x by standard self._metric_method = metric_method self._dic_metric_method = None @@ -72,8 +74,8 @@ def __init__(self,label,file_name,file_type="XYZ",vaccuum=10.0,repetition_orient self._metric_method = metric_method self._dic_metric_method = None - self._orientation = self._old_orientation = repetition_orientation # x by standard - + self._orientation = repetition_orientation # x by standard + self._old_orientation = repetition_orientation if len(label)>0: self._label=label else: @@ -115,7 +117,8 @@ def __init__(self,label,atom_list,vaccuum=10.0,metric_method='min_max',repetitio super().__init__() self._metric_method = metric_method self._dic_metric_method = None - self._orientation = self._old_orientation = repetition_orientation # x by standard + self._orientation = repetition_orientation # x by standard + self._old_orientation = repetition_orientation if len(label)>0: self._label=label @@ -377,13 +380,21 @@ def align(self, axis): new_orientation = _axis_dic[axis] except: raise PolymerError(f"Invalid axis '{axis}'. Please choose 'x', 'y', or 'z'.") - + print() + print("extra check orientation: " + str(self._orientation)) # Just align if orientation changes if(new_orientation != self._orientation): # Hold previous orientation - self.old_orientation = self._orientation + print("Check 1:") + print("Old Orientation: " + str(self._orientation )) + print("New Orientation: " + str(new_orientation )) + + self._old_orientation = self._orientation self._orientation = new_orientation + print("Check 2:") + print("Old Orientation: " + str(self._old_orientation )) + print("New Orientation: " + str(self._orientation)) # Dictionary to map the axis of the rotation angles (theta, phi, psi) # This values are examples and must be adjusted by necessity # Theta: Axis Y Rotation @@ -409,10 +420,17 @@ def align(self, axis): 3:0, 2:1 } + print("Check 3:") + print("Old Orientation: " + str(self._old_orientation )) + print("New Orientation: " + str(self._orientation )) + print("Sum orientations: " + str(self._orientation + self._old_orientation)) right_angle = choose_angle[self._orientation + self._old_orientation] rotation_angles = array([0.0,0.0,0.0]) di = self._orientation - self._old_orientation + print("right_angle = " + str(right_angle)) + print("di = " + str(di)) + # Just trust this works angle_sign = (-1)**abs(di)*di/abs(di) rotation_angles[right_angle] = angle_sign*90.0 diff --git a/MolAdsPy/__pycache__/__adsorption__.cpython-37.pyc b/MolAdsPy/__pycache__/__adsorption__.cpython-37.pyc index 307ec283c07fee88c8e03455c298df711155b932..870849457fff43850a17a44ebc287785c5b74372 100644 GIT binary patch delta 1087 zcmZ8eOH5Ny5PdVHrB-SA^aG_W&{7Jvd@ZJk;8v4@n&Y3wgZ|>YDx3>wb9XUA` zh5yDj_SD_sP3vEPUt~cKv``3x&`LcRfHt~;L0f_qu-sKxfuuz>sz+%VU02$fJtJmX z0p?)NRfT(O!o#&ILz}rS%+My)tR5M~6=X%sEvs@xRXSSC+_a4a%brx0d6{ojN#?N< zR?6S`tc>~jyFj(G04tXr9GnMPh2&1oL#$GAm+G1*WL0TpXUADsW{T7zo{6NDomI0M znQ`;_T2|L5MKKpqRxi0n_3)C0w6e2C7Lyq-cQvuNv!tdDgS&L#vx!l{Q#+vS;_h+8KUB^slrYzU#GR?}1+l z83JuIQ8o>a=~J0EWu&i`aT@bq?AAJYg=Q5{A|S}23bhKs&kD#-LxEuDI5dNz%!v}k zVugI*e>9^B^;lpHpp#yf$Be?(qyH(NHoz#2R(6ml_zbq_P0*j3K>rPD(!**vj90uR>mwR$QCIy_VU~+Z|c(@RE7+uE@ADacVVw-zn*@E9dMqE5x=xP zd=!bGv5&i6>(QDmgdg;+?mBc)Z#0mqxE1Y(kNVr_Wq>^jHcX-mi5l+7-o;4K#w9F8 z+HBl24f8(bNY7(~SdBU~eYd3$PRgywql!NA!m18dBbx1GvGKWCEg^D;`Z69H zK#I3b5w)>FaWk4&p(a)$r_zQv+cD2-Gqb8Tzn~S1g#4B`?T%?qou5}VEhNIV0_p_F gLtPV$QFo#qI%p~3%xQANu~@EyKSfTTem`M_|0=)+HUIzs delta 755 zcmX|-O-NKx6vyAW&I~3vPR@rj z2ckAnXVb1AAzFmUi=b$gP|JuGg%#AIMNniAv}jT1-qiQt+~5EF@BhAg-fM#Umz z(h`H8#Jf*sa(Ko02VjXxLtfbE^wLk^zEXjH-FK-zzuP9nqQJmr7lT+?Fml^5gkfIGF@jaRx=j!6z@0kjWv<2= z%|7N`7}Z>1R-E%=?UwRj4C}NLFazwwm73ry1vpfX4cZDa@5Y4YO6EP-s5xYYIMTGG zJlKpa+6nWnz1XTbVn%pZa#LM3Y(}nX#E5rVe~XsG)^yz+5Z??ctKVm>H!J`Q&`cs} z&+p^0=2!iBq&R9=cBSnru?#cu7u|4cKq;Tj~$_od{m#VfOW}Uj1P6_)k({U@) z`A9&4es@j6Ae~CrYy{|9`UvE$59y--*Qu>LFCGFdb>G%UuK;Cw7Q|zq=RLn1V|>n2 zplAC>#VT0knNon0bTjC7#MpQV)X_UCUIE?c9TRVWe)L`tZ-FNJa^ zDS9z5GOGTSRP#$Uy8f~}!L(L9D`#d+Ie$@BDnp;Hrdo5%ne+3elxh;$s7jM6`r>C4 Xjnh=N1v=?&)@M(;ysm(?nsvfIeXhd+ diff --git a/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc b/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc index ca9a2e4469cd0c8f0dd21795b47c3abb243eac71..34e9a2a30bee6b383fa8293161d5b291816559db 100644 GIT binary patch delta 1085 zcmah{O=ufO6rOKqwOXy#vLs9X$qy*OX=5n0V=KW?^M@SEDuFu0haTb}Y_E`IyOvpR z?N(i35}$eqDNJYx@9nL8VMsEuA6nCUP7?{+9X^xG!II zUII4c`R>~mew6R`XMulYw)Z*^l|LVt=h!84efta?5tIE@?IFao{^2zb>kQ0;6ZSNp z&GB_~v2}p?Tt)NzJGl3$YN{Nqk)0~aSd`gzktdi>A*X6|hfm+^-tw`zwJoc|9XOg} z-{1|M%5DE+-13n&*4z|rSXY~G4WO$5nzgGt0 zJd~>^#uuE-_>N-Yv-0YHQZ4;pu8+It=(@Oh1vP@rRztaZa^lM`w*PaWwz!xQUju>n$j<|d~xB)yDx3W+1gDf8&<9IC| z3}27Dq4w@2>MqU>9~7%chwxV1J6gq0GM#gPKV^vtN#HyWQGj9Wf{5yJ8am E0yOghDgXcg delta 690 zcmXw#O=uHA7>4KF*=#nO%}>*`>5riGry8l0np)blO08*<3LdH`D6JvsmXNe`WgA3c z7O6cc6on~DK|~Q049`U*%O>tjr#{U2>#n0y3z?vwwJTve?_zv^}|3v!W z3ZRQGhh``eVmR5MA;nAG6=j3)kKO&Z7-gi28R~rVUhlKsrT~jtuoTPxh`K6MceE-^ zkXGXQYO1Asr%V^&YP(tsas5`H=41XvG!o{IlO1j+uFiDJh!dtU-;nGR)D5_X8?0$8 z8DItrE>g&xs(#4<7PNwvxuklVC;C$YVudb{WLPZp#L?Sv()m@3S^>Paw3KT1v*t=%3PbN zq3F;O^_>z$SSEd`_bsr>oBH12mH6J5qgdx1=@oq9Yw0O`=6eS#GWt7%7VuSU4`nH~ z_=(|r$~MIN;W6O1h>kn}+W3nz1q^V1ri_!^&dlO8-^kQ3%Ew2`7~?&;CcZwJ$GJLn zW%C%X(_KjyB_;S~HjB%WCNWu`pXahD@~s@hG_U4wq9T6fuc3W^4AJf=qQ~@BJr*|O SDKl(Fj6Fu5o)Pxh82$t59i{mI diff --git a/adsorbed.1.xyz b/adsorbed.1.xyz new file mode 100644 index 0000000..fc50106 --- /dev/null +++ b/adsorbed.1.xyz @@ -0,0 +1,122 @@ +120 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 12.042132" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 1.230000 12.783000 0.000000 +C 0.000000 13.493141 0.000000 +C 0.000000 14.913423 0.000000 +C 1.230000 15.623563 0.000000 +C 1.230000 17.044000 0.000000 +C 0.000000 17.754141 0.000000 +C 0.000000 19.174423 0.000000 +C 1.230000 19.884563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 3.690000 12.783000 0.000000 +C 2.460000 13.493141 0.000000 +C 2.460000 14.913423 0.000000 +C 3.690000 15.623563 0.000000 +C 3.690000 17.044000 0.000000 +C 2.460000 17.754141 0.000000 +C 2.460000 19.174423 0.000000 +C 3.690000 19.884563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 6.150000 12.783000 0.000000 +C 4.920000 13.493141 0.000000 +C 4.920000 14.913423 0.000000 +C 6.150000 15.623563 0.000000 +C 6.150000 17.044000 0.000000 +C 4.920000 17.754141 0.000000 +C 4.920000 19.174423 0.000000 +C 6.150000 19.884563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 8.610000 12.783000 0.000000 +C 7.380000 13.493141 0.000000 +C 7.380000 14.913423 0.000000 +C 8.610000 15.623563 0.000000 +C 8.610000 17.044000 0.000000 +C 7.380000 17.754141 0.000000 +C 7.380000 19.174423 0.000000 +C 8.610000 19.884563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 11.070000 12.783000 0.000000 +C 9.840000 13.493141 0.000000 +C 9.840000 14.913423 0.000000 +C 11.070000 15.623563 0.000000 +C 11.070000 17.044000 0.000000 +C 9.840000 17.754141 0.000000 +C 9.840000 19.174423 0.000000 +C 11.070000 19.884563 0.000000 +C 4.714263 8.523921 2.009979 +C 5.463646 9.754346 2.003790 +C 6.837876 9.753555 2.004854 +C 7.585594 8.521909 2.011874 +C 6.835857 7.291845 2.005689 +C 5.462243 7.292537 2.004861 +C 3.292253 8.524309 2.026050 +C 2.539393 9.732416 2.033965 +C 2.539937 7.315501 2.040999 +C 9.007466 8.520583 2.029077 +C 9.761787 9.727747 2.037389 +C 9.758694 7.311003 2.042132 +N 1.922723 10.731951 2.025669 +N 1.926416 6.314383 2.040117 +N 10.379422 10.726644 2.028976 +N 10.372297 6.309875 2.038657 +H 4.926086 10.701452 2.000000 +H 7.376856 10.699728 2.002026 +H 7.373566 6.344625 2.002598 +H 4.923314 6.346188 2.000983 diff --git a/adsorbed.2.xyz b/adsorbed.2.xyz new file mode 100644 index 0000000..75b4b6b --- /dev/null +++ b/adsorbed.2.xyz @@ -0,0 +1,122 @@ +120 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 12.042132" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 1.230000 12.783000 0.000000 +C 0.000000 13.493141 0.000000 +C 0.000000 14.913423 0.000000 +C 1.230000 15.623563 0.000000 +C 1.230000 17.044000 0.000000 +C 0.000000 17.754141 0.000000 +C 0.000000 19.174423 0.000000 +C 1.230000 19.884563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 3.690000 12.783000 0.000000 +C 2.460000 13.493141 0.000000 +C 2.460000 14.913423 0.000000 +C 3.690000 15.623563 0.000000 +C 3.690000 17.044000 0.000000 +C 2.460000 17.754141 0.000000 +C 2.460000 19.174423 0.000000 +C 3.690000 19.884563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 6.150000 12.783000 0.000000 +C 4.920000 13.493141 0.000000 +C 4.920000 14.913423 0.000000 +C 6.150000 15.623563 0.000000 +C 6.150000 17.044000 0.000000 +C 4.920000 17.754141 0.000000 +C 4.920000 19.174423 0.000000 +C 6.150000 19.884563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 8.610000 12.783000 0.000000 +C 7.380000 13.493141 0.000000 +C 7.380000 14.913423 0.000000 +C 8.610000 15.623563 0.000000 +C 8.610000 17.044000 0.000000 +C 7.380000 17.754141 0.000000 +C 7.380000 19.174423 0.000000 +C 8.610000 19.884563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 11.070000 12.783000 0.000000 +C 9.840000 13.493141 0.000000 +C 9.840000 14.913423 0.000000 +C 11.070000 15.623563 0.000000 +C 11.070000 17.044000 0.000000 +C 9.840000 17.754141 0.000000 +C 9.840000 19.174423 0.000000 +C 11.070000 19.884563 0.000000 +C 6.151921 9.957737 2.009979 +C 7.382346 9.208354 2.003790 +C 7.381555 7.834124 2.004854 +C 6.149909 7.086406 2.011874 +C 4.919845 7.836143 2.005689 +C 4.920537 9.209757 2.004861 +C 6.152309 11.379747 2.026050 +C 7.360416 12.132607 2.033965 +C 4.943501 12.132063 2.040999 +C 6.148583 5.664534 2.029077 +C 7.355747 4.910213 2.037389 +C 4.939003 4.913306 2.042132 +N 8.359951 12.749277 2.025669 +N 3.942383 12.745584 2.040117 +N 8.354644 4.292578 2.028976 +N 3.937875 4.299703 2.038657 +H 8.329452 9.745914 2.000000 +H 8.327728 7.295144 2.002026 +H 3.972625 7.298434 2.002598 +H 3.974188 9.748686 2.000983 diff --git a/adsorbed.3.xyz b/adsorbed.3.xyz new file mode 100644 index 0000000..04bdbe7 --- /dev/null +++ b/adsorbed.3.xyz @@ -0,0 +1,142 @@ +140 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 14.584264" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 1.230000 12.783000 0.000000 +C 0.000000 13.493141 0.000000 +C 0.000000 14.913423 0.000000 +C 1.230000 15.623563 0.000000 +C 1.230000 17.044000 0.000000 +C 0.000000 17.754141 0.000000 +C 0.000000 19.174423 0.000000 +C 1.230000 19.884563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 3.690000 12.783000 0.000000 +C 2.460000 13.493141 0.000000 +C 2.460000 14.913423 0.000000 +C 3.690000 15.623563 0.000000 +C 3.690000 17.044000 0.000000 +C 2.460000 17.754141 0.000000 +C 2.460000 19.174423 0.000000 +C 3.690000 19.884563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 6.150000 12.783000 0.000000 +C 4.920000 13.493141 0.000000 +C 4.920000 14.913423 0.000000 +C 6.150000 15.623563 0.000000 +C 6.150000 17.044000 0.000000 +C 4.920000 17.754141 0.000000 +C 4.920000 19.174423 0.000000 +C 6.150000 19.884563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 8.610000 12.783000 0.000000 +C 7.380000 13.493141 0.000000 +C 7.380000 14.913423 0.000000 +C 8.610000 15.623563 0.000000 +C 8.610000 17.044000 0.000000 +C 7.380000 17.754141 0.000000 +C 7.380000 19.174423 0.000000 +C 8.610000 19.884563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 11.070000 12.783000 0.000000 +C 9.840000 13.493141 0.000000 +C 9.840000 14.913423 0.000000 +C 11.070000 15.623563 0.000000 +C 11.070000 17.044000 0.000000 +C 9.840000 17.754141 0.000000 +C 9.840000 19.174423 0.000000 +C 11.070000 19.884563 0.000000 +C 6.151921 9.957737 2.009979 +C 7.382346 9.208354 2.003790 +C 7.381555 7.834124 2.004854 +C 6.149909 7.086406 2.011874 +C 4.919845 7.836143 2.005689 +C 4.920537 9.209757 2.004861 +C 6.152309 11.379747 2.026050 +C 7.360416 12.132607 2.033965 +C 4.943501 12.132063 2.040999 +C 6.148583 5.664534 2.029077 +C 7.355747 4.910213 2.037389 +C 4.939003 4.913306 2.042132 +N 8.359951 12.749277 2.025669 +N 3.942383 12.745584 2.040117 +N 8.354644 4.292578 2.028976 +N 3.937875 4.299703 2.038657 +H 8.329452 9.745914 2.000000 +H 8.327728 7.295144 2.002026 +H 3.972625 7.298434 2.002598 +H 3.974188 9.748686 2.000983 +C 6.701921 5.935737 -2.532153 +C 7.932346 5.186354 -2.538342 +C 7.931555 3.812124 -2.537278 +C 6.699909 3.064406 -2.530258 +C 5.469845 3.814143 -2.536443 +C 5.470537 5.187757 -2.537271 +C 6.702309 7.357747 -2.516082 +C 7.910416 8.110607 -2.508167 +C 5.493501 8.110063 -2.501133 +C 6.698583 1.642534 -2.513055 +C 7.905747 0.888213 -2.504743 +C 5.489003 0.891306 -2.500000 +N 8.909951 8.727277 -2.516463 +N 4.492383 8.723584 -2.502015 +N 8.904644 0.270578 -2.513156 +N 4.487875 0.277703 -2.503475 +H 8.879452 5.723914 -2.542132 +H 8.877728 3.273144 -2.540106 +H 4.522625 3.276434 -2.539534 +H 4.524188 5.726686 -2.541149 diff --git a/adsorbed.4.xyz b/adsorbed.4.xyz new file mode 100644 index 0000000..4004ef7 --- /dev/null +++ b/adsorbed.4.xyz @@ -0,0 +1,142 @@ +140 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 14.584264" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 1.230000 12.783000 0.000000 +C 0.000000 13.493141 0.000000 +C 0.000000 14.913423 0.000000 +C 1.230000 15.623563 0.000000 +C 1.230000 17.044000 0.000000 +C 0.000000 17.754141 0.000000 +C 0.000000 19.174423 0.000000 +C 1.230000 19.884563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 3.690000 12.783000 0.000000 +C 2.460000 13.493141 0.000000 +C 2.460000 14.913423 0.000000 +C 3.690000 15.623563 0.000000 +C 3.690000 17.044000 0.000000 +C 2.460000 17.754141 0.000000 +C 2.460000 19.174423 0.000000 +C 3.690000 19.884563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 6.150000 12.783000 0.000000 +C 4.920000 13.493141 0.000000 +C 4.920000 14.913423 0.000000 +C 6.150000 15.623563 0.000000 +C 6.150000 17.044000 0.000000 +C 4.920000 17.754141 0.000000 +C 4.920000 19.174423 0.000000 +C 6.150000 19.884563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 8.610000 12.783000 0.000000 +C 7.380000 13.493141 0.000000 +C 7.380000 14.913423 0.000000 +C 8.610000 15.623563 0.000000 +C 8.610000 17.044000 0.000000 +C 7.380000 17.754141 0.000000 +C 7.380000 19.174423 0.000000 +C 8.610000 19.884563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 11.070000 12.783000 0.000000 +C 9.840000 13.493141 0.000000 +C 9.840000 14.913423 0.000000 +C 11.070000 15.623563 0.000000 +C 11.070000 17.044000 0.000000 +C 9.840000 17.754141 0.000000 +C 9.840000 19.174423 0.000000 +C 11.070000 19.884563 0.000000 +C 6.151921 9.957737 2.009979 +C 7.382346 9.208354 2.003790 +C 7.381555 7.834124 2.004854 +C 6.149909 7.086406 2.011874 +C 4.919845 7.836143 2.005689 +C 4.920537 9.209757 2.004861 +C 6.152309 11.379747 2.026050 +C 7.360416 12.132607 2.033965 +C 4.943501 12.132063 2.040999 +C 6.148583 5.664534 2.029077 +C 7.355747 4.910213 2.037389 +C 4.939003 4.913306 2.042132 +N 8.359951 12.749277 2.025669 +N 3.942383 12.745584 2.040117 +N 8.354644 4.292578 2.028976 +N 3.937875 4.299703 2.038657 +H 8.329452 9.745914 2.000000 +H 8.327728 7.295144 2.002026 +H 3.972625 7.298434 2.002598 +H 3.974188 9.748686 2.000983 +C 6.701921 5.935737 2.467847 +C 7.932346 5.186354 2.461658 +C 7.931555 3.812124 2.462722 +C 6.699909 3.064406 2.469742 +C 5.469845 3.814143 2.463557 +C 5.470537 5.187757 2.462729 +C 6.702309 7.357747 2.483918 +C 7.910416 8.110607 2.491833 +C 5.493501 8.110063 2.498867 +C 6.698583 1.642534 2.486945 +C 7.905747 0.888213 2.495257 +C 5.489003 0.891306 2.500000 +N 8.909951 8.727277 2.483537 +N 4.492383 8.723584 2.497985 +N 8.904644 0.270578 2.486844 +N 4.487875 0.277703 2.496525 +H 8.879452 5.723914 2.457868 +H 8.877728 3.273144 2.459894 +H 4.522625 3.276434 2.460466 +H 4.524188 5.726686 2.458851 diff --git a/adsorbed.5.xyz b/adsorbed.5.xyz new file mode 100644 index 0000000..c755ffa --- /dev/null +++ b/adsorbed.5.xyz @@ -0,0 +1,142 @@ +140 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 14.584264" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 1.230000 12.783000 0.000000 +C 0.000000 13.493141 0.000000 +C 0.000000 14.913423 0.000000 +C 1.230000 15.623563 0.000000 +C 1.230000 17.044000 0.000000 +C 0.000000 17.754141 0.000000 +C 0.000000 19.174423 0.000000 +C 1.230000 19.884563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 3.690000 12.783000 0.000000 +C 2.460000 13.493141 0.000000 +C 2.460000 14.913423 0.000000 +C 3.690000 15.623563 0.000000 +C 3.690000 17.044000 0.000000 +C 2.460000 17.754141 0.000000 +C 2.460000 19.174423 0.000000 +C 3.690000 19.884563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 6.150000 12.783000 0.000000 +C 4.920000 13.493141 0.000000 +C 4.920000 14.913423 0.000000 +C 6.150000 15.623563 0.000000 +C 6.150000 17.044000 0.000000 +C 4.920000 17.754141 0.000000 +C 4.920000 19.174423 0.000000 +C 6.150000 19.884563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 8.610000 12.783000 0.000000 +C 7.380000 13.493141 0.000000 +C 7.380000 14.913423 0.000000 +C 8.610000 15.623563 0.000000 +C 8.610000 17.044000 0.000000 +C 7.380000 17.754141 0.000000 +C 7.380000 19.174423 0.000000 +C 8.610000 19.884563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 11.070000 12.783000 0.000000 +C 9.840000 13.493141 0.000000 +C 9.840000 14.913423 0.000000 +C 11.070000 15.623563 0.000000 +C 11.070000 17.044000 0.000000 +C 9.840000 17.754141 0.000000 +C 9.840000 19.174423 0.000000 +C 11.070000 19.884563 0.000000 +C 6.151921 9.957737 2.009979 +C 7.382346 9.208354 2.003790 +C 7.381555 7.834124 2.004854 +C 6.149909 7.086406 2.011874 +C 4.919845 7.836143 2.005689 +C 4.920537 9.209757 2.004861 +C 6.152309 11.379747 2.026050 +C 7.360416 12.132607 2.033965 +C 4.943501 12.132063 2.040999 +C 6.148583 5.664534 2.029077 +C 7.355747 4.910213 2.037389 +C 4.939003 4.913306 2.042132 +N 8.359951 12.749277 2.025669 +N 3.942383 12.745584 2.040117 +N 8.354644 4.292578 2.028976 +N 3.937875 4.299703 2.038657 +H 8.329452 9.745914 2.000000 +H 8.327728 7.295144 2.002026 +H 3.972625 7.298434 2.002598 +H 3.974188 9.748686 2.000983 +C 6.713945 4.501921 1.046056 +C 6.720134 5.732346 1.795439 +C 6.719070 5.731555 3.169669 +C 6.712050 4.499909 3.917387 +C 6.718235 3.269845 3.167650 +C 6.719063 3.270537 1.794036 +C 6.697874 4.502309 -0.375954 +C 6.689959 5.710416 -1.128814 +C 6.682925 3.293501 -1.128270 +C 6.694847 4.498583 5.339259 +C 6.686535 5.705747 6.093580 +C 6.681792 3.289003 6.090487 +N 6.698255 6.709951 -1.745484 +N 6.683807 2.292383 -1.741791 +N 6.694948 6.704644 6.711215 +N 6.685267 2.287875 6.704090 +H 6.723924 6.679452 1.257879 +H 6.721898 6.677728 3.708649 +H 6.721326 2.322625 3.705359 +H 6.722941 2.324188 1.255107 diff --git a/adsorbed.6.xyz b/adsorbed.6.xyz new file mode 100644 index 0000000..7045683 --- /dev/null +++ b/adsorbed.6.xyz @@ -0,0 +1,124 @@ +122 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 13.042132" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 1.230000 12.783000 0.000000 +C 0.000000 13.493141 0.000000 +C 0.000000 14.913423 0.000000 +C 1.230000 15.623563 0.000000 +C 1.230000 17.044000 0.000000 +C 0.000000 17.754141 0.000000 +C 0.000000 19.174423 0.000000 +C 1.230000 19.884563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 3.690000 12.783000 0.000000 +C 2.460000 13.493141 0.000000 +C 2.460000 14.913423 0.000000 +C 3.690000 15.623563 0.000000 +C 3.690000 17.044000 0.000000 +C 2.460000 17.754141 0.000000 +C 2.460000 19.174423 0.000000 +C 3.690000 19.884563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 6.150000 12.783000 0.000000 +C 4.920000 13.493141 0.000000 +C 4.920000 14.913423 0.000000 +C 6.150000 15.623563 0.000000 +C 6.150000 17.044000 0.000000 +C 4.920000 17.754141 0.000000 +C 4.920000 19.174423 0.000000 +C 6.150000 19.884563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 8.610000 12.783000 0.000000 +C 7.380000 13.493141 0.000000 +C 7.380000 14.913423 0.000000 +C 8.610000 15.623563 0.000000 +C 8.610000 17.044000 0.000000 +C 7.380000 17.754141 0.000000 +C 7.380000 19.174423 0.000000 +C 8.610000 19.884563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 11.070000 12.783000 0.000000 +C 9.840000 13.493141 0.000000 +C 9.840000 14.913423 0.000000 +C 11.070000 15.623563 0.000000 +C 11.070000 17.044000 0.000000 +C 9.840000 17.754141 0.000000 +C 9.840000 19.174423 0.000000 +C 11.070000 19.884563 0.000000 +C 6.151921 9.957737 2.009979 +C 7.382346 9.208354 2.003790 +C 7.381555 7.834124 2.004854 +C 6.149909 7.086406 2.011874 +C 4.919845 7.836143 2.005689 +C 4.920537 9.209757 2.004861 +C 6.152309 11.379747 2.026050 +C 7.360416 12.132607 2.033965 +C 4.943501 12.132063 2.040999 +C 6.148583 5.664534 2.029077 +C 7.355747 4.910213 2.037389 +C 4.939003 4.913306 2.042132 +N 8.359951 12.749277 2.025669 +N 3.942383 12.745584 2.040117 +N 8.354644 4.292578 2.028976 +N 3.937875 4.299703 2.038657 +H 8.329452 9.745914 2.000000 +H 8.327728 7.295144 2.002026 +H 3.972625 7.298434 2.002598 +H 3.974188 9.748686 2.000983 +H 6.200000 4.500000 -1.000000 +H 7.200000 4.500000 -1.000000 diff --git a/pla1.align_1.1.xyz b/pla1.align_1.1.xyz new file mode 100644 index 0000000..eba0f2d --- /dev/null +++ b/pla1.align_1.1.xyz @@ -0,0 +1,20 @@ +18 +Lattice="6.690544 0.000000 0.000000 0.000000 25.214265 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 +C -0.039729 0.329835 0.179181 +C 1.168915 -0.475202 -0.388983 +O 2.307747 -0.238878 0.327535 +C 0.059903 1.787060 -0.265049 +H -0.051334 0.266979 1.277494 +O 1.115352 -1.188029 -1.378666 +H 0.996232 2.223464 0.111169 +H 0.047341 1.851743 -1.362911 +H -0.783038 2.357606 0.146715 +C 3.560278 -0.828986 -0.180146 +C 4.768588 -0.024496 0.388596 +O 5.907506 -0.260432 -0.328279 +C 3.658652 -2.285587 0.265095 +H 3.549853 -0.768757 -1.278748 +O 4.715056 0.684974 1.380599 +H 4.594046 -2.724317 -0.110020 +H 2.816213 -2.856659 -0.146269 +H 3.644843 -2.350873 1.362686 diff --git a/pla1.align_1.2.xyz b/pla1.align_1.2.xyz new file mode 100644 index 0000000..123500b --- /dev/null +++ b/pla1.align_1.2.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.214265 0.000000 0.000000 0.000000 6.690544 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 +C -0.329835 -0.039729 0.179181 +C 0.475202 1.168915 -0.388983 +O 0.238878 2.307747 0.327535 +C -1.787060 0.059903 -0.265049 +H -0.266979 -0.051334 1.277494 +O 1.188029 1.115352 -1.378666 +H -2.223464 0.996232 0.111169 +H -1.851743 0.047341 -1.362911 +H -2.357606 -0.783038 0.146715 +C 0.828986 3.560278 -0.180146 +C 0.024496 4.768588 0.388596 +O 0.260432 5.907506 -0.328279 +C 2.285587 3.658652 0.265095 +H 0.768757 3.549853 -1.278748 +O -0.684974 4.715056 1.380599 +H 2.724317 4.594046 -0.110020 +H 2.856659 2.816213 -0.146269 +H 2.350873 3.644843 1.362686 diff --git a/pla1.align_1.3.xyz b/pla1.align_1.3.xyz new file mode 100644 index 0000000..72c34a8 --- /dev/null +++ b/pla1.align_1.3.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.214265 0.000000 0.000000 0.000000 22.759265 0.000000 0.000000 0.000000 6.690544" Properties=species:S:1:pos:R:3 +C -0.329835 -0.179181 -0.039729 +C 0.475202 0.388983 1.168915 +O 0.238878 -0.327535 2.307747 +C -1.787060 0.265049 0.059903 +H -0.266979 -1.277494 -0.051334 +O 1.188029 1.378666 1.115352 +H -2.223464 -0.111169 0.996232 +H -1.851743 1.362911 0.047341 +H -2.357606 -0.146715 -0.783038 +C 0.828986 0.180146 3.560278 +C 0.024496 -0.388596 4.768588 +O 0.260432 0.328279 5.907506 +C 2.285587 -0.265095 3.658652 +H 0.768757 1.278748 3.549853 +O -0.684974 -1.380599 4.715056 +H 2.724317 0.110020 4.594046 +H 2.856659 0.146269 2.816213 +H 2.350873 -1.362686 3.644843 diff --git a/pla1.align_1.4.xyz b/pla1.align_1.4.xyz new file mode 100644 index 0000000..438e347 --- /dev/null +++ b/pla1.align_1.4.xyz @@ -0,0 +1,20 @@ +18 +Lattice="6.690544 0.000000 0.000000 0.000000 22.759265 0.000000 0.000000 0.000000 25.214265" Properties=species:S:1:pos:R:3 +C -0.039729 -0.179181 0.329835 +C 1.168915 0.388983 -0.475202 +O 2.307747 -0.327535 -0.238878 +C 0.059903 0.265049 1.787060 +H -0.051334 -1.277494 0.266979 +O 1.115352 1.378666 -1.188029 +H 0.996232 -0.111169 2.223464 +H 0.047341 1.362911 1.851743 +H -0.783038 -0.146715 2.357606 +C 3.560278 0.180146 -0.828986 +C 4.768588 -0.388596 -0.024496 +O 5.907506 0.328279 -0.260432 +C 3.658652 -0.265095 -2.285587 +H 3.549853 1.278748 -0.768757 +O 4.715056 -1.380599 0.684974 +H 4.594046 0.110020 -2.724317 +H 2.816213 0.146269 -2.856659 +H 3.644843 -1.362686 -2.350873 diff --git a/tests/test_adsorption.py b/tests/test_adsorption.py index e3bc345..085e7e9 100644 --- a/tests/test_adsorption.py +++ b/tests/test_adsorption.py @@ -10,19 +10,43 @@ from core import Molecule from core import Adsorption from numpy import array - -print("1)") - -graphene=Slab("graphene","graphene.xyz") -tcnq=Molecule("tcnq","tcnq.xyz") - -print(graphene) -print(tcnq) -print(graphene.label,len(graphene)) -print(tcnq.label,len(tcnq),tcnq.center_of_mass) - -print("\n2)") - +import unittest +import os + +''' + +assertEqual(x, y, msg=None) x == y +assertNotEqual(x,y,msg=None) x != y +assertTrue(x, msg=None) bool(x) is True +assertFalse(x, msg=None) bool(x) is False +assertIs(x, y , msg=None) x is y +assertIsNot(x, y, msg=None) x is not y +assertIsNone(x, msg=None) x is None +assertIsNotNone(x , msg=None) x is not None +assertIn(x, y, msg=None) x in y +assertNotIn(x, y, msg=None) x not in y +assertIsInstance(x, y, msg=None) isinstance(x, y) +assertNotIsInstance(x, y, msg=None) not isinstance(x, y) + +''' +class TestAdsorptionClass(unittest.TestCase): + def test_load(self): + graphene=Slab("graphene","graphene.xyz") + tcnq=Molecule("tcnq","tcnq.xyz") + + self.assertIsNotNone(graphene,msg='Error loading graphene.xyz') + self.assertIsNotNone(tcnq, msg='Error loading tcnq.xyz') + + self.assertEqual(graphene.label,"graphene2",msg="Slab label is not graphene.") + + print(graphene) + print(tcnq) + print(graphene.label,len(graphene)) + print(tcnq.label,len(tcnq),tcnq.center_of_mass) + + print("\n2)") + +''' adsorbed=Adsorption(graphene) top1_pos=array([graphene[0].coords[0],graphene[0].coords[1]]) bridge1_pos=array([0.0,(graphene[1].coords[1]+(graphene[2].coords[1]- @@ -113,8 +137,10 @@ print(graphene.bottom-h2_mol.maxz) adsorbed.write_xyz("adsorbed.8.xyz") +''' - +if __name__=='__main__': + unittest.main() diff --git a/tests/test_polymer.py b/tests/test_polymer.py index bb2a9f0..18db44a 100644 --- a/tests/test_polymer.py +++ b/tests/test_polymer.py @@ -26,6 +26,7 @@ def test_align(self): filename = "pla1" filepath = os.path.join(path,filename + ".xyz") name_polymer = "pla" + ''' print("1)") pol=Polymer("pla",filepath,vaccuum=20.0) @@ -58,9 +59,31 @@ def test_align(self): pol_xz = pol.copy() pol_xz.align('z') pol_xz.write_xyz(filename + ".align_xz.xyz") - + ''' def test_rotate_axis(self): - pass + filename = "pla1" + filepath = os.path.join(path,filename + ".xyz") + pol=Polymer("pla",filepath,vaccuum=20.0) + pol1 = pol.copy() + #pol1.align('x') + #pol1.write_xyz(filename+".align_1.1.xyz") + pol1.align('y') + print() + print("Final orientation: " + str(pol1._orientation)) + pol1.write_xyz(filename+".align_1.2.xyz") + print() + print("Final orientation: " + str(pol1._orientation)) + pol1.align('z') + print() + print("Final orientation: " + str(pol1._orientation)) + + pol1.write_xyz(filename+".align_1.3.xyz") + print() + print("Final orientation: " + str(pol1._orientation)) + pol1.align('x') + pol1.write_xyz(filename+".align_1.4.xyz") + print() + print("Final orientation: " + str(pol1._orientation)) if __name__ == '__main__': From 78633a01417b2091f47b2405515144e76e5d6b28 Mon Sep 17 00:00:00 2001 From: pbriquet Date: Fri, 15 Mar 2024 19:00:33 -0300 Subject: [PATCH 07/10] Unittests syntaxes Start to put everything in Unit Tests and Asserts --- MolAdsPy/__polymer__.py | 44 ++++++------------ .../__pycache__/__polymer__.cpython-37.pyc | Bin 19329 -> 18887 bytes tests/test_polymer.py | 24 +++++----- 3 files changed, 26 insertions(+), 42 deletions(-) diff --git a/MolAdsPy/__polymer__.py b/MolAdsPy/__polymer__.py index 9e3f59d..1807fa9 100644 --- a/MolAdsPy/__polymer__.py +++ b/MolAdsPy/__polymer__.py @@ -380,21 +380,13 @@ def align(self, axis): new_orientation = _axis_dic[axis] except: raise PolymerError(f"Invalid axis '{axis}'. Please choose 'x', 'y', or 'z'.") - print() - print("extra check orientation: " + str(self._orientation)) + # Just align if orientation changes if(new_orientation != self._orientation): # Hold previous orientation - print("Check 1:") - print("Old Orientation: " + str(self._orientation )) - print("New Orientation: " + str(new_orientation )) - self._old_orientation = self._orientation self._orientation = new_orientation - print("Check 2:") - print("Old Orientation: " + str(self._old_orientation )) - print("New Orientation: " + str(self._orientation)) # Dictionary to map the axis of the rotation angles (theta, phi, psi) # This values are examples and must be adjusted by necessity # Theta: Axis Y Rotation @@ -415,27 +407,32 @@ def align(self, axis): ''' # Identify which angle should be rotate by the sum of the old orientation and the new one + # Changes are identified uniquely by the sum of old and new orientations: + # x (0) -> y (1) => angle must be in z (2) + choose_angle = { 1:2, 3:0, 2:1 } - print("Check 3:") - print("Old Orientation: " + str(self._old_orientation )) - print("New Orientation: " + str(self._orientation )) - print("Sum orientations: " + str(self._orientation + self._old_orientation)) + right_angle = choose_angle[self._orientation + self._old_orientation] rotation_angles = array([0.0,0.0,0.0]) di = self._orientation - self._old_orientation - - print("right_angle = " + str(right_angle)) - print("di = " + str(di)) - # Just trust this works + ''' + # Explaining: + Changes are identified uniquely by the sum of old and new orientations: + x -> y + Changes: x (0) -> y (1) => angle must be in z (2) + Changes: x -> y + Changes: x -> y + Changes: x -> y + ''' angle_sign = (-1)**abs(di)*di/abs(di) rotation_angles[right_angle] = angle_sign*90.0 phi, theta, psi = rotation_angles - print(phi,theta,psi) + self._rotate(theta,phi,psi,anchor="origin") self._update() @@ -519,15 +516,6 @@ def _update(self): self._anchors["middle_point"]=array([(self.maxx + self.minx)/2.0,(self.maxy + self.miny)/2.0,(self.maxz + self.minz)/2.0]) self._anchors["geometric_center"]=sum(valid_coords.transpose(),axis=1)/len(self) self._anchors["origin"] = array([0.0,0.0,0.0]) - - # TODO: Calculate only vacuum on perpendicular orientations - ''' - if(self._old_orientation != self._orientation): - tmpvec = self._latvec[self._orientation] - self._latvec[self._orientation] = self._latvec[self._old_orientation] - self._latvec[self._old_orientation] = tmpvec - ''' - vaccuum_vec =array([0.0,0.0,0.0]),array([0.0,0.0,0.0]),array([0.0,0.0,0.0]) # Iterate in every axis @@ -539,8 +527,6 @@ def _update(self): [0.0,self._maxy-self._miny,0.0], [0.0,0.0,self._maxz-self._minz]]) self._latvec = self._latvec + vaccuum_vec - print("Vaccum Vector") - print(vaccuum_vec) self._origin=array([self._minx,self._miny,self._minz]) diff --git a/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc b/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc index 34e9a2a30bee6b383fa8293161d5b291816559db..5bc07118a3cfce808a9698201354b5e4db9f04bd 100644 GIT binary patch delta 632 zcmXw#O=wd=6ou!^BzZ3{>1(K|ZKAfgQKQvTT1!n^)70iiq0%ZYgq9#qh>bsmSP)?z zQo6Drf_G5_7rN1n3+3TT-BhU{R$MChvk@19;zD-{-k0hO_uOypVPMWIuHXg19dBuI z1h3WSKdVzS58bD|@{OSN-k~c-8Bxbs)p!+jBPueORG^iHmfE_dypRcPcy-w!Qo;)_ zC~XJ3rk3DE{(GImvvhPJWUM7@62?l34c;O=+t}Jk3KKEm5!M;yMLoxh@y%^v6ngR3qcrhJ90-r=$7LmGfvFq{=Xl<+zKl(4@k6b2AJMt^EnxEYF3qo8R z2x3}EBxM4fylr%0h$|^~Ne;-p4S^H)^W#;Zi|!q&V3e$h8uBzhaSjD~Ke2$rG+n4+ zlKM*R^tw>Sbd!3DWt?czGSf+>4*FUwVwPzZr<&)xr6Q{ItzD=RvGxzz#5OgxZBT5%Kt0&HgiP2btqE+mRO5yq zIf!7XFoz;~P|qGJ!HXzTJcx%P2#QDbrXZ*YdaG|YNlU#r%Y5^_pYQF=n|a0H`Z~Ci zE|-Jg7})%kyD2|*Kkw!?fNgaTRyC**AR17c#_6QM*Pw&c0Eo^T)&hSU)JGT<4Ii%d zy;uzicH!K*N zZyrD}4$$z0NyVaBsK@veR9395ST#f{HZ0-A5|)+}Z6DgUmQDSd)v(%#ZVQkG?<5sb z7in97=vLiw5^YL87*Hb#v)~L%yjm|%D(AE8kyb`^iAbf{&6+)dt*^v zJ&#weCJiVdv`Y2G%Kr57<=y`rDixPv5d~AsQFg0&WnPmrMP)G;8IF`KG>;2=)6?a$ ztA5N;M+_KeKYBLKqzsLN0}e!<11DG^h||wGIT8HeMYNjCA2f3s975m)H#j*jc=-^j z960M+y-xsMvs(X4cu}7mnB?IjTN}IspICG#3!mBQP#(7GzlSKm7d9IofurnhJOCQg}pU z=88<=o63+zjJOeLRH7cdKp%TL`~kKZ8(HHB#||dOJIk(_Og4+{oyldjk~-CF>-R*o zlPxFK1*3IL8lAHK0Ya7rnLHW_NJltq1_U^47`DahIgk-Mn09&svL<_rOhMMpj*q8c!DP3Pl}z>(*%IrU&|!sb gOk9O)i0$>n Date: Thu, 21 Mar 2024 10:50:15 -0300 Subject: [PATCH 08/10] Test for Polymer Rotate method Implemented a test for the method Rotate --- MolAdsPy/__polymer__.py | 13 +++++--- .../__pycache__/__polymer__.cpython-37.pyc | Bin 18887 -> 18883 bytes pla1.align_1.1.degree_120.xyz | 20 +++++++++++ pla1.align_1.1.degree_180.xyz | 20 +++++++++++ pla1.align_1.1.degree_240.xyz | 20 +++++++++++ pla1.align_1.1.degree_300.xyz | 20 +++++++++++ pla1.align_1.1.degree_360.xyz | 20 +++++++++++ pla1.align_1.1.degree_60.xyz | 20 +++++++++++ pla1.align_1.2.degree_120.xyz | 20 +++++++++++ pla1.align_1.2.degree_180.xyz | 20 +++++++++++ pla1.align_1.2.degree_240.xyz | 20 +++++++++++ pla1.align_1.2.degree_300.xyz | 20 +++++++++++ pla1.align_1.2.degree_360.xyz | 20 +++++++++++ pla1.align_1.2.degree_60.xyz | 20 +++++++++++ pla1.align_1.3.degree_120.xyz | 20 +++++++++++ pla1.align_1.3.degree_180.xyz | 20 +++++++++++ pla1.align_1.3.degree_240.xyz | 20 +++++++++++ pla1.align_1.3.degree_300.xyz | 20 +++++++++++ pla1.align_1.3.degree_360.xyz | 20 +++++++++++ pla1.align_1.3.degree_60.xyz | 20 +++++++++++ tests/test_polymer.py | 31 +++++++++++++++++- 21 files changed, 398 insertions(+), 6 deletions(-) create mode 100644 pla1.align_1.1.degree_120.xyz create mode 100644 pla1.align_1.1.degree_180.xyz create mode 100644 pla1.align_1.1.degree_240.xyz create mode 100644 pla1.align_1.1.degree_300.xyz create mode 100644 pla1.align_1.1.degree_360.xyz create mode 100644 pla1.align_1.1.degree_60.xyz create mode 100644 pla1.align_1.2.degree_120.xyz create mode 100644 pla1.align_1.2.degree_180.xyz create mode 100644 pla1.align_1.2.degree_240.xyz create mode 100644 pla1.align_1.2.degree_300.xyz create mode 100644 pla1.align_1.2.degree_360.xyz create mode 100644 pla1.align_1.2.degree_60.xyz create mode 100644 pla1.align_1.3.degree_120.xyz create mode 100644 pla1.align_1.3.degree_180.xyz create mode 100644 pla1.align_1.3.degree_240.xyz create mode 100644 pla1.align_1.3.degree_300.xyz create mode 100644 pla1.align_1.3.degree_360.xyz create mode 100644 pla1.align_1.3.degree_60.xyz diff --git a/MolAdsPy/__polymer__.py b/MolAdsPy/__polymer__.py index 1807fa9..bf12f69 100644 --- a/MolAdsPy/__polymer__.py +++ b/MolAdsPy/__polymer__.py @@ -32,6 +32,7 @@ def __init__(self,label,vaccuum=10.0,repetition_orientation=0,metric_method='min self._orientation = repetition_orientation self._old_orientation = repetition_orientation # x by standard + self._metric_method = metric_method self._dic_metric_method = None @@ -115,6 +116,7 @@ def __init__(self,label,atom_list,vaccuum=10.0,metric_method='min_max',repetitio ''' super().__init__() + self._metric_method = metric_method self._dic_metric_method = None self._orientation = repetition_orientation # x by standard @@ -471,14 +473,15 @@ def _calculate_polymer_rotation_axis_center(self,metric_method='min_max'): ''' point = array([0.0,0.0,0.0]) - - if(self._metric_method == None): - self._metric_method = { - 'max_min':lambda: self._anchors["middle_point"], + + if(self._dic_metric_method == None): + + self._dic_metric_method = { + 'min_max':lambda: self._anchors["middle_point"], 'mass_center': lambda: self._anchors["com"], 'geometric_center': lambda: self._anchors["geometric_center"] } - point = self._metric_method[metric_method]() + point = self._dic_metric_method[metric_method]() point[self._orientation] = 0.0 self._anchors['polymer_axis'] = point diff --git a/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc b/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc index 5bc07118a3cfce808a9698201354b5e4db9f04bd..6334476b34041d82a0648269ff2ea5537aec3ff1 100644 GIT binary patch delta 376 zcmW;GJ4nKD5C?F-{(AiR^Z%=by`Ts)AsY(vK^mlKsY8K7MD(Di7!(oK5;WNw2ptg) zLD13^#nBpugbhwojZr~EK}!)d1oq2=yZgW$+!Y9Uf*#U!)gYtb|4mF?=-;&vER<3e zJp7>DROtyh+wA(^s8fx6S~nzc!0*;C;EW#|(?E_Fnom>|x!Udq%IxpV0y^J0Rs~u) z=(N?KpBH=m0_%L#_X^z7t~-w_j(Va3Pn7A;;+dSjCCdv8hE!T!a*C8)HahmTqnmO* zuem5ko0k7C%qF8MxY|Dfyz$I{SD;KZm@yiR+!^oyKRgxO2W<2)G>0IKg_0Pi%g`EP z)DhmoC>@5Ah*LQ{i*Z?-Xlpov$%;x+Gg1xIGZMpmMSD`q6}?NXkSnr-H9C)MV?)*k t4n(KnaMZ)nYmuq6DD@`I>e5V_S#4FlN?b9iZJJqeD(!R~Yoz;}gM+eqx6gXfDNO+~pSQc-jI@XQv&}g>P;*%<^)Fr~Zp+qc6$Bu5O zRB+f^ilR;_l_f3BTD_LxTm(LOY1}U1k1~@PZ5iA%WdlmQ=sE(-^yLm=f@VBXxGC?6 z!$)TC4rYkFQOwe#&qT^}5c5?fg%+xM5Ly;$r(vHTt5qEeg@slTA&Y+>G0OS(kl?|< W78?3np;#0sBXk-xp^Gnq&G-kECT&vy diff --git a/pla1.align_1.1.degree_120.xyz b/pla1.align_1.1.degree_120.xyz new file mode 100644 index 0000000..6f1a7a3 --- /dev/null +++ b/pla1.align_1.1.degree_120.xyz @@ -0,0 +1,20 @@ +18 +Lattice="6.690544 0.000000 0.000000 0.000000 25.214265 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 +C -0.039729 -0.829950 -0.178874 +C 1.168915 -0.024913 0.389290 +O 2.307747 -0.261237 -0.327228 +C 0.059903 -2.287175 0.265356 +H -0.051334 -0.767094 -1.277187 +O 1.115352 0.687914 1.378973 +H 0.996232 -2.723579 -0.110862 +H 0.047341 -2.351858 1.363218 +H -0.783038 -2.857721 -0.146408 +C 3.560278 0.328871 0.180453 +C 4.768588 -0.475619 -0.388289 +O 5.907506 -0.239683 0.328586 +C 3.658652 1.785472 -0.264788 +H 3.549853 0.268642 1.279055 +O 4.715056 -1.185089 -1.380292 +H 4.594046 2.224202 0.110327 +H 2.816213 2.356544 0.146576 +H 3.644843 1.850758 -1.362379 diff --git a/pla1.align_1.1.degree_180.xyz b/pla1.align_1.1.degree_180.xyz new file mode 100644 index 0000000..fcf6b56 --- /dev/null +++ b/pla1.align_1.1.degree_180.xyz @@ -0,0 +1,20 @@ +18 +Lattice="6.690544 0.000000 0.000000 0.000000 25.214265 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 +C -0.039729 0.328773 0.177555 +C 1.168915 -0.476264 -0.390609 +O 2.307747 -0.239940 0.325909 +C 0.059903 1.785998 -0.266675 +H -0.051334 0.265917 1.275868 +O 1.115352 -1.189091 -1.380292 +H 0.996232 2.222402 0.109543 +H 0.047341 1.850681 -1.364537 +H -0.783038 2.356544 0.145089 +C 3.560278 -0.830048 -0.181772 +C 4.768588 -0.025558 0.386970 +O 5.907506 -0.261494 -0.329905 +C 3.658652 -2.286649 0.263469 +H 3.549853 -0.769819 -1.280374 +O 4.715056 0.683912 1.378973 +H 4.594046 -2.725379 -0.111646 +H 2.816213 -2.857721 -0.147895 +H 3.644843 -2.351935 1.361060 diff --git a/pla1.align_1.1.degree_240.xyz b/pla1.align_1.1.degree_240.xyz new file mode 100644 index 0000000..b9d705f --- /dev/null +++ b/pla1.align_1.1.degree_240.xyz @@ -0,0 +1,20 @@ +18 +Lattice="6.690544 0.000000 0.000000 0.000000 23.326095 0.000000 0.000000 0.000000 25.002371" Properties=species:S:1:pos:R:3 +C -0.039729 -0.694608 0.411975 +C 1.168915 0.199955 -0.001125 +O 2.307747 -0.538730 -0.154722 +C 0.059903 -1.038506 1.896084 +H -0.051334 -1.614347 -0.191616 +O 1.115352 1.413459 -0.123610 +H 0.996232 -1.582522 2.085912 +H 0.047341 -0.120071 2.501032 +H -0.783038 -1.680377 2.184310 +C 3.560278 0.195989 -0.411930 +C 4.768588 -0.698801 0.000408 +O 5.907506 0.039999 0.154519 +C 3.658652 0.538699 -1.896004 +H 3.549853 1.117292 0.189531 +O 4.715056 -1.912636 0.118826 +H 4.594046 1.082923 -2.088397 +H 2.816213 1.180487 -2.184884 +H 3.644843 -0.379199 -2.501338 diff --git a/pla1.align_1.1.degree_300.xyz b/pla1.align_1.1.degree_300.xyz new file mode 100644 index 0000000..f8a1d1e --- /dev/null +++ b/pla1.align_1.1.degree_300.xyz @@ -0,0 +1,20 @@ +18 +Lattice="6.690544 0.000000 0.000000 0.000000 25.214265 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 +C -0.039729 -0.829012 -0.179487 +C 1.168915 -0.023975 0.388677 +O 2.307747 -0.260299 -0.327841 +C 0.059903 -2.286237 0.264743 +H -0.051334 -0.766156 -1.277800 +O 1.115352 0.688852 1.378360 +H 0.996232 -2.722641 -0.111475 +H 0.047341 -2.350920 1.362605 +H -0.783038 -2.856783 -0.147021 +C 3.560278 0.329809 0.179840 +C 4.768588 -0.474681 -0.388902 +O 5.907506 -0.238745 0.327973 +C 3.658652 1.786410 -0.265401 +H 3.549853 0.269580 1.278442 +O 4.715056 -1.184151 -1.380905 +H 4.594046 2.225140 0.109714 +H 2.816213 2.357482 0.145963 +H 3.644843 1.851696 -1.362992 diff --git a/pla1.align_1.1.degree_360.xyz b/pla1.align_1.1.degree_360.xyz new file mode 100644 index 0000000..f8a1d1e --- /dev/null +++ b/pla1.align_1.1.degree_360.xyz @@ -0,0 +1,20 @@ +18 +Lattice="6.690544 0.000000 0.000000 0.000000 25.214265 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 +C -0.039729 -0.829012 -0.179487 +C 1.168915 -0.023975 0.388677 +O 2.307747 -0.260299 -0.327841 +C 0.059903 -2.286237 0.264743 +H -0.051334 -0.766156 -1.277800 +O 1.115352 0.688852 1.378360 +H 0.996232 -2.722641 -0.111475 +H 0.047341 -2.350920 1.362605 +H -0.783038 -2.856783 -0.147021 +C 3.560278 0.329809 0.179840 +C 4.768588 -0.474681 -0.388902 +O 5.907506 -0.238745 0.327973 +C 3.658652 1.786410 -0.265401 +H 3.549853 0.269580 1.278442 +O 4.715056 -1.184151 -1.380905 +H 4.594046 2.225140 0.109714 +H 2.816213 2.357482 0.145963 +H 3.644843 1.851696 -1.362992 diff --git a/pla1.align_1.1.degree_60.xyz b/pla1.align_1.1.degree_60.xyz new file mode 100644 index 0000000..56a1084 --- /dev/null +++ b/pla1.align_1.1.degree_60.xyz @@ -0,0 +1,20 @@ +18 +Lattice="6.690544 0.000000 0.000000 0.000000 23.326095 0.000000 0.000000 0.000000 25.002371" Properties=species:S:1:pos:R:3 +C -0.039729 0.194493 -0.411668 +C 1.168915 -0.700070 0.001432 +O 2.307747 0.038614 0.155029 +C 0.059903 0.538391 -1.895777 +H -0.051334 1.114231 0.191923 +O 1.115352 -1.913575 0.123917 +H 0.996232 1.082407 -2.085605 +H 0.047341 -0.380044 -2.500725 +H -0.783038 1.180262 -2.184002 +C 3.560278 -0.696104 0.412237 +C 4.768588 0.198686 -0.000101 +O 5.907506 -0.540114 -0.154212 +C 3.658652 -1.038815 1.896311 +H 3.549853 -1.617407 -0.189224 +O 4.715056 1.412521 -0.118518 +H 4.594046 -1.583039 2.088705 +H 2.816213 -1.680602 2.185192 +H 3.644843 -0.120916 2.501646 diff --git a/pla1.align_1.2.degree_120.xyz b/pla1.align_1.2.degree_120.xyz new file mode 100644 index 0000000..edb75c4 --- /dev/null +++ b/pla1.align_1.2.degree_120.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.214265 0.000000 0.000000 0.000000 6.690544 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 +C -0.330774 -0.039729 0.178568 +C 0.474263 1.168915 -0.389596 +O 0.237939 2.307747 0.326922 +C -1.787999 0.059903 -0.265662 +H -0.267918 -0.051334 1.276881 +O 1.187090 1.115352 -1.379279 +H -2.224403 0.996232 0.110556 +H -1.852682 0.047341 -1.363524 +H -2.358545 -0.783038 0.146102 +C 0.828047 3.560278 -0.180759 +C 0.023557 4.768588 0.387983 +O 0.259493 5.907506 -0.328892 +C 2.284648 3.658652 0.264482 +H 0.767818 3.549853 -1.279361 +O -0.685913 4.715056 1.379986 +H 2.723378 4.594046 -0.110633 +H 2.855720 2.816213 -0.146882 +H 2.349934 3.644843 1.362073 diff --git a/pla1.align_1.2.degree_180.xyz b/pla1.align_1.2.degree_180.xyz new file mode 100644 index 0000000..fa6c854 --- /dev/null +++ b/pla1.align_1.2.degree_180.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.214265 0.000000 0.000000 0.000000 6.690544 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 +C 0.827949 -0.039729 -0.177861 +C 0.022912 1.168915 0.390303 +O 0.259236 2.307747 -0.326215 +C 2.285174 0.059903 0.266369 +H 0.765093 -0.051334 -1.276174 +O -0.689915 1.115352 1.379986 +H 2.721578 0.996232 -0.109849 +H 2.349857 0.047341 1.364231 +H 2.855720 -0.783038 -0.145395 +C -0.330872 3.560278 0.181466 +C 0.473618 4.768588 -0.387276 +O 0.237682 5.907506 0.329599 +C -1.787473 3.658652 -0.263775 +H -0.270643 3.549853 1.280068 +O 1.183088 4.715056 -1.379279 +H -2.226203 4.594046 0.111340 +H -2.358545 2.816213 0.147589 +H -1.852759 3.644843 -1.361366 diff --git a/pla1.align_1.2.degree_240.xyz b/pla1.align_1.2.degree_240.xyz new file mode 100644 index 0000000..57a3440 --- /dev/null +++ b/pla1.align_1.2.degree_240.xyz @@ -0,0 +1,20 @@ +18 +Lattice="23.326095 0.000000 0.000000 0.000000 6.690544 0.000000 0.000000 0.000000 25.002371" Properties=species:S:1:pos:R:3 +C -0.195431 -0.039729 -0.412281 +C 0.699132 1.168915 0.000819 +O -0.039553 2.307747 0.154415 +C -0.539329 0.059903 -1.896390 +H -1.115170 -0.051334 0.191310 +O 1.912636 1.115352 0.123304 +H -1.083346 0.996232 -2.086218 +H 0.379106 0.047341 -2.501338 +H -1.181200 -0.783038 -2.184616 +C 0.695166 3.560278 0.411624 +C -0.199624 4.768588 -0.000714 +O 0.539176 5.907506 -0.154825 +C 1.037876 3.658652 1.895697 +H 1.616468 3.549853 -0.189837 +O -1.413459 4.715056 -0.119132 +H 1.582100 4.594046 2.088091 +H 1.679664 2.816213 2.184578 +H 0.119977 3.644843 2.501032 diff --git a/pla1.align_1.2.degree_300.xyz b/pla1.align_1.2.degree_300.xyz new file mode 100644 index 0000000..123500b --- /dev/null +++ b/pla1.align_1.2.degree_300.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.214265 0.000000 0.000000 0.000000 6.690544 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 +C -0.329835 -0.039729 0.179181 +C 0.475202 1.168915 -0.388983 +O 0.238878 2.307747 0.327535 +C -1.787060 0.059903 -0.265049 +H -0.266979 -0.051334 1.277494 +O 1.188029 1.115352 -1.378666 +H -2.223464 0.996232 0.111169 +H -1.851743 0.047341 -1.362911 +H -2.357606 -0.783038 0.146715 +C 0.828986 3.560278 -0.180146 +C 0.024496 4.768588 0.388596 +O 0.260432 5.907506 -0.328279 +C 2.285587 3.658652 0.265095 +H 0.768757 3.549853 -1.278748 +O -0.684974 4.715056 1.380599 +H 2.724317 4.594046 -0.110020 +H 2.856659 2.816213 -0.146269 +H 2.350873 3.644843 1.362686 diff --git a/pla1.align_1.2.degree_360.xyz b/pla1.align_1.2.degree_360.xyz new file mode 100644 index 0000000..123500b --- /dev/null +++ b/pla1.align_1.2.degree_360.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.214265 0.000000 0.000000 0.000000 6.690544 0.000000 0.000000 0.000000 22.759265" Properties=species:S:1:pos:R:3 +C -0.329835 -0.039729 0.179181 +C 0.475202 1.168915 -0.388983 +O 0.238878 2.307747 0.327535 +C -1.787060 0.059903 -0.265049 +H -0.266979 -0.051334 1.277494 +O 1.188029 1.115352 -1.378666 +H -2.223464 0.996232 0.111169 +H -1.851743 0.047341 -1.362911 +H -2.357606 -0.783038 0.146715 +C 0.828986 3.560278 -0.180146 +C 0.024496 4.768588 0.388596 +O 0.260432 5.907506 -0.328279 +C 2.285587 3.658652 0.265095 +H 0.768757 3.549853 -1.278748 +O -0.684974 4.715056 1.380599 +H 2.724317 4.594046 -0.110020 +H 2.856659 2.816213 -0.146269 +H 2.350873 3.644843 1.362686 diff --git a/pla1.align_1.2.degree_60.xyz b/pla1.align_1.2.degree_60.xyz new file mode 100644 index 0000000..4ffb390 --- /dev/null +++ b/pla1.align_1.2.degree_60.xyz @@ -0,0 +1,20 @@ +18 +Lattice="23.326095 0.000000 0.000000 0.000000 6.690544 0.000000 0.000000 0.000000 25.002371" Properties=species:S:1:pos:R:3 +C 0.693669 -0.039729 0.411362 +C -0.200894 1.168915 -0.001739 +O 0.537791 2.307747 -0.155335 +C 1.037567 0.059903 1.895471 +H 1.613408 -0.051334 -0.192229 +O -1.414398 1.115352 -0.124223 +H 1.581584 0.996232 2.085299 +H 0.119132 0.047341 2.500419 +H 1.679438 -0.783038 2.183696 +C -0.196927 3.560278 -0.412543 +C 0.697863 4.768588 -0.000205 +O -0.040937 5.907506 0.153906 +C -0.539638 3.658652 -1.896617 +H -1.118230 3.549853 0.188918 +O 1.911697 4.715056 0.118212 +H -1.083862 4.594046 -2.089011 +H -1.181426 2.816213 -2.185498 +H 0.378261 3.644843 -2.501952 diff --git a/pla1.align_1.3.degree_120.xyz b/pla1.align_1.3.degree_120.xyz new file mode 100644 index 0000000..0f38783 --- /dev/null +++ b/pla1.align_1.3.degree_120.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.214265 0.000000 0.000000 0.000000 22.759265 0.000000 0.000000 0.000000 6.690544" Properties=species:S:1:pos:R:3 +C 0.829950 0.178874 -0.039729 +C 0.024913 -0.389290 1.168915 +O 0.261237 0.327228 2.307747 +C 2.287175 -0.265356 0.059903 +H 0.767094 1.277187 -0.051334 +O -0.687914 -1.378973 1.115352 +H 2.723579 0.110862 0.996232 +H 2.351858 -1.363218 0.047341 +H 2.857721 0.146408 -0.783038 +C -0.328871 -0.180453 3.560278 +C 0.475619 0.388289 4.768588 +O 0.239683 -0.328586 5.907506 +C -1.785472 0.264788 3.658652 +H -0.268642 -1.279055 3.549853 +O 1.185089 1.380292 4.715056 +H -2.224202 -0.110327 4.594046 +H -2.356544 -0.146576 2.816213 +H -1.850758 1.362379 3.644843 diff --git a/pla1.align_1.3.degree_180.xyz b/pla1.align_1.3.degree_180.xyz new file mode 100644 index 0000000..89894a9 --- /dev/null +++ b/pla1.align_1.3.degree_180.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.214265 0.000000 0.000000 0.000000 22.759265 0.000000 0.000000 0.000000 6.690544" Properties=species:S:1:pos:R:3 +C -0.328773 -0.177555 -0.039729 +C 0.476264 0.390609 1.168915 +O 0.239940 -0.325909 2.307747 +C -1.785998 0.266675 0.059903 +H -0.265917 -1.275868 -0.051334 +O 1.189091 1.380292 1.115352 +H -2.222402 -0.109543 0.996232 +H -1.850681 1.364537 0.047341 +H -2.356544 -0.145089 -0.783038 +C 0.830048 0.181772 3.560278 +C 0.025558 -0.386970 4.768588 +O 0.261494 0.329905 5.907506 +C 2.286649 -0.263469 3.658652 +H 0.769819 1.280374 3.549853 +O -0.683912 -1.378973 4.715056 +H 2.725379 0.111646 4.594046 +H 2.857721 0.147895 2.816213 +H 2.351935 -1.361060 3.644843 diff --git a/pla1.align_1.3.degree_240.xyz b/pla1.align_1.3.degree_240.xyz new file mode 100644 index 0000000..e45e327 --- /dev/null +++ b/pla1.align_1.3.degree_240.xyz @@ -0,0 +1,20 @@ +18 +Lattice="23.326095 0.000000 0.000000 0.000000 25.002371 0.000000 0.000000 0.000000 6.690544" Properties=species:S:1:pos:R:3 +C 0.694608 -0.411975 -0.039729 +C -0.199955 0.001125 1.168915 +O 0.538730 0.154722 2.307747 +C 1.038506 -1.896084 0.059903 +H 1.614347 0.191616 -0.051334 +O -1.413459 0.123610 1.115352 +H 1.582522 -2.085912 0.996232 +H 0.120071 -2.501032 0.047341 +H 1.680377 -2.184310 -0.783038 +C -0.195989 0.411930 3.560278 +C 0.698801 -0.000408 4.768588 +O -0.039999 -0.154519 5.907506 +C -0.538699 1.896004 3.658652 +H -1.117292 -0.189531 3.549853 +O 1.912636 -0.118826 4.715056 +H -1.082923 2.088397 4.594046 +H -1.180487 2.184884 2.816213 +H 0.379199 2.501338 3.644843 diff --git a/pla1.align_1.3.degree_300.xyz b/pla1.align_1.3.degree_300.xyz new file mode 100644 index 0000000..e037386 --- /dev/null +++ b/pla1.align_1.3.degree_300.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.214265 0.000000 0.000000 0.000000 22.759265 0.000000 0.000000 0.000000 6.690544" Properties=species:S:1:pos:R:3 +C 0.829012 0.179487 -0.039729 +C 0.023975 -0.388677 1.168915 +O 0.260299 0.327841 2.307747 +C 2.286237 -0.264743 0.059903 +H 0.766156 1.277800 -0.051334 +O -0.688852 -1.378360 1.115352 +H 2.722641 0.111475 0.996232 +H 2.350920 -1.362605 0.047341 +H 2.856783 0.147021 -0.783038 +C -0.329809 -0.179840 3.560278 +C 0.474681 0.388902 4.768588 +O 0.238745 -0.327973 5.907506 +C -1.786410 0.265401 3.658652 +H -0.269580 -1.278442 3.549853 +O 1.184151 1.380905 4.715056 +H -2.225140 -0.109714 4.594046 +H -2.357482 -0.145963 2.816213 +H -1.851696 1.362992 3.644843 diff --git a/pla1.align_1.3.degree_360.xyz b/pla1.align_1.3.degree_360.xyz new file mode 100644 index 0000000..e037386 --- /dev/null +++ b/pla1.align_1.3.degree_360.xyz @@ -0,0 +1,20 @@ +18 +Lattice="25.214265 0.000000 0.000000 0.000000 22.759265 0.000000 0.000000 0.000000 6.690544" Properties=species:S:1:pos:R:3 +C 0.829012 0.179487 -0.039729 +C 0.023975 -0.388677 1.168915 +O 0.260299 0.327841 2.307747 +C 2.286237 -0.264743 0.059903 +H 0.766156 1.277800 -0.051334 +O -0.688852 -1.378360 1.115352 +H 2.722641 0.111475 0.996232 +H 2.350920 -1.362605 0.047341 +H 2.856783 0.147021 -0.783038 +C -0.329809 -0.179840 3.560278 +C 0.474681 0.388902 4.768588 +O 0.238745 -0.327973 5.907506 +C -1.786410 0.265401 3.658652 +H -0.269580 -1.278442 3.549853 +O 1.184151 1.380905 4.715056 +H -2.225140 -0.109714 4.594046 +H -2.357482 -0.145963 2.816213 +H -1.851696 1.362992 3.644843 diff --git a/pla1.align_1.3.degree_60.xyz b/pla1.align_1.3.degree_60.xyz new file mode 100644 index 0000000..f75c3b7 --- /dev/null +++ b/pla1.align_1.3.degree_60.xyz @@ -0,0 +1,20 @@ +18 +Lattice="23.326095 0.000000 0.000000 0.000000 25.002371 0.000000 0.000000 0.000000 6.690544" Properties=species:S:1:pos:R:3 +C -0.194493 0.411668 -0.039729 +C 0.700070 -0.001432 1.168915 +O -0.038614 -0.155029 2.307747 +C -0.538391 1.895777 0.059903 +H -1.114231 -0.191923 -0.051334 +O 1.913575 -0.123917 1.115352 +H -1.082407 2.085605 0.996232 +H 0.380044 2.500725 0.047341 +H -1.180262 2.184002 -0.783038 +C 0.696104 -0.412237 3.560278 +C -0.198686 0.000101 4.768588 +O 0.540114 0.154212 5.907506 +C 1.038815 -1.896311 3.658652 +H 1.617407 0.189224 3.549853 +O -1.412521 0.118518 4.715056 +H 1.583039 -2.088705 4.594046 +H 1.680602 -2.185192 2.816213 +H 0.120916 -2.501646 3.644843 diff --git a/tests/test_polymer.py b/tests/test_polymer.py index a36dcf3..fdb9da3 100644 --- a/tests/test_polymer.py +++ b/tests/test_polymer.py @@ -7,6 +7,7 @@ from core import Atom from core import Polymer from numpy import array +import numpy as np import unittest import os @@ -60,7 +61,7 @@ def test_align(self): pol_xz.align('z') pol_xz.write_xyz(filename + ".align_xz.xyz") ''' - def test_rotate_axis(self): + def test_align_axis(self): filename = "pla1" filepath = os.path.join(path,filename + ".xyz") pol=Polymer("pla",filepath,vaccuum=20.0) @@ -82,6 +83,34 @@ def test_rotate_axis(self): self.assertEqual(pol1._orientation,0,msg="Wrong orientation when aligning to x.") pol1.write_xyz(filename+".align_1.4.xyz") + def test_rotate_axis(self): + + # This test will rotate 60 degrees on each align 5 times + filename = "pla1" + filepath = os.path.join(path,filename + ".xyz") + pol=Polymer("pla",filepath,vaccuum=20.0) + pol1 = pol.copy() + + degrees = np.arange(60,361,60) + print(degrees) + + pol1.align('x') + for degree in degrees: + pol1.rotate(degree) + pol1.write_xyz(filename+".align_1.1.degree_" + str(degree) + ".xyz") + + pol1.align('y') + for degree in degrees: + pol1.rotate(degree) + pol1.write_xyz(filename+".align_1.2.degree_" + str(degree) + ".xyz") + + pol1.align('z') + for degree in degrees: + pol1.rotate(degree) + pol1.write_xyz(filename+".align_1.3.degree_" + str(degree) + ".xyz") + + + if __name__ == '__main__': From 19f906c3f5444f60e476758c5c6091c54194c360 Mon Sep 17 00:00:00 2001 From: pbriquet Date: Thu, 4 Apr 2024 16:52:30 -0300 Subject: [PATCH 09/10] Polymer Adsorption Tests Implementatino --- MolAdsPy/__adsorption__.py | 274 +++++++++++---- MolAdsPy/__atomcollection__.py | 20 +- MolAdsPy/__hybrid__.py | 3 +- MolAdsPy/__molecule__.py | 7 +- MolAdsPy/__polymer__.py | 30 +- .../__pycache__/__adsorption__.cpython-37.pyc | Bin 18897 -> 21430 bytes .../__atomcollection__.cpython-37.pyc | Bin 27517 -> 27693 bytes .../__pycache__/__hybrid__.cpython-37.pyc | Bin 7937 -> 7986 bytes .../__pycache__/__molecule__.cpython-37.pyc | Bin 15107 -> 15136 bytes .../__pycache__/__polymer__.cpython-37.pyc | Bin 18883 -> 19124 bytes MolAdsPy/__pycache__/__slab__.cpython-37.pyc | Bin 12718 -> 12747 bytes MolAdsPy/__slab__.py | 7 +- adsorbed.1.xyz | 42 ++- move_x_to_x.xyz | 206 +++++++++++ move_x_to_y.xyz | 206 +++++++++++ move_x_to_z_away.xyz | 206 +++++++++++ move_y_to_x.xyz | 80 +++++ move_y_to_y.xyz | 80 +++++ move_y_to_z_away.xyz | 80 +++++ move_z_to_x.xyz | 62 ++++ move_z_to_y.xyz | 62 ++++ move_z_to_z_away.xyz | 62 ++++ pla_rotate_in_graphene.align_x.degree_120.xyz | 206 +++++++++++ pla_rotate_in_graphene.align_x.degree_180.xyz | 206 +++++++++++ pla_rotate_in_graphene.align_x.degree_240.xyz | 206 +++++++++++ pla_rotate_in_graphene.align_x.degree_300.xyz | 206 +++++++++++ pla_rotate_in_graphene.align_x.degree_360.xyz | 206 +++++++++++ pla_rotate_in_graphene.align_x.degree_60.xyz | 206 +++++++++++ pla_rotate_in_graphene.align_y.degree_120.xyz | 80 +++++ pla_rotate_in_graphene.align_y.degree_180.xyz | 80 +++++ pla_rotate_in_graphene.align_y.degree_240.xyz | 80 +++++ pla_rotate_in_graphene.align_y.degree_300.xyz | 80 +++++ pla_rotate_in_graphene.align_y.degree_360.xyz | 80 +++++ pla_rotate_in_graphene.align_y.degree_60.xyz | 80 +++++ pla_rotate_in_graphene.align_z.degree_120.xyz | 62 ++++ pla_rotate_in_graphene.align_z.degree_180.xyz | 62 ++++ pla_rotate_in_graphene.align_z.degree_240.xyz | 62 ++++ pla_rotate_in_graphene.align_z.degree_300.xyz | 62 ++++ pla_rotate_in_graphene.align_z.degree_360.xyz | 62 ++++ pla_rotate_in_graphene.align_z.degree_60.xyz | 62 ++++ polymer_adsorbed.1.xyz | 206 +++++++++++ .../align_test.x.to_x.xyz | 206 +++++++++++ .../align_test.x.to_y.xyz | 80 +++++ .../align_test.x.to_z.xyz | 62 ++++ .../align_test.y.to_x.xyz | 206 +++++++++++ .../align_test.y.to_y.xyz | 80 +++++ .../align_test.y.to_z.xyz | 62 ++++ .../align_test.z.to_x.xyz | 206 +++++++++++ .../align_test.z.to_y.xyz | 80 +++++ .../align_test.z.to_z.xyz | 62 ++++ tests/test_adsorption.py | 119 ++++--- tests/test_adsorption_polymer.py | 327 ++++++++++++++++++ 52 files changed, 5033 insertions(+), 178 deletions(-) create mode 100644 move_x_to_x.xyz create mode 100644 move_x_to_y.xyz create mode 100644 move_x_to_z_away.xyz create mode 100644 move_y_to_x.xyz create mode 100644 move_y_to_y.xyz create mode 100644 move_y_to_z_away.xyz create mode 100644 move_z_to_x.xyz create mode 100644 move_z_to_y.xyz create mode 100644 move_z_to_z_away.xyz create mode 100644 pla_rotate_in_graphene.align_x.degree_120.xyz create mode 100644 pla_rotate_in_graphene.align_x.degree_180.xyz create mode 100644 pla_rotate_in_graphene.align_x.degree_240.xyz create mode 100644 pla_rotate_in_graphene.align_x.degree_300.xyz create mode 100644 pla_rotate_in_graphene.align_x.degree_360.xyz create mode 100644 pla_rotate_in_graphene.align_x.degree_60.xyz create mode 100644 pla_rotate_in_graphene.align_y.degree_120.xyz create mode 100644 pla_rotate_in_graphene.align_y.degree_180.xyz create mode 100644 pla_rotate_in_graphene.align_y.degree_240.xyz create mode 100644 pla_rotate_in_graphene.align_y.degree_300.xyz create mode 100644 pla_rotate_in_graphene.align_y.degree_360.xyz create mode 100644 pla_rotate_in_graphene.align_y.degree_60.xyz create mode 100644 pla_rotate_in_graphene.align_z.degree_120.xyz create mode 100644 pla_rotate_in_graphene.align_z.degree_180.xyz create mode 100644 pla_rotate_in_graphene.align_z.degree_240.xyz create mode 100644 pla_rotate_in_graphene.align_z.degree_300.xyz create mode 100644 pla_rotate_in_graphene.align_z.degree_360.xyz create mode 100644 pla_rotate_in_graphene.align_z.degree_60.xyz create mode 100644 polymer_adsorbed.1.xyz create mode 100644 tests/TestAdorptionPolymerResults/align_test.x.to_x.xyz create mode 100644 tests/TestAdorptionPolymerResults/align_test.x.to_y.xyz create mode 100644 tests/TestAdorptionPolymerResults/align_test.x.to_z.xyz create mode 100644 tests/TestAdorptionPolymerResults/align_test.y.to_x.xyz create mode 100644 tests/TestAdorptionPolymerResults/align_test.y.to_y.xyz create mode 100644 tests/TestAdorptionPolymerResults/align_test.y.to_z.xyz create mode 100644 tests/TestAdorptionPolymerResults/align_test.z.to_x.xyz create mode 100644 tests/TestAdorptionPolymerResults/align_test.z.to_y.xyz create mode 100644 tests/TestAdorptionPolymerResults/align_test.z.to_z.xyz create mode 100644 tests/test_adsorption_polymer.py diff --git a/MolAdsPy/__adsorption__.py b/MolAdsPy/__adsorption__.py index 1997db1..87955e8 100644 --- a/MolAdsPy/__adsorption__.py +++ b/MolAdsPy/__adsorption__.py @@ -6,15 +6,17 @@ from __exception__ import BasicException from numpy import array,dot,max,min,ndarray from multipledispatch import dispatch +from inspect import signature class AdsorptionError(BasicException): pass class Adsorption(Hybrid): __slots__=["_substrate","_minsep","_vaccuum","_side","_top","_bottom"] - - def __init__(self,substrate,minsep=1.0,vaccuum=10.0): - ''' + __MAXREPMISMATCH__ = 1000 + __MISMATCHTOLSTD__ = 5.0 + def __init__(self,substrate,minsep=1.0,vaccuum=10.0,**kwargs): + r''' Object initialization. Parameters @@ -27,8 +29,9 @@ def __init__(self,substrate,minsep=1.0,vaccuum=10.0): Vaccuum separating the atom with the highest Z coordinate from the atom with the lowest Z coordinate in a periodic boundary conditions scheme. The default is 10.0 Angstroms. + ''' - super().__init__() + super().__init__(**kwargs) if isinstance(substrate,Slab): if substrate._belongs_to is not None: @@ -39,6 +42,8 @@ def __init__(self,substrate,minsep=1.0,vaccuum=10.0): self._latvec=self._components["substrate"]._latvec self._components["molecules@top"]=[] self._components["molecules@bottom"]=[] + self._components["polymers@top"]=[] + self._components["polymers@bottom"]=[] if isinstance(minsep,(int,float)) and minsep>0.0: self._minsep=minsep @@ -56,6 +61,7 @@ def __init__(self,substrate,minsep=1.0,vaccuum=10.0): self._update() + #region METHODS ADD AND REMOVE IMPLEMENTATIONS @dispatch(Molecule,str,n=int,m=int,anchor=str,vertsep=(int,float),side=str) def add_component(self,molecule,ads_site,n=0,m=0,anchor="com",vertsep=1.0, side="top"): @@ -117,68 +123,70 @@ def add_component(self,molecule,ads_site,n=0,m=0,anchor="com",vertsep=1.0, self._update() else: raise AdsorptionError("A valid adsorption site must be provided!") - - @dispatch(Polymer,str,n=int,m=int,anchor=str,vertsep=(int,float),side=str) - def add_component(self,molecule,ads_site,n=0,m=0,anchor="com",vertsep=1.0, side="top"): + + # TODO: Verify if Align if not "Z". Throw error if it is. + # TODO: Allow just one polymer. Make a separate dictionary. + # TODO: Verify _lacvec same for slab and polymer because of mismatch to make sense. x and y by default. + @dispatch(Polymer,anchor=str,vertsep=(int,float),side=str) + def add_component(self,polymer,anchor="com",vertsep=1.0, side="top", **kwargs): ''' - Adsorbs a molecule onto the substrate. + Adsorbs a polymer molecule onto the substrate. Parameters ---------- - molecule : Molecule object - Adsorbed molecule. - ads_site : string - Label of the adsorption site. - n : integer, optional - Number of translations applied to the position of the adsorption site - along the first lattice vector. The default is zero. - m : integer, optional - Number of translations applied to the position of the adsorption site - along the second lattice vector. The default is zero. - anchor : string, optional - Anchor point in the molecule that will be vertically aligned with - the adsorption site on the substrate. The default is "com", which - is the positon of the molecule's center of mass. + polymer : Polymer molecule object + Adsorbed polymer molecule. vertsep : float, optional - Nearest vertical distance separating the molecule from the + Nearest vertical distance separating the polymer molecule from the substrate. The default is 1.0 Angstrom. side : string, optional Side of the slab where the molecule will be adsorbed. It must be either "top" or "bottom" (self-explanatory). The default is "top". + **kwargs : See below + + Key arguments + ----------- + + skip_mismatch_adjust : boolean + False by standard. Just used when the user wants to skip this adjustment inside this function. + ''' - if molecule._belongs_to is not None: - raise AdsorptionError("The molecule already belongs to another structure!") + + # Get key arguments + skip_mismatch_adjust = kwargs.get("skip_mismatch_adjust",False) + + if polymer._orientation == 2: + raise AssertionError("The polymer molecule is perpendicular to slab!") + if polymer._belongs_to is not None: + raise AdsorptionError("The polymer already belongs to another structure!") elif self._components["substrate"] is None: raise AdsorptionError("No substrate has been defined!") - elif len(anchor)==0 or anchor not in molecule.anchors.keys(): - raise AdsorptionError("'anchor' must be a valid anchor point!") - elif n<0: - raise AdsorptionError("'n' must be an integer greater than or equal to zero!") - elif m<0: - raise AdsorptionError("'m' must be an integer greater than or equal to zero!") - if len(ads_site)>0 and ads_site in self._components["substrate"]._ads_sites: - sep=max([vertsep,self._minsep]) - - if side=="top": - dz=self._components["substrate"]._top+sep-molecule._minz - elif side=="bottom": - dz=self._components["substrate"]._bottom-sep-molecule._maxz - else: - raise AdsorptionError("'side' must be either 'top' or 'bottom'!") - - self._components["molecules@"+side].append(molecule) - - molecule._belongs_to=self - x0=self._components["substrate"]._ads_sites[ads_site]+\ - dot(self._a0*array([n,m]),self._latvec[:2,:2]) - x=array([x0[0],x0[1],molecule.anchors[anchor][2]+dz]) - - molecule.move_to(x,anchor) - self._update() + sep=max([vertsep,self._minsep]) + + if side=="top": + dz=self._components["substrate"]._top+sep-polymer._minz + elif side=="bottom": + dz=self._components["substrate"]._bottom-sep-polymer._maxz else: - raise AdsorptionError("A valid adsorption site must be provided!") - + raise AdsorptionError("'side' must be either 'top' or 'bottom'!") + + # This object just allow one polymer because of mismatch problems with the slab. + if(len(self._components["polymers@top"]) > 0 or len(self._components["polymers@bottom"]) > 0): + raise AdsorptionError("The adsorbed already has a polymer!") + + self._components["polymers@"+side].append(polymer) + + self._adjustMismatchPolymerSlab(polymer) + + polymer._belongs_to=self + #x0=self._components["substrate"]._ads_sites[ads_site]+\ + # dot(self._a0*array([n,m]),self._latvec[:2,:2]) + #x=array([x0[0],x0[1],polymer.anchors[anchor][2]+dz]) + + #polymer.move_to(x,anchor) + self._update() + @dispatch(Molecule,(ndarray,list,tuple),anchor=str,vertsep=(int,float),side=str) def add_component(self,molecule,pos,anchor="com",vertsep=1.0,side="top"): ''' @@ -233,16 +241,17 @@ def add_component(self,molecule,pos,anchor="com",vertsep=1.0,side="top"): else: raise AdsorptionError("'pos' must be provided as a list with two components!") - + # TODO: Implement @dispatch(Polymer,(ndarray,list,tuple),anchor=str,vertsep=(int,float),side=str) def add_component(self,polymer,pos,anchor="com",vertsep=1.0,side="top"): + # TODO: Allow just one polymer because of mismatch problem ''' Adsorbs a Polymer molecule onto the substrate. Parameters ---------- - molecule : Molecule object - Adsorbed molecule. + polymer : Polymer object + Adsorbed polymer. pos : Numpy array XY coordinates in the substrate above which the molecule will be placed. @@ -309,6 +318,7 @@ def remove_component(self,molecule): self._update() + # TODO: Implement @dispatch(Polymer) def remove_component(self,polymer): ''' @@ -324,7 +334,7 @@ def remove_component(self,polymer): elif polymer in self._components["molecules@bottom"]: self._components["molecules@bottom"].remove(polymer) else: - raise AdsorptionError("Molecule not found!") + raise AdsorptionError("Polymer not found!") polymer._belongs_to=None @@ -355,8 +365,76 @@ def remove_component(self,molid): self._update() + #endregion + + #region AUXILIARY FUNCTIONS FOR MISMATCH ADJUSTMENT + def _adjustMismatchPolymerSlab(self,polymer): + r''' + Adjust Resize of Slab and Polymer to adjust mismatch in defined tolerance + + Parameters + ---------- + polymer : Polymer object + Object of the polymer that will be adjusted over the slab + ''' + + # Resize necessary to minimize mismatch between polymer and slab + i,j = self._polymer_slab_match_box_length(polymer) + slab = self._components["substrate"] + resize_vector = [slab._n,slab._m,slab._l] + + resize_vector[polymer._orientation] = i + + if(self._verbose): + print("Slab will be resized by : " + str(resize_vector)) + + # Resizing objects + slab.resize(resize_vector[0],resize_vector[1]) + polymer.resize(j) + + def _polymer_slab_match_box_length(self,polymer,mismatch_tol_percent=__MISMATCHTOLSTD__,maxrep=__MAXREPMISMATCH__): + ''' + Returns the resize number i,j respective to Slab and Polymer necessary for mismatch to be under given tolerance (%) + + Parameters + ---------- + n : integer + Number of repetitions of the substrate's unit cell along the first lattice + vector. + m : integer + Number of repetitions of the substrate's unit cell along the second lattice + vector. + + Output + ----------- + i : Resize number for Slab + j : Resize number for Polymer + ''' + mismatch_tol = mismatch_tol_percent/100.0 # Parameter is given in percentage + + pol_ori = polymer._orientation + slab = self._components["substrate"] + a0_1 = slab._a0*slab._latvec[pol_ori][pol_ori] + a0_2 = polymer._a0*polymer._latvec[pol_ori][pol_ori] + if(self._verbose): + print("a0 polymer: " + str(a0_2)) + print("a0 slab: " + str(a0_1)) + print("latvec polymer: " + str(polymer._latvec)) + print("latvec slab: " + str(slab._latvec)) + + i = 1 + while(i < maxrep): + j = int(a0_1*i/a0_2) + mismatch = abs(j*a0_2 - i*a0_1)/(i*a0_1) + + if(mismatch <= mismatch_tol): + return int(i-1),int(j-1) + i+=1 + #endregion + + #region METHODS SET_SEPARATION @dispatch(Molecule,(int,float)) - def set_separation(self,molecule,sep): + def set_separation(self,molecule,sep,**kwargs): ''' Rigidly displaces the molecule along the direction perpendicular to the substrate, such that the separation between the top/bottom of the substrate @@ -368,9 +446,20 @@ def set_separation(self,molecule,sep): Adsorbed molecule. sep : float Nearest distance separating the molecule from the substrate. + **kwargs : See below + + Keywork Arguments + ---------- + sep_violation : boolean + The user gets the freedom to violate the set minsep using this flag + ''' - if sep0.0: polymer.displace(array([0.0,0.0,dz])) - self._update() + if(update): + self._update() @dispatch(int,(int,float)) def set_separation(self,molid,sep): @@ -429,8 +528,11 @@ def set_separation(self,molid,sep): sep : float Nearest distance separating the molecule from the substrate. ''' - if sep 0: + polymer = self.adsorbed_polymers[0] + if(polymer._orientation == 2): + tmp_axis = ['x','y','z'] + axis = tmp_axis[polymer._old_orientation] + polymer.align(axis,update_parent=False) + raise AdsorptionError("Cannot align polymer perpedicular to slab!") + self._a0=self._components["substrate"]._a0 self._m=self._components["substrate"]._m self._n=self._components["substrate"]._n self._maxm=self._components["substrate"]._maxm self._maxn=self._components["substrate"]._maxn - + for molecule in self.adsorbed_molecules: dz=0.0 - + + #self.set_separation(update=False) + if molecule in self._components["molecules@top"] and \ (molecule.minz-self._components["substrate"]._top)0.0: molecule.displace(array([0.0,0.0,dz])) + for polymer in self.adsorbed_polymers: + dz=0.0 + + #self.set_separation(update=False) + + if polymer in self._components["polymers@top"] and \ + (polymer.minz-self._components["substrate"]._top)0.0: + polymer.displace(array([0.0,0.0,dz])) valid_z=array([atom._x[2] for atom in self._atoms if atom._active]) self._top=max(valid_z,axis=0) @@ -508,6 +639,7 @@ def __str__(self): ''' return " ID: %d" % self._id + ''' Properties ---------- @@ -540,7 +672,11 @@ def substrate(self): def adsorbed_molecules(self): return tuple(self._components["molecules@top"]+ self._components["molecules@bottom"]) - + + @property + def adsorbed_polymers(self): + return tuple(self._components["polymers@top"]+ + self._components["polymers@bottom"]) @property def minimum_separation(self): return self._minsep diff --git a/MolAdsPy/__atomcollection__.py b/MolAdsPy/__atomcollection__.py index 8a2e319..f0d8d95 100644 --- a/MolAdsPy/__atomcollection__.py +++ b/MolAdsPy/__atomcollection__.py @@ -14,8 +14,9 @@ class AtomCollection(ABC): _instances=None # List of atom collection objects created so far __slots__=["_ucell","_atoms","_loc","_species","_a0","_latvec","_n","_m","_l", "_maxn","_maxm","_maxl","_id","_origin","_belongs_to","_label"] - - def __init__(self): + _verbose = 1 # Level of verbose during usage of the lib + + def __init__(self,**kwargs): ''' Object initialization. ''' @@ -33,6 +34,7 @@ def __init__(self): self._maxn=self._maxm=self._maxl=0 # Maximum number of translations for resizing purposes self._origin=array([0.0,0.0,0.0]) # Position with minimum values of X, Y, and Z coordinates of the structure. + self._verbose = kwargs.get("verbose",False) type(self)._append(self) @dispatch(int,loc=(tuple,list),update=bool) @@ -581,7 +583,8 @@ def resize(self,n,m,l): elif n==self._n and m==self._m and l==self._l: raise AtomCollectionError("The current structure size was not changed!") elif n>self._maxn or m>self._maxm and l>self._maxl: - print("WARNING: Atoms newly created will not be removed if the supercell is subsequently reduced!") + if(self._verbose): + print("WARNING: Atoms newly created will not be removed if the supercell is subsequently reduced!") for i in range(n+1): for j in range(m+1): @@ -698,6 +701,7 @@ def _read_xyz(self,file_name): % (len(self._atoms),file_name)) self._update() + f.close() def __getitem__(self,idx): ''' @@ -716,11 +720,13 @@ def __getitem__(self,idx): atom list. ''' maxidx=len(self._atoms) + if not isinstance(idx,int): + raise AtomCollectionError("Index is not int!") - if isinstance(idx,int) and idx>=-maxidx and idx=-maxidx and idx0: self._label=label @@ -122,7 +122,8 @@ def __init__(self,label,atom_list,vaccuum=10.0): if isinstance(atom,(Atom,int)): self.add_atom(atom,loc=(0,0,0),update=False) else: - print("WARNING! An element in the atom list must be either an Atom object or an atom ID!") + if(self.verbose): + print("WARNING! An element in the atom list must be either an Atom object or an atom ID!") else: raise MoleculeError("'atom_list' must be a non-empyt list!") diff --git a/MolAdsPy/__polymer__.py b/MolAdsPy/__polymer__.py index bf12f69..3d0b6c4 100644 --- a/MolAdsPy/__polymer__.py +++ b/MolAdsPy/__polymer__.py @@ -99,7 +99,7 @@ def __init__(self,label,file_name,file_type="XYZ",vaccuum=10.0,repetition_orient @dispatch(str,list,vaccuum=(int,float)) - def __init__(self,label,atom_list,vaccuum=10.0,metric_method='min_max',repetition_orientation=0): + def __init__(self,label,atom_list,vaccuum=10.0,metric_method='min_max',repetition_orientation=0,**kwargs): ''' Object initialization. @@ -115,7 +115,7 @@ def __init__(self,label,atom_list,vaccuum=10.0,metric_method='min_max',repetitio boundary conditions scheme. The default is 10.0 Angstroms. ''' - super().__init__() + super().__init__(**kwargs) self._metric_method = metric_method self._dic_metric_method = None @@ -304,12 +304,15 @@ def move_to(self,x,anchor="com"): if isinstance(x,ndarray) and x.shape[0]==3: disp=x.astype(float)-self._anchors[anchor] - - self.displace(disp) + allowed_move = array([0.0,0.0,0.0]) + for k,coord in enumerate(x): + if k != self._orientation: + allowed_move[k] = x[k] + self.displace(allowed_move) else: raise PolymerError("'x' must be an array with three components!") - def _rotate(self,theta,phi,psi,anchor="com"): + def _rotate(self,theta,phi,psi,anchor="com",**kwargs): ''' _rotate(theta,phi,psi,anchor) -> rotates the polymer around an anchor point. This method is private because it allows to rotate the polymer object with all degrees of freedom. @@ -361,9 +364,9 @@ def _rotate(self,theta,phi,psi,anchor="com"): self._anchors[key]=dot((self._anchors[key]-rotpoint), rotmatrix)+rotpoint - self._update() + self._update(**kwargs) - def align(self, axis): + def align(self, axis, **kwargs): """ Aligns the polymer along the specified axis. @@ -435,11 +438,8 @@ def align(self, axis): rotation_angles[right_angle] = angle_sign*90.0 phi, theta, psi = rotation_angles - self._rotate(theta,phi,psi,anchor="origin") - - self._update() + self._rotate(theta,phi,psi,anchor="origin",**kwargs) - # TODO: Permutate new align, change max and min of old axis by new one # Obtain polymer orientation from the maximum diff max - min. TODO: Reimplement @@ -501,12 +501,12 @@ def resize(self,n_axis): super().resize(n,m,l) - def _update(self): + def _update(self,**kwargs): ''' _update() -> simultaneously updates the polymer's center of mass and the values of its extremities. ''' - + update_parent = kwargs.get("update_parent",True) valid_coords=array([atom._x for atom in self.active_atoms]) atomic_mass=array([atom.atomic_mass for atom in self.active_atoms]) @@ -541,6 +541,10 @@ def _update(self): [0.0,1.0,0.0], [0.0,0.0,1.0]]) self._origin=array([0.0,0.0,0.0]) + + if(update_parent): + if(self._belongs_to != None): + self.belongs_to._update() def __str__(self): ''' diff --git a/MolAdsPy/__pycache__/__adsorption__.cpython-37.pyc b/MolAdsPy/__pycache__/__adsorption__.cpython-37.pyc index 870849457fff43850a17a44ebc287785c5b74372..a8d7d27afe9119996c45776f69a8d11a89dc6aec 100644 GIT binary patch literal 21430 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

;(7%P<5D8;3&Ru))l_)K`yY~8PSFc^bmx4$u zB!?;BQP);_MVVfr45HDJkRavkOI~2?yd%k`&I&5lPpAP5kQNqz(69*yn>>}w=u6@m zB+;)h2g4OUr@>?=Iin+aKW|bg8rg6-`lJ!bd+}$DhQ*ZzQxrzGZcU%Bd zZsV`=_@rr=3tAVpZv?l48GtXX_ shjEoWc_fX56253$Qsj%7ZW^$#a7KOa@p)R0?8k@E(0@lLW{qb47n_Aa#sB~S delta 4960 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 YgNy7ZbIZvyYERadlVuc`>?yYc059yNhX4Qo delta 669 zcmaKqKWGzC9LMjM++8kB6Kk8KHrKmUZ4-mG{wrFjRMfS!L%~6W^T@qIASTDVQ<{=R zU7UpQb5{p(P{g((4x)q5A!uFH;TFM79h@B8{QYW!;@}O;X2=P-)WW!WjxdC_k+sZuv#Z#A*iiXSaGx3E=8lT2z z@@m-fMU-${-xm$90+AYs`ZA8Fc7Bj#6jcWu`oMqz7^HU~hKuTZFmYTfgN5_jSKXv4 zX1-6WmHbJ%18$XR_DHz8m+5GS3628gW=6=dm zK$cmqpOI!9Ae=@m_i;z^drpI^_#@Zt?F+?h()B#Y4V#zS_&LATOLPiZ><*{kIp3f})m!*tv9FSv+MIp^O)83wGhE{rnenah&G> diff --git a/MolAdsPy/__pycache__/__molecule__.cpython-37.pyc b/MolAdsPy/__pycache__/__molecule__.cpython-37.pyc index 719c43a66d2ebbdeeed3999af148f41cc517f8b0..1f514509ed390f1203e355669ea80675edb56325 100644 GIT binary patch delta 1066 zcmZXT-Afcv6u{@qjJuor;g*_|;m1<=)h_Mm>aJyCnUxh{Ws(@%nxnhwI(lca4VHqo zhh7TmycYC9kc3D~2^Br~5cE*~0rM9Gk@OZp51lg+K@HsBJ@?%6aqm56N=pxyLWhFE za*4j|aA+!d_(kZ4(x%d~jE0|vd5vI6C20nxq@r>MK(gc_lwcBORT06MS_9qofVwQ# zs*Y;vb5l;)TxLR_6Ak3(cxJC;#I%XBw+TXatM|GZY$Lt9*#e>!*Ze174U66$>4HpBEhN3hR6f;(6vb;oT7iUJLd7q_D`b%&FiqgXhdnFK1AdGJ+PW!w| zx|lFb9sS`1v|?Yl1|oPqTrYdTE`(QQ(6G7Egq!yL$`$Zve1`ovRNVl*xR|J{2ns!K zEa~aY{H3fR9@zJ)=b$!5R(wb{u4Zg!93`yUJ8I_3A%?da>uLu`@xR$|(!RCV8zWHl zPk=$%*|fh$42T|LS4A|@c~q)02e86L)d zMm>YWimePU;{cXpDA(MoY{` zqn<7fdx}fs^9aMrSbCHFHrfF&Zhwmn%7I~yEjw~-pXkDYcpYR>kDFa1?B@Eqb^BYq zbF`5IYHOJUk0eN>+Bs^bkTb;OT z16=Fqfic{O?Zi+b43Drrk%y;vJ8>D7QR&RV3g$c0@B%*(UtzQ>4X^Pw@g068uH&g> zFQwRs)p`w)o6gO@$JOMXs=bs*G`dInGabRt$@cT^i@Q~D>#>{d-0JtS)X(6y6x?)z z`^zn|7-H!R<1B;kA;t-gZ$TIfy0ETdDb*YhI&Vxdrtw*-p8lT?sXfq!o2i#Dh)=pN F{sPly_D28! delta 1073 zcmZvb$xjnu6u|qY)5W13S&GIbu`UP&s#4q1R#1b23UL8U(7M!W2N*4#`pt-FFeY*_ z-pq?P4jeovam{#8VS2ye9ST@TeSZq-dk4=vu!i>L-7{z<9eJ|l~y-7DXg>f9CC)QZCuPceT|D~d4L zq3UY{#ZLMz%fV(kJIV-%2)?N5g9j93c+vF4)=6on>sTvZ3anXf1q;d)fa~n(Ay>(7 z$%U#ZxB`=|8P$Fs2)JP}E-W6v#_D(~!tv@EOBm}2hiI8$f~!W60^pbYQV6_~-;n~K zfC{yeeWUum1Z~(|XTp^Ir0y z<2^gMw4`L%AX{BFwQ~idY*<>!((^?#>n)$pixE@o{ICBm(mu7{tzHA6zasCZo6mM= ztpU;P?CKVcv{mGSZk8+VGunlJi`hd4-|PqLUP+L|%Z>4V=Y85qD^d(EBh6UF*v_b7 z_!t?+7DfkygGJ<@Nnt{CvaXju$|B#GF|Oq-L$Sk6pX6aDiQ^Jun;^r9`d6kZz6db5 zj;uGAw~R4UsC1}Exd{;`AyWG@p~o84tbEp89@Pn^E~p*R9&duZ`|x2ZZ{UG)J^M@F;?C>f>+wi_5lv}A4@Sv7o$Kk zB$42C2@V{MSZ5%+D74P63hKw zL+B%V=_M|t8bU3UMXYw}`L*ppPkQsH^R=B0IKANCKsc@6#!?r9hgI;z2_7z|!(uN> y2N?YfehG1yQ1O?AQPzZYL1bBXgmILB*V9cnpI!+Oe4lQBW~|CQg55ZmIq?JQQSAx< diff --git a/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc b/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc index 6334476b34041d82a0648269ff2ea5537aec3ff1..1a2868e0775772fb9c949cc15326822b7edb00b3 100644 GIT binary patch delta 2708 zcmZuzU2qfE6~1SGrIl8eY{x$_7}EqBIbdoRm;$bUgltS22qmO|V=9DJ7M6`=UoDR9 z-bGH7l4%ndlbfWIX{OkD$G`=~y(oj&lCcJk0pUea@R2{@Uq z=6-w5x%ZrV@A+H(LBdCGKrCh37Q^T6so3=IFMJsL9YDVJF&vKU458G(5y4Tui{P>< zE5bAr#!UbwG&vpG35Vr`-4Ane)$TZOXL(2{X?9_cXS%j9-I&`jtyC5MfndeBFdfqg zIpG^Bu*K_c!m+AoW$}9LkM_C>A^BWlmubvCpXG(JtR#9MR(m(`nFizXXDwauWbHRC z8vv(k7us%Et>44LB!Tzii?QRk2#zDv!}v|LI7F4zhEt`v72KnbG&61~r_*YDnsCrzzl)>%xm-(L14Dk1OoAzsy*-JL8zR@a zVS%n}W?ookdwal=KkiLdA}GbV2=k&yDY(jCi>qv;w(>F85{58EsGy3lutWskQDKW% zLG?q_fZ;HN*3P{6ayQZu4AnL-fniG&Z4qx{qM@pYcq%i}z8kuXvxNcSTWrGaW?@*kJF)RoDCe+GLbgMfk4t$WnCh$YGC4BNu zU$V0)h=}f9&b!&Vx^Q_0p*$1BXHt=?RTnz9Ld1>EN5A8vT z;5+>jBph%Q2b1<~)l*lZLKT3%(Bwb&?W|~cRKQfdOK-t43MMPd0Int-6E$={ov8qn zR)%^8rhkZjzHiMyuc%;QU=6#P2vwnpiBK~O=njmk2s>6Y!w4CJh*PR(c@dA?s5grU z1}r+QIuR#2148+!aueiR-~5aH44(U*f{;}C59D(H$N`dYstnE%3OM}d-WT`;+}ig? ze0SB25}zr|%%4me^3(oDTNZI)(hmHqWtV5ld=w>e$H4hs2ML}d$P;|cuX=WFrZB&V zrCHuB-x+wK_VK_!pp(u}k1hl$pCNnLbEu3?CbfEx-28Tr{Lg-SufMC|@5((gzC!SS zHcTqqtMwoFOtoIZ6@SCs_>W}Yp~>CE{@rJhKtDW&ugS=jY`L7t<>#@U`E``=iu~oF zAy}(@dT1M9GeHTLi6bd^S)Ms^phDgHK{lk&quA2?jM!8>#idAVFHyo`f39M^VS58d z|C&q_YEg9zY>LLL<`)4<9K$hhC{rrt3pTurfy2bg+$s+XR>@d65y7g_(6~--p>Eil zteIgFp#h7iIyU_tsKmZ1+d99Mo>o0$d5_!TH2Cek%QG>DS+Uh`1P767qrQWU!1N3M;Mw2; z)c(V5EZDK)*vO)DiWZ3qDv6OJLyVkuvC$o^{n38AYZ->4W1)RJR_|d>HkUp`b`d$>1vp_2?27zLW7k ze`WqEiA=ZTQsqrXma@6r)vH%BOZglZbh!i>`7d6eOf8=2QAJ)H8PMa30nys6k+T51 zMe3F;jdjR9V=0jGPe}b_ETzAJYcJ#4^E$a@PVO5Qupoaiz5=f7K6V=I zuN*sE@xM9#cgX)Db>q_DU&T{IJxy?$;8}um1oUTtUnHP*##aemBv>POnSgH3-$tm1 z7ISZCW2=~Dc4f?EWVfDX@>>bv@(1}pY+8%8P?Ulct McpuKm-0_S51K@*qt^fc4 delta 2487 zcmZ`)U2I%O6`r|w@6YbuyX#Giy-re^klM~VZPPdoqK--Ijbq166w)-pI5=!Jo~`4J z?R91^#tw6{B^xP~8iU(WL|YXpMgsbP5NLzc$4WfF1A?kAz_t$s@d82!sZzxQ5`5=w zoH~`*)qMAyZ|2O*Idjg;{k!~Eny2!;E-zU_AFCEw>)^bLRK;rlB`l`+aLJ{j79uk0Wdq+c}ZhWxQ&mlE8v#X8juDI#oFte6pX}nv(DRD=<1L9dU;&C`*XDfSo9@Xn1p0tR5TW&JV;x0KS(G`*~*zU zm8;?^fp1cI%AYl7F>jbc1Z@@TVqtov2XYdruq$i}Jk?hARXWR5s&1%sCsS<&f1O{u zGs#wl@?><+*nPfPo)COyOvcJcCJc{WM zVjz8jDC}E~LLWJh>)O_ewiR3{1;wVhbY%`uos$##=7BMLgzUafClGfEvJw=7(wFq# z4@~!Z=%5pfqWc~M!G$4A5qrxFja5$>iokj9EDb5;GL{;6bD9kg=OTWTeAfy`-PefsdwQ#5F+=UgXsKkA-H8e%IYYdkb^UY@d$^kC>sLh zAYxZz$mpL2rs5(dtTkhraspXUu+Z$ld4zYt#nEsnQTf$ElLXvS-Ue%D!lnt7xs#Un zg)@ZhK%&}1WeGRp+n{A0YTKY~Z)ucb(0mbxU9vT2YsR2m!IcNICTLdV5dO2ZO%rbm z3GU&5&&V$#!&jaRJ}3M-qH}R~XyMXe<&LPT`yh29|1DHCau-$HH`#K4YQoJ%i_V%N z%4IO|EURG;AR>y2BavmT`vxJ(LeHugZWPE-91y%Rf>*}fM4lG97Rv%}0Hj!iQNSNC zZp5@gz3J_yvr$|{8tWcxEf2A^4UztI`K>Xa#Y75EM4P^R^d)_Jz}L5r^?X4VkUq%M z6-u-bg6P%y^y&Jx9zV8R`~TfAVMw|v8m@SWY^L|`oA}5mRiA(~i$=d;`4TWn>P?Et zDp7gBnFrjzj^%c=YS}B!1ao*vigr+0sLC-tK3qO@gU0s~bOD-9VZInFmuBQ3vUBjB|8F{2N=Y4nSazJ~h(csE>S=^F6wmFYsYKczlSz zs`+@AUO%4Uqxy%(=lMyU9u4q_-x{5wA#Crr(Bi2hy~* z$EK|BLb{~I*c4yam&SJLKaJ%ra{P+kJ+An?{=xVvU(%f?&+)J5^2xzk^fE-RMf7g; zU})*UNU9Np1h)vtTX`4IbeCjhsU(9{`F-MECwPP4 zO@de0V?c69k}s0nkmP|}C#dS-iHqr7i7&cm-BjW+FYV^s$Mw%A+V#5=nosKU&t3W- D2cIm! diff --git a/MolAdsPy/__pycache__/__slab__.cpython-37.pyc b/MolAdsPy/__pycache__/__slab__.cpython-37.pyc index 27fcab5f1a1072beee017e39fe8dfcd7cc0a2a6a..eba09850e9261ca47a9f86e9a25efb6adec9291f 100644 GIT binary patch delta 810 zcmZXRO-vI}5XX0Rw@aZEOA0O4kd!K4U6w5ciBVAzA_o+LiNpg+zqSP0TJl;yh#L-Y zBz|QM8e>enc`znqNk}|tq90YJfJf*Y66?Q-_D!=+yB0qd6|8m^`G_o z8zg!rW}5Q%H~kltF_m@-Eg!AQWkOY2mzE$e*~(o2sVdvB4ml{OB4&dv%`4ZuRW&EC z!y4FfPNDp9=czI%A5vYlViohQrEzjJHcmdB+lNu2b>ytcFy6fdeRSoVc|t#h!AFJRTB6spvxLK@#b%Eq>nX&(a+Erbqtd+z)0e7 za01X-4dwt&;Tt1}KU%`@+-YjP3NV7DP{bIegT0Dqr2Oj#CuF+$lXwD7;)i$?hVgrRlrjmu6HJ`dyEL862XRf0dyY|PI-7bD;1a$v zBDmYzVEEWtbqBM({pY|Oy|4)@PN0kQucIUP1n`)bWive6Kh%(lOt8)lDL1{#Hz zBuNf|20b!W+D5xxS;Y8*TKq3HiC;`THN-;Aj)(bYYPDI_Mt6pDV+?Mx;C>2jmf&Ux ru3K;+B1Le$%c8t&iRy|-b1uWkVkyxFQGA@}q^`V9+<_UK8c6*Hw05r) delta 731 zcmZXRO=uHQ5XX0RlT;I<3HfLYNMdN3W;dIUmiAz!wZ&4j+JGqvC8lYU4YUawUMg6q z2d@<=WR4z01?@?chl+P^f|!FI0(unjhG8;Xi~&ZLk!KXJ6qtvu zycehgobHBncp{BZ1z-|)!clXYa?+YOL8kAhuXoygt!ZuX<@x9T)o1DWQue~{A-FFx zN0B%3MdTMGlC0vqQL|dDg9_&<_)+$v#Un1x6AL(;itiV@K#?zUId$wnnIc8v^47?t zN;iM4=iwB7)8jCX9%F_)7mXxjv11IobQT}Q`-bkEplw#ZGe!YQ2xbE2aLC+%3htT> zSi>J?85&s1mSF>*Wp_#COl~@D_q4zwV~ha9ZfuBmVaC4_d$|#~hP_-gc#^#l0zKO{ zsyK(gb4Jycu*G_8Z(Cw>ORTW3 Y%2>snd0: self._label=label @@ -135,7 +135,8 @@ def __init__(self,label,atom_list,a0,lattice_vectors,vaccuum=10.0): if isinstance(atom,(Atom,int)): self.add_atom(atom,loc=(0,0,0),update=False) else: - print("WARNING! An element in the atom list must be either an Atom object or an atom ID!") + if(self.verbose): + print("WARNING! An element in the atom list must be either an Atom object or an atom ID!") else: raise SlabError("'atom_list' must be a non-empyt list!") diff --git a/adsorbed.1.xyz b/adsorbed.1.xyz index fc50106..00ff31a 100644 --- a/adsorbed.1.xyz +++ b/adsorbed.1.xyz @@ -1,5 +1,5 @@ -120 -Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 12.042132" Properties=species:S:1:pos:R:3 +118 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 C 1.230000 0.000000 0.000000 C 0.000000 0.710141 0.000000 C 0.000000 2.130423 0.000000 @@ -100,23 +100,21 @@ C 11.070000 17.044000 0.000000 C 9.840000 17.754141 0.000000 C 9.840000 19.174423 0.000000 C 11.070000 19.884563 0.000000 -C 4.714263 8.523921 2.009979 -C 5.463646 9.754346 2.003790 -C 6.837876 9.753555 2.004854 -C 7.585594 8.521909 2.011874 -C 6.835857 7.291845 2.005689 -C 5.462243 7.292537 2.004861 -C 3.292253 8.524309 2.026050 -C 2.539393 9.732416 2.033965 -C 2.539937 7.315501 2.040999 -C 9.007466 8.520583 2.029077 -C 9.761787 9.727747 2.037389 -C 9.758694 7.311003 2.042132 -N 1.922723 10.731951 2.025669 -N 1.926416 6.314383 2.040117 -N 10.379422 10.726644 2.028976 -N 10.372297 6.309875 2.038657 -H 4.926086 10.701452 2.000000 -H 7.376856 10.699728 2.002026 -H 7.373566 6.344625 2.002598 -H 4.923314 6.346188 2.000983 +C -0.039729 0.329835 2.557847 +C 1.168915 -0.475202 1.989683 +O 2.307747 -0.238878 2.706201 +C 0.059903 1.787060 2.113617 +H -0.051334 0.266979 3.656160 +O 1.115352 -1.188029 1.000000 +H 0.996232 2.223464 2.489835 +H 0.047341 1.851743 1.015755 +H -0.783038 2.357606 2.525381 +C 3.560278 -0.828986 2.198520 +C 4.768588 -0.024496 2.767262 +O 5.907506 -0.260432 2.050387 +C 3.658652 -2.285587 2.643761 +H 3.549853 -0.768757 1.099918 +O 4.715056 0.684974 3.759265 +H 4.594046 -2.724317 2.268646 +H 2.816213 -2.856659 2.232397 +H 3.644843 -2.350873 3.741352 diff --git a/move_x_to_x.xyz b/move_x_to_x.xyz new file mode 100644 index 0000000..39fb1f5 --- /dev/null +++ b/move_x_to_x.xyz @@ -0,0 +1,206 @@ +204 +Lattice="27.060000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 13.530000 0.000000 0.000000 +C 12.300000 0.710141 0.000000 +C 12.300000 2.130423 0.000000 +C 13.530000 2.840563 0.000000 +C 13.530000 4.261000 0.000000 +C 12.300000 4.971141 0.000000 +C 12.300000 6.391423 0.000000 +C 13.530000 7.101563 0.000000 +C 13.530000 8.522000 0.000000 +C 12.300000 9.232141 0.000000 +C 12.300000 10.652423 0.000000 +C 13.530000 11.362563 0.000000 +C 15.990000 0.000000 0.000000 +C 14.760000 0.710141 0.000000 +C 14.760000 2.130423 0.000000 +C 15.990000 2.840563 0.000000 +C 15.990000 4.261000 0.000000 +C 14.760000 4.971141 0.000000 +C 14.760000 6.391423 0.000000 +C 15.990000 7.101563 0.000000 +C 15.990000 8.522000 0.000000 +C 14.760000 9.232141 0.000000 +C 14.760000 10.652423 0.000000 +C 15.990000 11.362563 0.000000 +C 18.450000 0.000000 0.000000 +C 17.220000 0.710141 0.000000 +C 17.220000 2.130423 0.000000 +C 18.450000 2.840563 0.000000 +C 18.450000 4.261000 0.000000 +C 17.220000 4.971141 0.000000 +C 17.220000 6.391423 0.000000 +C 18.450000 7.101563 0.000000 +C 18.450000 8.522000 0.000000 +C 17.220000 9.232141 0.000000 +C 17.220000 10.652423 0.000000 +C 18.450000 11.362563 0.000000 +C 20.910000 0.000000 0.000000 +C 19.680000 0.710141 0.000000 +C 19.680000 2.130423 0.000000 +C 20.910000 2.840563 0.000000 +C 20.910000 4.261000 0.000000 +C 19.680000 4.971141 0.000000 +C 19.680000 6.391423 0.000000 +C 20.910000 7.101563 0.000000 +C 20.910000 8.522000 0.000000 +C 19.680000 9.232141 0.000000 +C 19.680000 10.652423 0.000000 +C 20.910000 11.362563 0.000000 +C 23.370000 0.000000 0.000000 +C 22.140000 0.710141 0.000000 +C 22.140000 2.130423 0.000000 +C 23.370000 2.840563 0.000000 +C 23.370000 4.261000 0.000000 +C 22.140000 4.971141 0.000000 +C 22.140000 6.391423 0.000000 +C 23.370000 7.101563 0.000000 +C 23.370000 8.522000 0.000000 +C 22.140000 9.232141 0.000000 +C 22.140000 10.652423 0.000000 +C 23.370000 11.362563 0.000000 +C 25.830000 0.000000 0.000000 +C 24.600000 0.710141 0.000000 +C 24.600000 2.130423 0.000000 +C 25.830000 2.840563 0.000000 +C 25.830000 4.261000 0.000000 +C 24.600000 4.971141 0.000000 +C 24.600000 6.391423 0.000000 +C 25.830000 7.101563 0.000000 +C 25.830000 8.522000 0.000000 +C 24.600000 9.232141 0.000000 +C 24.600000 10.652423 0.000000 +C 25.830000 11.362563 0.000000 +C -0.039729 1.329835 2.557847 +C 1.168915 0.524798 1.989683 +O 2.307747 0.761122 2.706201 +C 0.059903 2.787060 2.113617 +H -0.051334 1.266979 3.656160 +O 1.115352 -0.188029 1.000000 +H 0.996232 3.223464 2.489835 +H 0.047341 2.851743 1.015755 +H -0.783038 3.357606 2.525381 +C 3.560278 0.171014 2.198520 +C 4.768588 0.975504 2.767262 +O 5.907506 0.739568 2.050387 +C 3.658652 -1.285587 2.643761 +H 3.549853 0.231243 1.099918 +O 4.715056 1.684974 3.759265 +H 4.594046 -1.724317 2.268646 +H 2.816213 -1.856659 2.232397 +H 3.644843 -1.350873 3.741352 +C 6.650815 1.329835 2.557847 +C 7.859459 0.524798 1.989683 +O 8.998291 0.761122 2.706201 +C 6.750447 2.787060 2.113617 +H 6.639210 1.266979 3.656160 +O 7.805896 -0.188029 1.000000 +H 7.686776 3.223464 2.489835 +H 6.737885 2.851743 1.015755 +H 5.907506 3.357606 2.525381 +C 10.250822 0.171014 2.198520 +C 11.459132 0.975504 2.767262 +O 12.598050 0.739568 2.050387 +C 10.349196 -1.285587 2.643761 +H 10.240397 0.231243 1.099918 +O 11.405600 1.684974 3.759265 +H 11.284590 -1.724317 2.268646 +H 9.506757 -1.856659 2.232397 +H 10.335387 -1.350873 3.741352 +C 13.341359 1.329835 2.557847 +C 14.550003 0.524798 1.989683 +O 15.688835 0.761122 2.706201 +C 13.440991 2.787060 2.113617 +H 13.329754 1.266979 3.656160 +O 14.496440 -0.188029 1.000000 +H 14.377320 3.223464 2.489835 +H 13.428429 2.851743 1.015755 +H 12.598050 3.357606 2.525381 +C 16.941366 0.171014 2.198520 +C 18.149676 0.975504 2.767262 +O 19.288594 0.739568 2.050387 +C 17.039740 -1.285587 2.643761 +H 16.930941 0.231243 1.099918 +O 18.096144 1.684974 3.759265 +H 17.975134 -1.724317 2.268646 +H 16.197301 -1.856659 2.232397 +H 17.025931 -1.350873 3.741352 +C 20.031903 1.329835 2.557847 +C 21.240547 0.524798 1.989683 +O 22.379379 0.761122 2.706201 +C 20.131535 2.787060 2.113617 +H 20.020298 1.266979 3.656160 +O 21.186984 -0.188029 1.000000 +H 21.067864 3.223464 2.489835 +H 20.118973 2.851743 1.015755 +H 19.288594 3.357606 2.525381 +C 23.631910 0.171014 2.198520 +C 24.840220 0.975504 2.767262 +O 25.979138 0.739568 2.050387 +C 23.730284 -1.285587 2.643761 +H 23.621485 0.231243 1.099918 +O 24.786688 1.684974 3.759265 +H 24.665678 -1.724317 2.268646 +H 22.887845 -1.856659 2.232397 +H 23.716475 -1.350873 3.741352 diff --git a/move_x_to_y.xyz b/move_x_to_y.xyz new file mode 100644 index 0000000..39fb1f5 --- /dev/null +++ b/move_x_to_y.xyz @@ -0,0 +1,206 @@ +204 +Lattice="27.060000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 13.530000 0.000000 0.000000 +C 12.300000 0.710141 0.000000 +C 12.300000 2.130423 0.000000 +C 13.530000 2.840563 0.000000 +C 13.530000 4.261000 0.000000 +C 12.300000 4.971141 0.000000 +C 12.300000 6.391423 0.000000 +C 13.530000 7.101563 0.000000 +C 13.530000 8.522000 0.000000 +C 12.300000 9.232141 0.000000 +C 12.300000 10.652423 0.000000 +C 13.530000 11.362563 0.000000 +C 15.990000 0.000000 0.000000 +C 14.760000 0.710141 0.000000 +C 14.760000 2.130423 0.000000 +C 15.990000 2.840563 0.000000 +C 15.990000 4.261000 0.000000 +C 14.760000 4.971141 0.000000 +C 14.760000 6.391423 0.000000 +C 15.990000 7.101563 0.000000 +C 15.990000 8.522000 0.000000 +C 14.760000 9.232141 0.000000 +C 14.760000 10.652423 0.000000 +C 15.990000 11.362563 0.000000 +C 18.450000 0.000000 0.000000 +C 17.220000 0.710141 0.000000 +C 17.220000 2.130423 0.000000 +C 18.450000 2.840563 0.000000 +C 18.450000 4.261000 0.000000 +C 17.220000 4.971141 0.000000 +C 17.220000 6.391423 0.000000 +C 18.450000 7.101563 0.000000 +C 18.450000 8.522000 0.000000 +C 17.220000 9.232141 0.000000 +C 17.220000 10.652423 0.000000 +C 18.450000 11.362563 0.000000 +C 20.910000 0.000000 0.000000 +C 19.680000 0.710141 0.000000 +C 19.680000 2.130423 0.000000 +C 20.910000 2.840563 0.000000 +C 20.910000 4.261000 0.000000 +C 19.680000 4.971141 0.000000 +C 19.680000 6.391423 0.000000 +C 20.910000 7.101563 0.000000 +C 20.910000 8.522000 0.000000 +C 19.680000 9.232141 0.000000 +C 19.680000 10.652423 0.000000 +C 20.910000 11.362563 0.000000 +C 23.370000 0.000000 0.000000 +C 22.140000 0.710141 0.000000 +C 22.140000 2.130423 0.000000 +C 23.370000 2.840563 0.000000 +C 23.370000 4.261000 0.000000 +C 22.140000 4.971141 0.000000 +C 22.140000 6.391423 0.000000 +C 23.370000 7.101563 0.000000 +C 23.370000 8.522000 0.000000 +C 22.140000 9.232141 0.000000 +C 22.140000 10.652423 0.000000 +C 23.370000 11.362563 0.000000 +C 25.830000 0.000000 0.000000 +C 24.600000 0.710141 0.000000 +C 24.600000 2.130423 0.000000 +C 25.830000 2.840563 0.000000 +C 25.830000 4.261000 0.000000 +C 24.600000 4.971141 0.000000 +C 24.600000 6.391423 0.000000 +C 25.830000 7.101563 0.000000 +C 25.830000 8.522000 0.000000 +C 24.600000 9.232141 0.000000 +C 24.600000 10.652423 0.000000 +C 25.830000 11.362563 0.000000 +C -0.039729 1.329835 2.557847 +C 1.168915 0.524798 1.989683 +O 2.307747 0.761122 2.706201 +C 0.059903 2.787060 2.113617 +H -0.051334 1.266979 3.656160 +O 1.115352 -0.188029 1.000000 +H 0.996232 3.223464 2.489835 +H 0.047341 2.851743 1.015755 +H -0.783038 3.357606 2.525381 +C 3.560278 0.171014 2.198520 +C 4.768588 0.975504 2.767262 +O 5.907506 0.739568 2.050387 +C 3.658652 -1.285587 2.643761 +H 3.549853 0.231243 1.099918 +O 4.715056 1.684974 3.759265 +H 4.594046 -1.724317 2.268646 +H 2.816213 -1.856659 2.232397 +H 3.644843 -1.350873 3.741352 +C 6.650815 1.329835 2.557847 +C 7.859459 0.524798 1.989683 +O 8.998291 0.761122 2.706201 +C 6.750447 2.787060 2.113617 +H 6.639210 1.266979 3.656160 +O 7.805896 -0.188029 1.000000 +H 7.686776 3.223464 2.489835 +H 6.737885 2.851743 1.015755 +H 5.907506 3.357606 2.525381 +C 10.250822 0.171014 2.198520 +C 11.459132 0.975504 2.767262 +O 12.598050 0.739568 2.050387 +C 10.349196 -1.285587 2.643761 +H 10.240397 0.231243 1.099918 +O 11.405600 1.684974 3.759265 +H 11.284590 -1.724317 2.268646 +H 9.506757 -1.856659 2.232397 +H 10.335387 -1.350873 3.741352 +C 13.341359 1.329835 2.557847 +C 14.550003 0.524798 1.989683 +O 15.688835 0.761122 2.706201 +C 13.440991 2.787060 2.113617 +H 13.329754 1.266979 3.656160 +O 14.496440 -0.188029 1.000000 +H 14.377320 3.223464 2.489835 +H 13.428429 2.851743 1.015755 +H 12.598050 3.357606 2.525381 +C 16.941366 0.171014 2.198520 +C 18.149676 0.975504 2.767262 +O 19.288594 0.739568 2.050387 +C 17.039740 -1.285587 2.643761 +H 16.930941 0.231243 1.099918 +O 18.096144 1.684974 3.759265 +H 17.975134 -1.724317 2.268646 +H 16.197301 -1.856659 2.232397 +H 17.025931 -1.350873 3.741352 +C 20.031903 1.329835 2.557847 +C 21.240547 0.524798 1.989683 +O 22.379379 0.761122 2.706201 +C 20.131535 2.787060 2.113617 +H 20.020298 1.266979 3.656160 +O 21.186984 -0.188029 1.000000 +H 21.067864 3.223464 2.489835 +H 20.118973 2.851743 1.015755 +H 19.288594 3.357606 2.525381 +C 23.631910 0.171014 2.198520 +C 24.840220 0.975504 2.767262 +O 25.979138 0.739568 2.050387 +C 23.730284 -1.285587 2.643761 +H 23.621485 0.231243 1.099918 +O 24.786688 1.684974 3.759265 +H 24.665678 -1.724317 2.268646 +H 22.887845 -1.856659 2.232397 +H 23.716475 -1.350873 3.741352 diff --git a/move_x_to_z_away.xyz b/move_x_to_z_away.xyz new file mode 100644 index 0000000..92ca29e --- /dev/null +++ b/move_x_to_z_away.xyz @@ -0,0 +1,206 @@ +204 +Lattice="27.060000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 13.530000 0.000000 0.000000 +C 12.300000 0.710141 0.000000 +C 12.300000 2.130423 0.000000 +C 13.530000 2.840563 0.000000 +C 13.530000 4.261000 0.000000 +C 12.300000 4.971141 0.000000 +C 12.300000 6.391423 0.000000 +C 13.530000 7.101563 0.000000 +C 13.530000 8.522000 0.000000 +C 12.300000 9.232141 0.000000 +C 12.300000 10.652423 0.000000 +C 13.530000 11.362563 0.000000 +C 15.990000 0.000000 0.000000 +C 14.760000 0.710141 0.000000 +C 14.760000 2.130423 0.000000 +C 15.990000 2.840563 0.000000 +C 15.990000 4.261000 0.000000 +C 14.760000 4.971141 0.000000 +C 14.760000 6.391423 0.000000 +C 15.990000 7.101563 0.000000 +C 15.990000 8.522000 0.000000 +C 14.760000 9.232141 0.000000 +C 14.760000 10.652423 0.000000 +C 15.990000 11.362563 0.000000 +C 18.450000 0.000000 0.000000 +C 17.220000 0.710141 0.000000 +C 17.220000 2.130423 0.000000 +C 18.450000 2.840563 0.000000 +C 18.450000 4.261000 0.000000 +C 17.220000 4.971141 0.000000 +C 17.220000 6.391423 0.000000 +C 18.450000 7.101563 0.000000 +C 18.450000 8.522000 0.000000 +C 17.220000 9.232141 0.000000 +C 17.220000 10.652423 0.000000 +C 18.450000 11.362563 0.000000 +C 20.910000 0.000000 0.000000 +C 19.680000 0.710141 0.000000 +C 19.680000 2.130423 0.000000 +C 20.910000 2.840563 0.000000 +C 20.910000 4.261000 0.000000 +C 19.680000 4.971141 0.000000 +C 19.680000 6.391423 0.000000 +C 20.910000 7.101563 0.000000 +C 20.910000 8.522000 0.000000 +C 19.680000 9.232141 0.000000 +C 19.680000 10.652423 0.000000 +C 20.910000 11.362563 0.000000 +C 23.370000 0.000000 0.000000 +C 22.140000 0.710141 0.000000 +C 22.140000 2.130423 0.000000 +C 23.370000 2.840563 0.000000 +C 23.370000 4.261000 0.000000 +C 22.140000 4.971141 0.000000 +C 22.140000 6.391423 0.000000 +C 23.370000 7.101563 0.000000 +C 23.370000 8.522000 0.000000 +C 22.140000 9.232141 0.000000 +C 22.140000 10.652423 0.000000 +C 23.370000 11.362563 0.000000 +C 25.830000 0.000000 0.000000 +C 24.600000 0.710141 0.000000 +C 24.600000 2.130423 0.000000 +C 25.830000 2.840563 0.000000 +C 25.830000 4.261000 0.000000 +C 24.600000 4.971141 0.000000 +C 24.600000 6.391423 0.000000 +C 25.830000 7.101563 0.000000 +C 25.830000 8.522000 0.000000 +C 24.600000 9.232141 0.000000 +C 24.600000 10.652423 0.000000 +C 25.830000 11.362563 0.000000 +C -0.039729 1.329835 3.557847 +C 1.168915 0.524798 2.989683 +O 2.307747 0.761122 3.706201 +C 0.059903 2.787060 3.113617 +H -0.051334 1.266979 4.656160 +O 1.115352 -0.188029 2.000000 +H 0.996232 3.223464 3.489835 +H 0.047341 2.851743 2.015755 +H -0.783038 3.357606 3.525381 +C 3.560278 0.171014 3.198520 +C 4.768588 0.975504 3.767262 +O 5.907506 0.739568 3.050387 +C 3.658652 -1.285587 3.643761 +H 3.549853 0.231243 2.099918 +O 4.715056 1.684974 4.759265 +H 4.594046 -1.724317 3.268646 +H 2.816213 -1.856659 3.232397 +H 3.644843 -1.350873 4.741352 +C 6.650815 1.329835 3.557847 +C 7.859459 0.524798 2.989683 +O 8.998291 0.761122 3.706201 +C 6.750447 2.787060 3.113617 +H 6.639210 1.266979 4.656160 +O 7.805896 -0.188029 2.000000 +H 7.686776 3.223464 3.489835 +H 6.737885 2.851743 2.015755 +H 5.907506 3.357606 3.525381 +C 10.250822 0.171014 3.198520 +C 11.459132 0.975504 3.767262 +O 12.598050 0.739568 3.050387 +C 10.349196 -1.285587 3.643761 +H 10.240397 0.231243 2.099918 +O 11.405600 1.684974 4.759265 +H 11.284590 -1.724317 3.268646 +H 9.506757 -1.856659 3.232397 +H 10.335387 -1.350873 4.741352 +C 13.341359 1.329835 3.557847 +C 14.550003 0.524798 2.989683 +O 15.688835 0.761122 3.706201 +C 13.440991 2.787060 3.113617 +H 13.329754 1.266979 4.656160 +O 14.496440 -0.188029 2.000000 +H 14.377320 3.223464 3.489835 +H 13.428429 2.851743 2.015755 +H 12.598050 3.357606 3.525381 +C 16.941366 0.171014 3.198520 +C 18.149676 0.975504 3.767262 +O 19.288594 0.739568 3.050387 +C 17.039740 -1.285587 3.643761 +H 16.930941 0.231243 2.099918 +O 18.096144 1.684974 4.759265 +H 17.975134 -1.724317 3.268646 +H 16.197301 -1.856659 3.232397 +H 17.025931 -1.350873 4.741352 +C 20.031903 1.329835 3.557847 +C 21.240547 0.524798 2.989683 +O 22.379379 0.761122 3.706201 +C 20.131535 2.787060 3.113617 +H 20.020298 1.266979 4.656160 +O 21.186984 -0.188029 2.000000 +H 21.067864 3.223464 3.489835 +H 20.118973 2.851743 2.015755 +H 19.288594 3.357606 3.525381 +C 23.631910 0.171014 3.198520 +C 24.840220 0.975504 3.767262 +O 25.979138 0.739568 3.050387 +C 23.730284 -1.285587 3.643761 +H 23.621485 0.231243 2.099918 +O 24.786688 1.684974 4.759265 +H 24.665678 -1.724317 3.268646 +H 22.887845 -1.856659 3.232397 +H 23.716475 -1.350873 4.741352 diff --git a/move_y_to_x.xyz b/move_y_to_x.xyz new file mode 100644 index 0000000..2ba98dd --- /dev/null +++ b/move_y_to_x.xyz @@ -0,0 +1,80 @@ +78 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 0.670165 -0.039729 2.557847 +C 1.475202 1.168915 1.989683 +O 1.238878 2.307747 2.706201 +C -0.787060 0.059903 2.113617 +H 0.733021 -0.051334 3.656160 +O 2.188029 1.115352 1.000000 +H -1.223464 0.996232 2.489835 +H -0.851743 0.047341 1.015755 +H -1.357606 -0.783038 2.525381 +C 1.828986 3.560278 2.198520 +C 1.024496 4.768588 2.767262 +O 1.260432 5.907506 2.050387 +C 3.285587 3.658652 2.643761 +H 1.768757 3.549853 1.099918 +O 0.315026 4.715056 3.759265 +H 3.724317 4.594046 2.268646 +H 3.856659 2.816213 2.232397 +H 3.350873 3.644843 3.741352 diff --git a/move_y_to_y.xyz b/move_y_to_y.xyz new file mode 100644 index 0000000..2ba98dd --- /dev/null +++ b/move_y_to_y.xyz @@ -0,0 +1,80 @@ +78 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 0.670165 -0.039729 2.557847 +C 1.475202 1.168915 1.989683 +O 1.238878 2.307747 2.706201 +C -0.787060 0.059903 2.113617 +H 0.733021 -0.051334 3.656160 +O 2.188029 1.115352 1.000000 +H -1.223464 0.996232 2.489835 +H -0.851743 0.047341 1.015755 +H -1.357606 -0.783038 2.525381 +C 1.828986 3.560278 2.198520 +C 1.024496 4.768588 2.767262 +O 1.260432 5.907506 2.050387 +C 3.285587 3.658652 2.643761 +H 1.768757 3.549853 1.099918 +O 0.315026 4.715056 3.759265 +H 3.724317 4.594046 2.268646 +H 3.856659 2.816213 2.232397 +H 3.350873 3.644843 3.741352 diff --git a/move_y_to_z_away.xyz b/move_y_to_z_away.xyz new file mode 100644 index 0000000..9356474 --- /dev/null +++ b/move_y_to_z_away.xyz @@ -0,0 +1,80 @@ +78 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 0.670165 -0.039729 3.557847 +C 1.475202 1.168915 2.989683 +O 1.238878 2.307747 3.706201 +C -0.787060 0.059903 3.113617 +H 0.733021 -0.051334 4.656160 +O 2.188029 1.115352 2.000000 +H -1.223464 0.996232 3.489835 +H -0.851743 0.047341 2.015755 +H -1.357606 -0.783038 3.525381 +C 1.828986 3.560278 3.198520 +C 1.024496 4.768588 3.767262 +O 1.260432 5.907506 3.050387 +C 3.285587 3.658652 3.643761 +H 1.768757 3.549853 2.099918 +O 0.315026 4.715056 4.759265 +H 3.724317 4.594046 3.268646 +H 3.856659 2.816213 3.232397 +H 3.350873 3.644843 4.741352 diff --git a/move_z_to_x.xyz b/move_z_to_x.xyz new file mode 100644 index 0000000..ade2899 --- /dev/null +++ b/move_z_to_x.xyz @@ -0,0 +1,62 @@ +60 +Lattice="12.300000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 diff --git a/move_z_to_y.xyz b/move_z_to_y.xyz new file mode 100644 index 0000000..ade2899 --- /dev/null +++ b/move_z_to_y.xyz @@ -0,0 +1,62 @@ +60 +Lattice="12.300000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 diff --git a/move_z_to_z_away.xyz b/move_z_to_z_away.xyz new file mode 100644 index 0000000..ade2899 --- /dev/null +++ b/move_z_to_z_away.xyz @@ -0,0 +1,62 @@ +60 +Lattice="12.300000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 diff --git a/pla_rotate_in_graphene.align_x.degree_120.xyz b/pla_rotate_in_graphene.align_x.degree_120.xyz new file mode 100644 index 0000000..de449f3 --- /dev/null +++ b/pla_rotate_in_graphene.align_x.degree_120.xyz @@ -0,0 +1,206 @@ +204 +Lattice="27.060000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 13.530000 0.000000 0.000000 +C 12.300000 0.710141 0.000000 +C 12.300000 2.130423 0.000000 +C 13.530000 2.840563 0.000000 +C 13.530000 4.261000 0.000000 +C 12.300000 4.971141 0.000000 +C 12.300000 6.391423 0.000000 +C 13.530000 7.101563 0.000000 +C 13.530000 8.522000 0.000000 +C 12.300000 9.232141 0.000000 +C 12.300000 10.652423 0.000000 +C 13.530000 11.362563 0.000000 +C 15.990000 0.000000 0.000000 +C 14.760000 0.710141 0.000000 +C 14.760000 2.130423 0.000000 +C 15.990000 2.840563 0.000000 +C 15.990000 4.261000 0.000000 +C 14.760000 4.971141 0.000000 +C 14.760000 6.391423 0.000000 +C 15.990000 7.101563 0.000000 +C 15.990000 8.522000 0.000000 +C 14.760000 9.232141 0.000000 +C 14.760000 10.652423 0.000000 +C 15.990000 11.362563 0.000000 +C 18.450000 0.000000 0.000000 +C 17.220000 0.710141 0.000000 +C 17.220000 2.130423 0.000000 +C 18.450000 2.840563 0.000000 +C 18.450000 4.261000 0.000000 +C 17.220000 4.971141 0.000000 +C 17.220000 6.391423 0.000000 +C 18.450000 7.101563 0.000000 +C 18.450000 8.522000 0.000000 +C 17.220000 9.232141 0.000000 +C 17.220000 10.652423 0.000000 +C 18.450000 11.362563 0.000000 +C 20.910000 0.000000 0.000000 +C 19.680000 0.710141 0.000000 +C 19.680000 2.130423 0.000000 +C 20.910000 2.840563 0.000000 +C 20.910000 4.261000 0.000000 +C 19.680000 4.971141 0.000000 +C 19.680000 6.391423 0.000000 +C 20.910000 7.101563 0.000000 +C 20.910000 8.522000 0.000000 +C 19.680000 9.232141 0.000000 +C 19.680000 10.652423 0.000000 +C 20.910000 11.362563 0.000000 +C 23.370000 0.000000 0.000000 +C 22.140000 0.710141 0.000000 +C 22.140000 2.130423 0.000000 +C 23.370000 2.840563 0.000000 +C 23.370000 4.261000 0.000000 +C 22.140000 4.971141 0.000000 +C 22.140000 6.391423 0.000000 +C 23.370000 7.101563 0.000000 +C 23.370000 8.522000 0.000000 +C 22.140000 9.232141 0.000000 +C 22.140000 10.652423 0.000000 +C 23.370000 11.362563 0.000000 +C 25.830000 0.000000 0.000000 +C 24.600000 0.710141 0.000000 +C 24.600000 2.130423 0.000000 +C 25.830000 2.840563 0.000000 +C 25.830000 4.261000 0.000000 +C 24.600000 4.971141 0.000000 +C 24.600000 6.391423 0.000000 +C 25.830000 7.101563 0.000000 +C 25.830000 8.522000 0.000000 +C 24.600000 9.232141 0.000000 +C 24.600000 10.652423 0.000000 +C 25.830000 11.362563 0.000000 +C -0.039729 -2.889936 3.389125 +C 1.168915 -2.084899 3.957289 +O 2.307747 -2.321223 3.240771 +C 0.059903 -4.347161 3.833355 +H -0.051334 -2.827080 2.290812 +O 1.115352 -1.372072 4.946972 +H 0.996232 -4.783565 3.457137 +H 0.047341 -4.411844 4.931217 +H -0.783038 -4.917707 3.421591 +C 3.560278 -1.731115 3.748452 +C 4.768588 -2.535605 3.179710 +O 5.907506 -2.299669 3.896585 +C 3.658652 -0.274514 3.303211 +H 3.549853 -1.791344 4.847054 +O 4.715056 -3.245075 2.187707 +H 4.594046 0.164216 3.678326 +H 2.816213 0.296558 3.714575 +H 3.644843 -0.209228 2.205620 +C 6.650815 -2.889936 3.389125 +C 7.859459 -2.084899 3.957289 +O 8.998291 -2.321223 3.240771 +C 6.750447 -4.347161 3.833355 +H 6.639210 -2.827080 2.290812 +O 7.805896 -1.372072 4.946972 +H 7.686776 -4.783565 3.457137 +H 6.737885 -4.411844 4.931217 +H 5.907506 -4.917707 3.421591 +C 10.250822 -1.731115 3.748452 +C 11.459132 -2.535605 3.179710 +O 12.598050 -2.299669 3.896585 +C 10.349196 -0.274514 3.303211 +H 10.240397 -1.791344 4.847054 +O 11.405600 -3.245075 2.187707 +H 11.284590 0.164216 3.678326 +H 9.506757 0.296558 3.714575 +H 10.335387 -0.209228 2.205620 +C 13.341359 -2.889936 3.389125 +C 14.550003 -2.084899 3.957289 +O 15.688835 -2.321223 3.240771 +C 13.440991 -4.347161 3.833355 +H 13.329754 -2.827080 2.290812 +O 14.496440 -1.372072 4.946972 +H 14.377320 -4.783565 3.457137 +H 13.428429 -4.411844 4.931217 +H 12.598050 -4.917707 3.421591 +C 16.941366 -1.731115 3.748452 +C 18.149676 -2.535605 3.179710 +O 19.288594 -2.299669 3.896585 +C 17.039740 -0.274514 3.303211 +H 16.930941 -1.791344 4.847054 +O 18.096144 -3.245075 2.187707 +H 17.975134 0.164216 3.678326 +H 16.197301 0.296558 3.714575 +H 17.025931 -0.209228 2.205620 +C 20.031903 -2.889936 3.389125 +C 21.240547 -2.084899 3.957289 +O 22.379379 -2.321223 3.240771 +C 20.131535 -4.347161 3.833355 +H 20.020298 -2.827080 2.290812 +O 21.186984 -1.372072 4.946972 +H 21.067864 -4.783565 3.457137 +H 20.118973 -4.411844 4.931217 +H 19.288594 -4.917707 3.421591 +C 23.631910 -1.731115 3.748452 +C 24.840220 -2.535605 3.179710 +O 25.979138 -2.299669 3.896585 +C 23.730284 -0.274514 3.303211 +H 23.621485 -1.791344 4.847054 +O 24.786688 -3.245075 2.187707 +H 24.665678 0.164216 3.678326 +H 22.887845 0.296558 3.714575 +H 23.716475 -0.209228 2.205620 diff --git a/pla_rotate_in_graphene.align_x.degree_180.xyz b/pla_rotate_in_graphene.align_x.degree_180.xyz new file mode 100644 index 0000000..dcd60d9 --- /dev/null +++ b/pla_rotate_in_graphene.align_x.degree_180.xyz @@ -0,0 +1,206 @@ +204 +Lattice="27.060000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 13.530000 0.000000 0.000000 +C 12.300000 0.710141 0.000000 +C 12.300000 2.130423 0.000000 +C 13.530000 2.840563 0.000000 +C 13.530000 4.261000 0.000000 +C 12.300000 4.971141 0.000000 +C 12.300000 6.391423 0.000000 +C 13.530000 7.101563 0.000000 +C 13.530000 8.522000 0.000000 +C 12.300000 9.232141 0.000000 +C 12.300000 10.652423 0.000000 +C 13.530000 11.362563 0.000000 +C 15.990000 0.000000 0.000000 +C 14.760000 0.710141 0.000000 +C 14.760000 2.130423 0.000000 +C 15.990000 2.840563 0.000000 +C 15.990000 4.261000 0.000000 +C 14.760000 4.971141 0.000000 +C 14.760000 6.391423 0.000000 +C 15.990000 7.101563 0.000000 +C 15.990000 8.522000 0.000000 +C 14.760000 9.232141 0.000000 +C 14.760000 10.652423 0.000000 +C 15.990000 11.362563 0.000000 +C 18.450000 0.000000 0.000000 +C 17.220000 0.710141 0.000000 +C 17.220000 2.130423 0.000000 +C 18.450000 2.840563 0.000000 +C 18.450000 4.261000 0.000000 +C 17.220000 4.971141 0.000000 +C 17.220000 6.391423 0.000000 +C 18.450000 7.101563 0.000000 +C 18.450000 8.522000 0.000000 +C 17.220000 9.232141 0.000000 +C 17.220000 10.652423 0.000000 +C 18.450000 11.362563 0.000000 +C 20.910000 0.000000 0.000000 +C 19.680000 0.710141 0.000000 +C 19.680000 2.130423 0.000000 +C 20.910000 2.840563 0.000000 +C 20.910000 4.261000 0.000000 +C 19.680000 4.971141 0.000000 +C 19.680000 6.391423 0.000000 +C 20.910000 7.101563 0.000000 +C 20.910000 8.522000 0.000000 +C 19.680000 9.232141 0.000000 +C 19.680000 10.652423 0.000000 +C 20.910000 11.362563 0.000000 +C 23.370000 0.000000 0.000000 +C 22.140000 0.710141 0.000000 +C 22.140000 2.130423 0.000000 +C 23.370000 2.840563 0.000000 +C 23.370000 4.261000 0.000000 +C 22.140000 4.971141 0.000000 +C 22.140000 6.391423 0.000000 +C 23.370000 7.101563 0.000000 +C 23.370000 8.522000 0.000000 +C 22.140000 9.232141 0.000000 +C 22.140000 10.652423 0.000000 +C 23.370000 11.362563 0.000000 +C 25.830000 0.000000 0.000000 +C 24.600000 0.710141 0.000000 +C 24.600000 2.130423 0.000000 +C 25.830000 2.840563 0.000000 +C 25.830000 4.261000 0.000000 +C 24.600000 4.971141 0.000000 +C 24.600000 6.391423 0.000000 +C 25.830000 7.101563 0.000000 +C 25.830000 8.522000 0.000000 +C 24.600000 9.232141 0.000000 +C 24.600000 10.652423 0.000000 +C 25.830000 11.362563 0.000000 +C -0.039729 -1.731213 3.745554 +C 1.168915 -2.536250 3.177390 +O 2.307747 -2.299926 3.893908 +C 0.059903 -0.273988 3.301324 +H -0.051334 -1.794069 4.843867 +O 1.115352 -3.249077 2.187707 +H 0.996232 0.162416 3.677542 +H 0.047341 -0.209305 2.203462 +H -0.783038 0.296558 3.713088 +C 3.560278 -2.890034 3.386227 +C 4.768588 -2.085544 3.954969 +O 5.907506 -2.321480 3.238094 +C 3.658652 -4.346635 3.831468 +H 3.549853 -2.829805 2.287625 +O 4.715056 -1.376074 4.946972 +H 4.594046 -4.785365 3.456353 +H 2.816213 -4.917707 3.420104 +H 3.644843 -4.411921 4.929059 +C 6.650815 -1.731213 3.745554 +C 7.859459 -2.536250 3.177390 +O 8.998291 -2.299926 3.893908 +C 6.750447 -0.273988 3.301324 +H 6.639210 -1.794069 4.843867 +O 7.805896 -3.249077 2.187707 +H 7.686776 0.162416 3.677542 +H 6.737885 -0.209305 2.203462 +H 5.907506 0.296558 3.713088 +C 10.250822 -2.890034 3.386227 +C 11.459132 -2.085544 3.954969 +O 12.598050 -2.321480 3.238094 +C 10.349196 -4.346635 3.831468 +H 10.240397 -2.829805 2.287625 +O 11.405600 -1.376074 4.946972 +H 11.284590 -4.785365 3.456353 +H 9.506757 -4.917707 3.420104 +H 10.335387 -4.411921 4.929059 +C 13.341359 -1.731213 3.745554 +C 14.550003 -2.536250 3.177390 +O 15.688835 -2.299926 3.893908 +C 13.440991 -0.273988 3.301324 +H 13.329754 -1.794069 4.843867 +O 14.496440 -3.249077 2.187707 +H 14.377320 0.162416 3.677542 +H 13.428429 -0.209305 2.203462 +H 12.598050 0.296558 3.713088 +C 16.941366 -2.890034 3.386227 +C 18.149676 -2.085544 3.954969 +O 19.288594 -2.321480 3.238094 +C 17.039740 -4.346635 3.831468 +H 16.930941 -2.829805 2.287625 +O 18.096144 -1.376074 4.946972 +H 17.975134 -4.785365 3.456353 +H 16.197301 -4.917707 3.420104 +H 17.025931 -4.411921 4.929059 +C 20.031903 -1.731213 3.745554 +C 21.240547 -2.536250 3.177390 +O 22.379379 -2.299926 3.893908 +C 20.131535 -0.273988 3.301324 +H 20.020298 -1.794069 4.843867 +O 21.186984 -3.249077 2.187707 +H 21.067864 0.162416 3.677542 +H 20.118973 -0.209305 2.203462 +H 19.288594 0.296558 3.713088 +C 23.631910 -2.890034 3.386227 +C 24.840220 -2.085544 3.954969 +O 25.979138 -2.321480 3.238094 +C 23.730284 -4.346635 3.831468 +H 23.621485 -2.829805 2.287625 +O 24.786688 -1.376074 4.946972 +H 24.665678 -4.785365 3.456353 +H 22.887845 -4.917707 3.420104 +H 23.716475 -4.411921 4.929059 diff --git a/pla_rotate_in_graphene.align_x.degree_240.xyz b/pla_rotate_in_graphene.align_x.degree_240.xyz new file mode 100644 index 0000000..b4bc8fc --- /dev/null +++ b/pla_rotate_in_graphene.align_x.degree_240.xyz @@ -0,0 +1,206 @@ +204 +Lattice="27.060000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 13.530000 0.000000 0.000000 +C 12.300000 0.710141 0.000000 +C 12.300000 2.130423 0.000000 +C 13.530000 2.840563 0.000000 +C 13.530000 4.261000 0.000000 +C 12.300000 4.971141 0.000000 +C 12.300000 6.391423 0.000000 +C 13.530000 7.101563 0.000000 +C 13.530000 8.522000 0.000000 +C 12.300000 9.232141 0.000000 +C 12.300000 10.652423 0.000000 +C 13.530000 11.362563 0.000000 +C 15.990000 0.000000 0.000000 +C 14.760000 0.710141 0.000000 +C 14.760000 2.130423 0.000000 +C 15.990000 2.840563 0.000000 +C 15.990000 4.261000 0.000000 +C 14.760000 4.971141 0.000000 +C 14.760000 6.391423 0.000000 +C 15.990000 7.101563 0.000000 +C 15.990000 8.522000 0.000000 +C 14.760000 9.232141 0.000000 +C 14.760000 10.652423 0.000000 +C 15.990000 11.362563 0.000000 +C 18.450000 0.000000 0.000000 +C 17.220000 0.710141 0.000000 +C 17.220000 2.130423 0.000000 +C 18.450000 2.840563 0.000000 +C 18.450000 4.261000 0.000000 +C 17.220000 4.971141 0.000000 +C 17.220000 6.391423 0.000000 +C 18.450000 7.101563 0.000000 +C 18.450000 8.522000 0.000000 +C 17.220000 9.232141 0.000000 +C 17.220000 10.652423 0.000000 +C 18.450000 11.362563 0.000000 +C 20.910000 0.000000 0.000000 +C 19.680000 0.710141 0.000000 +C 19.680000 2.130423 0.000000 +C 20.910000 2.840563 0.000000 +C 20.910000 4.261000 0.000000 +C 19.680000 4.971141 0.000000 +C 19.680000 6.391423 0.000000 +C 20.910000 7.101563 0.000000 +C 20.910000 8.522000 0.000000 +C 19.680000 9.232141 0.000000 +C 19.680000 10.652423 0.000000 +C 20.910000 11.362563 0.000000 +C 23.370000 0.000000 0.000000 +C 22.140000 0.710141 0.000000 +C 22.140000 2.130423 0.000000 +C 23.370000 2.840563 0.000000 +C 23.370000 4.261000 0.000000 +C 22.140000 4.971141 0.000000 +C 22.140000 6.391423 0.000000 +C 23.370000 7.101563 0.000000 +C 23.370000 8.522000 0.000000 +C 22.140000 9.232141 0.000000 +C 22.140000 10.652423 0.000000 +C 23.370000 11.362563 0.000000 +C 25.830000 0.000000 0.000000 +C 24.600000 0.710141 0.000000 +C 24.600000 2.130423 0.000000 +C 25.830000 2.840563 0.000000 +C 25.830000 4.261000 0.000000 +C 24.600000 4.971141 0.000000 +C 24.600000 6.391423 0.000000 +C 25.830000 7.101563 0.000000 +C 25.830000 8.522000 0.000000 +C 24.600000 9.232141 0.000000 +C 24.600000 10.652423 0.000000 +C 25.830000 11.362563 0.000000 +C -0.039729 -2.754593 3.979974 +C 1.168915 -1.860030 3.566874 +O 2.307747 -2.598715 3.413277 +C 0.059903 -3.098491 5.464083 +H -0.051334 -3.674332 3.376383 +O 1.115352 -0.646526 3.444389 +H 0.996232 -3.642508 5.653911 +H 0.047341 -2.180056 6.069031 +H -0.783038 -3.740362 5.752309 +C 3.560278 -1.863996 3.156069 +C 4.768588 -2.758786 3.568407 +O 5.907506 -2.019986 3.722518 +C 3.658652 -1.521286 1.671995 +H 3.549853 -0.942694 3.757530 +O 4.715056 -3.972621 3.686825 +H 4.594046 -0.977062 1.479602 +H 2.816213 -0.879498 1.383115 +H 3.644843 -2.439185 1.066661 +C 6.650815 -2.754593 3.979974 +C 7.859459 -1.860030 3.566874 +O 8.998291 -2.598715 3.413277 +C 6.750447 -3.098491 5.464083 +H 6.639210 -3.674332 3.376383 +O 7.805896 -0.646526 3.444389 +H 7.686776 -3.642508 5.653911 +H 6.737885 -2.180056 6.069031 +H 5.907506 -3.740362 5.752309 +C 10.250822 -1.863996 3.156069 +C 11.459132 -2.758786 3.568407 +O 12.598050 -2.019986 3.722518 +C 10.349196 -1.521286 1.671995 +H 10.240397 -0.942694 3.757530 +O 11.405600 -3.972621 3.686825 +H 11.284590 -0.977062 1.479602 +H 9.506757 -0.879498 1.383115 +H 10.335387 -2.439185 1.066661 +C 13.341359 -2.754593 3.979974 +C 14.550003 -1.860030 3.566874 +O 15.688835 -2.598715 3.413277 +C 13.440991 -3.098491 5.464083 +H 13.329754 -3.674332 3.376383 +O 14.496440 -0.646526 3.444389 +H 14.377320 -3.642508 5.653911 +H 13.428429 -2.180056 6.069031 +H 12.598050 -3.740362 5.752309 +C 16.941366 -1.863996 3.156069 +C 18.149676 -2.758786 3.568407 +O 19.288594 -2.019986 3.722518 +C 17.039740 -1.521286 1.671995 +H 16.930941 -0.942694 3.757530 +O 18.096144 -3.972621 3.686825 +H 17.975134 -0.977062 1.479602 +H 16.197301 -0.879498 1.383115 +H 17.025931 -2.439185 1.066661 +C 20.031903 -2.754593 3.979974 +C 21.240547 -1.860030 3.566874 +O 22.379379 -2.598715 3.413277 +C 20.131535 -3.098491 5.464083 +H 20.020298 -3.674332 3.376383 +O 21.186984 -0.646526 3.444389 +H 21.067864 -3.642508 5.653911 +H 20.118973 -2.180056 6.069031 +H 19.288594 -3.740362 5.752309 +C 23.631910 -1.863996 3.156069 +C 24.840220 -2.758786 3.568407 +O 25.979138 -2.019986 3.722518 +C 23.730284 -1.521286 1.671995 +H 23.621485 -0.942694 3.757530 +O 24.786688 -3.972621 3.686825 +H 24.665678 -0.977062 1.479602 +H 22.887845 -0.879498 1.383115 +H 23.716475 -2.439185 1.066661 diff --git a/pla_rotate_in_graphene.align_x.degree_300.xyz b/pla_rotate_in_graphene.align_x.degree_300.xyz new file mode 100644 index 0000000..675987f --- /dev/null +++ b/pla_rotate_in_graphene.align_x.degree_300.xyz @@ -0,0 +1,206 @@ +204 +Lattice="27.060000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 13.530000 0.000000 0.000000 +C 12.300000 0.710141 0.000000 +C 12.300000 2.130423 0.000000 +C 13.530000 2.840563 0.000000 +C 13.530000 4.261000 0.000000 +C 12.300000 4.971141 0.000000 +C 12.300000 6.391423 0.000000 +C 13.530000 7.101563 0.000000 +C 13.530000 8.522000 0.000000 +C 12.300000 9.232141 0.000000 +C 12.300000 10.652423 0.000000 +C 13.530000 11.362563 0.000000 +C 15.990000 0.000000 0.000000 +C 14.760000 0.710141 0.000000 +C 14.760000 2.130423 0.000000 +C 15.990000 2.840563 0.000000 +C 15.990000 4.261000 0.000000 +C 14.760000 4.971141 0.000000 +C 14.760000 6.391423 0.000000 +C 15.990000 7.101563 0.000000 +C 15.990000 8.522000 0.000000 +C 14.760000 9.232141 0.000000 +C 14.760000 10.652423 0.000000 +C 15.990000 11.362563 0.000000 +C 18.450000 0.000000 0.000000 +C 17.220000 0.710141 0.000000 +C 17.220000 2.130423 0.000000 +C 18.450000 2.840563 0.000000 +C 18.450000 4.261000 0.000000 +C 17.220000 4.971141 0.000000 +C 17.220000 6.391423 0.000000 +C 18.450000 7.101563 0.000000 +C 18.450000 8.522000 0.000000 +C 17.220000 9.232141 0.000000 +C 17.220000 10.652423 0.000000 +C 18.450000 11.362563 0.000000 +C 20.910000 0.000000 0.000000 +C 19.680000 0.710141 0.000000 +C 19.680000 2.130423 0.000000 +C 20.910000 2.840563 0.000000 +C 20.910000 4.261000 0.000000 +C 19.680000 4.971141 0.000000 +C 19.680000 6.391423 0.000000 +C 20.910000 7.101563 0.000000 +C 20.910000 8.522000 0.000000 +C 19.680000 9.232141 0.000000 +C 19.680000 10.652423 0.000000 +C 20.910000 11.362563 0.000000 +C 23.370000 0.000000 0.000000 +C 22.140000 0.710141 0.000000 +C 22.140000 2.130423 0.000000 +C 23.370000 2.840563 0.000000 +C 23.370000 4.261000 0.000000 +C 22.140000 4.971141 0.000000 +C 22.140000 6.391423 0.000000 +C 23.370000 7.101563 0.000000 +C 23.370000 8.522000 0.000000 +C 22.140000 9.232141 0.000000 +C 22.140000 10.652423 0.000000 +C 23.370000 11.362563 0.000000 +C 25.830000 0.000000 0.000000 +C 24.600000 0.710141 0.000000 +C 24.600000 2.130423 0.000000 +C 25.830000 2.840563 0.000000 +C 25.830000 4.261000 0.000000 +C 24.600000 4.971141 0.000000 +C 24.600000 6.391423 0.000000 +C 25.830000 7.101563 0.000000 +C 25.830000 8.522000 0.000000 +C 24.600000 9.232141 0.000000 +C 24.600000 10.652423 0.000000 +C 25.830000 11.362563 0.000000 +C -0.039729 -2.888997 3.388512 +C 1.168915 -2.083960 3.956676 +O 2.307747 -2.320284 3.240158 +C 0.059903 -4.346222 3.832742 +H -0.051334 -2.826141 2.290199 +O 1.115352 -1.371133 4.946359 +H 0.996232 -4.782626 3.456524 +H 0.047341 -4.410905 4.930604 +H -0.783038 -4.916768 3.420978 +C 3.560278 -1.730176 3.747839 +C 4.768588 -2.534666 3.179097 +O 5.907506 -2.298730 3.895972 +C 3.658652 -0.273575 3.302598 +H 3.549853 -1.790405 4.846441 +O 4.715056 -3.244136 2.187094 +H 4.594046 0.165155 3.677713 +H 2.816213 0.297497 3.713962 +H 3.644843 -0.208289 2.205007 +C 6.650815 -2.888997 3.388512 +C 7.859459 -2.083960 3.956676 +O 8.998291 -2.320284 3.240158 +C 6.750447 -4.346222 3.832742 +H 6.639210 -2.826141 2.290199 +O 7.805896 -1.371133 4.946359 +H 7.686776 -4.782626 3.456524 +H 6.737885 -4.410905 4.930604 +H 5.907506 -4.916768 3.420978 +C 10.250822 -1.730176 3.747839 +C 11.459132 -2.534666 3.179097 +O 12.598050 -2.298730 3.895972 +C 10.349196 -0.273575 3.302598 +H 10.240397 -1.790405 4.846441 +O 11.405600 -3.244136 2.187094 +H 11.284590 0.165155 3.677713 +H 9.506757 0.297497 3.713962 +H 10.335387 -0.208289 2.205007 +C 13.341359 -2.888997 3.388512 +C 14.550003 -2.083960 3.956676 +O 15.688835 -2.320284 3.240158 +C 13.440991 -4.346222 3.832742 +H 13.329754 -2.826141 2.290199 +O 14.496440 -1.371133 4.946359 +H 14.377320 -4.782626 3.456524 +H 13.428429 -4.410905 4.930604 +H 12.598050 -4.916768 3.420978 +C 16.941366 -1.730176 3.747839 +C 18.149676 -2.534666 3.179097 +O 19.288594 -2.298730 3.895972 +C 17.039740 -0.273575 3.302598 +H 16.930941 -1.790405 4.846441 +O 18.096144 -3.244136 2.187094 +H 17.975134 0.165155 3.677713 +H 16.197301 0.297497 3.713962 +H 17.025931 -0.208289 2.205007 +C 20.031903 -2.888997 3.388512 +C 21.240547 -2.083960 3.956676 +O 22.379379 -2.320284 3.240158 +C 20.131535 -4.346222 3.832742 +H 20.020298 -2.826141 2.290199 +O 21.186984 -1.371133 4.946359 +H 21.067864 -4.782626 3.456524 +H 20.118973 -4.410905 4.930604 +H 19.288594 -4.916768 3.420978 +C 23.631910 -1.730176 3.747839 +C 24.840220 -2.534666 3.179097 +O 25.979138 -2.298730 3.895972 +C 23.730284 -0.273575 3.302598 +H 23.621485 -1.790405 4.846441 +O 24.786688 -3.244136 2.187094 +H 24.665678 0.165155 3.677713 +H 22.887845 0.297497 3.713962 +H 23.716475 -0.208289 2.205007 diff --git a/pla_rotate_in_graphene.align_x.degree_360.xyz b/pla_rotate_in_graphene.align_x.degree_360.xyz new file mode 100644 index 0000000..675987f --- /dev/null +++ b/pla_rotate_in_graphene.align_x.degree_360.xyz @@ -0,0 +1,206 @@ +204 +Lattice="27.060000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 13.530000 0.000000 0.000000 +C 12.300000 0.710141 0.000000 +C 12.300000 2.130423 0.000000 +C 13.530000 2.840563 0.000000 +C 13.530000 4.261000 0.000000 +C 12.300000 4.971141 0.000000 +C 12.300000 6.391423 0.000000 +C 13.530000 7.101563 0.000000 +C 13.530000 8.522000 0.000000 +C 12.300000 9.232141 0.000000 +C 12.300000 10.652423 0.000000 +C 13.530000 11.362563 0.000000 +C 15.990000 0.000000 0.000000 +C 14.760000 0.710141 0.000000 +C 14.760000 2.130423 0.000000 +C 15.990000 2.840563 0.000000 +C 15.990000 4.261000 0.000000 +C 14.760000 4.971141 0.000000 +C 14.760000 6.391423 0.000000 +C 15.990000 7.101563 0.000000 +C 15.990000 8.522000 0.000000 +C 14.760000 9.232141 0.000000 +C 14.760000 10.652423 0.000000 +C 15.990000 11.362563 0.000000 +C 18.450000 0.000000 0.000000 +C 17.220000 0.710141 0.000000 +C 17.220000 2.130423 0.000000 +C 18.450000 2.840563 0.000000 +C 18.450000 4.261000 0.000000 +C 17.220000 4.971141 0.000000 +C 17.220000 6.391423 0.000000 +C 18.450000 7.101563 0.000000 +C 18.450000 8.522000 0.000000 +C 17.220000 9.232141 0.000000 +C 17.220000 10.652423 0.000000 +C 18.450000 11.362563 0.000000 +C 20.910000 0.000000 0.000000 +C 19.680000 0.710141 0.000000 +C 19.680000 2.130423 0.000000 +C 20.910000 2.840563 0.000000 +C 20.910000 4.261000 0.000000 +C 19.680000 4.971141 0.000000 +C 19.680000 6.391423 0.000000 +C 20.910000 7.101563 0.000000 +C 20.910000 8.522000 0.000000 +C 19.680000 9.232141 0.000000 +C 19.680000 10.652423 0.000000 +C 20.910000 11.362563 0.000000 +C 23.370000 0.000000 0.000000 +C 22.140000 0.710141 0.000000 +C 22.140000 2.130423 0.000000 +C 23.370000 2.840563 0.000000 +C 23.370000 4.261000 0.000000 +C 22.140000 4.971141 0.000000 +C 22.140000 6.391423 0.000000 +C 23.370000 7.101563 0.000000 +C 23.370000 8.522000 0.000000 +C 22.140000 9.232141 0.000000 +C 22.140000 10.652423 0.000000 +C 23.370000 11.362563 0.000000 +C 25.830000 0.000000 0.000000 +C 24.600000 0.710141 0.000000 +C 24.600000 2.130423 0.000000 +C 25.830000 2.840563 0.000000 +C 25.830000 4.261000 0.000000 +C 24.600000 4.971141 0.000000 +C 24.600000 6.391423 0.000000 +C 25.830000 7.101563 0.000000 +C 25.830000 8.522000 0.000000 +C 24.600000 9.232141 0.000000 +C 24.600000 10.652423 0.000000 +C 25.830000 11.362563 0.000000 +C -0.039729 -2.888997 3.388512 +C 1.168915 -2.083960 3.956676 +O 2.307747 -2.320284 3.240158 +C 0.059903 -4.346222 3.832742 +H -0.051334 -2.826141 2.290199 +O 1.115352 -1.371133 4.946359 +H 0.996232 -4.782626 3.456524 +H 0.047341 -4.410905 4.930604 +H -0.783038 -4.916768 3.420978 +C 3.560278 -1.730176 3.747839 +C 4.768588 -2.534666 3.179097 +O 5.907506 -2.298730 3.895972 +C 3.658652 -0.273575 3.302598 +H 3.549853 -1.790405 4.846441 +O 4.715056 -3.244136 2.187094 +H 4.594046 0.165155 3.677713 +H 2.816213 0.297497 3.713962 +H 3.644843 -0.208289 2.205007 +C 6.650815 -2.888997 3.388512 +C 7.859459 -2.083960 3.956676 +O 8.998291 -2.320284 3.240158 +C 6.750447 -4.346222 3.832742 +H 6.639210 -2.826141 2.290199 +O 7.805896 -1.371133 4.946359 +H 7.686776 -4.782626 3.456524 +H 6.737885 -4.410905 4.930604 +H 5.907506 -4.916768 3.420978 +C 10.250822 -1.730176 3.747839 +C 11.459132 -2.534666 3.179097 +O 12.598050 -2.298730 3.895972 +C 10.349196 -0.273575 3.302598 +H 10.240397 -1.790405 4.846441 +O 11.405600 -3.244136 2.187094 +H 11.284590 0.165155 3.677713 +H 9.506757 0.297497 3.713962 +H 10.335387 -0.208289 2.205007 +C 13.341359 -2.888997 3.388512 +C 14.550003 -2.083960 3.956676 +O 15.688835 -2.320284 3.240158 +C 13.440991 -4.346222 3.832742 +H 13.329754 -2.826141 2.290199 +O 14.496440 -1.371133 4.946359 +H 14.377320 -4.782626 3.456524 +H 13.428429 -4.410905 4.930604 +H 12.598050 -4.916768 3.420978 +C 16.941366 -1.730176 3.747839 +C 18.149676 -2.534666 3.179097 +O 19.288594 -2.298730 3.895972 +C 17.039740 -0.273575 3.302598 +H 16.930941 -1.790405 4.846441 +O 18.096144 -3.244136 2.187094 +H 17.975134 0.165155 3.677713 +H 16.197301 0.297497 3.713962 +H 17.025931 -0.208289 2.205007 +C 20.031903 -2.888997 3.388512 +C 21.240547 -2.083960 3.956676 +O 22.379379 -2.320284 3.240158 +C 20.131535 -4.346222 3.832742 +H 20.020298 -2.826141 2.290199 +O 21.186984 -1.371133 4.946359 +H 21.067864 -4.782626 3.456524 +H 20.118973 -4.410905 4.930604 +H 19.288594 -4.916768 3.420978 +C 23.631910 -1.730176 3.747839 +C 24.840220 -2.534666 3.179097 +O 25.979138 -2.298730 3.895972 +C 23.730284 -0.273575 3.302598 +H 23.621485 -1.790405 4.846441 +O 24.786688 -3.244136 2.187094 +H 24.665678 0.165155 3.677713 +H 22.887845 0.297497 3.713962 +H 23.716475 -0.208289 2.205007 diff --git a/pla_rotate_in_graphene.align_x.degree_60.xyz b/pla_rotate_in_graphene.align_x.degree_60.xyz new file mode 100644 index 0000000..7d5b2d8 --- /dev/null +++ b/pla_rotate_in_graphene.align_x.degree_60.xyz @@ -0,0 +1,206 @@ +204 +Lattice="27.060000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 13.530000 0.000000 0.000000 +C 12.300000 0.710141 0.000000 +C 12.300000 2.130423 0.000000 +C 13.530000 2.840563 0.000000 +C 13.530000 4.261000 0.000000 +C 12.300000 4.971141 0.000000 +C 12.300000 6.391423 0.000000 +C 13.530000 7.101563 0.000000 +C 13.530000 8.522000 0.000000 +C 12.300000 9.232141 0.000000 +C 12.300000 10.652423 0.000000 +C 13.530000 11.362563 0.000000 +C 15.990000 0.000000 0.000000 +C 14.760000 0.710141 0.000000 +C 14.760000 2.130423 0.000000 +C 15.990000 2.840563 0.000000 +C 15.990000 4.261000 0.000000 +C 14.760000 4.971141 0.000000 +C 14.760000 6.391423 0.000000 +C 15.990000 7.101563 0.000000 +C 15.990000 8.522000 0.000000 +C 14.760000 9.232141 0.000000 +C 14.760000 10.652423 0.000000 +C 15.990000 11.362563 0.000000 +C 18.450000 0.000000 0.000000 +C 17.220000 0.710141 0.000000 +C 17.220000 2.130423 0.000000 +C 18.450000 2.840563 0.000000 +C 18.450000 4.261000 0.000000 +C 17.220000 4.971141 0.000000 +C 17.220000 6.391423 0.000000 +C 18.450000 7.101563 0.000000 +C 18.450000 8.522000 0.000000 +C 17.220000 9.232141 0.000000 +C 17.220000 10.652423 0.000000 +C 18.450000 11.362563 0.000000 +C 20.910000 0.000000 0.000000 +C 19.680000 0.710141 0.000000 +C 19.680000 2.130423 0.000000 +C 20.910000 2.840563 0.000000 +C 20.910000 4.261000 0.000000 +C 19.680000 4.971141 0.000000 +C 19.680000 6.391423 0.000000 +C 20.910000 7.101563 0.000000 +C 20.910000 8.522000 0.000000 +C 19.680000 9.232141 0.000000 +C 19.680000 10.652423 0.000000 +C 20.910000 11.362563 0.000000 +C 23.370000 0.000000 0.000000 +C 22.140000 0.710141 0.000000 +C 22.140000 2.130423 0.000000 +C 23.370000 2.840563 0.000000 +C 23.370000 4.261000 0.000000 +C 22.140000 4.971141 0.000000 +C 22.140000 6.391423 0.000000 +C 23.370000 7.101563 0.000000 +C 23.370000 8.522000 0.000000 +C 22.140000 9.232141 0.000000 +C 22.140000 10.652423 0.000000 +C 23.370000 11.362563 0.000000 +C 25.830000 0.000000 0.000000 +C 24.600000 0.710141 0.000000 +C 24.600000 2.130423 0.000000 +C 25.830000 2.840563 0.000000 +C 25.830000 4.261000 0.000000 +C 24.600000 4.971141 0.000000 +C 24.600000 6.391423 0.000000 +C 25.830000 7.101563 0.000000 +C 25.830000 8.522000 0.000000 +C 24.600000 9.232141 0.000000 +C 24.600000 10.652423 0.000000 +C 25.830000 11.362563 0.000000 +C -0.039729 -1.865493 3.156331 +C 1.168915 -2.760056 3.569431 +O 2.307747 -2.021371 3.723028 +C 0.059903 -1.521595 1.672222 +H -0.051334 -0.945754 3.759922 +O 1.115352 -3.973560 3.691916 +H 0.996232 -0.977578 1.482394 +H 0.047341 -2.440029 1.067274 +H -0.783038 -0.879724 1.383997 +C 3.560278 -2.756089 3.980236 +C 4.768588 -1.861299 3.567898 +O 5.907506 -2.600099 3.413787 +C 3.658652 -3.098800 5.464310 +H 3.549853 -3.677392 3.378775 +O 4.715056 -0.647465 3.449481 +H 4.594046 -3.643024 5.656704 +H 2.816213 -3.740588 5.753191 +H 3.644843 -2.180901 6.069645 +C 6.650815 -1.865493 3.156331 +C 7.859459 -2.760056 3.569431 +O 8.998291 -2.021371 3.723028 +C 6.750447 -1.521595 1.672222 +H 6.639210 -0.945754 3.759922 +O 7.805896 -3.973560 3.691916 +H 7.686776 -0.977578 1.482394 +H 6.737885 -2.440029 1.067274 +H 5.907506 -0.879724 1.383997 +C 10.250822 -2.756089 3.980236 +C 11.459132 -1.861299 3.567898 +O 12.598050 -2.600099 3.413787 +C 10.349196 -3.098800 5.464310 +H 10.240397 -3.677392 3.378775 +O 11.405600 -0.647465 3.449481 +H 11.284590 -3.643024 5.656704 +H 9.506757 -3.740588 5.753191 +H 10.335387 -2.180901 6.069645 +C 13.341359 -1.865493 3.156331 +C 14.550003 -2.760056 3.569431 +O 15.688835 -2.021371 3.723028 +C 13.440991 -1.521595 1.672222 +H 13.329754 -0.945754 3.759922 +O 14.496440 -3.973560 3.691916 +H 14.377320 -0.977578 1.482394 +H 13.428429 -2.440029 1.067274 +H 12.598050 -0.879724 1.383997 +C 16.941366 -2.756089 3.980236 +C 18.149676 -1.861299 3.567898 +O 19.288594 -2.600099 3.413787 +C 17.039740 -3.098800 5.464310 +H 16.930941 -3.677392 3.378775 +O 18.096144 -0.647465 3.449481 +H 17.975134 -3.643024 5.656704 +H 16.197301 -3.740588 5.753191 +H 17.025931 -2.180901 6.069645 +C 20.031903 -1.865493 3.156331 +C 21.240547 -2.760056 3.569431 +O 22.379379 -2.021371 3.723028 +C 20.131535 -1.521595 1.672222 +H 20.020298 -0.945754 3.759922 +O 21.186984 -3.973560 3.691916 +H 21.067864 -0.977578 1.482394 +H 20.118973 -2.440029 1.067274 +H 19.288594 -0.879724 1.383997 +C 23.631910 -2.756089 3.980236 +C 24.840220 -1.861299 3.567898 +O 25.979138 -2.600099 3.413787 +C 23.730284 -3.098800 5.464310 +H 23.621485 -3.677392 3.378775 +O 24.786688 -0.647465 3.449481 +H 24.665678 -3.643024 5.656704 +H 22.887845 -3.740588 5.753191 +H 23.716475 -2.180901 6.069645 diff --git a/pla_rotate_in_graphene.align_y.degree_120.xyz b/pla_rotate_in_graphene.align_y.degree_120.xyz new file mode 100644 index 0000000..72b6ffe --- /dev/null +++ b/pla_rotate_in_graphene.align_y.degree_120.xyz @@ -0,0 +1,80 @@ +78 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 2.889936 -0.039729 3.389125 +C 2.084899 1.168915 3.957289 +O 2.321223 2.307747 3.240771 +C 4.347161 0.059903 3.833355 +H 2.827080 -0.051334 2.290812 +O 1.372072 1.115352 4.946972 +H 4.783565 0.996232 3.457137 +H 4.411844 0.047341 4.931217 +H 4.917707 -0.783038 3.421591 +C 1.731115 3.560278 3.748452 +C 2.535605 4.768588 3.179710 +O 2.299669 5.907506 3.896585 +C 0.274514 3.658652 3.303211 +H 1.791344 3.549853 4.847054 +O 3.245075 4.715056 2.187707 +H -0.164216 4.594046 3.678326 +H -0.296558 2.816213 3.714575 +H 0.209228 3.644843 2.205620 diff --git a/pla_rotate_in_graphene.align_y.degree_180.xyz b/pla_rotate_in_graphene.align_y.degree_180.xyz new file mode 100644 index 0000000..48cf84f --- /dev/null +++ b/pla_rotate_in_graphene.align_y.degree_180.xyz @@ -0,0 +1,80 @@ +78 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 1.731213 -0.039729 3.745554 +C 2.536250 1.168915 3.177390 +O 2.299926 2.307747 3.893908 +C 0.273988 0.059903 3.301324 +H 1.794069 -0.051334 4.843867 +O 3.249077 1.115352 2.187707 +H -0.162416 0.996232 3.677542 +H 0.209305 0.047341 2.203462 +H -0.296558 -0.783038 3.713088 +C 2.890034 3.560278 3.386227 +C 2.085544 4.768588 3.954969 +O 2.321480 5.907506 3.238094 +C 4.346635 3.658652 3.831468 +H 2.829805 3.549853 2.287625 +O 1.376074 4.715056 4.946972 +H 4.785365 4.594046 3.456353 +H 4.917707 2.816213 3.420104 +H 4.411921 3.644843 4.929059 diff --git a/pla_rotate_in_graphene.align_y.degree_240.xyz b/pla_rotate_in_graphene.align_y.degree_240.xyz new file mode 100644 index 0000000..1d6ce76 --- /dev/null +++ b/pla_rotate_in_graphene.align_y.degree_240.xyz @@ -0,0 +1,80 @@ +78 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 2.754593 -0.039729 3.979974 +C 1.860030 1.168915 3.566874 +O 2.598715 2.307747 3.413277 +C 3.098491 0.059903 5.464083 +H 3.674332 -0.051334 3.376383 +O 0.646526 1.115352 3.444389 +H 3.642508 0.996232 5.653911 +H 2.180056 0.047341 6.069031 +H 3.740362 -0.783038 5.752309 +C 1.863996 3.560278 3.156069 +C 2.758786 4.768588 3.568407 +O 2.019986 5.907506 3.722518 +C 1.521286 3.658652 1.671995 +H 0.942694 3.549853 3.757530 +O 3.972621 4.715056 3.686825 +H 0.977062 4.594046 1.479602 +H 0.879498 2.816213 1.383115 +H 2.439185 3.644843 1.066661 diff --git a/pla_rotate_in_graphene.align_y.degree_300.xyz b/pla_rotate_in_graphene.align_y.degree_300.xyz new file mode 100644 index 0000000..62bff0e --- /dev/null +++ b/pla_rotate_in_graphene.align_y.degree_300.xyz @@ -0,0 +1,80 @@ +78 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 2.888997 -0.039729 3.388512 +C 2.083960 1.168915 3.956676 +O 2.320284 2.307747 3.240158 +C 4.346222 0.059903 3.832742 +H 2.826141 -0.051334 2.290199 +O 1.371133 1.115352 4.946359 +H 4.782626 0.996232 3.456524 +H 4.410905 0.047341 4.930604 +H 4.916768 -0.783038 3.420978 +C 1.730176 3.560278 3.747839 +C 2.534666 4.768588 3.179097 +O 2.298730 5.907506 3.895972 +C 0.273575 3.658652 3.302598 +H 1.790405 3.549853 4.846441 +O 3.244136 4.715056 2.187094 +H -0.165155 4.594046 3.677713 +H -0.297497 2.816213 3.713962 +H 0.208289 3.644843 2.205007 diff --git a/pla_rotate_in_graphene.align_y.degree_360.xyz b/pla_rotate_in_graphene.align_y.degree_360.xyz new file mode 100644 index 0000000..62bff0e --- /dev/null +++ b/pla_rotate_in_graphene.align_y.degree_360.xyz @@ -0,0 +1,80 @@ +78 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 2.888997 -0.039729 3.388512 +C 2.083960 1.168915 3.956676 +O 2.320284 2.307747 3.240158 +C 4.346222 0.059903 3.832742 +H 2.826141 -0.051334 2.290199 +O 1.371133 1.115352 4.946359 +H 4.782626 0.996232 3.456524 +H 4.410905 0.047341 4.930604 +H 4.916768 -0.783038 3.420978 +C 1.730176 3.560278 3.747839 +C 2.534666 4.768588 3.179097 +O 2.298730 5.907506 3.895972 +C 0.273575 3.658652 3.302598 +H 1.790405 3.549853 4.846441 +O 3.244136 4.715056 2.187094 +H -0.165155 4.594046 3.677713 +H -0.297497 2.816213 3.713962 +H 0.208289 3.644843 2.205007 diff --git a/pla_rotate_in_graphene.align_y.degree_60.xyz b/pla_rotate_in_graphene.align_y.degree_60.xyz new file mode 100644 index 0000000..153314f --- /dev/null +++ b/pla_rotate_in_graphene.align_y.degree_60.xyz @@ -0,0 +1,80 @@ +78 +Lattice="12.300000 0.000000 0.000000 0.000000 21.305000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 1.865493 -0.039729 3.156331 +C 2.760056 1.168915 3.569431 +O 2.021371 2.307747 3.723028 +C 1.521595 0.059903 1.672222 +H 0.945754 -0.051334 3.759922 +O 3.973560 1.115352 3.691916 +H 0.977578 0.996232 1.482394 +H 2.440029 0.047341 1.067274 +H 0.879724 -0.783038 1.383997 +C 2.756089 3.560278 3.980236 +C 1.861299 4.768588 3.567898 +O 2.600099 5.907506 3.413787 +C 3.098800 3.658652 5.464310 +H 3.677392 3.549853 3.378775 +O 0.647465 4.715056 3.449481 +H 3.643024 4.594046 5.656704 +H 3.740588 2.816213 5.753191 +H 2.180901 3.644843 6.069645 diff --git a/pla_rotate_in_graphene.align_z.degree_120.xyz b/pla_rotate_in_graphene.align_z.degree_120.xyz new file mode 100644 index 0000000..ade2899 --- /dev/null +++ b/pla_rotate_in_graphene.align_z.degree_120.xyz @@ -0,0 +1,62 @@ +60 +Lattice="12.300000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 diff --git a/pla_rotate_in_graphene.align_z.degree_180.xyz b/pla_rotate_in_graphene.align_z.degree_180.xyz new file mode 100644 index 0000000..ade2899 --- /dev/null +++ b/pla_rotate_in_graphene.align_z.degree_180.xyz @@ -0,0 +1,62 @@ +60 +Lattice="12.300000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 diff --git a/pla_rotate_in_graphene.align_z.degree_240.xyz b/pla_rotate_in_graphene.align_z.degree_240.xyz new file mode 100644 index 0000000..ade2899 --- /dev/null +++ b/pla_rotate_in_graphene.align_z.degree_240.xyz @@ -0,0 +1,62 @@ +60 +Lattice="12.300000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 diff --git a/pla_rotate_in_graphene.align_z.degree_300.xyz b/pla_rotate_in_graphene.align_z.degree_300.xyz new file mode 100644 index 0000000..ade2899 --- /dev/null +++ b/pla_rotate_in_graphene.align_z.degree_300.xyz @@ -0,0 +1,62 @@ +60 +Lattice="12.300000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 diff --git a/pla_rotate_in_graphene.align_z.degree_360.xyz b/pla_rotate_in_graphene.align_z.degree_360.xyz new file mode 100644 index 0000000..ade2899 --- /dev/null +++ b/pla_rotate_in_graphene.align_z.degree_360.xyz @@ -0,0 +1,62 @@ +60 +Lattice="12.300000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 diff --git a/pla_rotate_in_graphene.align_z.degree_60.xyz b/pla_rotate_in_graphene.align_z.degree_60.xyz new file mode 100644 index 0000000..ade2899 --- /dev/null +++ b/pla_rotate_in_graphene.align_z.degree_60.xyz @@ -0,0 +1,62 @@ +60 +Lattice="12.300000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 diff --git a/polymer_adsorbed.1.xyz b/polymer_adsorbed.1.xyz new file mode 100644 index 0000000..d92a756 --- /dev/null +++ b/polymer_adsorbed.1.xyz @@ -0,0 +1,206 @@ +204 +Lattice="27.060000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 13.530000 0.000000 0.000000 +C 12.300000 0.710141 0.000000 +C 12.300000 2.130423 0.000000 +C 13.530000 2.840563 0.000000 +C 13.530000 4.261000 0.000000 +C 12.300000 4.971141 0.000000 +C 12.300000 6.391423 0.000000 +C 13.530000 7.101563 0.000000 +C 13.530000 8.522000 0.000000 +C 12.300000 9.232141 0.000000 +C 12.300000 10.652423 0.000000 +C 13.530000 11.362563 0.000000 +C 15.990000 0.000000 0.000000 +C 14.760000 0.710141 0.000000 +C 14.760000 2.130423 0.000000 +C 15.990000 2.840563 0.000000 +C 15.990000 4.261000 0.000000 +C 14.760000 4.971141 0.000000 +C 14.760000 6.391423 0.000000 +C 15.990000 7.101563 0.000000 +C 15.990000 8.522000 0.000000 +C 14.760000 9.232141 0.000000 +C 14.760000 10.652423 0.000000 +C 15.990000 11.362563 0.000000 +C 18.450000 0.000000 0.000000 +C 17.220000 0.710141 0.000000 +C 17.220000 2.130423 0.000000 +C 18.450000 2.840563 0.000000 +C 18.450000 4.261000 0.000000 +C 17.220000 4.971141 0.000000 +C 17.220000 6.391423 0.000000 +C 18.450000 7.101563 0.000000 +C 18.450000 8.522000 0.000000 +C 17.220000 9.232141 0.000000 +C 17.220000 10.652423 0.000000 +C 18.450000 11.362563 0.000000 +C 20.910000 0.000000 0.000000 +C 19.680000 0.710141 0.000000 +C 19.680000 2.130423 0.000000 +C 20.910000 2.840563 0.000000 +C 20.910000 4.261000 0.000000 +C 19.680000 4.971141 0.000000 +C 19.680000 6.391423 0.000000 +C 20.910000 7.101563 0.000000 +C 20.910000 8.522000 0.000000 +C 19.680000 9.232141 0.000000 +C 19.680000 10.652423 0.000000 +C 20.910000 11.362563 0.000000 +C 23.370000 0.000000 0.000000 +C 22.140000 0.710141 0.000000 +C 22.140000 2.130423 0.000000 +C 23.370000 2.840563 0.000000 +C 23.370000 4.261000 0.000000 +C 22.140000 4.971141 0.000000 +C 22.140000 6.391423 0.000000 +C 23.370000 7.101563 0.000000 +C 23.370000 8.522000 0.000000 +C 22.140000 9.232141 0.000000 +C 22.140000 10.652423 0.000000 +C 23.370000 11.362563 0.000000 +C 25.830000 0.000000 0.000000 +C 24.600000 0.710141 0.000000 +C 24.600000 2.130423 0.000000 +C 25.830000 2.840563 0.000000 +C 25.830000 4.261000 0.000000 +C 24.600000 4.971141 0.000000 +C 24.600000 6.391423 0.000000 +C 25.830000 7.101563 0.000000 +C 25.830000 8.522000 0.000000 +C 24.600000 9.232141 0.000000 +C 24.600000 10.652423 0.000000 +C 25.830000 11.362563 0.000000 +C -0.039729 0.329835 2.557847 +C 1.168915 -0.475202 1.989683 +O 2.307747 -0.238878 2.706201 +C 0.059903 1.787060 2.113617 +H -0.051334 0.266979 3.656160 +O 1.115352 -1.188029 1.000000 +H 0.996232 2.223464 2.489835 +H 0.047341 1.851743 1.015755 +H -0.783038 2.357606 2.525381 +C 3.560278 -0.828986 2.198520 +C 4.768588 -0.024496 2.767262 +O 5.907506 -0.260432 2.050387 +C 3.658652 -2.285587 2.643761 +H 3.549853 -0.768757 1.099918 +O 4.715056 0.684974 3.759265 +H 4.594046 -2.724317 2.268646 +H 2.816213 -2.856659 2.232397 +H 3.644843 -2.350873 3.741352 +C 6.650815 0.329835 2.557847 +C 7.859459 -0.475202 1.989683 +O 8.998291 -0.238878 2.706201 +C 6.750447 1.787060 2.113617 +H 6.639210 0.266979 3.656160 +O 7.805896 -1.188029 1.000000 +H 7.686776 2.223464 2.489835 +H 6.737885 1.851743 1.015755 +H 5.907506 2.357606 2.525381 +C 10.250822 -0.828986 2.198520 +C 11.459132 -0.024496 2.767262 +O 12.598050 -0.260432 2.050387 +C 10.349196 -2.285587 2.643761 +H 10.240397 -0.768757 1.099918 +O 11.405600 0.684974 3.759265 +H 11.284590 -2.724317 2.268646 +H 9.506757 -2.856659 2.232397 +H 10.335387 -2.350873 3.741352 +C 13.341359 0.329835 2.557847 +C 14.550003 -0.475202 1.989683 +O 15.688835 -0.238878 2.706201 +C 13.440991 1.787060 2.113617 +H 13.329754 0.266979 3.656160 +O 14.496440 -1.188029 1.000000 +H 14.377320 2.223464 2.489835 +H 13.428429 1.851743 1.015755 +H 12.598050 2.357606 2.525381 +C 16.941366 -0.828986 2.198520 +C 18.149676 -0.024496 2.767262 +O 19.288594 -0.260432 2.050387 +C 17.039740 -2.285587 2.643761 +H 16.930941 -0.768757 1.099918 +O 18.096144 0.684974 3.759265 +H 17.975134 -2.724317 2.268646 +H 16.197301 -2.856659 2.232397 +H 17.025931 -2.350873 3.741352 +C 20.031903 0.329835 2.557847 +C 21.240547 -0.475202 1.989683 +O 22.379379 -0.238878 2.706201 +C 20.131535 1.787060 2.113617 +H 20.020298 0.266979 3.656160 +O 21.186984 -1.188029 1.000000 +H 21.067864 2.223464 2.489835 +H 20.118973 1.851743 1.015755 +H 19.288594 2.357606 2.525381 +C 23.631910 -0.828986 2.198520 +C 24.840220 -0.024496 2.767262 +O 25.979138 -0.260432 2.050387 +C 23.730284 -2.285587 2.643761 +H 23.621485 -0.768757 1.099918 +O 24.786688 0.684974 3.759265 +H 24.665678 -2.724317 2.268646 +H 22.887845 -2.856659 2.232397 +H 23.716475 -2.350873 3.741352 diff --git a/tests/TestAdorptionPolymerResults/align_test.x.to_x.xyz b/tests/TestAdorptionPolymerResults/align_test.x.to_x.xyz new file mode 100644 index 0000000..d92a756 --- /dev/null +++ b/tests/TestAdorptionPolymerResults/align_test.x.to_x.xyz @@ -0,0 +1,206 @@ +204 +Lattice="27.060000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 13.530000 0.000000 0.000000 +C 12.300000 0.710141 0.000000 +C 12.300000 2.130423 0.000000 +C 13.530000 2.840563 0.000000 +C 13.530000 4.261000 0.000000 +C 12.300000 4.971141 0.000000 +C 12.300000 6.391423 0.000000 +C 13.530000 7.101563 0.000000 +C 13.530000 8.522000 0.000000 +C 12.300000 9.232141 0.000000 +C 12.300000 10.652423 0.000000 +C 13.530000 11.362563 0.000000 +C 15.990000 0.000000 0.000000 +C 14.760000 0.710141 0.000000 +C 14.760000 2.130423 0.000000 +C 15.990000 2.840563 0.000000 +C 15.990000 4.261000 0.000000 +C 14.760000 4.971141 0.000000 +C 14.760000 6.391423 0.000000 +C 15.990000 7.101563 0.000000 +C 15.990000 8.522000 0.000000 +C 14.760000 9.232141 0.000000 +C 14.760000 10.652423 0.000000 +C 15.990000 11.362563 0.000000 +C 18.450000 0.000000 0.000000 +C 17.220000 0.710141 0.000000 +C 17.220000 2.130423 0.000000 +C 18.450000 2.840563 0.000000 +C 18.450000 4.261000 0.000000 +C 17.220000 4.971141 0.000000 +C 17.220000 6.391423 0.000000 +C 18.450000 7.101563 0.000000 +C 18.450000 8.522000 0.000000 +C 17.220000 9.232141 0.000000 +C 17.220000 10.652423 0.000000 +C 18.450000 11.362563 0.000000 +C 20.910000 0.000000 0.000000 +C 19.680000 0.710141 0.000000 +C 19.680000 2.130423 0.000000 +C 20.910000 2.840563 0.000000 +C 20.910000 4.261000 0.000000 +C 19.680000 4.971141 0.000000 +C 19.680000 6.391423 0.000000 +C 20.910000 7.101563 0.000000 +C 20.910000 8.522000 0.000000 +C 19.680000 9.232141 0.000000 +C 19.680000 10.652423 0.000000 +C 20.910000 11.362563 0.000000 +C 23.370000 0.000000 0.000000 +C 22.140000 0.710141 0.000000 +C 22.140000 2.130423 0.000000 +C 23.370000 2.840563 0.000000 +C 23.370000 4.261000 0.000000 +C 22.140000 4.971141 0.000000 +C 22.140000 6.391423 0.000000 +C 23.370000 7.101563 0.000000 +C 23.370000 8.522000 0.000000 +C 22.140000 9.232141 0.000000 +C 22.140000 10.652423 0.000000 +C 23.370000 11.362563 0.000000 +C 25.830000 0.000000 0.000000 +C 24.600000 0.710141 0.000000 +C 24.600000 2.130423 0.000000 +C 25.830000 2.840563 0.000000 +C 25.830000 4.261000 0.000000 +C 24.600000 4.971141 0.000000 +C 24.600000 6.391423 0.000000 +C 25.830000 7.101563 0.000000 +C 25.830000 8.522000 0.000000 +C 24.600000 9.232141 0.000000 +C 24.600000 10.652423 0.000000 +C 25.830000 11.362563 0.000000 +C -0.039729 0.329835 2.557847 +C 1.168915 -0.475202 1.989683 +O 2.307747 -0.238878 2.706201 +C 0.059903 1.787060 2.113617 +H -0.051334 0.266979 3.656160 +O 1.115352 -1.188029 1.000000 +H 0.996232 2.223464 2.489835 +H 0.047341 1.851743 1.015755 +H -0.783038 2.357606 2.525381 +C 3.560278 -0.828986 2.198520 +C 4.768588 -0.024496 2.767262 +O 5.907506 -0.260432 2.050387 +C 3.658652 -2.285587 2.643761 +H 3.549853 -0.768757 1.099918 +O 4.715056 0.684974 3.759265 +H 4.594046 -2.724317 2.268646 +H 2.816213 -2.856659 2.232397 +H 3.644843 -2.350873 3.741352 +C 6.650815 0.329835 2.557847 +C 7.859459 -0.475202 1.989683 +O 8.998291 -0.238878 2.706201 +C 6.750447 1.787060 2.113617 +H 6.639210 0.266979 3.656160 +O 7.805896 -1.188029 1.000000 +H 7.686776 2.223464 2.489835 +H 6.737885 1.851743 1.015755 +H 5.907506 2.357606 2.525381 +C 10.250822 -0.828986 2.198520 +C 11.459132 -0.024496 2.767262 +O 12.598050 -0.260432 2.050387 +C 10.349196 -2.285587 2.643761 +H 10.240397 -0.768757 1.099918 +O 11.405600 0.684974 3.759265 +H 11.284590 -2.724317 2.268646 +H 9.506757 -2.856659 2.232397 +H 10.335387 -2.350873 3.741352 +C 13.341359 0.329835 2.557847 +C 14.550003 -0.475202 1.989683 +O 15.688835 -0.238878 2.706201 +C 13.440991 1.787060 2.113617 +H 13.329754 0.266979 3.656160 +O 14.496440 -1.188029 1.000000 +H 14.377320 2.223464 2.489835 +H 13.428429 1.851743 1.015755 +H 12.598050 2.357606 2.525381 +C 16.941366 -0.828986 2.198520 +C 18.149676 -0.024496 2.767262 +O 19.288594 -0.260432 2.050387 +C 17.039740 -2.285587 2.643761 +H 16.930941 -0.768757 1.099918 +O 18.096144 0.684974 3.759265 +H 17.975134 -2.724317 2.268646 +H 16.197301 -2.856659 2.232397 +H 17.025931 -2.350873 3.741352 +C 20.031903 0.329835 2.557847 +C 21.240547 -0.475202 1.989683 +O 22.379379 -0.238878 2.706201 +C 20.131535 1.787060 2.113617 +H 20.020298 0.266979 3.656160 +O 21.186984 -1.188029 1.000000 +H 21.067864 2.223464 2.489835 +H 20.118973 1.851743 1.015755 +H 19.288594 2.357606 2.525381 +C 23.631910 -0.828986 2.198520 +C 24.840220 -0.024496 2.767262 +O 25.979138 -0.260432 2.050387 +C 23.730284 -2.285587 2.643761 +H 23.621485 -0.768757 1.099918 +O 24.786688 0.684974 3.759265 +H 24.665678 -2.724317 2.268646 +H 22.887845 -2.856659 2.232397 +H 23.716475 -2.350873 3.741352 diff --git a/tests/TestAdorptionPolymerResults/align_test.x.to_y.xyz b/tests/TestAdorptionPolymerResults/align_test.x.to_y.xyz new file mode 100644 index 0000000..e5e743c --- /dev/null +++ b/tests/TestAdorptionPolymerResults/align_test.x.to_y.xyz @@ -0,0 +1,80 @@ +78 +Lattice="12.300000 0.000000 0.000000 0.000000 34.088000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C -0.329835 -0.039729 2.557847 +C 0.475202 1.168915 1.989683 +O 0.238878 2.307747 2.706201 +C -1.787060 0.059903 2.113617 +H -0.266979 -0.051334 3.656160 +O 1.188029 1.115352 1.000000 +H -2.223464 0.996232 2.489835 +H -1.851743 0.047341 1.015755 +H -2.357606 -0.783038 2.525381 +C 0.828986 3.560278 2.198520 +C 0.024496 4.768588 2.767262 +O 0.260432 5.907506 2.050387 +C 2.285587 3.658652 2.643761 +H 0.768757 3.549853 1.099918 +O -0.684974 4.715056 3.759265 +H 2.724317 4.594046 2.268646 +H 2.856659 2.816213 2.232397 +H 2.350873 3.644843 3.741352 diff --git a/tests/TestAdorptionPolymerResults/align_test.x.to_z.xyz b/tests/TestAdorptionPolymerResults/align_test.x.to_z.xyz new file mode 100644 index 0000000..ade2899 --- /dev/null +++ b/tests/TestAdorptionPolymerResults/align_test.x.to_z.xyz @@ -0,0 +1,62 @@ +60 +Lattice="12.300000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 diff --git a/tests/TestAdorptionPolymerResults/align_test.y.to_x.xyz b/tests/TestAdorptionPolymerResults/align_test.y.to_x.xyz new file mode 100644 index 0000000..9559a97 --- /dev/null +++ b/tests/TestAdorptionPolymerResults/align_test.y.to_x.xyz @@ -0,0 +1,206 @@ +204 +Lattice="27.060000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 13.530000 0.000000 0.000000 +C 12.300000 0.710141 0.000000 +C 12.300000 2.130423 0.000000 +C 13.530000 2.840563 0.000000 +C 13.530000 4.261000 0.000000 +C 12.300000 4.971141 0.000000 +C 12.300000 6.391423 0.000000 +C 13.530000 7.101563 0.000000 +C 13.530000 8.522000 0.000000 +C 12.300000 9.232141 0.000000 +C 12.300000 10.652423 0.000000 +C 13.530000 11.362563 0.000000 +C 15.990000 0.000000 0.000000 +C 14.760000 0.710141 0.000000 +C 14.760000 2.130423 0.000000 +C 15.990000 2.840563 0.000000 +C 15.990000 4.261000 0.000000 +C 14.760000 4.971141 0.000000 +C 14.760000 6.391423 0.000000 +C 15.990000 7.101563 0.000000 +C 15.990000 8.522000 0.000000 +C 14.760000 9.232141 0.000000 +C 14.760000 10.652423 0.000000 +C 15.990000 11.362563 0.000000 +C 18.450000 0.000000 0.000000 +C 17.220000 0.710141 0.000000 +C 17.220000 2.130423 0.000000 +C 18.450000 2.840563 0.000000 +C 18.450000 4.261000 0.000000 +C 17.220000 4.971141 0.000000 +C 17.220000 6.391423 0.000000 +C 18.450000 7.101563 0.000000 +C 18.450000 8.522000 0.000000 +C 17.220000 9.232141 0.000000 +C 17.220000 10.652423 0.000000 +C 18.450000 11.362563 0.000000 +C 20.910000 0.000000 0.000000 +C 19.680000 0.710141 0.000000 +C 19.680000 2.130423 0.000000 +C 20.910000 2.840563 0.000000 +C 20.910000 4.261000 0.000000 +C 19.680000 4.971141 0.000000 +C 19.680000 6.391423 0.000000 +C 20.910000 7.101563 0.000000 +C 20.910000 8.522000 0.000000 +C 19.680000 9.232141 0.000000 +C 19.680000 10.652423 0.000000 +C 20.910000 11.362563 0.000000 +C 23.370000 0.000000 0.000000 +C 22.140000 0.710141 0.000000 +C 22.140000 2.130423 0.000000 +C 23.370000 2.840563 0.000000 +C 23.370000 4.261000 0.000000 +C 22.140000 4.971141 0.000000 +C 22.140000 6.391423 0.000000 +C 23.370000 7.101563 0.000000 +C 23.370000 8.522000 0.000000 +C 22.140000 9.232141 0.000000 +C 22.140000 10.652423 0.000000 +C 23.370000 11.362563 0.000000 +C 25.830000 0.000000 0.000000 +C 24.600000 0.710141 0.000000 +C 24.600000 2.130423 0.000000 +C 25.830000 2.840563 0.000000 +C 25.830000 4.261000 0.000000 +C 24.600000 4.971141 0.000000 +C 24.600000 6.391423 0.000000 +C 25.830000 7.101563 0.000000 +C 25.830000 8.522000 0.000000 +C 24.600000 9.232141 0.000000 +C 24.600000 10.652423 0.000000 +C 25.830000 11.362563 0.000000 +C -0.329835 -0.039729 2.557847 +C 0.475202 1.168915 1.989683 +O 0.238878 2.307747 2.706201 +C -1.787060 0.059903 2.113617 +H -0.266979 -0.051334 3.656160 +O 1.188029 1.115352 1.000000 +H -2.223464 0.996232 2.489835 +H -1.851743 0.047341 1.015755 +H -2.357606 -0.783038 2.525381 +C 0.828986 3.560278 2.198520 +C 0.024496 4.768588 2.767262 +O 0.260432 5.907506 2.050387 +C 2.285587 3.658652 2.643761 +H 0.768757 3.549853 1.099918 +O -0.684974 4.715056 3.759265 +H 2.724317 4.594046 2.268646 +H 2.856659 2.816213 2.232397 +H 2.350873 3.644843 3.741352 +C -0.329835 6.650815 2.557847 +C 0.475202 7.859459 1.989683 +O 0.238878 8.998291 2.706201 +C -1.787060 6.750447 2.113617 +H -0.266979 6.639210 3.656160 +O 1.188029 7.805896 1.000000 +H -2.223464 7.686776 2.489835 +H -1.851743 6.737885 1.015755 +H -2.357606 5.907506 2.525381 +C 0.828986 10.250822 2.198520 +C 0.024496 11.459132 2.767262 +O 0.260432 12.598050 2.050387 +C 2.285587 10.349196 2.643761 +H 0.768757 10.240397 1.099918 +O -0.684974 11.405600 3.759265 +H 2.724317 11.284590 2.268646 +H 2.856659 9.506757 2.232397 +H 2.350873 10.335387 3.741352 +C -0.329835 13.341359 2.557847 +C 0.475202 14.550003 1.989683 +O 0.238878 15.688835 2.706201 +C -1.787060 13.440991 2.113617 +H -0.266979 13.329754 3.656160 +O 1.188029 14.496440 1.000000 +H -2.223464 14.377320 2.489835 +H -1.851743 13.428429 1.015755 +H -2.357606 12.598050 2.525381 +C 0.828986 16.941366 2.198520 +C 0.024496 18.149676 2.767262 +O 0.260432 19.288594 2.050387 +C 2.285587 17.039740 2.643761 +H 0.768757 16.930941 1.099918 +O -0.684974 18.096144 3.759265 +H 2.724317 17.975134 2.268646 +H 2.856659 16.197301 2.232397 +H 2.350873 17.025931 3.741352 +C -0.329835 20.031903 2.557847 +C 0.475202 21.240547 1.989683 +O 0.238878 22.379379 2.706201 +C -1.787060 20.131535 2.113617 +H -0.266979 20.020298 3.656160 +O 1.188029 21.186984 1.000000 +H -2.223464 21.067864 2.489835 +H -1.851743 20.118973 1.015755 +H -2.357606 19.288594 2.525381 +C 0.828986 23.631910 2.198520 +C 0.024496 24.840220 2.767262 +O 0.260432 25.979138 2.050387 +C 2.285587 23.730284 2.643761 +H 0.768757 23.621485 1.099918 +O -0.684974 24.786688 3.759265 +H 2.724317 24.665678 2.268646 +H 2.856659 22.887845 2.232397 +H 2.350873 23.716475 3.741352 diff --git a/tests/TestAdorptionPolymerResults/align_test.y.to_y.xyz b/tests/TestAdorptionPolymerResults/align_test.y.to_y.xyz new file mode 100644 index 0000000..e5e743c --- /dev/null +++ b/tests/TestAdorptionPolymerResults/align_test.y.to_y.xyz @@ -0,0 +1,80 @@ +78 +Lattice="12.300000 0.000000 0.000000 0.000000 34.088000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C -0.329835 -0.039729 2.557847 +C 0.475202 1.168915 1.989683 +O 0.238878 2.307747 2.706201 +C -1.787060 0.059903 2.113617 +H -0.266979 -0.051334 3.656160 +O 1.188029 1.115352 1.000000 +H -2.223464 0.996232 2.489835 +H -1.851743 0.047341 1.015755 +H -2.357606 -0.783038 2.525381 +C 0.828986 3.560278 2.198520 +C 0.024496 4.768588 2.767262 +O 0.260432 5.907506 2.050387 +C 2.285587 3.658652 2.643761 +H 0.768757 3.549853 1.099918 +O -0.684974 4.715056 3.759265 +H 2.724317 4.594046 2.268646 +H 2.856659 2.816213 2.232397 +H 2.350873 3.644843 3.741352 diff --git a/tests/TestAdorptionPolymerResults/align_test.y.to_z.xyz b/tests/TestAdorptionPolymerResults/align_test.y.to_z.xyz new file mode 100644 index 0000000..ade2899 --- /dev/null +++ b/tests/TestAdorptionPolymerResults/align_test.y.to_z.xyz @@ -0,0 +1,62 @@ +60 +Lattice="12.300000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 diff --git a/tests/TestAdorptionPolymerResults/align_test.z.to_x.xyz b/tests/TestAdorptionPolymerResults/align_test.z.to_x.xyz new file mode 100644 index 0000000..9559a97 --- /dev/null +++ b/tests/TestAdorptionPolymerResults/align_test.z.to_x.xyz @@ -0,0 +1,206 @@ +204 +Lattice="27.060000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C 13.530000 0.000000 0.000000 +C 12.300000 0.710141 0.000000 +C 12.300000 2.130423 0.000000 +C 13.530000 2.840563 0.000000 +C 13.530000 4.261000 0.000000 +C 12.300000 4.971141 0.000000 +C 12.300000 6.391423 0.000000 +C 13.530000 7.101563 0.000000 +C 13.530000 8.522000 0.000000 +C 12.300000 9.232141 0.000000 +C 12.300000 10.652423 0.000000 +C 13.530000 11.362563 0.000000 +C 15.990000 0.000000 0.000000 +C 14.760000 0.710141 0.000000 +C 14.760000 2.130423 0.000000 +C 15.990000 2.840563 0.000000 +C 15.990000 4.261000 0.000000 +C 14.760000 4.971141 0.000000 +C 14.760000 6.391423 0.000000 +C 15.990000 7.101563 0.000000 +C 15.990000 8.522000 0.000000 +C 14.760000 9.232141 0.000000 +C 14.760000 10.652423 0.000000 +C 15.990000 11.362563 0.000000 +C 18.450000 0.000000 0.000000 +C 17.220000 0.710141 0.000000 +C 17.220000 2.130423 0.000000 +C 18.450000 2.840563 0.000000 +C 18.450000 4.261000 0.000000 +C 17.220000 4.971141 0.000000 +C 17.220000 6.391423 0.000000 +C 18.450000 7.101563 0.000000 +C 18.450000 8.522000 0.000000 +C 17.220000 9.232141 0.000000 +C 17.220000 10.652423 0.000000 +C 18.450000 11.362563 0.000000 +C 20.910000 0.000000 0.000000 +C 19.680000 0.710141 0.000000 +C 19.680000 2.130423 0.000000 +C 20.910000 2.840563 0.000000 +C 20.910000 4.261000 0.000000 +C 19.680000 4.971141 0.000000 +C 19.680000 6.391423 0.000000 +C 20.910000 7.101563 0.000000 +C 20.910000 8.522000 0.000000 +C 19.680000 9.232141 0.000000 +C 19.680000 10.652423 0.000000 +C 20.910000 11.362563 0.000000 +C 23.370000 0.000000 0.000000 +C 22.140000 0.710141 0.000000 +C 22.140000 2.130423 0.000000 +C 23.370000 2.840563 0.000000 +C 23.370000 4.261000 0.000000 +C 22.140000 4.971141 0.000000 +C 22.140000 6.391423 0.000000 +C 23.370000 7.101563 0.000000 +C 23.370000 8.522000 0.000000 +C 22.140000 9.232141 0.000000 +C 22.140000 10.652423 0.000000 +C 23.370000 11.362563 0.000000 +C 25.830000 0.000000 0.000000 +C 24.600000 0.710141 0.000000 +C 24.600000 2.130423 0.000000 +C 25.830000 2.840563 0.000000 +C 25.830000 4.261000 0.000000 +C 24.600000 4.971141 0.000000 +C 24.600000 6.391423 0.000000 +C 25.830000 7.101563 0.000000 +C 25.830000 8.522000 0.000000 +C 24.600000 9.232141 0.000000 +C 24.600000 10.652423 0.000000 +C 25.830000 11.362563 0.000000 +C -0.329835 -0.039729 2.557847 +C 0.475202 1.168915 1.989683 +O 0.238878 2.307747 2.706201 +C -1.787060 0.059903 2.113617 +H -0.266979 -0.051334 3.656160 +O 1.188029 1.115352 1.000000 +H -2.223464 0.996232 2.489835 +H -1.851743 0.047341 1.015755 +H -2.357606 -0.783038 2.525381 +C 0.828986 3.560278 2.198520 +C 0.024496 4.768588 2.767262 +O 0.260432 5.907506 2.050387 +C 2.285587 3.658652 2.643761 +H 0.768757 3.549853 1.099918 +O -0.684974 4.715056 3.759265 +H 2.724317 4.594046 2.268646 +H 2.856659 2.816213 2.232397 +H 2.350873 3.644843 3.741352 +C -0.329835 6.650815 2.557847 +C 0.475202 7.859459 1.989683 +O 0.238878 8.998291 2.706201 +C -1.787060 6.750447 2.113617 +H -0.266979 6.639210 3.656160 +O 1.188029 7.805896 1.000000 +H -2.223464 7.686776 2.489835 +H -1.851743 6.737885 1.015755 +H -2.357606 5.907506 2.525381 +C 0.828986 10.250822 2.198520 +C 0.024496 11.459132 2.767262 +O 0.260432 12.598050 2.050387 +C 2.285587 10.349196 2.643761 +H 0.768757 10.240397 1.099918 +O -0.684974 11.405600 3.759265 +H 2.724317 11.284590 2.268646 +H 2.856659 9.506757 2.232397 +H 2.350873 10.335387 3.741352 +C -0.329835 13.341359 2.557847 +C 0.475202 14.550003 1.989683 +O 0.238878 15.688835 2.706201 +C -1.787060 13.440991 2.113617 +H -0.266979 13.329754 3.656160 +O 1.188029 14.496440 1.000000 +H -2.223464 14.377320 2.489835 +H -1.851743 13.428429 1.015755 +H -2.357606 12.598050 2.525381 +C 0.828986 16.941366 2.198520 +C 0.024496 18.149676 2.767262 +O 0.260432 19.288594 2.050387 +C 2.285587 17.039740 2.643761 +H 0.768757 16.930941 1.099918 +O -0.684974 18.096144 3.759265 +H 2.724317 17.975134 2.268646 +H 2.856659 16.197301 2.232397 +H 2.350873 17.025931 3.741352 +C -0.329835 20.031903 2.557847 +C 0.475202 21.240547 1.989683 +O 0.238878 22.379379 2.706201 +C -1.787060 20.131535 2.113617 +H -0.266979 20.020298 3.656160 +O 1.188029 21.186984 1.000000 +H -2.223464 21.067864 2.489835 +H -1.851743 20.118973 1.015755 +H -2.357606 19.288594 2.525381 +C 0.828986 23.631910 2.198520 +C 0.024496 24.840220 2.767262 +O 0.260432 25.979138 2.050387 +C 2.285587 23.730284 2.643761 +H 0.768757 23.621485 1.099918 +O -0.684974 24.786688 3.759265 +H 2.724317 24.665678 2.268646 +H 2.856659 22.887845 2.232397 +H 2.350873 23.716475 3.741352 diff --git a/tests/TestAdorptionPolymerResults/align_test.z.to_y.xyz b/tests/TestAdorptionPolymerResults/align_test.z.to_y.xyz new file mode 100644 index 0000000..e5e743c --- /dev/null +++ b/tests/TestAdorptionPolymerResults/align_test.z.to_y.xyz @@ -0,0 +1,80 @@ +78 +Lattice="12.300000 0.000000 0.000000 0.000000 34.088000 0.000000 0.000000 0.000000 13.759265" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 +C -0.329835 -0.039729 2.557847 +C 0.475202 1.168915 1.989683 +O 0.238878 2.307747 2.706201 +C -1.787060 0.059903 2.113617 +H -0.266979 -0.051334 3.656160 +O 1.188029 1.115352 1.000000 +H -2.223464 0.996232 2.489835 +H -1.851743 0.047341 1.015755 +H -2.357606 -0.783038 2.525381 +C 0.828986 3.560278 2.198520 +C 0.024496 4.768588 2.767262 +O 0.260432 5.907506 2.050387 +C 2.285587 3.658652 2.643761 +H 0.768757 3.549853 1.099918 +O -0.684974 4.715056 3.759265 +H 2.724317 4.594046 2.268646 +H 2.856659 2.816213 2.232397 +H 2.350873 3.644843 3.741352 diff --git a/tests/TestAdorptionPolymerResults/align_test.z.to_z.xyz b/tests/TestAdorptionPolymerResults/align_test.z.to_z.xyz new file mode 100644 index 0000000..ade2899 --- /dev/null +++ b/tests/TestAdorptionPolymerResults/align_test.z.to_z.xyz @@ -0,0 +1,62 @@ +60 +Lattice="12.300000 0.000000 0.000000 0.000000 12.783000 0.000000 0.000000 0.000000 10.000000" Properties=species:S:1:pos:R:3 +C 1.230000 0.000000 0.000000 +C 0.000000 0.710141 0.000000 +C 0.000000 2.130423 0.000000 +C 1.230000 2.840563 0.000000 +C 1.230000 4.261000 0.000000 +C 0.000000 4.971141 0.000000 +C 0.000000 6.391423 0.000000 +C 1.230000 7.101563 0.000000 +C 1.230000 8.522000 0.000000 +C 0.000000 9.232141 0.000000 +C 0.000000 10.652423 0.000000 +C 1.230000 11.362563 0.000000 +C 3.690000 0.000000 0.000000 +C 2.460000 0.710141 0.000000 +C 2.460000 2.130423 0.000000 +C 3.690000 2.840563 0.000000 +C 3.690000 4.261000 0.000000 +C 2.460000 4.971141 0.000000 +C 2.460000 6.391423 0.000000 +C 3.690000 7.101563 0.000000 +C 3.690000 8.522000 0.000000 +C 2.460000 9.232141 0.000000 +C 2.460000 10.652423 0.000000 +C 3.690000 11.362563 0.000000 +C 6.150000 0.000000 0.000000 +C 4.920000 0.710141 0.000000 +C 4.920000 2.130423 0.000000 +C 6.150000 2.840563 0.000000 +C 6.150000 4.261000 0.000000 +C 4.920000 4.971141 0.000000 +C 4.920000 6.391423 0.000000 +C 6.150000 7.101563 0.000000 +C 6.150000 8.522000 0.000000 +C 4.920000 9.232141 0.000000 +C 4.920000 10.652423 0.000000 +C 6.150000 11.362563 0.000000 +C 8.610000 0.000000 0.000000 +C 7.380000 0.710141 0.000000 +C 7.380000 2.130423 0.000000 +C 8.610000 2.840563 0.000000 +C 8.610000 4.261000 0.000000 +C 7.380000 4.971141 0.000000 +C 7.380000 6.391423 0.000000 +C 8.610000 7.101563 0.000000 +C 8.610000 8.522000 0.000000 +C 7.380000 9.232141 0.000000 +C 7.380000 10.652423 0.000000 +C 8.610000 11.362563 0.000000 +C 11.070000 0.000000 0.000000 +C 9.840000 0.710141 0.000000 +C 9.840000 2.130423 0.000000 +C 11.070000 2.840563 0.000000 +C 11.070000 4.261000 0.000000 +C 9.840000 4.971141 0.000000 +C 9.840000 6.391423 0.000000 +C 11.070000 7.101563 0.000000 +C 11.070000 8.522000 0.000000 +C 9.840000 9.232141 0.000000 +C 9.840000 10.652423 0.000000 +C 11.070000 11.362563 0.000000 diff --git a/tests/test_adsorption.py b/tests/test_adsorption.py index 085e7e9..54b5577 100644 --- a/tests/test_adsorption.py +++ b/tests/test_adsorption.py @@ -37,7 +37,7 @@ def test_load(self): self.assertIsNotNone(graphene,msg='Error loading graphene.xyz') self.assertIsNotNone(tcnq, msg='Error loading tcnq.xyz') - self.assertEqual(graphene.label,"graphene2",msg="Slab label is not graphene.") + self.assertEqual(graphene.label,"graphene",msg="Slab label is not graphene.") print(graphene) print(tcnq) @@ -46,102 +46,101 @@ def test_load(self): print("\n2)") -''' -adsorbed=Adsorption(graphene) -top1_pos=array([graphene[0].coords[0],graphene[0].coords[1]]) -bridge1_pos=array([0.0,(graphene[1].coords[1]+(graphene[2].coords[1]- - graphene[1].coords[1])/2.0)]) - -graphene.add_adsorption_site("top1",top1_pos) -graphene.add_adsorption_site("bridge1",bridge1_pos) -adsorbed.resize(4,4) - -print(len(adsorbed._atoms),len(adsorbed._species)) + def test_roberto(self): + graphene=Slab("graphene","graphene.xyz") + tcnq=Molecule("tcnq","tcnq.xyz") -adsorbed.add_component(tcnq,"top1",n=2,m=2,anchor="com",vertsep=2.0,side="top") + adsorbed=Adsorption(graphene) + top1_pos=array([graphene[0].coords[0],graphene[0].coords[1]]) + bridge1_pos=array([0.0,(graphene[1].coords[1]+(graphene[2].coords[1]- + graphene[1].coords[1])/2.0)]) -print(len(adsorbed._atoms),len(adsorbed._species)) -print(tcnq.label,tcnq.center_of_mass) + graphene.add_adsorption_site("top1",top1_pos) + graphene.add_adsorption_site("bridge1",bridge1_pos) + adsorbed.resize(4,4) -adsorbed.write_xyz("adsorbed.1.xyz") + print(len(adsorbed._atoms),len(adsorbed._species)) -print("\n3)") + adsorbed.add_component(tcnq,"top1",n=2,m=2,anchor="com",vertsep=2.0,side="top") -tcnq.rotate(0,0,90) + print(len(adsorbed._atoms),len(adsorbed._species)) + print(tcnq.label,tcnq.center_of_mass) -adsorbed.write_xyz("adsorbed.2.xyz") + adsorbed.write_xyz("adsorbed.1.xyz") -print("\n4)") + print("\n3)") -print("Top: %f; Bottom: %f" % (adsorbed.top,adsorbed.bottom)) + tcnq.rotate(0,0,90) -tcnq2=tcnq.copy() + adsorbed.write_xyz("adsorbed.2.xyz") -adsorbed.add_component(tcnq2,[6.7,4.5],anchor="com",vertsep=2.5,side="bottom") + print("\n4)") -print(len(adsorbed._atoms),len(adsorbed._species)) -print(tcnq2.label,tcnq2.center_of_mass) + print("Top: %f; Bottom: %f" % (adsorbed.top,adsorbed.bottom)) -print("Top: %f; Bottom: %f" % (adsorbed.top,adsorbed.bottom)) + tcnq2=tcnq.copy() -adsorbed.write_xyz("adsorbed.3.xyz") + adsorbed.add_component(tcnq2,[6.7,4.5],anchor="com",vertsep=2.5,side="bottom") -print("\n5)") + print(len(adsorbed._atoms),len(adsorbed._species)) + print(tcnq2.label,tcnq2.center_of_mass) -tcnq2.displace([0,0,5]) + print("Top: %f; Bottom: %f" % (adsorbed.top,adsorbed.bottom)) -print(graphene.bottom-tcnq2.maxz) + adsorbed.write_xyz("adsorbed.3.xyz") -adsorbed.write_xyz("adsorbed.4.xyz") + print("\n5)") -print("\n6)") + tcnq2.displace([0,0,5]) -tcnq2.rotate(90,90,0) + print(graphene.bottom-tcnq2.maxz) -print(graphene.bottom-tcnq2.maxz) + adsorbed.write_xyz("adsorbed.4.xyz") -adsorbed.write_xyz("adsorbed.5.xyz") + print("\n6)") -print("\n7)") + tcnq2.rotate(90,90,0) -print(len(adsorbed._atoms)) + print(graphene.bottom-tcnq2.maxz) -adsorbed.remove_component(tcnq2) + adsorbed.write_xyz("adsorbed.5.xyz") -print(len(adsorbed._atoms)) + print("\n7)") -h1=Atom("H",x=[0.5,0.0,0.0]) -h2=h1.copy() -h2.coords[0]=1.5 -h2_mol=Molecule("h2") -h2_mol.add_atom(h1) -h2_mol.add_atom(h2) + print(len(adsorbed._atoms)) -adsorbed.add_component(h2_mol,[6.7,4.5],anchor="com",vertsep=1.0,side="bottom") + adsorbed.remove_component(tcnq2) -adsorbed.write_xyz("adsorbed.6.xyz") -adsorbed.write_pw_input(pseudopotentials={"C":"C.paw.UPF","H":"H.paw.UPF"}, - pwargs={"ibrav":8,"kvec":[4,4,4,0,0,0], - "occupations":"smearing"}) + print(len(adsorbed._atoms)) -h2_mol.displace([-2,2,5]) + h1=Atom("H",x=[0.5,0.0,0.0]) + h2=h1.copy() + h2.coords[0]=1.5 + h2_mol=Molecule("h2") + h2_mol.add_atom(h1) + h2_mol.add_atom(h2) -print(len(adsorbed._atoms)) + adsorbed.add_component(h2_mol,[6.7,4.5],anchor="com",vertsep=1.0,side="bottom") -adsorbed.write_xyz("adsorbed.7.xyz") + adsorbed.write_xyz("adsorbed.6.xyz") + adsorbed.write_pw_input(pseudopotentials={"C":"C.paw.UPF","H":"H.paw.UPF"}, + pwargs={"ibrav":8,"kvec":[4,4,4,0,0,0], + "occupations":"smearing"}) -print("\n8)") + h2_mol.displace([-2,2,5]) -adsorbed.set_separation(h2_mol,4) + print(len(adsorbed._atoms)) -print(graphene.bottom-h2_mol.maxz) + adsorbed.write_xyz("adsorbed.7.xyz") -adsorbed.write_xyz("adsorbed.8.xyz") -''' + print("\n8)") -if __name__=='__main__': - unittest.main() + adsorbed.set_separation(h2_mol,4) + print(graphene.bottom-h2_mol.maxz) + adsorbed.write_xyz("adsorbed.8.xyz") +if __name__=='__main__': + unittest.main() \ No newline at end of file diff --git a/tests/test_adsorption_polymer.py b/tests/test_adsorption_polymer.py new file mode 100644 index 0000000..f406f04 --- /dev/null +++ b/tests/test_adsorption_polymer.py @@ -0,0 +1,327 @@ +import sys + +# TODO: Make this computer dettached +path = "E:\\PBC\\GitHub\\moladspy\\MolAdsPy" + +sys.path.append(path) +from core import Atom +from core import Polymer +from core import Slab +from core import Molecule +from core import Adsorption +from numpy import array +import numpy as np +from inspect import signature +import unittest +import os +import sys + +''' + +assertEqual(x, y, msg=None) x == y +assertNotEqual(x,y,msg=None) x != y +assertTrue(x, msg=None) bool(x) is True +assertFalse(x, msg=None) bool(x) is False +assertIs(x, y , msg=None) x is y +assertIsNot(x, y, msg=None) x is not y +assertIsNone(x, msg=None) x is None +assertIsNotNone(x , msg=None) x is not None +assertIn(x, y, msg=None) x in y +assertNotIn(x, y, msg=None) x not in y +assertIsInstance(x, y, msg=None) isinstance(x, y) +assertNotIsInstance(x, y, msg=None) not isinstance(x, y) + +''' + +class Singleton(object): + _instance = None + def __new__(class_, *args, **kwargs): + if not isinstance(class_._instance, class_): + class_._instance = object.__new__(class_, *args, **kwargs) + return class_._instance + +class GlobalsForTest(Singleton): + def __init__(self): + self.__loc__ = os.path.realpath(os.path.join(os.getcwd(),os.path.dirname(__file__))) + self.results_folder = os.path.join(self.__loc__,"TestAdorptionPolymerResults") + if not os.path.isdir(self.results_folder): + os.makedirs(self.results_folder) + self.filename_polymer = "pla1" + self.filename_slab = "graphene" + + self.filepath_polymer = os.path.join(path,self.filename_polymer + ".xyz") + self.filepath_slab = os.path.join(path,self.filename_slab + ".xyz") + + self.name_polymer = "pla" + self.name_slab = "graphene" + + self.vacuum = 5.0 + + self.graphene = Slab(self.name_slab,self.filename_slab + ".xyz") + self.pol = Polymer(self.name_polymer,self.filepath_polymer,vaccuum=self.vacuum) + + +class TestPolymerSlabAdsorption(unittest.TestCase): + # TODO: Correct align Y Resize + def test_align_polymer_in_adsorption(self): + ''' + This test will create a rectangular Slab with resize different for each size. + + - First it will be verified if the polymer is correctly aligned over and under the Slab. + - Then, it will be calculated the minimum number of repetitions for the slab and polymer to fit the box. + + ''' + print("\n\n### Test Align Polymer Outputs ###\n\n") + glob = GlobalsForTest() + chosen_polymer = glob.pol # Chosen Polymer for the test (Asserts will always be with already generated files) + chosen_slab = glob.graphene # Chosen Slab for the test + initial_min_sep = 1.0 # min_sep that is initialized with Adsorption obj + test_vertsep = 2.0 # vertsep that will be used during set_separation calls + initial_vaccuum = 10.0 # Vaccumm that will be initialized in Adorption objs + initial_slab_resize_x = 4 # X Resize for Slabs + initial_slab_resize_y = 2 # Y Resize for Slabs + verbose = False # Print messages during operations ? + + # First Test : Check if Adsorption raises the correct error when trying to add a polymer incorrectly + # aligned with the Slab (z) + first_test_axis_correct_expected = ['x','y'] + first_test_axis_error_expected = 'z' + + + axis = ['x','y','z'] + + # Initialize Polymers with initial align in each axis + pols = {ax:chosen_polymer.copy() for ax in axis} # Create one polymer for each axis in a dictionary + [pols[ax].align(ax) for ax in axis] # Align each polymer to its respective axis + + slabs = {ax:chosen_slab.copy() for ax in axis} # Create individual copies of slab for each align case + + # Initialize a dictionary with one Adsorption obj for each axis + adsorbeds = {ax:Adsorption(slabs[ax],minsep=initial_min_sep,vaccuum=initial_vaccuum,verbose=verbose) for ax in axis} + # Resize slab in adsorbed objs + [adsorbeds[ax].resize(initial_slab_resize_x,initial_slab_resize_y) for ax in axis] + + + # Test 1 - test is if polymers are accepted with wrong alignment + + for ax,ads in adsorbeds.items(): + try: + ads.add_component(pols[ax],vertsep=test_vertsep,side="top") + print("Adsorption obj successfully accepted polymer initially aligned in " + ax) + except Exception as e: + print(e) + print("Adsorption obj didn't accepted polymer initially aligned in " + ax) + #self.assertTrue( any(ax in x for x in first_test_axis_error_expected),"Raised error correctly.") + + + # TODO: Second test is if it is possible to realign wrong with polymer already in Adsorption object + + for _ax,pol in pols.items(): + for ax in axis: + try: + pol.align(ax) + adsorbeds[ax].write_xyz(os.path.join(glob.results_folder,"align_test." + str(_ax) + ".to_" + str(ax) + ".xyz")) + print("Polymer initial aligned with " + _ax + " was successfully aligned with " + ax + " axis.") + except Exception as e: + adsorbeds[ax].write_xyz(os.path.join(glob.results_folder,"align_test." + str(_ax) + ".to_" + str(ax) + ".xyz")) + print("Polymer initial aligned with " + _ax + " when tried to align with " + ax + " axis, it raised the error below:") + print(e) + #self.assertEqual(first_test_axis_error_expected,ax,"Raised error correctly.") + + + # TODO: Verify 3 Aligns as input + # TODO: Test for Top and Bottom, several set_separation, without violation, and with violation. + # TODO: Put verbose mode to say if violates or not + def test_set_separation_polymer_in_adsorption(self): + + ''' + This test verifies if all loading parameters are correct for a polymer with a slab. + It will be verified if the polymer pass over defined adsorption sites. + ''' + print("\n\n### Test Load Polymer Outputs ###\n\n") + glob = GlobalsForTest() + + pol1 = glob.pol.copy() + graphene1 = glob.graphene.copy() + + separations = [0.5,1.0,2.0,3.0,4.0,5.0] + + adsorbed = Adsorption(graphene1,minsep=1.0,vaccuum=10.0) + # Arbitrary initial Resize for Slab + adsorbed.resize(4,2) + adsorbed.add_component(pol1,vertsep=2.0,side="top") + # Check in asssert if resize is always correct for certain mismatch and deformation + + + + adsorbed.set_separation(pol1,1.0) + print(len(adsorbed._atoms),len(adsorbed._species)) + adsorbed.write_xyz("polymer_adsorbed.1.xyz") + + + + # TODO: Define flags of auto_correction of set_separation, align, etc... + # TODO: Move "y" error + def test_move_polymer_in_adsorption(self): + ''' + This test will verify if the polymer can move freely, but respecting proximity constraints to the slab. + ''' + print("\n\n### Test Move Polymer Outputs ###\n\n") + glob = GlobalsForTest() + pol_x = glob.pol.copy() + pol_y = glob.pol.copy() + pol_z = glob.pol.copy() + pol_x.align('x') + pol_y.align('y') + pol_z.align('z') + + dic_pols = { + 'x': pol_x, + 'y': pol_y, + 'z': pol_z + } + + move_x = array([1.0,0.0,0.0]) + move_y = array([0.0,1.0,0.0]) + move_z1 = array([0.0,0.0,1.0]) + move_z2 = array([0.0,0.0,-1.0]) + + graphene_x = glob.graphene.copy() + graphene_y = glob.graphene.copy() + graphene_z = glob.graphene.copy() + + adsorbed_x = Adsorption(graphene_x,minsep=1.0,vaccuum=10.0) + adsorbed_y = Adsorption(graphene_y,minsep=1.0,vaccuum=10.0) + adsorbed_z = Adsorption(graphene_z,minsep=1.0,vaccuum=10.0) + adsorbed_x.resize(4,2) + adsorbed_y.resize(4,2) + adsorbed_z.resize(4,2) + + dic_adsorbed = { + 'x': adsorbed_x, + 'y': adsorbed_y, + 'z': adsorbed_z + } + + adsorbed_x.add_component(pol_x,vertsep=2.0,side="top") + adsorbed_y.add_component(pol_y,vertsep=2.0,side="top") + try: + adsorbed_z.add_component(pol_z,vertsep=2.0,side="top") + except: + pass + + # Move x + for key,_pol in dic_pols.items(): + _pol.move_to(move_x) + dic_adsorbed[key].write_xyz('move_' + key + '_to_x.xyz') + + # Move y + for key,_pol in dic_pols.items(): + _pol.move_to(move_y) + dic_adsorbed[key].write_xyz('move_' + key + '_to_y.xyz') + + # Move z away + for key,_pol in dic_pols.items(): + _pol.move_to(move_z1) + dic_adsorbed[key].write_xyz('move_' + key + '_to_z_away.xyz') + + # Move z forward + for key,_pol in dic_pols.items(): + _pol.move_to(move_z2) + dic_adsorbed[key].write_xyz('move_' + key + '_to_x.xyz') + + def test_different_sep_polymer_in_adsorption(self): + pass + + def test_rotate_polymer_in_adsorption(self): + ''' + This test will rotate the polymer near the slab and verify if constraints are respected and the polymer readjusted to a correct height. + ''' + print("\n\n### Test Rotate Polymer Outputs ###\n\n") + glob = GlobalsForTest() + filename = "pla_rotate_in_graphene" + pol_x = glob.pol.copy() + pol_y = glob.pol.copy() + pol_z = glob.pol.copy() + pol_x.align('x') + pol_y.align('y') + pol_z.align('z') + + graphene_x = glob.graphene.copy() + graphene_y = glob.graphene.copy() + graphene_z = glob.graphene.copy() + + adsorbed_x = Adsorption(graphene_x,minsep=1.0,vaccuum=10.0) + adsorbed_y = Adsorption(graphene_y,minsep=1.0,vaccuum=10.0) + adsorbed_z = Adsorption(graphene_z,minsep=1.0,vaccuum=10.0) + adsorbed_x.resize(4,2) + adsorbed_y.resize(4,2) + adsorbed_z.resize(4,2) + + adsorbed_x.add_component(pol_x,vertsep=2.0,side="top") + adsorbed_y.add_component(pol_y,vertsep=2.0,side="top") + try: + adsorbed_z.add_component(pol_z,vertsep=2.0,side="top") + except: + pass + + degrees = np.arange(60,361,60) + print('Angles are: ' + str(degrees)) + # Rotate in x + for degree in degrees: + pol_x.rotate(degree) + adsorbed_x.write_xyz(filename+".align_x.degree_" + str(degree) + ".xyz") + pol_y.rotate(degree) + adsorbed_y.write_xyz(filename+".align_y.degree_" + str(degree) + ".xyz") + pol_z.rotate(degree) + adsorbed_z.write_xyz(filename+".align_z.degree_" + str(degree) + ".xyz") + +# TODO: Quickly implement to test +class TestPolymerMoleculeSlabAdsorption(unittest.TestCase): + pass + +# TODO: Trabalho de mestrado: Polipropileno em duas direções, duas rotaçoes com metil pra baixo, 5 separações. +class CasePolypropileneGraphene(unittest.TestCase): + @unittest.skip("Just when everything is working") + def GenerateSystems(self): + filename_polymer = "pp" + filename_slab = "graphene" + + filepath_polymer = os.path.join(path,filename_polymer + ".xyz") + filepath_slab = os.path.join(path,filename_slab + ".xyz") + + name_polymer = "polypropilene" + name_slab = "graphene" + + vacuum = 10.0 + + slab = Slab(name_slab,filename_slab + ".xyz") + pol = Polymer(name_polymer,filepath_polymer,vaccuum=vacuum) + adsorbed = Adsorption(slab,minsep=1.0,vaccuum=10.0) + adsorbed.resize(5,5) + + adsorbed.add_component(pol,vertsep=1.0,side="top") + # Check in asssert if resize is always correct for certain mismatch and deformation + + # Parameters for combinations + angles = [0.0,180.0] + separations = [1.0,2.0,3.0,4.0,5.0] + aligns = ['x','y'] + + for align in aligns: + pol.align(align) + for sep in separations: + adsorbed.set_separation(pol,sep) + for angle in angles: + pol.rotate(angle) + adsorbed.write_xyz("ads_pp_graphene.align_" + align + ".sep_" + str(sep) + ".angle_" + str(angle) + ".xyz") + + +if __name__=='__main__': + #unittest.main() + tmp = TestPolymerSlabAdsorption() + tmp.test_align_polymer_in_adsorption() + + + + From 635d842dfa19ab877ea0257373c576964ac58146 Mon Sep 17 00:00:00 2001 From: pbriquet Date: Fri, 19 Apr 2024 13:37:12 -0300 Subject: [PATCH 10/10] Fixing several bugs of polymer resize, and automatic mismatch adjustments --- MolAdsPy/__adsorption__.py | 83 +++- MolAdsPy/__atomcollection__.py | 22 +- MolAdsPy/__hybrid__.py | 17 + MolAdsPy/__polymer__.py | 31 +- .../__pycache__/__adsorption__.cpython-37.pyc | Bin 21430 -> 22629 bytes .../__atomcollection__.cpython-37.pyc | Bin 27693 -> 27256 bytes .../__pycache__/__hybrid__.cpython-37.pyc | Bin 7986 -> 8643 bytes .../__pycache__/__polymer__.cpython-37.pyc | Bin 19124 -> 19325 bytes MolAdsPy/__pycache__/core.cpython-37.pyc | Bin 923 -> 923 bytes MolAdsPy/core.py | 3 +- original.xyz | 20 + resize_3.xyz | 20 + resize_4.xyz | 20 + .../align_test.init_align_x.xyz | 206 ++++++++ .../align_test.init_align_y.xyz | 252 ++++++++++ .../align_test.x.to_y.xyz | 422 ++++++++++++++++- .../align_test.x.to_z.xyz | 440 +++++++++++++++++- .../align_test.y.to_x.xyz | 440 +++++++++++++++--- .../align_test.y.to_y.xyz | 422 ++++++++++++++++- .../align_test.y.to_z.xyz | 440 +++++++++++++++++- .../align_test.z.to_x.xyz | 148 +----- .../align_test.z.to_y.xyz | 22 +- .../TestAdorptionPolymerResults/original.xyz | 20 + .../TestAdorptionPolymerResults/resize_0.xyz | 20 + .../TestAdorptionPolymerResults/resize_1.xyz | 38 ++ .../TestAdorptionPolymerResults/resize_2.xyz | 56 +++ .../TestAdorptionPolymerResults/resize_3.xyz | 74 +++ .../TestAdorptionPolymerResults/resize_4.xyz | 92 ++++ .../resize_reverse_0.xyz | 110 +++++ .../resize_reverse_1.xyz | 92 ++++ .../resize_reverse_2.xyz | 74 +++ .../resize_reverse_3.xyz | 56 +++ .../resize_reverse_4.xyz | 38 ++ .../slab_resize_0.xyz | 6 + .../slab_resize_1.xyz | 10 + .../slab_resize_2.xyz | 14 + .../slab_resize_3.xyz | 18 + .../slab_resize_4.xyz | 22 + tests/test_adsorption_polymer.py | 39 +- 39 files changed, 3495 insertions(+), 292 deletions(-) create mode 100644 original.xyz create mode 100644 resize_3.xyz create mode 100644 resize_4.xyz create mode 100644 tests/TestAdorptionPolymerResults/align_test.init_align_x.xyz create mode 100644 tests/TestAdorptionPolymerResults/align_test.init_align_y.xyz create mode 100644 tests/TestAdorptionPolymerResults/original.xyz create mode 100644 tests/TestAdorptionPolymerResults/resize_0.xyz create mode 100644 tests/TestAdorptionPolymerResults/resize_1.xyz create mode 100644 tests/TestAdorptionPolymerResults/resize_2.xyz create mode 100644 tests/TestAdorptionPolymerResults/resize_3.xyz create mode 100644 tests/TestAdorptionPolymerResults/resize_4.xyz create mode 100644 tests/TestAdorptionPolymerResults/resize_reverse_0.xyz create mode 100644 tests/TestAdorptionPolymerResults/resize_reverse_1.xyz create mode 100644 tests/TestAdorptionPolymerResults/resize_reverse_2.xyz create mode 100644 tests/TestAdorptionPolymerResults/resize_reverse_3.xyz create mode 100644 tests/TestAdorptionPolymerResults/resize_reverse_4.xyz create mode 100644 tests/TestAdorptionPolymerResults/slab_resize_0.xyz create mode 100644 tests/TestAdorptionPolymerResults/slab_resize_1.xyz create mode 100644 tests/TestAdorptionPolymerResults/slab_resize_2.xyz create mode 100644 tests/TestAdorptionPolymerResults/slab_resize_3.xyz create mode 100644 tests/TestAdorptionPolymerResults/slab_resize_4.xyz diff --git a/MolAdsPy/__adsorption__.py b/MolAdsPy/__adsorption__.py index 87955e8..5475a47 100644 --- a/MolAdsPy/__adsorption__.py +++ b/MolAdsPy/__adsorption__.py @@ -377,20 +377,27 @@ def _adjustMismatchPolymerSlab(self,polymer): polymer : Polymer object Object of the polymer that will be adjusted over the slab ''' - - # Resize necessary to minimize mismatch between polymer and slab - i,j = self._polymer_slab_match_box_length(polymer) slab = self._components["substrate"] - resize_vector = [slab._n,slab._m,slab._l] - resize_vector[polymer._orientation] = i + # Reset resize of Polymer and Slab on the polymer orientation + + resize_vector = [slab._n,slab._m,slab._l] + resize_vector[polymer._orientation] = 0 + slab.resize(resize_vector[0],resize_vector[1]) - if(self._verbose): - print("Slab will be resized by : " + str(resize_vector)) + # Resize necessary to minimize mismatch between polymer and slab + rezize_slab,resize_polymer = self._polymer_slab_match_box_length(polymer) + resize_vector = [slab._n,slab._m,slab._l] + resize_vector[polymer._orientation] = rezize_slab + print() + print("Previous Resize Slab: " + str(slab._n) + ", " + str(slab._m) + ", " + str(slab._l)) + print("Previous Resize Polymer: " + str(polymer._n) + ", " + str(polymer._m) + ", " + str(polymer._l)) + print("Slab will be resized by : " + str(resize_vector)) + print("Polymer will be resized: " + str(resize_polymer)) # Resizing objects slab.resize(resize_vector[0],resize_vector[1]) - polymer.resize(j) + polymer.resize(resize_polymer) def _polymer_slab_match_box_length(self,polymer,mismatch_tol_percent=__MISMATCHTOLSTD__,maxrep=__MAXREPMISMATCH__): ''' @@ -414,14 +421,24 @@ def _polymer_slab_match_box_length(self,polymer,mismatch_tol_percent=__MISMATCHT pol_ori = polymer._orientation slab = self._components["substrate"] + + # This exists to get original size of cells independent of previous resizing + polymer_resize_vector = [polymer._n,polymer._m,polymer._l] + polymer_original_resize = polymer_resize_vector[pol_ori] + slab_original_resize_vector = [slab._n,slab._m,slab._l] + slab_original_resize = slab_original_resize_vector[pol_ori] + a0_1 = slab._a0*slab._latvec[pol_ori][pol_ori] a0_2 = polymer._a0*polymer._latvec[pol_ori][pol_ori] - if(self._verbose): - print("a0 polymer: " + str(a0_2)) - print("a0 slab: " + str(a0_1)) - print("latvec polymer: " + str(polymer._latvec)) - print("latvec slab: " + str(slab._latvec)) + print() + print("Polymer Original Resize: " + str(polymer_original_resize)) + print("Slab Original Resize: " + str(slab_original_resize)) + print("a0 polymer: " + str(a0_2)) + print("a0 slab: " + str(a0_1)) + print("latvec polymer: " + str(polymer._latvec)) + print("latvec slab: " + str(slab._latvec)) + i = 1 while(i < maxrep): j = int(a0_1*i/a0_2) @@ -515,7 +532,7 @@ def set_separation(self,polymer,sep,update=True): self._update() @dispatch(int,(int,float)) - def set_separation(self,molid,sep): + def set_separation(self,molid,sep,**kwargs): ''' Rigidly displaces the molecule along the direction perpendicular to the substrate, such that the separation between the top/bottom of the substrate @@ -555,8 +572,34 @@ def set_separation(self,molid,sep): #endregion - - + #region Begin and End Hanlders for children methods + + def beginHandler(self,obj,method,method_locals,**kwargs): + ''' + This Handler is used on the begining of AtomCollection objects + to communicate to the Hybrid arguments and the method and check if the operation + if valis when the object is bounded by this Hybrid + + Parameters + ---------- + obj : AtomCollection + ID of the adsorbed molecule. + sep : float + Nearest distance separating the molecule from the substrate. + ''' + if isinstance(obj,Polymer): + if(method.__name__ == 'align'): + if(method_locals['axis'] == 'z'): + raise AdsorptionError("Cant align to z!") + obj.resize(0) + + + def endHandler(self,obj,method,method_locals,**kwargs): + if isinstance(obj,Polymer): + if(method.__name__ == 'align'): + self._adjustMismatchPolymerSlab(obj) + #endregion + def resize(self,n,m): ''' Resizes the substrate in the XY plane. @@ -579,14 +622,6 @@ def _update(self): cell shape or cell size change. ''' - if len(self.adsorbed_polymers) > 0: - polymer = self.adsorbed_polymers[0] - if(polymer._orientation == 2): - tmp_axis = ['x','y','z'] - axis = tmp_axis[polymer._old_orientation] - polymer.align(axis,update_parent=False) - raise AdsorptionError("Cannot align polymer perpedicular to slab!") - self._a0=self._components["substrate"]._a0 self._m=self._components["substrate"]._m self._n=self._components["substrate"]._n diff --git a/MolAdsPy/__atomcollection__.py b/MolAdsPy/__atomcollection__.py index f0d8d95..5e57613 100644 --- a/MolAdsPy/__atomcollection__.py +++ b/MolAdsPy/__atomcollection__.py @@ -262,7 +262,7 @@ def write_xyz(self,file_name="coords.xyz",ucell=False): n=self._n+1 if not ucell else 1 m=self._m+1 if not ucell else 1 l=self._l+1 if not ucell else 1 - + for atom in self._atoms: i,j,k=self._loc[atom._id] @@ -560,8 +560,14 @@ def write_pw_input(self,file_name="pw.in",ucell=False,pseudopotentials={}, with open(file_name,"w") as f: f.write(inpstr) - + + # TODO: Rename to replicate. def resize(self,n,m,l): + #print("max") + #print(self._maxn, self._maxm,self._maxl) + #print("input") + #print(n,m,l) + print(n,m,l) ''' Resizes the atom collection structure. @@ -581,8 +587,10 @@ def resize(self,n,m,l): and n>=0 and m>=0 and l>=0): raise AtomCollectionError("'n', 'm' and 'l' values must be integers greater than or equal to zero!") elif n==self._n and m==self._m and l==self._l: - raise AtomCollectionError("The current structure size was not changed!") - elif n>self._maxn or m>self._maxm and l>self._maxl: + if(self._verbose): + print("The current structure size was not changed!") + return + elif n>self._maxn or m>self._maxm or l>self._maxl: if(self._verbose): print("WARNING: Atoms newly created will not be removed if the supercell is subsequently reduced!") @@ -605,11 +613,12 @@ def resize(self,n,m,l): self._maxn=max([self._maxn,n]) self._maxm=max([self._maxm,m]) self._maxl=max([self._maxl,l]) - + self._n=n self._m=m self._l=l - + print() + print(self._n) self._update() def copy(self): @@ -955,6 +964,7 @@ def lattice_vectors(self,val): else: raise AtomCollectionError("Lattice vectors must be a Numpy array with three vectors!") + @property def origin(self): return self._origin diff --git a/MolAdsPy/__hybrid__.py b/MolAdsPy/__hybrid__.py index f922657..897f32a 100644 --- a/MolAdsPy/__hybrid__.py +++ b/MolAdsPy/__hybrid__.py @@ -15,6 +15,7 @@ def __init__(self,**kwargs): ''' Object initialization. ''' + self._components={} # Dictionary of objects that are put together to form the hybrid system self._a0=1.0 # Lattice constant self._latvec=array([[1.0,0.0,0.0], @@ -43,6 +44,22 @@ def remove_component(self,*args): ''' pass + @abstractmethod + def beginHandler(self,obj,method,**kwargs): + ''' + To be implemented in a derived hybrid structure, this method is expected + to make the hybrid structure reconsntruct itself when an object is realigned inside it. + ''' + pass + + @abstractmethod + def endHandler(self,obj,method,**kwargs): + ''' + To be implemented in a derived hybrid structure, this method is expected + to make the hybrid structure reconsntruct itself when an object is realigned inside it. + ''' + pass + def force_update(self): ''' Forces the hybrid system's attributes to be updated if there is a change diff --git a/MolAdsPy/__polymer__.py b/MolAdsPy/__polymer__.py index 3d0b6c4..7862250 100644 --- a/MolAdsPy/__polymer__.py +++ b/MolAdsPy/__polymer__.py @@ -189,7 +189,7 @@ def remove_anchor(self,anchor): else: raise PolymerError("'anchor' is not a valid anchor point!") - def write_xyz(self,file_name="polymer.xyz"): + def write_xyz(self,file_name="polymer.xyz",ucell=False): ''' Saves the atomic coordinates of the polymer into an XYZ file. @@ -199,7 +199,7 @@ def write_xyz(self,file_name="polymer.xyz"): Name of the XYZ file. The default is "polymer.xyz". ''' - super().write_xyz(file_name,ucell=True) + super().write_xyz(file_name,ucell=ucell) def write_pw_input(self,file_name="polymer.in",pseudopotentials={},pwargs={}): ''' @@ -365,8 +365,14 @@ def _rotate(self,theta,phi,psi,anchor="com",**kwargs): rotmatrix)+rotpoint self._update(**kwargs) - + def align(self, axis, **kwargs): + if self._belongs_to != None: + try: + self._belongs_to.beginHandler(self,self.align,locals(),**kwargs) + except Exception as e: + raise e + """ Aligns the polymer along the specified axis. @@ -391,7 +397,10 @@ def align(self, axis, **kwargs): # Hold previous orientation self._old_orientation = self._orientation self._orientation = new_orientation - + print() + print("Original Orientation: " + str(self._old_orientation)) + print("New Orientation: " + str(self._orientation)) + print() # Dictionary to map the axis of the rotation angles (theta, phi, psi) # This values are examples and must be adjusted by necessity # Theta: Axis Y Rotation @@ -440,6 +449,12 @@ def align(self, axis, **kwargs): self._rotate(theta,phi,psi,anchor="origin",**kwargs) + if self._belongs_to != None: + try: + self._belongs_to.endHandler(self,self.align,locals(),**kwargs) + except Exception as e: + raise e + # TODO: Permutate new align, change max and min of old axis by new one # Obtain polymer orientation from the maximum diff max - min. TODO: Reimplement @@ -498,7 +513,7 @@ def resize(self,n_axis): m = n_axis elif(self._orientation == 2): l = n_axis - + #print(n,m,l) super().resize(n,m,l) def _update(self,**kwargs): @@ -526,9 +541,9 @@ def _update(self,**kwargs): if(i != self._orientation): vaccuum_vec[i][i] = self._vaccuum - self._latvec=array([[self._maxx-self._minx,0.0,0.0], - [0.0,self._maxy-self._miny,0.0], - [0.0,0.0,self._maxz-self._minz]]) + self._latvec=array([[(self._maxx-self._minx)/(self._n + 1),0.0,0.0], + [0.0,(self._maxy-self._miny)/(self._m + 1),0.0], + [0.0,0.0,(self._maxz-self._minz)/(self._l + 1)]]) self._latvec = self._latvec + vaccuum_vec self._origin=array([self._minx,self._miny,self._minz]) diff --git a/MolAdsPy/__pycache__/__adsorption__.cpython-37.pyc b/MolAdsPy/__pycache__/__adsorption__.cpython-37.pyc index a8d7d27afe9119996c45776f69a8d11a89dc6aec..ca67fd68cf647b7f88f04c471b9a2a01aacca41e 100644 GIT binary patch delta 3512 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 diff --git a/MolAdsPy/__pycache__/__hybrid__.cpython-37.pyc b/MolAdsPy/__pycache__/__hybrid__.cpython-37.pyc index 6e53210f31819ce584abc9d8380c6949ea018d76..2c5f5eed5ab62b37dde6f9cd18b663ad02676840 100644 GIT binary patch delta 970 zcmd5*O-vI(6y8_5bt!FQ=?~DBvdW)Jp^*5m2*f4^BheTSnjSEvZ%S8TOJ5I{$5LX86Sih{3eSA)Db4KGcgd5WejHwcvISzH&(>g2WA z!eypAWu})Grnrf^?eO`cGtZgMS+Qc-mb=$Y$7VAn{Ysfxdco2wQQtNP;=Ro^Cz)~p>j zKpmjS6SW`OlP2gFtI;H6#oK5)nIW?QZgoisx delta 530 zcmZ{hyGtWc6o>DLiA)?b_(&XMbn%m>&6}ixNVfQ-d`2*l}es~Q4%aOhyKngc% zKj5($#<>3$GS0Jq2Yfb-JLGKY7kWoG>77wg#d3bBR9Px6m)6R*PgxYJG%lD{q>I!B z)x$|WBf#h-OyHjR1QlFweS|H{hhJbD7u#N7ALk;^aDdtNzi^0y9k0Go+I@r>>qH;o z@-SlrAFQPHne_|9J^SAW#wc^BV&Y`<@W0x9wDbL1mTJE-5lhvk$m|xJkM&I@`Fy^# zJGSa$`^fmj=w}Qt1_^gsNv)Lfs=T3iYQ=M?EZ)STQTG?Pw>K!{M_)}4G-v?Lqcxx& GzkCBZNOQ3O diff --git a/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc b/MolAdsPy/__pycache__/__polymer__.cpython-37.pyc index 1a2868e0775772fb9c949cc15326822b7edb00b3..10cf1b3335e44f776cf752de603d565c213004d0 100644 GIT binary patch delta 1928 zcmaiz+f!Rr6o>aZCpihZK`D|D!mT&J3cX^5(gNk)BBjNVf@m7D0uu;HyK|-#JZZFv z;-z(3_t@H-Ivp={#s{7F2XuUO9G}#gSRZ`w&Fj<$Uz~C64XxvoIdj(e_HV7V_s-gD zfBqKyeFc1nyj~Zh-zTkgv-2lE^W6pL7hl6FJSir$1{f8~S{)n}*R;Cq*eaU^tioWv zWXglpaTaH@y3#^eLz-7{E!O3oQ$EG@*g#y0$8a-l$-`6`9>=Y?jc5ZlVpEHnI7Hp-=M{o!3ByT0|!rfT{e=LA|aBrUFV5*9^4Ift=B;JQlD6S@M z#}36I;{DjExQ6%u9#mXQ+=bnW>xg^skm7pcUhGrcK-`Z5iZ>B&AH*Rw*i3_AJgj&N z@ev$Rymgh?*wnUh*8EiAN4;y~u7Rj7OG`ibwXJ{C6$B>Bv3an-(hx3cz)+(!U5xpE z5Uqh4ug+U2i0_l;SYbSH-=Fmn%ab}nZ~8VcX0dsOY(eLv%OS}$ozyf_&(XP9+8Y3D zf+e@vm}y&Z@eyDd9oUM~($B*LWg?Bw=_lAEOKK+=0&1wE?WUfwEqg4R1yw9#r~D8w z`D9Hy+AX-j(72`N;5@9QS$0~|SkNy4e@BwV!Vam04bz#UG}DO=vxGd39Qf(fl;Tv1 z@vkByX>qxQ654=a(L8dld553THXNo4vo54(j+V|iA2*cw-} zjLUMNr-E5d%h5@8TF)HOW zpiOH9rNEp2Q&L7}S~@Cz*)_I(rSd3`&&89GL_I+)X-3R=D%nxLvSBo~^j}FF*xi(YGHX1u6C*>?14|bn9&X;L)ntCnWN5H@Z z8ib$>D%~29Q`f))22|=E%}HMa%IPtx)_i5)1CKjE5iTvLc~oXO6vp=y0KOBBwu?rN zrsOY(>uo{5Le=tq5{m{;QGsG#6~1g6)ZM?)2JXxCS9-+djvZp8ecJmP4Sy${zfK^Y zYi|_y+IKcd^^XT?v(7iuc*?yPNvFe6s(Fm_3#9Ou#NLjB_Lm92FD!MO1p7t8zr?-$ zZ7wH~x?v|pb>{$lTbSwG1X*f>Ds=i;HKV5S&Qa@-BKy-7kS!8?;FBKZbCBv*zUnpK zoGx3J?uERnA&j6^DV1VP|Z|DRMf&rdKc+U6dmD2#5@y=@(vlZL`D?5Yb!3xIL{es zPYg#>DUNCWrttIxgXd*fzY$_yr76JB(;-N5%i;mt-cvrw+ zmAKTq0Vc%l-UK`&O8ZO*i+o?yeuc85;^)3e``biw;&A_@{W{TtxI=W6C?$-6N&7XT zv_PU8L`&j}foI`)Q9o!wR@@p~hMe#ZjX5+vM&1FjICS=D+4TGsX=ICV*&J%G{C%RL z^At~=ig9z9e<&RvNpnY7XSbN delta 1713 zcmaKsO>7%Q6vyZ7dN+>0NRza-^U=7Uj_G&Pq-~levFj%3CoZjMYKmOf&qnC1XQg&_q*p@lmKWDX!9L^&Z*saz0}B?N^F91)jtK=5V~+8b-le}C`2d2eTD z-umxb@aYoxVqUL{(RDxJ8@l(xC%&%$vf=?O!f|m{TL&k^tkwc2#k*R|{4GH8OV(m5 zM(AFL&*Ia#g(CGTb1QD6%+%G7oih+}4ZwtjE@E2(qH%ESqQoCVv(~ z!-n@5n(ylia1G9}32l(s4x65ON$2kcD_3+ZH#|`YStHrdWPWURydld&>9PF8uyPe9vzgpb zE{mb`Oin;un?|>XdxFuKTw!I}izB(rNXW{QNtK=yqB^bNnef(7c$Os3L*cn_Wc%ai z3fP?x_U`t!lM$2G(l+z3lvXJwNkvazEbu9!h*zCY#X(Cb@F;o2uD0oY6+=C63h0<* z7ISH!fm7GO117A|U78cjhGkz3_`u^1P{gH`|7t4(d?P+?zhM?Bjn9hSjt0L%)dzlZ zR!p9^(pL7%@>EB^4nK>}_b+)%6nIFFmtyz*r>wU0myGcRg;cn7G%~2cMOl2iHRaz33g*(Mtzs(r^XnproxlvJu*3M<^yM$Vw`&!PahSyqo4VV$CIeg`4g+ zi>99MTV9e2k4ahcSmajlmr4EsQPVqh@_*;ZFRviKK9h0U4;BGFBlAy7*+?=>Ltedn zfs|ht4|>>GF7?{fB^BfEOHR-Cd^455|P)NF`)0xcW%i}3o+?FZoWyPbYPkRKy84DY= zPy>PTp4d3RCh^gs6vTxV?}A(6R9{dG##h0B7>$q7U-l1i3lie^;f!&U3Y`&?eSY!n z;h6CzS%b=o^u>&~$U0BfIpYnY3q-5MuYGYtkcG;M_Q#DSvPP73r+)y(#BcpJOp2cd zR*Sg-1dAwP0#DE^(Q#zvxj6!UP0AH1vb)q~@Y_Tc=OoWhX1O)XKahbtQtnFmP>NhE amuuv5X