9 votos

Conversión del hessiano de coordenadas internas a coordenadas cartesianas

He realizado un cálculo de frecuencias CASPT2 utilizando el paquete de programas MOLCAS8. Necesito la matriz cartesiana hessiana completa como entrada para un paquete de programas posterior.

MOLCAS8 realiza los cálculos de frecuencia de CASPT2 de forma numérica. El programa MCKINLEY se llama para este propósito, sin embargo, ahora es mi opinión que todos los cálculos numéricos de segunda derivada en MOLCAS son manejados no por MCKINLEY sino por el módulo apenas documentado supermac . De todos modos, el hessiano se imprime completamente en coordenadas internas una vez que el cálculo está terminado. Para un sistema de 10 átomos el hessiano interno es de tamaño 24 x 24, lo que sugiere coordenadas internas no redundantes (MOLCAS las llama "coordenadas internas primitivas").

¿Alguien conoce un software capaz de transformar una matriz hessiana de coordenadas internas a coordenadas cartesianas? Soy consciente de que esto probablemente será complicado, ya que las coordenadas internas no son tan inequívocas y directas como las cartesianas. Sin embargo, mis esfuerzos iniciales de búsqueda no dieron como resultado ningún paquete de software capaz de transformar un hessiano calculado en coordenadas internas a cartesianas. Se agradece cualquier ayuda.

Alternativamente, ¿alguien conoce un paquete de programas de química cuántica con el que pueda obtener un hessiano cartesiano completo a nivel de CASPT2?

No sé si esto ayuda, pero MOLCAS también parece imprimir las constantes de fuerza de cada átomo en coordenadas cartesianas. Además un .molden donde se incluyen los modos normales. Sin embargo, el hessiano completo no parece estar escrito en este archivo Molden.

0 votos

No estoy seguro de que esto sea útil, pero comprueba la palabra clave "cartesiana" para el módulo Slapaf. jellby.altervista.org/manual/guía de usuarios/programas/

0 votos

24 elementos/dimensión sigue la $3N-6$ para el número de modos normales de una molécula no lineal, y no implica necesariamente un sistema de coordenadas sobre otro.

5voto

apfelsaft Puntos 151

BAGEL ( http://nubakery.org/ y https://github.com/nubakery/bagel ) tiene gradientes analíticos CASPT2 y puede realizar cálculos de frecuencia.

Actualmente se está preparando para el lanzamiento de la versión 1.0, por lo que todavía podría tener errores. Por otro lado, está disponible libremente bajo la GPL.

En cuanto a la conversión del hessiano, podría ser útil mirar el programa INTDER, que es (entre otros ) parte del conjunto de programas PSI3 disponibles aquí: https://sourceforge.net/projects/psicode/files/psi/3.4.0/psi-3.4.0.tar.gz/download - PSI3 también está bajo la GPL.

La página del manual de INTDER está aquí: https://manned.org/intder y dice:

"Transformaciones del campo de fuerza entre las coordenadas cartesianas y las coordenadas internas generales de coordenadas hasta el cuarto orden, incluyendo estructuras de referencia no estacionarias estructuras de referencia no estacionarias. Tanto las transformaciones hacia delante como las inversas son posibles; por lo tanto, utilizando coordenadas cartesianas intermedias los campos de fuerza pueden ser transferidos entre diferentes representaciones en el espacio interno".

No puedo decir si será fácil coaccionar el hessiano de MOLCAS en un formato que le guste a INTDER y luego transformarlo como quieras, ya que no tengo ninguna experiencia directa con INTDER - normalmente se ejecuta como un paso en una cadena de comandos generados automáticamente por las rutinas del controlador PSI3.

3voto

qhartman Puntos 28

En la Geometría [1] hay un código para convertir una coordenada interna hessiana en coordenadas cartesianas

    def calcHessCart(self, xyz, gradq, hessq):
        """
        Compute the Cartesian Hessian given internal coordinate gradient and Hessian. 
        Returns the answer in a.u.
        """
        Bmat = self.wilsonB(xyz)
        Hx = np.einsum('ai,ab,bj->ij', Bmat, hessq, Bmat, optimize=True)
        Hx += np.einsum('ji,j->i', Bmat, gradq, optimize=True)

        return Hx

El código también se reproduce en mi repositorio [2] pero nunca he intentado usarlo

Referencias:

  1. https://raw.githubusercontent.com/leeping/geomeTRIC/master/geometric/internal.py
  2. https://github.com/ZimmermanGroup/pyGSM/tree/master/pygsm/coordinate_systems

-2voto

Avishai Barnoy Puntos 188

Quizás openbabel puede hacerlo. Encontré este sitio web que puede convertir las matrices z en coordenadas cartesianas: http://www.shodor.org/chemviz/zmatrices/babel.html . Sé que el MolMod La biblioteca python puede hacer la conversión si quieres profundizar en eso. Y otra biblioteca de python que puede hacerlo chemcoord Espero que esto ayude.

0 votos

Gracias, pero todas las bibliotecas que nombraste no pueden convertir una matriz hessiana de coordenadas internas a cartesianas. MolMod es capaz de calcular una matriz hessiana en coordenadas internas según veo, pero no es capaz de convertir una hessiana preexistente en coordenadas internas a coordenadas cartesianas. ¿Puede verificar esto?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X