Modis index

This commit is contained in:
Yann Damour 2020-05-14 15:08:25 +02:00
parent a28dab63cd
commit 7e542fc7f2

View File

@ -1535,7 +1535,8 @@
"source": [ "source": [
"(* Fonction de calcul de tous les alpha ER -> Matrice, dépend de m_a12, m_b12 qui dépendent de m_C *)\n", "(* Fonction de calcul de tous les alpha ER -> Matrice, dépend de m_a12, m_b12 qui dépendent de m_C *)\n",
"let f_alpha m_C =\n", "let f_alpha m_C =\n",
"\n", " let n_mo = Mat.dim2 m_C\n",
" in\n",
" (* Fonction de calcul de toutes les intégrales B_12 -> Matrice, dépend de m_C *)\n", " (* Fonction de calcul de toutes les intégrales B_12 -> Matrice, dépend de m_C *)\n",
" let m_b12 = Mat.init_cols n_mo n_mo (fun i j -> \n", " let m_b12 = Mat.init_cols n_mo n_mo (fun i j -> \n",
" integral_general (fun a b e f i j ->\n", " integral_general (fun a b e f i j ->\n",
@ -1571,6 +1572,8 @@
"(* Calcul de D -> critère à maximiser dans ER*)\n", "(* Calcul de D -> critère à maximiser dans ER*)\n",
"let s_D m_C = \n", "let s_D m_C = \n",
" let v_D = \n", " let v_D = \n",
" let n_mo = Mat.dim2 m_C\n",
" in\n",
" let m_D = Mat.init_cols n_mo n_mo (fun i j ->\n", " let m_D = Mat.init_cols n_mo n_mo (fun i j ->\n",
" integral_general (fun a b e f i j -> m_C.{a,i} *. m_C.{b,i} *. m_C.{e,i} *. m_C.{f,i} \n", " integral_general (fun a b e f i j -> m_C.{a,i} *. m_C.{b,i} *. m_C.{e,i} *. m_C.{f,i} \n",
" ) i j\n", " ) i j\n",
@ -1590,19 +1593,20 @@
"outputs": [], "outputs": [],
"source": [ "source": [
"(* Fonction calcul alpha Boys *)\n", "(* Fonction calcul alpha Boys *)\n",
"let f_alpha_boys mo_coef = \n", "let f_alpha_boys m_C = \n",
"\n", " let n_mo = Mat.dim2 m_C\n",
" in\n",
" let phi_x_phi =\n", " let phi_x_phi =\n",
" Multipole.matrix_x multipoles \n", " Multipole.matrix_x multipoles \n",
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef \n", " |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef:m_C\n",
" in \n", " in \n",
" let phi_y_phi =\n", " let phi_y_phi =\n",
" Multipole.matrix_y multipoles \n", " Multipole.matrix_y multipoles \n",
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef \n", " |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef:m_C\n",
" in\n", " in\n",
" let phi_z_phi =\n", " let phi_z_phi =\n",
" Multipole.matrix_z multipoles \n", " Multipole.matrix_z multipoles \n",
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef\n", " |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef:m_C\n",
" in \n", " in \n",
"\n", "\n",
" let m_b12= \n", " let m_b12= \n",
@ -1636,33 +1640,34 @@
"source": [ "source": [
"(* Fonction de calcul de D Boys *)\n", "(* Fonction de calcul de D Boys *)\n",
"\n", "\n",
"let d_boys mo_coef = \n", "let d_boys m_C = \n",
"\n", "\n",
" let phi_x2_phi =\n", " let phi_x_phi =\n",
" Multipole.matrix_x2 multipoles \n", " Multipole.matrix_x multipoles \n",
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef \n", " |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef:m_C \n",
" in\n", " in\n",
" \n", " \n",
" Util.debug_matrix \"phi_x2_phi\" phi_x2_phi;\n", " (*Util.debug_matrix \"phi_x_phi\" phi_x_phi;*)\n",
" \n", " \n",
" let phi_y2_phi =\n", " let phi_y_phi =\n",
" Multipole.matrix_y2 multipoles \n", " Multipole.matrix_y multipoles \n",
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef \n", " |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef:m_C \n",
" in\n", " in\n",
" \n", " \n",
" Util.debug_matrix \"phi_y2_phi\" phi_y2_phi;\n", " (*Util.debug_matrix \"phi_y_phi\" phi_y_phi;*)\n",
" \n", " \n",
" let phi_z2_phi =\n", " let phi_z_phi =\n",
" Multipole.matrix_z2 multipoles \n", " Multipole.matrix_z multipoles \n",
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef\n", " |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef:m_C\n",
"\n", "\n",
" in\n", " in\n",
" \n", " \n",
" Util.debug_matrix \"phi_z2_phi\" phi_z2_phi;\n", " (*Util.debug_matrix \"phi_z_phi\" phi_z_phi;*)\n",
" \n", " \n",
" let v_D_boys = \n", " let v_D_boys = \n",
" Vec.init n_mo ( fun i -> phi_x2_phi.{i,i} +. phi_y2_phi.{i,i} +. phi_z2_phi.{i,i})\n", " let n_mo = Mat.dim2 m_C\n",
"\n", " in\n",
" Vec.init n_mo ( fun i -> (phi_x_phi.{i,i})**2. +. (phi_y_phi.{i,i})**2. +. (phi_z_phi.{i,i})**2.)\n",
"in\n", "in\n",
"Vec.sum v_D_boys;;\n", "Vec.sum v_D_boys;;\n",
"\n", "\n",
@ -1690,7 +1695,7 @@
" in\n", " in\n",
" let d_boys = d_boys m_C\n", " let d_boys = d_boys m_C\n",
" in\n", " in\n",
" Printf.printf \"%f\\n\" d_boys;\n", " (*Printf.printf \"%f\\n\" d_boys;*)\n",
" let alpha_er = f_alpha m_C\n", " let alpha_er = f_alpha m_C\n",
" in\n", " in\n",
" let d_er = s_D m_C\n", " let d_er = s_D m_C\n",
@ -1748,6 +1753,8 @@
"(* Détermination alpha_max et ses indices i et j.\n", "(* Détermination alpha_max et ses indices i et j.\n",
"Si alpha max > pi/2 on soustrait pi/2 à la matrice des alphas de manière récursive *)\n", "Si alpha max > pi/2 on soustrait pi/2 à la matrice des alphas de manière récursive *)\n",
"let rec new_m_alpha m_alpha n_rec_alpha=\n", "let rec new_m_alpha m_alpha n_rec_alpha=\n",
" let n_mo = Mat.dim1 m_alpha\n",
" in\n",
" let alpha_m =\n", " let alpha_m =\n",
" \n", " \n",
" (*Printf.printf \"%i\\n%!\" n_rec_alpha;*)\n", " (*Printf.printf \"%i\\n%!\" n_rec_alpha;*)\n",
@ -1957,7 +1964,7 @@
"outputs": [], "outputs": [],
"source": [ "source": [
"let toto = [4];;\n", "let toto = [4];;\n",
"let occ_m_C m_C toto= Mat.init_cols n_ao n_mo (fun i j ->\n", "let occ_m_C m_C toto= Mat.init_cols n_ao 3 (fun i j ->\n",
" if not (List.mem j toto) \n", " if not (List.mem j toto) \n",
" then m_C.{i,j}\n", " then m_C.{i,j}\n",
" else 0.);;\n", " else 0.);;\n",
@ -2096,7 +2103,7 @@
"(* Calcul *)\n", "(* Calcul *)\n",
"(* Fonction / Matrice des coef / Méthode(\"Boys\" ou \"ER\") / Pas(=< 1.) / Nombre d'itérations max / \n", "(* Fonction / Matrice des coef / Méthode(\"Boys\" ou \"ER\") / Pas(=< 1.) / Nombre d'itérations max / \n",
"0. (valeur de D pour initier la boucle) / critère de convergence sur D*)\n", "0. (valeur de D pour initier la boucle) / critère de convergence sur D*)\n",
"final_m_C m_C \"boys\" 1. 3 0. 10e-7;;" "final_m_C m_C \"boys\" 1. 20 0. 10e-7;;"
] ]
}, },
{ {