Por qué estirar un nanohilo de cobre

Un nanohilo de cobre de tres nanómetros de lado aguanta un límite elástico de 7,5 GPa: dos órdenes de magnitud por encima del cobre recocido. No porque el cobre sea otro, sino porque ahí dentro no cabe lo que hace blando a un metal. Esto es el ensayo completo, desde la validación del potencial hasta la rotura.
Lectura rápida
- Qué se simula. Un hilo de cobre de 2,9 × 2,9 × 7,2 nm (5780 átomos), a 300 K, estirado a velocidad de deformación constante hasta que rompe. Dinámica molecular con LAMMPS y el potencial EAM de Mishin et al. (2001).
- Antes de mirar el resultado, la referencia. Siete magnitudes del cobre con valor conocido, calculadas con el mismo potencial y la misma instalación: todas dentro del 1,4 %. Es lo que dice que la cadena de cálculo está bien montada.
- Qué sale. Módulo de Young del hilo 61,0 GPa (frente a 67,1 GPa del cristal infinito a 0 K), límite elástico 7,48 GPa a ε = 10,4 %, y después plasticidad por maclado hasta romper cerca de ε = 104 %: el hilo se estira al doble.
- Qué no demuestra. La velocidad de deformación es catorce órdenes de magnitud mayor que la de un ensayo de laboratorio. Esto no reproduce un ensayo normalizado, y no pretende hacerlo.
- Se puede repetir. Un
run.shque ejecuta la validación, la simulación y las salidas, con el potencial que ya viene con LAMMPS.
Por qué un nanohilo
El cobre de un cable se deforma a unas decenas de megapascales. El cobre, como material, es mucho más resistente que eso: lo que cede tan pronto no es el cristal, son las dislocaciones que ya tiene dentro, defectos de línea que se mueven con muy poca tensión y hacen que el metal fluya mucho antes de que haya que romper enlace alguno.
Un hilo de tres nanómetros de lado cambia la historia por dos razones, y las dos son geométricas:
- Se puede construir perfecto. En 5780 átomos no hay sitio para una red de dislocaciones preexistente. Si no hay ninguna, no hay nada que se pueda mover: la plasticidad tiene que empezar por crear la primera, y eso cuesta una tensión del orden de la resistencia teórica del cristal.
- Casi todo es superficie. En una sección de 2,9 nm, cerca de un tercio de los átomos tiene menos vecinos de los que le tocan. Eso ablanda el hilo elásticamente y, a la vez, le da a la primera dislocación el sitio más fácil por donde nacer: una arista.
Los dos efectos empujan en sentidos opuestos para el módulo y en el mismo sentido para la resistencia, y es exactamente la clase de pregunta que la dinámica molecular puede contestar y una fórmula de manual no: aquí no hay «material», hay átomos contados.
El interés no es solo académico. En interconexiones de circuitos, en contactos eléctricos y en cualquier sitio donde haya metal con dimensiones de nanómetros, el límite elástico del material a granel no sirve para nada. Lo que hace falta es saber dónde y cómo cede esa geometría concreta.
Antes de simular nada: validar el potencial
Una simulación de dinámica molecular es tan buena como el potencial interatómico que use. El potencial es una función que, dadas las posiciones de los átomos, devuelve la energía; todo lo demás —fuerzas, tensiones, mecanismos— sale de derivarla. Si el potencial está mal, la animación sigue siendo bonita y el resultado sigue siendo un número con unidades. Por eso el primer paso no es simular el hilo, es calcular cosas cuya respuesta ya se conoce.
El potencial es el EAM de Mishin et al., Phys. Rev. B 63, 224106 (2001), en el
fichero Cu_mishin1.eam.alloy que se distribuye con LAMMPS. Con ese mismo fichero y esa
misma instalación de LAMMPS (7 Feb 2024), a 0 K:
| Magnitud | Calculado | Referencia | Error |
|---|---|---|---|
Parámetro de red a₀ (Å) |
3,6149 | 3,615 | +0,00 % |
| Energía cohesiva (eV/átomo) | 3,5402 | 3,54 | +0,01 % |
C₁₁ (GPa) |
169,9 | 168,4 | +0,90 % |
C₁₂ (GPa) |
122,6 | 121,4 | +1,01 % |
C₄₄ (GPa) |
76,2 | 75,4 | +1,07 % |
Módulo de Young E[100] (GPa) |
67,12 | 66,7 | +0,62 % |
| Energía de falla de apilamiento (mJ/m²) | 44,38 | 45 | −1,38 % |
Todo por debajo del 1,4 %. Y aquí viene lo importante, que es lo que convierte una tabla verde en información:
Las cinco primeras magnitudes no prueban que este potencial prediga nada. El parámetro de red, la energía cohesiva y las tres constantes elásticas formaban parte del conjunto de datos al que se ajustó el potencial. Pedirle que las reproduzca es pedirle que recuerde sus propios datos de entrenamiento. Que salgan bien no mide capacidad predictiva: mide que mi cadena de cálculo está bien montada —el fichero correcto, las celdas bien construidas, las deformaciones del tamaño adecuado, las unidades convertidas sin un factor perdido—. Que es justo lo que quiero comprobar antes de simular, y la razón de hacerlo.
Las otras dos filas sí dicen algo más:
- El módulo de Young en [100] se calcula por dos caminos independientes: a partir de las constantes elásticas, y estirando directamente la celda mientras se deja relajar la sección a tensión transversal nula. Dan 67,1156 y 67,1147 GPa: coinciden en cuatro cifras. Eso es una comprobación interna, no una validación contra el mundo, pero es la que importa aquí, porque el segundo camino es exactamente el mismo cálculo que luego se hace sobre el nanohilo. Si la deformación que aplico y la tensión que mido no fueran coherentes, se vería en esas cuatro cifras.
- La energía de falla de apilamiento (44,38 mJ/m²) no es una propiedad de volumen: es la que gobierna que una dislocación se disocie en parciales de Shockley, que es precisamente el mecanismo que se verá en la animación. Tampoco es una predicción a ciegas —Mishin et al. dan 44,4 mJ/m² para su propio potencial, así que lo que comprueba mi 44,38 es que reproduzco su cálculo—, pero es la magnitud del conjunto que está directamente conectada con el resultado que me interesa.
Dicho de otra manera: esta tabla no demuestra que el potencial sea bueno. Demuestra que si el potencial es bueno, mi resultado lo será. Es un filtro necesario y no suficiente, y me parece importante decirlo así en lugar de presentar siete porcentajes pequeños como si fueran una medalla.
Detalle técnicoCómo se calculan las siete magnitudes, con las entradas de LAMMPS
Dos entradas, las dos a 0 K y por minimización de energía.
in.validacion relaja la celda cúbica convencional (4 átomos) con box/relax y de ahí
salen a₀ y la energía cohesiva:
fix relax all box/relax iso 0.0 vmax 0.001
min_style cg
minimize 0.0 1.0e-12 100000 1000000
unfix relax
minimize 0.0 1.0e-12 100000 1000000
variable a0v equal lx
variable ecohv equal -pe/count(all)Las constantes elásticas, por diferencias centradas con ε = 10⁻³, deformando la caja con
change_box ... remap y volviendo a minimizar en cada punto (Cᵢⱼ = −∂Pᵢ/∂εⱼ; el factor
10⁻⁴ es la conversión de bar a GPa):
variable C11 equal -1.0e-4*(${pxxP}-${pxxM})/(2.0*${eps})
variable C12 equal -1.0e-4*(${pyyP}-${pyyM})/(2.0*${eps})
variable C44 equal -1.0e-4*(${pxyP}-${pxyM})/(2.0*${eps})Para C₄₄ hay que pasar la caja a triclínica (change_box all triclinic) y deformar xy.
Dos detalles que cuestan tiempo si no se tienen en cuenta: hay que volver a ortho después,
y hay que guardar el valor de la variable en otra variable (variable pxxP equal ${pxxp}),
porque una variable ... equal pxx se reevalúa cada vez que se lee y, si se arrastra hasta
después de la siguiente minimización, se está restando el mismo número a sí mismo.
El módulo de Young en [100] sale de los Cᵢⱼ con la expresión para tracción uniaxial según
⟨100⟩ dejando libres las caras:
variable E100c equal (${C11}+2.0*${C12})*(${C11}-${C12})/(${C11}+${C12})y, por el otro camino, de una tracción de ±0,2 % con las direcciones transversales relajadas a tensión nula, que es el ensayo del nanohilo en miniatura:
change_box all x final 0.0 $((1.0+v_epsu)*v_lx0) remap units box
fix relaxyz all box/relax y 0.0 z 0.0 vmax 0.0001
minimize 0.0 1.0e-16 1000000 10000000La entrada imprime el residuo de pyy y pzz después de relajar: si no es prácticamente
cero, la medida no es uniaxial y el módulo sale mal sin avisar.
in.falla es la energía de falla de apilamiento intrínseca. Una celda orientada
x=[11-2] y=[-110] z=[111] con superficies libres en z; se minimiza el cristal perfecto, se
desliza la mitad superior el vector parcial de Shockley a₀/6[11-2] entre dos planos (111),
y se vuelve a minimizar permitiendo movimiento solo en z, para que los átomos no deshagan
el deslizamiento:
lattice fcc ${a0} orient x 1 1 -2 orient y -1 1 0 orient z 1 1 1
fix solo_z all setforce 0.0 0.0 NULL
...
displace_atoms arriba move ${burg} 0.0 0.0 units box
minimize 0.0 1.0e-12 10000 100000
variable gamma equal 16021.766*(${efalla}-${eperf})/${area}El 16021.766 convierte eV/Ų a mJ/m². El plano de corte se pone a
0,5·nz·lzp − lzp/6 para que caiga entre dos capas (111) y no sobre una de ellas.
El experimento numérico
Con el potencial comprobado, el hilo. Una sección cuadrada {100} de 8 × 8 celdas unidad y
20 celdas de largo, construida directamente desde la red fcc con el a₀ relajado en la
validación:
| Geometría | sección {100} de 8 × 8 celdas, 20 de largo: 2,9 × 2,9 × 7,2 nm, 5780 átomos |
| Orientación | eje del hilo en [100] |
| Contorno | periódico en el eje; superficies libres en las cuatro caras laterales |
| Potencial | EAM de Mishin et al. (2001), Cu_mishin1.eam.alloy |
| Paso de tiempo | 2 fs |
| Equilibrado | minimización + NVT a 300 K durante 20 ps |
| Tracción | velocidad de deformación 5·10⁹ s⁻¹ hasta ε = 1,2, NVT a 300 K |
| Salidas | curva cada 100 pasos; 193 volcados con posiciones y estructura local por átomo |
Tres decisiones del montaje que no son obvias y que condicionan el resultado:
El contorno. Periódico a lo largo del eje y libre en las caras. Eso hace del hilo un cilindro infinito de sección finita: no hay mordazas, no hay extremos, y la superficie es superficie de verdad —los átomos de las caras se relajan hacia dentro y quedan en tensión—. Es la geometría que aísla el efecto de la sección, que es lo que quiero medir.
La sección. La tensión que se publica es la ingenieril, σ = F/A₀. En un nanohilo, A₀
es ambiguo: ¿se cuenta el plano atómico del borde o no? Entre una elección y la otra hay un
6 % de diferencia, que es más que cualquiera de los efectos de los que habla este artículo.
Así que no uso la sección nominal «8 a₀ × 8 a₀», sino la sección efectiva A₀ = N·Ω/L₀,
con Ω = a₀³/4 el volumen por átomo del cristal relajado. Es una definición que no depende
de dónde se decida poner el borde, y es la misma que se usa en la validación.
El termostato. NVT a 300 K durante toda la tracción, con la longitud impuesta por
fix deform. El hilo no está en equilibrio térmico estricto mientras se estira —se está
haciendo trabajo sobre él—, pero con 5780 átomos y un amortiguamiento de 0,2 ps la
temperatura se mantiene donde tiene que estar y no se acumula calor que ablande el hilo
artificialmente.
Detalle técnicoLa entrada del ensayo de tracción, comando a comando
La geometría y el contorno. boundary p s s es periódico en el eje (x) y
shrink-wrapped en las dos transversales, que es la forma de tener superficies libres sin
inventarse un vacío:
boundary p s s
lattice fcc ${a0}
region hilo block 0 ${nlong} 0 ${nsec} 0 ${nsec} units lattice
create_box 1 hilo
create_atoms 1 box
pair_style eam/alloy
pair_coeff * * ${pot} CuLa sección efectiva y la tensión. compute stress/atom NULL devuelve el virial por
átomo —sin el término cinético, que es lo que quiere decir el NULL— en unidades de
presión × volumen, es decir −P·V. Sumando la componente xx sobre todos los átomos y
dividiendo por el volumen efectivo se obtiene la tensión; el 1.0e-4 pasa de bar a GPa:
variable volat equal count(all)*(${a0}^3/4.0) # N * Omega
variable A0 equal ${volat}/${lx0} # seccion efectiva
compute satom all stress/atom NULL
compute sxxsum all reduce sum c_satom[1]
variable sigma equal 1.0e-4*c_sxxsum/(lx*${A0})La estructura local, con análisis de vecinos comunes (CNA). El radio de corte
0,8536·a₀ ≈ 3,09 Å cae entre la primera y la segunda capa de vecinos de la fcc, que es la
condición para que el criterio funcione:
compute cna all cna/atom $(0.8536*v_a0)Devuelve por átomo 1 = fcc, 2 = hcp, 3 = bcc, 4 = icosaédrico, 5 = desconocido. En un hilo fcc eso significa: 1 el cristal, 2 las fallas de apilamiento y las maclas, 5 la superficie libre y las zonas desordenadas. Es el único coste de cómputo apreciable aparte del propio potencial, y es lo que hace legible la animación.
El protocolo, en tres actos: minimizar, equilibrar y estirar. La referencia de longitud y de sección se recalcula después del equilibrado, no antes: el hilo se contrae al relajar la superficie y al calentarse, y usar la longitud de la red perfecta mete un offset en toda la curva.
min_style cg
minimize 1.0e-10 1.0e-12 20000 200000
reset_timestep 0
timestep ${dt}
velocity all create ${Tsim} 581923 mom yes rot no dist gaussian
fix eq all nvt temp ${Tsim} ${Tsim} 0.2
run ${nequil}
unfix eq
reset_timestep 0
variable lxref equal ${lxnow} # longitud ya equilibrada
variable A0ref equal ${Vat}/${lxref}
variable strain equal (lx-${lxref})/${lxref}
fix term all nvt temp ${Tsim} ${Tsim} 0.2
fix tira all deform 1 x erate ${erate} remap x
run ${nrun}erate 0.005 está en 1/ps: son los 5·10⁹ s⁻¹. remap x reescala afínmente las posiciones
con la caja en cada paso, en lugar de estirar solo los bordes y esperar a que la deformación
se propague.
La entrada tiene además una variable rmella que abre una mella esférica en una cara para
localizar el cuello: en un hilo periódico la rotura ocurre donde quiere, y para comparar
dos ejecuciones conviene fijar el sitio. En esta simulación vale 0: el hilo está intacto y
la rotura cae donde la física la ponga.
Qué sale
La animación es la simulación, no un vídeo: el navegador reconstruye los 80 fotogramas y los dibuja en vivo a partir de un binario de 793 KiB. Se puede arrastrar el hilo para girarlo y mover la barra para ir a cualquier instante; el punto de la curva va sincronizado.

