li = 0 for l in arange(0, n): for m in arange(-l, l + 1): for k in arange(3 if m > 0 else 1): if k == 0: psi = Ψ(n, l, m) #pmax = psi.R(clim)**2*clim**2 elif k == 1: psi = (Ψ(n, l, m) - Ψ(n, l, -m)) / sqrt(2) #pmax = psi.psi_vec[0].R(clim)**2*clim**2 else: psi = (Ψ(n, l, m) + Ψ(n, l, -m)) / sqrt(2) / 1j #pmax = psi.psi_vec[0].R(clim)**2*clim**2 clim = coordenada_maxima( psi, umbral=umbral) * 1.3 # Maxima extensión de ejes # Grilla para el calculo X, Y, Z = mgrid[-clim:clim:N * 1j, -clim:clim:N * 1j, -clim:clim:N * 1j] r, phi, theta = sqrt(X**2 + Y**2 + Z**2), arctan2( Y, X), arctan2(sqrt(X**2 + Y**2), Z) WF = abs(psi(r, phi, theta))**2 # Vertices vertices, caras, _, _ = measure.marching_cubes_lewiner( WF, WF.max() * umbral, allow_degenerate=False) vertices = vertices / N * clim * 2 - clim # graficar if n < 6:
#%% Estados Hiperfinos separando Spin nuclear en colores from orbitales_atomicos import autoestado_SO, autoestado_HF # Armamos 4 estados diferentes para graficar psi = autoestado_HF('5P3/2', F=1, mf=1, I=3 / 2) #estados = autoestado_HF('5S1/2',F=1,mf=0,I=3/2) # Creamos la figura y los ejes en 3D fig = plt.figure(figsize=(14, 9)) ax = fig.add_subplot(1, 1, 1, projection='3d') # Parámetros para mallas clim = coordenada_maxima(psi, umbral=0.08) # Maxima extensión de ejes N = 30 # la grilla tendrá 50³ puntos umbral = 0.1 # umbral para el cálculo de superficies: límite 10% de probabilidad # Definimos una grilla de coordenadas cartesianas # desde -clim hasta +clim con N pts, para cada coordenada X, Y, Z = mgrid[-clim:clim:N * 1j, -clim:clim:N * 1j, -clim:clim:N * 1j] # Transformamos a coordenadas esféricas r, phi, theta = sqrt(X**2 + Y**2 + Z**2), arctan2(Y, X), arctan2( sqrt(X**2 + Y**2), Z) # Armamos listas donde vamos a acumular las caras, vértives y colores de las # superficies que vamos a calcular vertices = [] caras = []
from orbitales_atomicos import autoestado_SO # Armamos 4 estados diferentes para graficar estados = [autoestado_SO('5P3/2', m=ms) for ms in arange(-3 / 2, 3 / 2 + 1)] # Creamos la figura y los ejes en 3D fig = plt.figure(figsize=(14, 9)) axx = [] for ii in range(4): axx.append(fig.add_subplot(2, 2, ii + 1, projection='3d')) # Parámetros para mallas clim = max([coordenada_maxima(estado, umbral=0.08) for estado in estados]) # Maxima extensión de ejes N = 50 # la grilla tendrá 50³ puntos umbral = 0.1 # umbral para el cálculo de superficies: límite 10% de probabilidad # Definimos una grilla de coordenadas cartesianas # desde -clim hasta +clim con N pts, para cada coordenada X, Y, Z = mgrid[-clim:clim:N * 1j, -clim:clim:N * 1j, -clim:clim:N * 1j] # Transformamos a coordenadas esféricas r, phi, theta = sqrt(X**2 + Y**2 + Z**2), arctan2(Y, X), arctan2( sqrt(X**2 + Y**2), Z) # Recorremos los estados for ii, psi, ax in zip(range(len(estados)), estados, axx):