diff --git a/Work.ipynb b/Work.ipynb index d661f4a..ce10a79 100644 --- a/Work.ipynb +++ b/Work.ipynb @@ -78,7 +78,7 @@ "(* --------- *)\n", "\n", "(*Mettre le bon chemin ici *)\n", - "#cd \"/home/ydamour/QCaml\";;\n", + "#cd \"/home/scemama/QCaml\";;\n", "\n", "#use \"topfind\";;\n", "#require \"jupyter.notebook\";;\n", @@ -161,15 +161,13 @@ }, "outputs": [], "source": [ - "(*\n", "let xyz_string = \n", "\"3\n", "Water\n", "O 0. 0. 0.\n", "H -0.756950272703377558 0. -0.585882234512562827\n", "H 0.756950272703377558 0. -0.585882234512562827\n", - "\"\n", - "*) " + "\"" ] }, { @@ -185,7 +183,7 @@ "metadata": {}, "outputs": [], "source": [ - "\n", + "(*\n", "let xyz_string = \n", "\"4\n", "H4\n", @@ -193,7 +191,8 @@ "H 1.8 0. 0.\n", "H 3.6 0. 0.\n", "H 5.4 0. 0.\n", - "\"\n" + "\"\n", + "*)" ] }, { @@ -203,7 +202,7 @@ "outputs": [], "source": [ "(* Fonction création chaîne linéaire de n H *)\n", - "\n", + "(*\n", "let xyz d n = \n", " let accu = \"\"\n", " in\n", @@ -219,7 +218,8 @@ " accu\n", " in string_of_int(n) ^ \"\\nH\" ^ string_of_int(n) ^ \"\\n\" ^ toto accu d n;;\n", " \n", - "let xyz_string = xyz 1.8 4;;\n" + "let xyz_string = xyz 1.8 4;;\n", + "*)" ] }, { @@ -250,8 +250,8 @@ }, "outputs": [], "source": [ + "(*\n", "let basis_string = \n", - "\n", "\"\n", "HYDROGEN\n", "S 6\n", @@ -263,11 +263,10 @@ "6 0.1001124280E+00 0.1303340841E+00\n", "\n", "\"\n", + "*)\n", "\n", "\n", "\n", - "\n", - "(*\n", "let basis_string = \n", "\"\n", "HYDROGEN\n", @@ -280,7 +279,6 @@ "1 1.220000E-01 1.000000E+00\n", "P 1\n", "1 7.270000E-01 1.0000000\n", - "\"\n", "\n", "OXYGEN\n", "S 9\n", @@ -314,8 +312,7 @@ "1 2.753000E-01 1.000000E+00\n", "D 1\n", "1 1.185000E+00 1.0000000\n", - "\n", - "*)" + "\"" ] }, { @@ -1493,6 +1490,7 @@ "let n_mo = Mat.dim2 m_C ;;\n", "let multipoles = \n", " AOBasis.multipole ao_basis;;\n", + " \n", "let sum a = \n", " Array.fold_left (fun accu x -> accu +. x) 0. a\n", " \n", @@ -1524,7 +1522,51 @@ " ) (Util.array_range 1 n_ao)\n", " in sum v\n", ") (Util.array_range 1 n_ao)\n", - "|> sum " + "|> sum \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "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", + " 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 -> 0.) in\n", + " let m_a12 = Mat.init_cols n_mo n_mo (fun i j -> 0.) in\n", + " Array.iter (fun a ->\n", + " Array.iter (fun b ->\n", + " let mca = Vec.init n_mo (fun i -> m_C.{a,i} *. m_C.{b,i}) in\n", + " Array.iter (fun e ->\n", + " Array.iter (fun f ->\n", + " let integral = ERI.get_phys ee_ints a e b f in\n", + " Array.iter ( fun i -> \n", + " let mcei = m_C.{e,i} *. m_C.{f,i} in\n", + " Array.iter ( fun j -> \n", + " let x = m_C.{e,i} *. m_C.{f,j} *. integral in\n", + " let mcaij = ( mca.{i} -. mca.{j} ) in\n", + " m_b12.{i,j} <- m_b12.{i,j} +. mcaij *. x;\n", + " m_a12.{i,j} <- m_a12.{i,j} +. m_C.{a,i} *. m_C.{b,j} *. x\n", + " -. 0.25 *. ( mcei -. m_C.{e,j} *. m_C.{f,j} ) *. mcaij *. integral \n", + " ) (Util.array_range 1 n_mo)\n", + " ) (Util.array_range 1 n_mo)\n", + " ) (Util.array_range 1 n_ao)\n", + " ) (Util.array_range 1 n_ao)\n", + " ) (Util.array_range 1 n_ao)\n", + " ) (Util.array_range 1 n_ao);\n", + "\n", + " Mat.init_cols n_mo n_mo ( fun i j -> \n", + " if i= j then 0. \n", + " else 0.25 *. (acos(-. m_a12.{i,j} /. sqrt((m_a12.{i,j}**2.) +. (m_b12.{i,j}**2.)))));;\n", + "\n", + "(*********************)\n", + "\n", + "f_alpha m_C;; " ] }, {