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": [
"(* 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",
"\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",
" let m_b12 = Mat.init_cols n_mo n_mo (fun 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",
"let s_D m_C = \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",
" 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",
@ -1590,19 +1593,20 @@
"outputs": [],
"source": [
"(* Fonction calcul alpha Boys *)\n",
"let f_alpha_boys mo_coef = \n",
"\n",
"let f_alpha_boys m_C = \n",
" let n_mo = Mat.dim2 m_C\n",
" in\n",
" let phi_x_phi =\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",
" let phi_y_phi =\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",
" let phi_z_phi =\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",
"\n",
" let m_b12= \n",
@ -1636,33 +1640,34 @@
"source": [
"(* Fonction de calcul de D Boys *)\n",
"\n",
"let d_boys mo_coef = \n",
"let d_boys m_C = \n",
"\n",
" let phi_x2_phi =\n",
" Multipole.matrix_x2 multipoles \n",
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef \n",
" let phi_x_phi =\n",
" Multipole.matrix_x multipoles \n",
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef:m_C \n",
" in\n",
" \n",
" Util.debug_matrix \"phi_x2_phi\" phi_x2_phi;\n",
" (*Util.debug_matrix \"phi_x_phi\" phi_x_phi;*)\n",
" \n",
" let phi_y2_phi =\n",
" Multipole.matrix_y2 multipoles \n",
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef \n",
" let phi_y_phi =\n",
" Multipole.matrix_y multipoles \n",
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef:m_C \n",
" in\n",
" \n",
" Util.debug_matrix \"phi_y2_phi\" phi_y2_phi;\n",
" (*Util.debug_matrix \"phi_y_phi\" phi_y_phi;*)\n",
" \n",
" let phi_z2_phi =\n",
" Multipole.matrix_z2 multipoles \n",
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef\n",
" let phi_z_phi =\n",
" Multipole.matrix_z multipoles \n",
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef:m_C\n",
"\n",
" in\n",
" \n",
" Util.debug_matrix \"phi_z2_phi\" phi_z2_phi;\n",
" (*Util.debug_matrix \"phi_z_phi\" phi_z_phi;*)\n",
" \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",
"\n",
" let n_mo = Mat.dim2 m_C\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",
"Vec.sum v_D_boys;;\n",
"\n",
@ -1690,7 +1695,7 @@
" in\n",
" let d_boys = d_boys m_C\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",
" in\n",
" let d_er = s_D m_C\n",
@ -1748,6 +1753,8 @@
"(* 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",
"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",
" \n",
" (*Printf.printf \"%i\\n%!\" n_rec_alpha;*)\n",
@ -1957,7 +1964,7 @@
"outputs": [],
"source": [
"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",
" then m_C.{i,j}\n",
" else 0.);;\n",
@ -2096,7 +2103,7 @@
"(* Calcul *)\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",
"final_m_C m_C \"boys\" 1. 3 0. 10e-7;;"
"final_m_C m_C \"boys\" 1. 20 0. 10e-7;;"
]
},
{