Skip to main content

PySolidState is a library developed to facilitate the study of solid-state materials, ranging from crystal structures to tight-binding models. It provides a set of tools and functionalities that enable researchers and students to analyze and simulate various aspects of the solid-state physics.

Project description

PySolidState (PySS)

PySS es una biblioteca desarrollada como una herramienta de apoyo para el estudio introductorio del estado sólido y los conceptos básicos de los materiales. Su enfoque principal es proporcionar apoyo visual y funcionalidades que permitan asentar los conceptos fundamentales en esta área de estudio, desde estructuras cristalinas hasta modelos de enlace fuerte. Con un conjunto de herramientas y funcionalidades, PySolidState permite a investigadores y estudiantes analizar y simular varios aspectos de la física del estado sólido. Además, esta biblioteca se combina con notas de curso sobre estado sólido, lo que la convierte en un recurso bastante completo para el aprendizaje de la materia a nivel universitario. Gracias a su enfoque en la visualización y el apoyo práctico, PySolidState se convierte en una valiosa herramienta que, junto con las notas de curso, ofrece una base sólida para comprender los principios y fundamentos del estado sólido.

Deployment

PyPI

Recursos

Instalación

Se recomienda utilizar pip para la instalación. Asegúrese de que la última versión esté instalada, ya que PySS se actualiza con frecuencia:

Nota: Es importante antes de instalar la libreria PySolidState haber ejecutado la consola en modo administrador si se trabajara con jupyter notebook.

ejecute los siguientes comando para la instalación:

   pip install PySolidState    # Instalacion normal
   pip install --upgrade PySolidState  # o actualizar si es necesario

Dependencias Requeridas:

  • Python 3.9+
  • matplotlib >=3.7.1
  • numpy>=1.24.3
  • mayavi>=4.7.2
  • scikit-spatial>=7.0.0

Uso

Antes de dar los primeros pasos en la librería, es fundamental tener en cuenta la siguiente convención de ángulos entre los vectores de la red, los cuales serán utilizados en PySolidState:

(α, β, γ)

Esta convención de ángulos juega un papel crucial en el funcionamiento adecuado de la librería PySolidState y es importante asegurarse de seguir correctamente esta notación al utilizarla.

Crear Red (Create Lattice):

Uno de los conceptos mas basico y fundamental en el estado solido es el de red, siendo las unicas posibles en formar estructuras cistalinas las redes de Bravais; para crea una de estas tenemos dos formas de hacerlo:

1) Construyendo la red a partir de los parámetros:

  • System = Nombres de sistemas de redes de Bravais.
  • structure_type = centrada en las caras, centrada en el cuerpo o centrada en las bases; si la el sistema tiene de red.
  • dimension = dimensión en la cual se creara la red 2D o 3D.

Nota: Si la red es 3D tambien se le puede pasar otro atributo llamado size (cuya función es mostrar la celda en diferentes tamaños "N" veces el parametro de red.)

A continuación se muestra un ejemplo de uso:

from PySolidState.crystal_structure.lattice import Lattice  # Importamos el modulo estructura cristalina de la libreria junto al metodo lattices

lattice = Lattice(system='cubic',structure_type='face_centered', dimension='3D') # Se crea la red
lattice.plot()  # Se grafica la red

2) Construyendo la red a partir de los parámetros_

  • magnitude = tupla con la norma de cada uno de los vectores de la red a1, a2 y a3.
  • angles = tupla con los angulos que describen los vectores de la red (α, β, γ).
  • dimension = dimensión en la cual se creara la red 2D o 3D.

Nota: Si la red es 3D tambien se le puede pasar otro atributo llamado size (cuya función es mostrar la celda en diferentes tamaños "N" veces el parametro de red.)

A continuación se muestra un ejemplo de uso:

from PySolidState.crystal_structure.lattice import Lattice  # Importamos el modulo estructura cristalina de la libreria junto al metodo lattices

lattice = Lattice(magnitude=(1,1,1),angles=(90,90,90), dimension='3D') # Se crea la red
lattice.plot()  # Se grafica la red

Crear base (Create base):

El otro concepto más básico es el de base, siendo esta base el conjunto de átomos que se acomodan en cada punto de red para formar la estructura cristalina. A continuación se muestra un ejemplo de como crear esta base de átomos:

