Work : choix methode calcul alpha et cc (manque B boyls)
This commit is contained in:
parent
008f439667
commit
9e39302fcf
126
Work.ipynb
126
Work.ipynb
@ -1063,11 +1063,10 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"(*\n",
|
||||
"(* Test Boys *)\n",
|
||||
"(* Fonction calcul alpha Boys *)\n",
|
||||
"\n",
|
||||
"let n_ao = Mat.dim1 m_C ;;\n",
|
||||
"let n_mo = n_ao - 1;;\n",
|
||||
"let n_mo = Mat.dim2 m_C ;;\n",
|
||||
"\n",
|
||||
"let multipoles = \n",
|
||||
" AOBasis.multipole ao_basis;;\n",
|
||||
@ -1096,17 +1095,15 @@
|
||||
" in \n",
|
||||
" let m_a12 =\n",
|
||||
" let a12 g = Mat.init_cols n_ao n_ao ( fun i j -> \n",
|
||||
" g.{i,j} *. g.{i,j} \n",
|
||||
" -. (1. /. 4.) *. (g.{i,i} -. g.{j,j} *. g.{i,i} -. g.{j,j}))\n",
|
||||
" g.{i,j} *. g.{i,j} -. 0.25 *. (g.{i,i} -. g.{j,j} *. g.{i,i} -. g.{j,j}))\n",
|
||||
" in\n",
|
||||
" Mat.add (a12 phi_x_phi) ( Mat.add (a12 phi_y_phi) (a12 phi_z_phi))\n",
|
||||
" in\n",
|
||||
" Mat.init_cols n_ao n_ao ( fun i j ->\n",
|
||||
" asin(m_b12.{i,j} /. sqrt((m_a12.{i,j}**2.) +. (m_b12.{i,j}**2.) )));;\n",
|
||||
" 0.25 *. asin(m_b12.{i,j} /. sqrt((m_a12.{i,j}**2.) +. (m_b12.{i,j}**2.) )));;\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"m_alpha_boys multipoles;;\n",
|
||||
"*)"
|
||||
"m_alpha_boys multipoles;;\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -1564,6 +1561,8 @@
|
||||
"let m_C = MOBasis.mo_coef mo_basis;;\n",
|
||||
"let n_ao = Mat.dim1 m_C ;;\n",
|
||||
"let n_mo = Mat.dim2 m_C ;;\n",
|
||||
"let multipoles = \n",
|
||||
" AOBasis.multipole ao_basis;;\n",
|
||||
"let sum a = \n",
|
||||
" Array.fold_left (fun accu x -> accu +. x) 0. a\n",
|
||||
" \n",
|
||||
@ -1604,7 +1603,7 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"(* Fonction de calcul de tous les alpha -> 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",
|
||||
"\n",
|
||||
" (* Fonction de calcul de toutes les intégrales B_12 -> Matrice, dépend de m_C *)\n",
|
||||
@ -1628,9 +1627,8 @@
|
||||
" 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",
|
||||
"f_alpha m_C;; \n",
|
||||
"*) "
|
||||
" "
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -1639,7 +1637,7 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"(* Calcul de D *)\n",
|
||||
"(* Calcul de D -> critère à maximiser dans ER*)\n",
|
||||
"let s_D m_C = \n",
|
||||
" let v_D = \n",
|
||||
" let m_D = Mat.init_cols n_ao n_ao (fun i j ->\n",
|
||||
@ -1649,9 +1647,107 @@
|
||||
" in Vec.init n_ao ( fun i -> m_D.{i,1} )\n",
|
||||
" in Vec.sum v_D ;;\n",
|
||||
"\n",
|
||||
"(*\n",
|
||||
"s_D m_C;;\n",
|
||||
"*)"
|
||||
"\n",
|
||||
"s_D m_C;;\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"(* Fonction calcul alpha Boys *)\n",
|
||||
"let f_alpha_boys multipoles = \n",
|
||||
"\n",
|
||||
" let phi_x_phi =\n",
|
||||
" Multipole.matrix_x multipoles \n",
|
||||
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef \n",
|
||||
" in \n",
|
||||
" let phi_y_phi =\n",
|
||||
" Multipole.matrix_y multipoles \n",
|
||||
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef \n",
|
||||
" in\n",
|
||||
" let phi_z_phi =\n",
|
||||
" Multipole.matrix_y multipoles \n",
|
||||
" |> MOBasis.mo_matrix_of_ao_matrix ~mo_coef\n",
|
||||
" in \n",
|
||||
"\n",
|
||||
" let m_b12= \n",
|
||||
" let b12 g = Mat.init_cols n_ao n_ao ( fun i j ->\n",
|
||||
" (g.{i,i} -. g.{j,j}) *. g.{i,j})\n",
|
||||
"\n",
|
||||
" in \n",
|
||||
" Mat.add (b12 phi_x_phi) ( Mat.add (b12 phi_y_phi) (b12 phi_z_phi))\n",
|
||||
" in \n",
|
||||
" let m_a12 =\n",
|
||||
" let a12 g = Mat.init_cols n_ao n_ao ( fun i j -> \n",
|
||||
" g.{i,j} *. g.{i,j} -. 0.25 *. (g.{i,i} -. g.{j,j} *. g.{i,i} -. g.{j,j}))\n",
|
||||
" in\n",
|
||||
" Mat.add (a12 phi_x_phi) ( Mat.add (a12 phi_y_phi) (a12 phi_z_phi))\n",
|
||||
" in\n",
|
||||
" Mat.init_cols n_ao n_ao ( fun i j ->\n",
|
||||
" 0.25 *. asin(m_b12.{i,j} /. sqrt((m_a12.{i,j}**2.) +. (m_b12.{i,j}**2.) )));;\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"f_alpha_boys multipoles;;\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"(* Test méthode de calcul de alpha *)\n",
|
||||
"let calcul_alpha_2 methode = \n",
|
||||
"\n",
|
||||
"let alpha_boys = f_alpha_boys multipoles\n",
|
||||
"in\n",
|
||||
"let alpha_er = f_alpha m_C\n",
|
||||
"in\n",
|
||||
"let alpha methode =\n",
|
||||
" match methode with \n",
|
||||
" | \"Boys\"\n",
|
||||
" | \"boys\" -> alpha_boys\n",
|
||||
" | \"ER\"\n",
|
||||
" | \"er\" -> alpha_er\n",
|
||||
" | _ -> invalid_arg \"Unknown method, please enter Boys or ER\"\n",
|
||||
"\n",
|
||||
"in \n",
|
||||
"alpha methode;;\n",
|
||||
"\n",
|
||||
"calcul_alpha_2 \"ER\" ;;\n",
|
||||
"calcul_alpha_2 \"Boys\" ;;\n",
|
||||
"let methode = \"ER\";;\n",
|
||||
"let m_alpha = calcul_alpha_2 methode;;"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"(* Test méthode de calcul du critère de convergence *)\n",
|
||||
"let calcul_cc methode = \n",
|
||||
"\n",
|
||||
"let b_boys = 2.\n",
|
||||
"in\n",
|
||||
"let d_er = s_D m_C\n",
|
||||
"in\n",
|
||||
"let cc methode =\n",
|
||||
" match methode with \n",
|
||||
" | \"Boys\"\n",
|
||||
" | \"boys\" -> b_boys\n",
|
||||
" | \"ER\"\n",
|
||||
" | \"er\" -> d_er\n",
|
||||
" | _ -> invalid_arg \"Unknown method, please enter Boys or ER\"\n",
|
||||
"\n",
|
||||
"in \n",
|
||||
"cc methode;;\n",
|
||||
"\n",
|
||||
"calcul_cc \"ER\";;\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user