Cómo leer los colores. Cada átomo va pintado según el análisis de vecinos comunes, que mira la vecindad de cada uno y decide a qué estructura se parece:
- Gris claro (fcc): cristal perfecto. Al principio es casi todo el interior del hilo.
- Azul (hcp): un átomo con entorno hexagonal compacto. En un cristal fcc, dos planos hcp seguidos son una macla y uno solo es una falla de apilamiento. Son las láminas azules que barren el hilo después de ceder, y aparecen porque la dislocación que nuclea se disocia en dos parciales de Shockley que dejan el plano mal apilado entre ellas. Es la magnitud que se validó arriba, apareciendo en pantalla.
- Gris medio: superficie libre y desorden. Al principio es la piel del hilo; al final, el cuello donde rompe.
La curva es la otra mitad del resultado:
Tres cosas que leer en ella:
El módulo de Young del hilo es 61,0 GPa, frente a los 67,1 GPa del cristal infinito a 0 K. Un 9 % menos, y es un efecto real, no ruido: hay dos causas y las dos empujan en el mismo sentido. La temperatura ablanda el cristal —a 300 K los átomos ya están explorando la parte anarmónica del pozo de potencial— y la superficie ablanda el hilo, porque un tercio de los átomos tiene menos vecinos con los que tirar. Que el número salga por debajo del valor de volumen es la comprobación de que la simulación está viendo la física del tamaño y no un artefacto: un error de sección o de referencia de longitud habría dado una desviación en cualquier dirección.
El límite elástico es 7,48 GPa a ε = 10,4 %, del orden de E/8. Ese es el orden de magnitud de la resistencia teórica de un cristal, y es lo que tiene que pasar: el hilo nace sin una sola dislocación, así que no puede deformarse plásticamente hasta que nuclea la primera, y nuclearla cuesta casi lo que cuesta romper el cristal. Ocurre en una arista de la superficie, que es el sitio con menos coordinación y más tensión local. Un 10,4 % de deformación elástica es un número que no existe en ingeniería de metales a granel; aquí sí, y es la razón por la que el límite elástico está dos órdenes de magnitud por encima del cobre recocido.
Después de ceder, la tensión se desploma y el hilo fluye hasta duplicar su longitud. La curva no vuelve a subir: una vez nucleada la primera dislocación, el mecanismo deja de costar y la plasticidad va por maclado, con las láminas azules recorriendo el hilo. Los dientes de sierra del tramo plástico son eventos individuales —cada diente es un plano que se macla—, que es algo que solo se ve con tan pocos átomos: en una muestra grande se promedian millones y la curva sale lisa. La sección se estrecha, se forma un cuello y el hilo rompe cerca de ε = 104 %.
Qué no demuestra esto
Aquí es donde un artículo de simulación se gana la credibilidad o la pierde. Cuatro límites, por orden de importancia:
La velocidad de deformación. 5·10⁹ s⁻¹ son unos catorce órdenes de magnitud más que un ensayo de tracción de laboratorio. No es una elección de pereza: es el techo de la dinámica molecular. Con pasos de 2 fs, llegar a ε = 1 a una velocidad realista pediría del orden de 10¹⁸ pasos, y no hay ordenador que haga eso. La consecuencia es concreta y hay que decirla: a esa velocidad la nucleación tiene menos tiempo para ocurrir por activación térmica, así que el límite elástico sale más alto que el que se mediría despacio, y la plasticidad queda concentrada en los pocos mecanismos que son lo bastante rápidos. Los 7,48 GPa son el límite elástico de esta simulación, no el de un nanohilo de cobre.
El tamaño. 2,9 nm de lado no es «pequeño», es extremo. A ese tamaño la fracción de
superficie domina, y los resultados no se extrapolan: duplicar la sección no da el mismo
módulo ni el mismo límite elástico, porque la relación superficie/volumen cambia y, a partir
de cierto tamaño, vuelve a haber sitio para una red de dislocaciones. Convertir esto en algo
defendible pasaría por un barrido de secciones —6 × 6, 8 × 8, 12 × 12, 16 × 16— y
comprobar hacia dónde converge el módulo. El montaje lo permite (NSEC es una variable de
entorno); este artículo no lo hace.
El potencial. Un EAM es una aproximación: densidad de electrones sin estructura angular. Para cobre fcc es una aproximación buena, y la tabla de validación dice que está bien aplicada, pero sigue siendo un modelo. Lo que se simula aquí es el comportamiento de ese potencial, y la vía para saber cuánto de eso es cobre es repetir el ensayo con otro potencial de cobre y ver qué sobrevive: si el límite elástico cambia un 20 % pero el mecanismo sigue siendo maclado, el mecanismo es el resultado y el número es una estimación.
La estadística. Una ejecución, una semilla de velocidades. La nucleación es un suceso raro y estocástico: la deformación exacta a la que cede el hilo y el plano concreto que se macla primero cambian de una semilla a otra. Para dar el límite elástico con una barra de error habría que repetir con varias semillas, y para que la rotura cayera siempre en el mismo sitio habría que usar la mella que la entrada ya permite.
Nada de esto quita valor al cálculo; lo encuadra. Lo que sí sostiene este trabajo es el mecanismo —hilo perfecto, nucleación en una arista a una tensión del orden de la teórica, plasticidad por maclado, cuello y rotura— y la coherencia numérica de la cadena que lo produce, que es lo que la tabla de validación certifica.
Cómo reproducirlo
Todo está en github.com/djoroya/sim-visuales, en
md/nanohilo-cu/. Un solo script:
./run.sh # validación + simulación + salidas (unos minutos)
./run.sh validacion # solo la validación del potencial
./run.sh simulacion # solo el ensayo de tracción
./run.sh salidas # curva, binario y póster, reusando los volcados
Hace falta LAMMPS con los paquetes MANYBODY y OPENMP (probado con la versión del
7 de febrero de 2024) y Python 3; el script crea el entorno virtual con numpy y matplotlib
la primera vez. El potencial no hay que descargarlo: Cu_mishin1.eam.alloy viene en el
directorio de potenciales de LAMMPS.
Las variables de entorno útiles son HILOS (hilos de OpenMP), NSEC y NLONG (celdas de
la sección y del largo), EPSMAX (deformación final) y NFRAMES (fotogramas del binario
del visor). Con los valores por defecto, en un portátil son unos minutos.
Los ficheros pesados —193 volcados de trayectoria y los logs— se quedan en datos/, fuera
de git. Lo que se versiona es lo reproducible: entradas de LAMMPS, scripts de Python y las
salidas pequeñas.
Detalle técnicoCómo cabe una trayectoria de 193 volcados en 793 KiB, y qué descarga esta página
La trayectoria completa en el disco son cientos de megabytes de texto. Lo que llega al navegador son 793 KiB, y la mayor parte del truco no es la cuantización, es guardar incrementos entre fotogramas en lugar de posiciones absolutas. Entre dos fotogramas un átomo se mueve décimas de angstrom: números pequeños y muy repetidos, que es de lo que vive gzip. Sobre los mismos datos, 80 fotogramas de 5780 átomos:
| Codificación | Comprimido |
|---|---|
| posiciones absolutas uint16, planos de byte separados | 2357 KiB |
| primer fotograma uint16 + incrementos int8 | 793 KiB |
El paso de cuantización es 0,07 Å, 1/36 del radio atómico: lo bastante fino para que no se
vea y lo bastante grueso para que ningún incremento desborde un int8. El incremento se
calcula contra la posición que va a reconstruir el visor, no contra la exacta, así el
error no se acumula: el máximo de reconstrucción es 0,035 Å. Y la estructura local (CNA) va
en un byte por átomo y fotograma, que comprime muy bien porque casi todo es «cristal» o
«superficie».
Lo que descarga de verdad quien lee esta página, medido sobre la compilación de la web y comprimido como lo sirve el servidor:
| Transferido | |
|---|---|
| El artículo entero (HTML + CSS) | 15 KiB |
| Póster PNG, en el HTML y compartido por los dos visores | 53 KiB |
| El cargador diferido, dentro del módulo de la página | 1 KiB |
three + el visor, nada más abrir (la animación está arriba) |
122 KiB |
Trayectoria .nw, una sola vez para los dos visores |
793 KiB |
Tiempos, deformación y curva (meta.json) |
2 KiB |
| Subtotal: la animación de cabecera en marcha | ≈ 986 KiB |
| La curva en SVG, al llegar hasta aquí | 24 KiB |
| Plotly, para la curva sincronizada | 369 KiB |
| Total habiendo leído el artículo entero | ≈ 1,4 MiB |
| Sin WebGL (o con JavaScript desactivado): texto y pósters | ≈ 92 KiB |
El cargador es un IntersectionObserver de menos de 1 KB que no pide nada hasta que su
figura está a 300 px de entrar en pantalla. Para el visor de aquí abajo eso pasa cuando
bajas; para la animación de la cabecera, nada más abrir la página. Si el navegador no
tiene WebGL no pide nada en ningún caso: se queda el póster, que ya venía en el HTML.
Y si has pedido menos movimiento en tu sistema, los dos se comportan distinto a propósito: la animación de la cabecera no llega a montarse —el póster ya es el fotograma fijo que estás pidiendo, y no tiene sentido descargar un megabyte para enseñar lo mismo—, mientras que este visor sí, porque aquí la simulación es el contenido del artículo; se monta parado, con la barra de tiempo para recorrerlo a mano.
three y Plotly son dependencias de esta web y los empaqueta el compilador: se sirven
desde este dominio, sin CDN y sin terceros.
Referencia del potencial: Y. Mishin, M. J. Mehl, D. A. Papaconstantopoulos, A. F. Voter y J. D. Kress, Structural stability and lattice defects in copper: ab initio, tight-binding and embedded-atom calculations, Phys. Rev. B 63, 224106 (2001).