# Se importan los módulos Lattice, Atom, Base
from PySolidState.crystal_structure.lattice import Lattice
from PySolidState.crystal_structure.atom import Atom
from PySolidState.crystal_structure.base import Base

#Se crean los átomos que harán parte de la base de átomos
atom2 = Atom(name='Na+', size= 0.2, color= 'orangered')
atom1 = Atom(name='Cl-', size= 0.3, color= 'springgreen')

#Se crea la red a la cual se acomodaran
lattice = Lattice(system='cubic',structure_type='face_centered', dimension='3D')

# Se crea la base de átomos
base = Base(lattice_vectors= lattice.vectors, atoms=[[atom1, [0,0,0]],[atom2, [0.5,0,0]],[atom2, [0,0.5,0]],[atom2, [0,0,0.5]]], dimension='3D')

#Se grafica la base de atomos en un punto de red
base.plot()

Como notamos en el ejemplo la clase Base se inicializa pasándole los vectores de la red, una lista que contiene listas de los átomos creados, con su vector posición en la base a formar y la dimensión en la que se describirá.

Crear estructurá cristalina

Con los dos conceptos previamente mostrados podemos formar lo que se conoce como estructura cristalina o cristal, siendo esta estructura la unión de una red de Bravais con una base de átomos, para ello a continuación se muestra un ejemplo de como construirla:

# Se importan los modulos Lattice, Atom, Base y CristalStruture.
%matplotlib widget
from PySolidState.crystal_structure.lattice import Lattice
from PySolidState.crystal_structure.atom import Atom
from PySolidState.crystal_structure.base import Base
from PySolidState.crystal_structure.crystalStructure import CrystalStructure

#Se crean los átomos que harán parte de la base de átomos.
atom2 = Atom(name='Na+', size= 0.2, color= 'orangered')
atom1 = Atom(name='Cl-', size= 0.3, color= 'springgreen')

#Se crea la red de Bravais en la cual se acomodara la base de atomos.
lattice = Lattice(system='cubic',structure_type='face_centered', dimension='3D')
# Se crea la base de átomos
base = Base(lattice_vectors= lattice.vectors, atoms=[[atom1, [0,0,0]],[atom2, [0.5,0,0]],[atom2, [0,0.5,0]],[atom2, [0,0,0.5]]], dimension='3D')

# Se crea la estructura cristalina o cristal uniendo la red y la base ya creadas
crs = CrystalStructure(lattice=lattice, base=base, dimension='3D')
#Se crea la figura de la red cristalina o cristal Na+Cl- (Cloruro de Sodio)
crs.plot()

Crear Celdas de una red o una estructura cristalina

Dada una estructura cristalina o una red, también podemos utilizar la librería para crear su celda unidad y celdas primitivas. Entre estas, se encuentra la celda de Wigner-Seitz.

Celdas unidad (CU) y Celdas primitiva(CP)

Para crear una celda unidad o primitiva solo se tiene que crear una red o una estructura cristalina a la cual se le hallara, para ello utilizar el metodo cell, el cual requiere de los siguientes parametros.

Si es para una red:

  • lattice = nombre de la red creada.
  • vectors = Lista que contiene los vectores de red que permitan la creacion de una CU o una CP, teniendo sus propiedades.

Si es para una estructura cristalina:

  • crystalStructure = nombre de la estructura cristalina creada.
  • vectors = Lista que contiene los vectores de red que permitan la creacion de una CU o una CP, teniendo sus propiedades.
Ejemplo Aplicado a una red:
#Libreria PySolidState
%matplotlib widget
from PySolidState.crystal_structure.lattice import Lattice
from PySolidState.crystal_structure.cell import Cell

#Se crea la red de Bravais en la cual se acomodara la base de atomos.
lattice = Lattice(system='cubic',structure_type='face_centered', dimension='3D')

# Se crea la celda unidad de la red creada
cell = Cell(lattice = lattice, vectors=[[1,0,0],[0,1,0],[0,0,1]])
cell.plot(show_points=False, legends = False, axes = False)
Ejemplo Aplicado a una Estructura Cristalina:
#Libreria PySolidState
%matplotlib widget
from PySolidState.crystal_structure.lattice import Lattice
from PySolidState.crystal_structure.atom import Atom
from PySolidState.crystal_structure.base import Base
from PySolidState.crystal_structure.crystalStructure import CrystalStructure
from PySolidState.crystal_structure.cell import Cell

