Práctica Computacional: La Ecuación de Schrödinger
Estados Ligados

Instructor: Darío Mitnik


Parte computacional

  1. Utilizar el notebook LIGADOS.NB para obtener algunos estados ligados de una partícula en un potencial de Woods-Saxon.

    "ll_1.gif"

    "ll_2.gif"

    "ll_3.gif"

    "ll_4.gif"

    "ll_5.gif"

    "ll_6.gif"

    "ll_7.gif"

    "ll_8.gif"

    "ll_9.gif"

    "ll_10.gif"

    "ll_11.gif"

    "ll_12.gif"

    "ll_13.gif"

    Spikey Created with Wolfram Mathematica 7.0

    Método de Shooting (Predictor)



    La base de este método consiste en partir de cierta condición inicial, y propagar la solución hasta un radio determinado. Se discretizan la función y sus derivadas, escribiendo la derivada primera de una función Y(i) (o sea, la función Y valuada en el punto i):

    	
    	DY(i) = ( Y(i+1) - Y(i) ) / Dx       
    	
    


    Donde Dx es el ancho del intervalo ( Dx = x(i+1) - x(i) ).
    Del mismo modo, derivando una vez mas, la derivada segunda se escribe:

    	
    	D2Y(i) = ( Y(i+1) + Y(i-1) - 2Y(i) ) / (Dx)**2       
    	
    


    Implementaremos éste método para resolver el problema de un pozo finito, de ancho D y altura V0, usando el programa schro.for:

    
    	program schrodinger
    
    c...... Solves the time-independent Schrodinger equation 
    c...... for a potential box. Uses simple finite differences
    
    c	by Dario Mitnik
    
    	implicit real*8(a-h,o-z)
    
    
    c....... initial values
    	print*,' give the number of grid points'
    	read*,npts
    c.......   Potential Box
    	print*,' give the size D of the potential box (-D/2 to D/2)'
    	read*,d
    	print*,' give the depth V0 of the potential well'
    	read*,V0
    c......... Initial Points
    	print*,' give the initial value of the wavefunction P(0) '
    	read*,p00
    	print*,' give the initial value of the derivative at 0 Y(0) '
    	read*,y00
    
    
    100	open(unit=10,file='wave.dat',status='unknown')
    	print*,' guess initial energy value'
    	read*,Ener
    	p0 = p00
    	y0 = y00
    	
    c...... Other values
    	dx = D/(2*npts)
    c...... initial point P(1)
    	p1 = p0 + dx*y0
    	write(10,55) dx-dx,p0
    	write(10,55) dx,p1
    55	format(2(1x,1pg14.4))
    
    c...... Solving the Schrodinger Equation
    	do 200 i=2,npts*15
    		V = V0
    		if (i*dx.le.D/2) V = 0.0
    		p = (2.0 + dx*dx*(V-Ener))*p1 - p0
    		write(10,55) dx*i,p
    		p0 = p1
    		p1 = p
    200	continue
    		
    	close(unit=10,status='keep')
    
    	print*,' Continue?  No=0'
    	read*,icont
    	if (icont.ne.0) go to 100
    
    	stop
    	end
    
    



    Tal como se puede ver en el listado del programa, este requiere los datos del pozo (ancho D y altura V0), y los datos iniciales de la función de onda. Luego se deben ingresar distintos valores de la energía (es lo que debemos hallar!), e ir variando éstos hasta que la solución converja a un resultado adecuado. Inicialmente el programa utiliza los valores de la función en los dos primeros puntos (P0 y P0), y calcula el valor para el tercer punto (P). Luego, utilizando los puntos 2 y 3, calcula el valor para el punto 4, y así sucesivamente. En el gráfico siguiente, podemos ver un ejemplo del uso de este programa, y como se ven las soluciones, adivinando diferentes valores de la energía:


    Ejercicios:

  2. Compilar y ejecutar el programa, revisar si las soluciones dadas son correctas, y si hay algún error en el programa, modificarlo hasta que dé resultados adecuados!.
  3. Graficar los resultados
  4. Cuántos estados ligados hay?
  5. Aumentar progresivamente la profundidad del pozo de potencial, hasta encontrar más estados ligados:
    a) Qué ocurre con las energías?
    b) Qué ocurre con el número de nodos?
  6. Aumentar progresivamente el ancho del pozo de potencial:
    a) Cómo cambian las funciones de onda?
    b) Qué ocurre con las energías?
    c) Se puede determinar la profundidad del pozo conociendo sólo la energía del estado básico? Demostrarlo
  7. Analizar la paridad de las funciones obtenidas
  8. Modificar el programa de manera que se puedan ingresar los números de nodos
  9. Modificar el programa y solucionar la ecuación de Schrödinger para otro potencial
  10. Comparar (graficando) los resultados con los resultados analíticos
  11. Implementar un algoritmo tal que el programa encuentre por sí mismo las energías correctas de los estados ligados
  12. (Solución: tratar de no ver el programa numerovbound.for).


    Método Predictor-Corrector

    En este método no sólo se propaga la solución en "sentido saliente", sino que luego se calcula otra solución "entrante" y se las compara.
    El programa numerovbound.for ilustra el funcionamiento del método:


    Ejercicios:

  13. Escribir un programa para calcular las funciones de onda del átomo de hidrógeno.
  14. (Solución: tratar de no ver el programa hydronumer.for)
  15. Escribir un programa para calcular las funciones de onda del átomo de hidrógeno, pero en este caso, las energías no son datos:
  16. 	
    c-------finding the energy using the Ridley Method
    c.......E.C. Ridley, Proc. Cambridge Phil. Soc. 51, 702 (1955).
    
    c	Delta E = ( logderiv(inwd) - logderiv(outw) )
    c		  -----------------------------------
    c		  ( Intgrl(inwd^2) + Intgrl(outw^2) )
    c		    --------------   --------------
    c		        inwd^2           outw^2
    
    c	logderiv(outw) = F'/F at r=rmatch
    c	logderiv(inwd) = G'/G at r=rmatch
    c	Intgrl(outw^2) = Int_{0}^{rmatch}{F^2}
    c	Intgrl(inwd^2) = Int_{rmatch}^{rmax}{G^2}
    c	F is the outward solution and G is the inward solution
    	
    



    Darío Mitnik
    U.B.A.