Work: modif ER range matrice
This commit is contained in:
parent
1268019bc2
commit
0e3bc52a88
55
Work.ipynb
55
Work.ipynb
@ -952,7 +952,15 @@
|
|||||||
"\n",
|
"\n",
|
||||||
"Le but est de minimiser la matrice $D(\\theta)$ il faut donc faire une rotation des orbitales i et j donnants le plus grand élément de la matrice $D(\\theta)$\n",
|
"Le but est de minimiser la matrice $D(\\theta)$ il faut donc faire une rotation des orbitales i et j donnants le plus grand élément de la matrice $D(\\theta)$\n",
|
||||||
"\n",
|
"\n",
|
||||||
"Si je comprends bien, on doit prendre le plus grand élément $D(i,j)$ de la matrice $D(\\theta)$ pour $\\theta = 0$ au départ et d'appliquer des rotation en faisant varier $\\theta$ pour minimiser $D(i,j)$ puis recommencer avec le nouveau $D(i,j)max$\n",
|
"Si je comprends bien, on doit prendre le plus grand élément $D(i,j)$ de la matrice $D(\\theta)$ pour $\\theta = 0$ au départ et d'appliquer des rotation en faisant varier $\\theta$ pour minimiser $D(i,j)$ sachant que les extrema de $D(\\theta)$ sont de la forme :\n",
|
||||||
|
"\n",
|
||||||
|
"$Tan(\\theta) = - \\frac{\\gamma}{\\beta}$\n",
|
||||||
|
"\n",
|
||||||
|
"$D(\\theta]$ à 4 extrema :\n",
|
||||||
|
"\n",
|
||||||
|
"$4\\theta; \\;\\; 4\\theta +\\pi; \\;\\; 4\\theta+ 2\\pi; \\;\\; 4\\theta+ 3\\pi$\n",
|
||||||
|
"\n",
|
||||||
|
"Puis recommencer avec le nouveau $D(i,j)max$\n",
|
||||||
"\n",
|
"\n",
|
||||||
"\n"
|
"\n"
|
||||||
]
|
]
|
||||||
@ -962,7 +970,22 @@
|
|||||||
"execution_count": null,
|
"execution_count": null,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": []
|
"source": [
|
||||||
|
"(*let multipoles = \n",
|
||||||
|
" AOBasis.multipole ao_basis\n",
|
||||||
|
" in\n",
|
||||||
|
"\n",
|
||||||
|
" let phi_x_phi =\n",
|
||||||
|
" Multipole.matrix_x multipoles \n",
|
||||||
|
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef \n",
|
||||||
|
" in\n",
|
||||||
|
" \n",
|
||||||
|
" let phi_y_phi =\n",
|
||||||
|
" Multipole.matrix_y multipoles \n",
|
||||||
|
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef \n",
|
||||||
|
" in\n",
|
||||||
|
"*)"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
@ -1278,11 +1301,7 @@
|
|||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": null,
|
||||||
"metadata": {
|
"metadata": {},
|
||||||
"jupyter": {
|
|
||||||
"outputs_hidden": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"let m_Phi = m_C\n",
|
"let m_Phi = m_C\n",
|
||||||
@ -1296,7 +1315,7 @@
|
|||||||
"pour appliquer R afin d'effectuer la rotation des orbitales *) (* {1,2} -> 1ere ligne, 2e colonne *)\n",
|
"pour appliquer R afin d'effectuer la rotation des orbitales *) (* {1,2} -> 1ere ligne, 2e colonne *)\n",
|
||||||
"let p = indice_i;;\n",
|
"let p = indice_i;;\n",
|
||||||
"let q = indice_j;;\n",
|
"let q = indice_j;;\n",
|
||||||
"let m_Ksi = Mat.init_cols n 2 (fun i j -> if j=1 then m_Phi.{i,p} else m_Phi.{i,q} );;\n",
|
"let m_Ksi = Mat.init_cols n_ao 2 (fun i j -> if j=1 then m_Phi.{i,p} else m_Phi.{i,q} );;\n",
|
||||||
"\n",
|
"\n",
|
||||||
"(* Fonction de calcul de ksi~ (matrice n par 2), nouvelle matrice par application de la matrice de rotation dans laquelle on\n",
|
"(* Fonction de calcul de ksi~ (matrice n par 2), nouvelle matrice par application de la matrice de rotation dans laquelle on\n",
|
||||||
"obtient les deux orbitales que l'on va réinjecter dans la matrice Phi*)\n",
|
"obtient les deux orbitales que l'on va réinjecter dans la matrice Phi*)\n",
|
||||||
@ -1322,13 +1341,13 @@
|
|||||||
"celle contenant i~ et j~ *)\n",
|
"celle contenant i~ et j~ *)\n",
|
||||||
"\n",
|
"\n",
|
||||||
"(* Matrice intérmédiare pour l'injection de ksi~ (i~ et j~) dans la matrice Phi *)\n",
|
"(* Matrice intérmédiare pour l'injection de ksi~ (i~ et j~) dans la matrice Phi *)\n",
|
||||||
"let m_Psi_tilde = Mat.init_cols n_mo n_mo (fun i j -> if j=q then m_Ksi_tilde.{i,p}\n",
|
"let m_Psi_tilde = Mat.init_cols n_ao n_mo (fun i j -> if j=q then m_Ksi_tilde.{i,1}\n",
|
||||||
" else if j=p then m_Ksi_tilde.{i,q}\n",
|
" else if j=p then m_Ksi_tilde.{i,2}\n",
|
||||||
" else 0.);;\n",
|
" else 0.);;\n",
|
||||||
" \n",
|
" (* p q verif*) \n",
|
||||||
"(* Matrice intermédiaire pour supprimer ksi (i et j) dans la matrice Phi *) \n",
|
"(* Matrice intermédiaire pour supprimer ksi (i et j) dans la matrice Phi *) \n",
|
||||||
"let m_Psi = Mat.init_cols n_mo n_mo (fun i j -> if j=q then m_Ksi.{i,p}\n",
|
"let m_Psi = Mat.init_cols n_ao n_mo (fun i j -> if j=q then m_Ksi.{i,1}\n",
|
||||||
" else if j=p then m_Ksi.{i,q}\n",
|
" else if j=p then m_Ksi.{i,2}\n",
|
||||||
" else 0.);;\n",
|
" else 0.);;\n",
|
||||||
" \n",
|
" \n",
|
||||||
"(* Matrice intérmédiaire où les orbitales i et j ont été supprimées et remplacées par des 0, par soustraction de la matrice Phi\n",
|
"(* Matrice intérmédiaire où les orbitales i et j ont été supprimées et remplacées par des 0, par soustraction de la matrice Phi\n",
|
||||||
@ -1462,7 +1481,7 @@
|
|||||||
" in\n",
|
" in\n",
|
||||||
" let q = indice_j\n",
|
" let q = indice_j\n",
|
||||||
" in\n",
|
" in\n",
|
||||||
" let m_Ksi = Mat.init_cols n 2 (fun i j -> if j=1 then m_Phi.{i,p} else m_Phi.{i,q} )\n",
|
" let m_Ksi = Mat.init_cols n_ao 2 (fun i j -> if j=1 then m_Phi.{i,p} else m_Phi.{i,q} )\n",
|
||||||
" in\n",
|
" in\n",
|
||||||
" gemm m_Ksi m_R\n",
|
" gemm m_Ksi m_R\n",
|
||||||
"\n",
|
"\n",
|
||||||
@ -1475,13 +1494,13 @@
|
|||||||
" let m_interm = \n",
|
" let m_interm = \n",
|
||||||
"\n",
|
"\n",
|
||||||
" (* Matrice intérmédiare pour l'injection de ksi~ (i~ et j~) dans la matrice Phi *)\n",
|
" (* Matrice intérmédiare pour l'injection de ksi~ (i~ et j~) dans la matrice Phi *)\n",
|
||||||
" let m_Psi_tilde = Mat.init_cols n_mo n_mo (fun i j -> if j=q then m_Ksi_tilde.{i,p}\n",
|
" let m_Psi_tilde = Mat.init_cols n_ao n_mo (fun i j -> if j=q then m_Ksi_tilde.{i,1}\n",
|
||||||
" else if j=p then m_Ksi_tilde.{i,q}\n",
|
" else if j=p then m_Ksi_tilde.{i,2}\n",
|
||||||
" else 0.)\n",
|
" else 0.)\n",
|
||||||
" in\n",
|
" in\n",
|
||||||
" (* Matrice intermédiaire pour supprimer ksi (i et j) dans la matrice Phi *) \n",
|
" (* Matrice intermédiaire pour supprimer ksi (i et j) dans la matrice Phi *) \n",
|
||||||
" let m_Psi = Mat.init_cols n_mo n_mo (fun i j -> if j=q then m_Ksi.{i,p}\n",
|
" let m_Psi = Mat.init_cols n_ao n_mo (fun i j -> if j=q then m_Ksi.{i,1}\n",
|
||||||
" else if j=p then m_Ksi.{i,q}\n",
|
" else if j=p then m_Ksi.{i,2}\n",
|
||||||
" else 0.)\n",
|
" else 0.)\n",
|
||||||
"\n",
|
"\n",
|
||||||
" in\n",
|
" in\n",
|
||||||
|
Loading…
Reference in New Issue
Block a user