# Contruimos la red FCC

#nota: system = lattice_name_Bravais y zise = Tamaño red
lattice_FCC = Lattice(system='cubic',structure_type='face_centered', dimension='3D', zise = 2)

#Contruimos la base de atomos
atom1 = Atom(name='Zn 2+', size= 0.2, color= 'blue')
atom2 = Atom(name='S 2-', size= 0.3, color= 'green')
base_sulfurodezinc = Base(lattice_vectors= lattice.vectors, atoms=[[atom1, [0,0,0]],[atom2, [0.25,0.25,0.25]]], dimension='3D')

# Se contruye la estructura cristalina
crs_sulfurodezinc = CrystalStructure(lattice= lattice_FCC, base= base_sulfurodezinc, dimension='3D')
crs_sulfurodezinc.plot()

#nota: crystalStructure = crystal_structure_name_created y vectors = network vectors that define a CU.
cell = Cell(crystalStructure= crs_sulfurodezinc, vectors=[[1,0,0],[0,1,0],[0,0,1]])
cell.plot(show_points=False, legends = False, axes = False)

Celda de Wigner Seitz (WS)

Para crear una celda WS solo se tiene que crear una red o una estructura cristalina a la cual se le hallara, para ello utilizar el metodo cell, el cual solo requerira del parametro lattice = nombre de la red creada o crystalStructure = nombre de la estructura cristalina creada.

Ejemplo Aplicado a una red:
#Libreria PySolidState
%matplotlib widget
from PySolidState.crystal_structure.lattice import Lattice
from PySolidState.crystal_structure.cell import Cell

#Se crea la red de Bravais en la cual se acomodara la base de atomos.
lattice = Lattice(system='cubic',structure_type='face_centered', dimension='3D')

# Se crea la celda unidad de la red creada
cell = Cell(lattice = lattice)
cell.plot(show_points=False, legends = False, axes = False)
Ejemplo Aplicado a una Estructura Cristalina:
#Libreria PySolidState
%matplotlib widget
from PySolidState.crystal_structure.lattice import Lattice
from PySolidState.crystal_structure.atom import Atom
from PySolidState.crystal_structure.base import Base
from PySolidState.crystal_structure.crystalStructure import CrystalStructure
from PySolidState.crystal_structure.cell import Cell

# Contruimos la red FCC

#nota: system = lattice_name_Bravais y zise = Tamaño red
lattice_FCC = Lattice(system='cubic',structure_type='face_centered', dimension='3D', zise = 2)

#Contruimos la base de atomos
atom1 = Atom(name='Zn 2+', size= 0.2, color= 'blue')
atom2 = Atom(name='S 2-', size= 0.3, color= 'green')
base_sulfurodezinc = Base(lattice_vectors= lattice.vectors, atoms=[[atom1, [0,0,0]],[atom2, [0.25,0.25,0.25]]], dimension='3D')

# Se contruye la estructura cristalina
crs_sulfurodezinc = CrystalStructure(lattice= lattice_FCC, base= base_sulfurodezinc, dimension='3D')
crs_sulfurodezinc.plot()

#nota: crystalStructure = crystal_structure_name_created y vectors = network vectors that define a CU.
cell = Cell(crystalStructure= crs_sulfurodezinc)
cell.plot(show_points=False, legends = False, axes = False)

Nota: A la hora de graficar se puede permitir o no la visualizacion de los puntos de red, las leyendas y los ejes.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PySolidState-0.1.6.tar.gz (20.5 kB view details)

Uploaded Source

File details

Details for the file PySolidState-0.1.6.tar.gz.

File metadata

  • Download URL: PySolidState-0.1.6.tar.gz
  • Upload date:
  • Size: 20.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.7

File hashes

Hashes for PySolidState-0.1.6.tar.gz
Algorithm Hash digest
SHA256 c08021359649690a6863a6478210171a65e9f0b18c27cefe6ed91603044bd3e2
MD5 9d85221231e9cffbbd9c0b6f2eb31280
BLAKE2b-256 d4d78656765a31689f145cd2f4d16286b03e6da8bb074bf69760e634f67d1226

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page