Work : pattern matching ER/Boys
This commit is contained in:
parent
7b24683ea3
commit
8910042833
187
Work.ipynb
187
Work.ipynb
@ -1698,7 +1698,7 @@
|
||||
" 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",
|
||||
" 0.25 *. acos( -. m_a12.{i,j} /. sqrt((m_a12.{i,j}**2.) +. (m_b12.{i,j}**2.) )));;\n",
|
||||
"\n",
|
||||
"(****************************)\n",
|
||||
"\n",
|
||||
@ -1774,10 +1774,12 @@
|
||||
"\n",
|
||||
"(*************************)\n",
|
||||
"\n",
|
||||
"(*\n",
|
||||
"calcul_alpha_2 \"ER\" ;;\n",
|
||||
"calcul_alpha_2 \"Boys\" ;;\n",
|
||||
"let methode = \"ER\";;\n",
|
||||
"let m_alpha = calcul_alpha_2 methode;;"
|
||||
"let m_alpha = calcul_alpha_2 methode;;\n",
|
||||
"*)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -1806,7 +1808,63 @@
|
||||
"\n",
|
||||
"(*************************)\n",
|
||||
"\n",
|
||||
"calcul_cc \"boys\";;"
|
||||
"(*\n",
|
||||
"calcul_cc \"boys\";;\n",
|
||||
"*)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"(* Test méthode de calcul de alpha et de D ensemble *)\n",
|
||||
"type alphad = {\n",
|
||||
"m_alpha : Mat.t;\n",
|
||||
"d : float;\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"let m_alpha_d methode m_C multipoles = \n",
|
||||
"\n",
|
||||
"let alpha_boys = f_alpha_boys multipoles\n",
|
||||
"in\n",
|
||||
"let d_boys = d_boys multipoles\n",
|
||||
"in\n",
|
||||
"let alpha_er = f_alpha m_C\n",
|
||||
"in\n",
|
||||
"let d_er = s_D m_C\n",
|
||||
"in\n",
|
||||
"let alpha methode =\n",
|
||||
" match methode with \n",
|
||||
" | \"Boys\"\n",
|
||||
" | \"boys\" -> {m_alpha = alpha_boys; d = d_boys}\n",
|
||||
" | \"ER\"\n",
|
||||
" | \"er\" -> {m_alpha = alpha_er; d = d_er}\n",
|
||||
" | _ -> invalid_arg \"Unknown method, please enter Boys or ER\"\n",
|
||||
"\n",
|
||||
"in \n",
|
||||
"alpha methode;;\n",
|
||||
"\n",
|
||||
"(*************************)\n",
|
||||
"(*\n",
|
||||
"m_alpha_d \"ER\" ;;\n",
|
||||
"m_alpha_d \"Boys\" ;;\n",
|
||||
"\n",
|
||||
"let methode = \"ER\";;\n",
|
||||
"\n",
|
||||
"let alphad = m_alpha_d methode ;;\n",
|
||||
"\n",
|
||||
"let m_alpha = alphad.m_alpha;;\n",
|
||||
"let d = alphad.d;;\n",
|
||||
"*)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -2021,6 +2079,122 @@
|
||||
"*)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Boucle localisation avec choix de la méthode de localisation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"(* Localisation de Edminstion ou de Boys *)\n",
|
||||
"let n_rec_alpha = 10;;\n",
|
||||
"(* Calcul de la nouvelle matrice des coefficient après n rotation d'orbitales *)\n",
|
||||
"let rec final_m_C m_C multipoles methode n =\n",
|
||||
"\n",
|
||||
" Printf.printf \"%i\\n%!\" n;\n",
|
||||
"\n",
|
||||
" Util.debug_matrix \"m_C\" m_C;\n",
|
||||
"\n",
|
||||
"if n == 0 \n",
|
||||
" then m_C\n",
|
||||
" else\n",
|
||||
" \n",
|
||||
" (* Fonction de calcul de la nouvelle matrice de coef après rotation d'un angle alpha *)\n",
|
||||
" let new_m_C m_C multipoles methode =\n",
|
||||
" \n",
|
||||
" let alphad = m_alpha_d methode m_C multipoles\n",
|
||||
" in\n",
|
||||
" \n",
|
||||
" (* D critère à maximiser *)\n",
|
||||
" let critere_D = alphad.d \n",
|
||||
" in\n",
|
||||
" Printf.printf \"%f\\n%!\" critere_D;\n",
|
||||
" \n",
|
||||
" (* Matrice des alphas *)\n",
|
||||
" let m_alpha = alphad.m_alpha\n",
|
||||
" in\n",
|
||||
"\n",
|
||||
" Util.debug_matrix \"m_alpha\" m_alpha;\n",
|
||||
"\n",
|
||||
" (* alphaij contient le alpha max ainsi que ses indices i et j *)\n",
|
||||
" let alphaij = new_m_alpha m_alpha n_rec_alpha (* Fonction -> constante *)\n",
|
||||
" in\n",
|
||||
"\n",
|
||||
" (* Valeur de alpha max après calcul *)\n",
|
||||
" let alpha = alphaij.alpha_max (* Fonction -> constante *)\n",
|
||||
" in\n",
|
||||
"\n",
|
||||
" (* Indice i et j du alpha max après calcul *)\n",
|
||||
" let indice_i = alphaij.indice_ii (* Fonction -> constante *)\n",
|
||||
" in\n",
|
||||
" let indice_j = alphaij.indice_jj (* Fonction -> constante *)\n",
|
||||
" in\n",
|
||||
"\n",
|
||||
" Printf.printf \"%i %i\\n%!\" indice_i indice_j;\n",
|
||||
"\n",
|
||||
" (* Matrice de rotaion *)\n",
|
||||
" let m_R = f_R alpha (* Fonction -> constante *)\n",
|
||||
" in\n",
|
||||
"\n",
|
||||
" Util.debug_matrix \"m_R\" m_R;\n",
|
||||
"\n",
|
||||
" (* Matrice qui va subir la rotation *)\n",
|
||||
" let m_Ksi = f_Ksi indice_i indice_j m_C (* Fonction -> constante *)\n",
|
||||
" in\n",
|
||||
"\n",
|
||||
" Util.debug_matrix \"m_Ksi\" m_Ksi;\n",
|
||||
"\n",
|
||||
" (* Matrice ayant subit la rotation *)\n",
|
||||
" let m_Ksi_tilde = f_Ksi_tilde m_R m_Ksi (* Fonction -> constante *)\n",
|
||||
" in\n",
|
||||
"\n",
|
||||
" Util.debug_matrix \"m_Ksi_tilde\" m_Ksi_tilde;\n",
|
||||
"\n",
|
||||
" (* Matrice pour supprimerles coef des orbitales i et j dans la matrice des coef *)\n",
|
||||
" let m_Psi = f_Psi m_Ksi indice_i indice_j (* Fonction -> constante *)\n",
|
||||
" in\n",
|
||||
"\n",
|
||||
" Util.debug_matrix \"m_Psi\" m_Psi;\n",
|
||||
"\n",
|
||||
" (* Matrice pour ajouter les coef des orbitales i~ et j~ dans la matrice des coef *)\n",
|
||||
" let m_Psi_tilde = f_Psi_tilde m_Ksi_tilde indice_i indice_j (* Fonction -> constante *)\n",
|
||||
" in\n",
|
||||
"\n",
|
||||
" Util.debug_matrix \"m_Psi_tilde\" m_Psi_tilde;\n",
|
||||
"\n",
|
||||
" (* Matrice avec les coef des orbitales i et j remplacés par 0 *)\n",
|
||||
" let m_interm = f_interm m_C m_Psi (* Fonction -> constante *)\n",
|
||||
" in\n",
|
||||
" Util.debug_matrix \"m_interm\" m_interm;\n",
|
||||
" \n",
|
||||
" (* Matrice après rotation *)\n",
|
||||
" Mat.add m_Psi_tilde m_interm\n",
|
||||
" in\n",
|
||||
" let m_new_m_C = new_m_C m_C multipoles methode (* Fonction -> constante *)\n",
|
||||
"\n",
|
||||
"in\n",
|
||||
"\n",
|
||||
"Util.debug_matrix \"new_alpha_m\" (f_alpha m_C);\n",
|
||||
"Util.debug_matrix \"m_new_m_C\" m_new_m_C;\n",
|
||||
"\n",
|
||||
"final_m_C m_new_m_C multipoles methode (n-1);;"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"final_m_C m_C multipoles \"ER\" 10;;"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
@ -2133,6 +2307,13 @@
|
||||
"final_m_C m_C 10;;"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
|
Loading…
Reference in New Issue
Block a user