diff --git a/Work.ipynb b/Work.ipynb index c625a3d..d661f4a 100644 --- a/Work.ipynb +++ b/Work.ipynb @@ -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;;" ] }, {