****************************************************************************** schmudorb/schmudort : generalites schmudorb : permet de construire un jeu d'orbitales locales non orthogonales schmudort: effectue une orthogonalisation hierarchisee des orbitales de schmudorb classe 1 : (prioritaire) actives classe 2 : coeur classe 3 : les autres ****************************************************************************** *********************************** schmudorb/schmudort : mode d'emploi *********************************** FICHIERS : Fichier de molcost (integrales en base atomique, matrice de recouvrement,...) des orbitales ScfOrb ou autre (donc, un calcul d'integrales, seward si molcas) =============================================================================================== ************************ DONNEES GENERALES ************************ 1) DONNEES DE DEBUT : &smufil prefix='debut_des_noms_de_fichier' / &smu nprint= 0,1,2 (def 0) orb='fichier_d'orbitales_scf' (donnee obligatoire) / 2) DONNEES CONCERNANT L'ORTHGONALISATION DE LA BASE D'ORBITALES ATOMIQUES exemple : &oao / c1 1s(1) pr=1 c1 1s(2) pr=2 c1 2px(1) pr=2 c1 2py(1) pr=2 c1 2pz(1) pr=2 o1 1s(1) pr=1 o1 1s(2) pr=2 o1 2px(1) pr=2 o1 2py(1) pr=2 o1 2pz(1) pr=2 fin priorite des orbitales dans l'orthogonalisation hierarchisee sur cet exemple : c1 1s(1) pr=1 : atome de nom c1 (dans les donnees du progr d'integrales) 1s(1) 1ere orbitale de nom 1s qui apparait dans les OA pr=1 priorite 1 (orthogonalisee en priorite) o1 2ps(2) pr=2 atome o1, 2eme orb 1s (donc orb 2s), priorite 2 o1 2px(1) pr=2 atome o1, 1ere orb 2px (donc orb 2px), priorite 2 etc... remarques : - Toutes les lettres sont indifferemment en majuscules ou en minuscules - on voit qu'on a vraiment interet a utiliser des bases d'ANO pour que par ex 2px(1) corresponde bien a l'orbitale de valence 2px - on donne autant de priorites qu'on veut - les orbitales non donnees sont de priorite pmax+1 3) DONNEES DEFINISSANT LES ORBITALES MOLECULAIRES LOCALES &orb / c_c c1 1s(1) (1 0) c_o o1 1s(1) (1 0) o_odbt o1 1s(2) 2pz(1) (1 0) ref 1 o_cdbt c1 1s(2) 2pz(1) (1 0) ref 2 o_co c1 1s(2) 2pz(1) : o1 1s(2) 2pz(1) (3 1) proj 1,2 o_pico c1 2px(1) 2py(1) : o1 2px(1) 2py(1) (2 2) fin c'est la donnee des liaisons : Analyse de la donnee "c_o o1 1s(1) (1 0)" : c_o : max 12 caracteres. c="coeur". "_" obligatoire. puis 10 caracteres au choix pour caracteriser la liaison. l'orbitale de liaison obtenue sera caracterisee sous ce label (c_o) dans la suite des programmes. o1 1s(1) : comme dans &oao (1 0) : occupations : 1 occupee, 0 antiliante (on decrit ici le coeur 1s de o1) Analyse de la donnee "o_odbt o1 1s(2) 2pz(1) (1 0) ref 1" : on decrit le doublet de o1 o="orbitale" (en general, orbitale de valence) 1s(2) 2pz(1) : orbitales qui le decrivent (2eme s (la 1ere etait pour le coeur), 1ere pz) (1 0) : occupations : 1 occupee, 0 antiliante ref 1 : voir plus loin Analyse de la donnee "o_pico c1 2px(1) 2py(1) : o1 2px(1) 2py(1) (2 2)" : systeme pi de CO les atomes et leurs orb sont donnes a la suite les uns des autres, separes par ":". Il n'y a pas de limite au nombre d'atomes, ni au nombre d'orbitales. Il y a 2 systemes pi, un x, un y (2 2) : 2 liantes, 2 anti-liantes o_co c1 1s(2) 2pz(1) : o1 1s(2) 2pz(1) (3 1) proj 1,2 systeme sigma de CO il y a un probleme. On donne ici toutes les orb de valence de CO, donc on va generer : 1. la liante et l'A-L CO 2. Le doublet O 3. Le doublet C Pb1. on avait deja construit les doublets. On les a 2 fois Pb2. toute cette partie sigma est melangee ---> solution : on va donc eliminer les 2 doublets contenus dans o_co par soustraction de o_odbt et o_cdbt. On projette donc les orbitales obtenues ici sur o_odbt et o_cdbt pour faire cette soustraction. D'ou les donnees proj 1,2 et ref 1 , ref 2 proj 1,2 signifie qu'on soustrait les references 1 et 2. Il n'y a pas de limite au nombre de proj et de ref rem : l'occupation donnee (3 1) est AVANT projection PROJECTIONS ET REFERENCES 1. Quand en a-t-on besoin ? 2. Orbitales a la fois ref et proj 3. syntaxe et regles 1. Quand en a-t-on besoin ? On en a besoin chaque fois qu'une orbitale inclut une orbitale deja donnee .Exemple 1 : H2O H1 \ (Un doublet hors du plan n'est pas represente) O : / H2 Donnee des 2 doublets O o_doub o 1s(2) 2p(1) (2 0) ref 1 (2 occ) Donnees des liaisons CH o_oh1 o 1s(2) 2p(1) : h1 1s(2) 2p(1) (3 1) proj 1 (2 Doub, 1 Liante, 1 A-L) o_oh2 o 1s(2) 2p(1) : h2 1s(2) 2p(1) (3 1) proj 1 (2 Doub, 1 Liante, 1 A-L) Chaque liaison CH genere necessairement les 2 doublets. On les soustraits par projection sur o_doub .Exemple 2 : donnees avec symetrie C2 - C1 \ C4 | ---------> axe de symetrie C4 / C2 - C1 Donnee des 2 liaisons C1-C2 o_C1C2 c1 1s(2) 2p(1) : c2 1s(2) 2p(1) (2 2) (2, car 2 liaisons sont definies) Donnee des 2 liaisons C1-C4 o_C1C4 c1 1s(2) 2p(1) : c4 1s(2) 2p(1) (3 3) (3, car 3 liaisons sont definies: 2 C1-C4, et C4-C4, puisque toute la valence de C4 est presente) On a alors un systeme delocalise sur C1-C4-C4-C1 Si on veut avoir ne liaison C4-C4 localisee, il faut la donner: o_C4C4 c4 1s(2) 2p(1) (1 1) ref 1 ...et la soustraire des C1-C4 o_C1C4 c1 1s(2) 2p(1) : c4 1s(2) 2p(1) (3 3) proj 1 2. Orbitales a la fois ref et proj .Exemple C3 - C2 doublet N: / \ o_n n 1s(2) 2p(1) (1 0) ref 1 C4 N : liaison C2-N: (contient 1 Liante, 1 A-L, le doublet) \ / o_c2N C2 1s(2) 2p(1) : N 1s(2) 2p(1) (2 1) ref 2 proj 1 C5 - C6 liaison C6-N: o_c6N C6 1s(2) 2p(1) : N 1s(2) 2p(1) (2 1) ref 3 proj 1 Autres liaisons sigma: o_c2c3 C2 1s(2) 2p(1) : c3 1s(2) 2p(1) (1 1) ref 4 o_c3c4 C3 1s(2) 2p(1) : c4 1s(2) 2p(1) (1 1) ref 5 o_c4c5 C4 1s(2) 2p(1) : c5 1s(2) 2p(1) (1 1) ref 6 o_c5c6 C5 1s(2) 2p(1) : c6 1s(2) 2p(1) (1 1) ref 7 systeme pi: o_pi n 1s(2) 2p(1) : c2 1s(2) 2p(1) : c3 1s(2) 2p(1) : & c4 1s(2) 2p(1) : c5 1s(2) 2p(1) : c6 1s(2) 2p(1) (11 9) proj 2,3,4,5,6,7 explication: le systeme pi est defini comme: [toutes les liaisons de valence des C et N] - [toutes les liaisons sigma (les ref 2 a 7)] on doit arriver a 3 Liantes et 3 A-L les ref 2 a 7 contiennent 2+2+1+1+1+1 L, 1+1+1+1+1+1 A-L, soit 8 et 6 orb. On doit donc donner (11 9) pour arriver a (3 3) ATTENTION: on considere que les ref 2 et 3 ont 2 Liantes, malgre leur projection sur ref 1. On projette ainsi aussi implicitement sur ref 1. 3. syntaxe et regles - bien mettre un blanc avant et apres ref ou proj - on peut ecrire ref 3 proj 1 ou proj 1 ref 3 - l'ORDRE des orbitales n'importe pas. Les donnees sont mises en memoire, puis traitees en bloc a la fin. Les ref peuvent donc arriver avant ou apres les proj correspondantes. =============================================================================================== ************************ SIMPLICATION DES DONNEES ************************ (Valable pour &OAO et &ORB) a) 2p(n) = 2px(n) 2py(n) 2pz(n) 3d(n) = 3d0(n) 3d1+(n) 3d1-(n) 3d2+(n) 3d2-(n) etc... les donnees precedentes deviennent alors : &oao / c1 1s(1) pr=1 c1 1s(2) pr=2 c1 2p(1) pr=2 o1 1s(1) pr=1 o1 1s(2) pr=2 o1 2p(1) pr=2 fin b) c[1 1 2 2] 1s(2) pr=2 genere 4 lignes : c1 1s(2) pr=2 c1 1s(2) pr=2 c2 1s(2) pr=2 c2 1s(2) pr=2 c) c* : (dans &oao) genere autant de lignes que le nb d'atomes commencant par c, ou "*" represente des chiffres (pour ne pas generer Cu, ou Cr ...) =============================================================================== ************************ ORIENTATION DES LIAISONS ************************ Quand on veut avoir une liaison directionnelle O_C1C2 C1 1S(2) 2P(1) : C2 1S(2) 2P(1) (2,2) PARA(C1,C2) elimine les composantes perpendiculaires a l'axe C1C2 O_C1C2 C1 1S(2) 2P(1) : C2 1S(2) 2P(1) (2,2) PARA(C1,C2,C3) elimine les composantes perpendiculaires au plan C1C2C3 O_C1C2 C1 1S(2) 2P(1) : C2 1S(2) 2P(1) (2,2) ORTH(C1,C2,C3) ne garde que les composantes orthogonales au plan C1C2C3 (pour obtenir des pi par exemple) O_C1C2 C1 1S(2) 2P(1) : C2 1S(2) 2P(1) (2,2) ORTH(C1,C2) ne garde que les composantes orthogonales a l'axe C1C2 (pour obtenir des pi par exemple) Remarque : en phase de test : verifier les resultats, surtout dans le dernier cas. Problemes quand il y a beaucoup de symetrie ================================================================================= ************************* REGROUPEMENTS DE LIAISONS ************************* Permet de creer apres &ORB, une serie de laiasons a partir d'un ligne de donnees necessite la donnee de la symetrie dans la nameliste &orb &orb sym='x xy' / (ce sont les donnees "SYMMETRY" de seward) a) sigma_ C* 1s(2) 2p(1) : H* 1s(1) dmax=1.6 angstrom genere toutes les liaisons entre atomes commencant par C et atomes commecant par H (le reste des noms etant des chiffres) pour lesquelles la distance est < dmax de meme pour des atomes identiques sigma_ C* 1s(2) 2p(1) : C* 1s(2) 2p(1) dmax=1.6 angstrom genere les donnees : O_SIG.C1H13 C1 1S(2) 2P(1) : H13 1S(1) (2,2) ... b) variante : SIGMA_PARA C* 1S(2) 2P(1) : C* 1S(2) 2P(1) DMAX=1.6 ANGSTROM genere : O_SIG.C1C1 C1 1S(2) 2P(1) (1,1) PARA(0,C1) O_SIG.C1C2 C1 1S(2) 2P(1) : C2 1S(2) 2P(1) (2,2) PARA(C1,C2) c) PI_ C* 1S(2) 2P(1) : C* 1S(2) 2P(1) DMAX=1.4 ANGSTROM genere : O_PI.C1C1 C1 1S(2) 2P(1) (1,1) O_PI.C2C3 C2 1S(2) 2P(1) : C3 1S(2) 2P(1) (2,2) d) variante : PI_ORTH C* 1S(2) 2P(1) : C* 1S(2) 2P(1) DMAX=1.4 ANGSTROM genere : O_PI.C1C1 C1 1S(2) 2P(1) (1,1) ORTH(0,C1,H13) O_PI.C2C3 C2 1S(2) 2P(1) : C3 1S(2) 2P(1) (2,2) ORTH(C2,C3,H12) ... ou H12 est un atome voisin de C2C3 e) CORE_ C* 1S(1) genere : C_COR.C1 C1 1S(1) (2,0) C_COR.C2 C2 1S(1) (2,0) C_COR.C3 C3 1S(1) (2,0) ... f) LONEP_ natom=3,atom=N9,n8,c10,bas=3*'1s(1) 2p(1)',cond='para(c12,c5,d12)' genere un doublet et ses deux liaisons adjacentes, avec les donnees proj et ref associees. Attention, un seul double est genere ! (v. plus bas) - natom : nombre d'atomes concernes (celui du doublet, plus les voisins, don 4 pour NH3) - atom= : label des atomes (si les 2 atomes lies a celui du doublet sont symetriques l'un de l'autre, et portent donc le meme nom, les donner tous les deux noms). exemple : H1 \ O : / H1 LONEP_ natom=3,atom=O,H1,H1 - bas='...' bases des atomes correspondants - cond='para(c12,c5,d12)' condition supplementaire (facultatif) s'ajoute en fin de toutes les lignes generees g) variante LONEPPARA_ natom=3,atom=n2,c3,c3,bas='1s(1) 2p(1)',lpdir='ru' ajoute des donnees "PARA" en fin de ligne. Il faut un atome supplementaire (ici 'Ru') pour definir la direction du doublet ici, PAS de donnee COND='...' h) MULT_ atom=c10,c11,c12,n8,c3,c4,c5,d4,d3,d12,d11,d10,bas=12*'1s(1) 2p(1)' donnee d'une serie de liaisons simples c10-c11, c11-c12 etc... comme pour LONEP_, on peut ajouter COND='...' i) variante MULTPARA_ comme MULT_. ici, PAS de donnee COND='...' j) Labels. Par defaut, les labels commencent tous par O_, sauf pour CORE_ (C_) Si on veut changer des labels, on ajout la donnee label='atom:l','atom2:l2',... ou: l=a,g,c... atom=- changer tous les labels en l atom=AT pour CORE_ changer le label de l'atome AT pour LONEP_ AT doit correspondre au doublet atom=AT1-AT2 pour la liaison AT1-AT2, changer le label en l ex : label='C1-C1:g','c2-c3:a' Remarques : 1. l'occupation (2,2) est calculee en fonction de la symetrie du probleme 2. c'est en phase de test 3. on peut considerer cette possibilite comme un point de depart. recuperer les donnees non contractees qui apparaissent sur la sortie, et les modifier au besoin (faire des corrections, remplacer o_ par a_, g_, etc...) DONNEES DE SCHMUDORT : En general, elles se limitent a &ort / (voir plus bas la correction eventuelle des numeros des actives) DEFINITION DES ORBITALES ACTIVES 1. Les orbitales sont definies dans les labels des donnees &oao Les orbitales actives ont pour label "A_...." (au lieu de "O_...." par ex) A la fin de schmudorb, est cree un fichier NONORLOC contenant les orbitales non orthogonales, leus occupations, et leurs labels. Les labels commencants par "A_" definissent les actives pour la suite du calcul. Cette information est transmise a schmudort, puis a locnats (elle sert entre autres a definir les priorites d'orthogonalisation) Pour locnats en particulier, elle est tres importante. Pour ces 2 programmes, pas de donnees a preciser pour les actives, elles sont transmises. 2. Il faut, dans casdi, faire un CAS correspondant a ces actives. Malheureusement, elles ont un autre numero. Apres schmudort, il faut donc faire "cp LOCORB INPORB", puis un motra et un molcost, et regarder la sortie de molcost pour avoir les numeros des orbitales a declarer actives dans casdi. On peut aussi utiliser le programme noscf, qui genere toutes ces donnees automatiquement (voir mode d'emploi de noscf). 3. Remarque Il peut arriver que, parce qu'on genere plusieurs orbitales a la fois (la donnee "(2 1)" genere 2 occupees et une anti-liante) on en veuille que certaines actives. Si on donne le label "A_....", elle seront TOUTES actives. Il faut alors les redefinir. Le methode est la suivante : - faire un schmudort avec le label "A_...." - reperer dans la sortie les orbitales a definir actives (leurs numeros) - refaire passer schmudort, avec &OAO noac=numeros des actives dans les orbitales qui apparaissent a la fin du calcul Attention, le label doit etre A_.... NIVEAU DE FERMI Il est calcule a partir de l'occupation des orbitales du fichier orb (orbitales scf en general). Les orbitales d'occupation superieures a 1. sont considerees "occupees". Cette methode peut etre mise en defaut (creant une erreur a la fin de schmudorb). Pour y remedier, on peut donner le niveau de Fermi a la main dans la namelist &orb : &orb fermi0=... / REMARQUES : 1. le nombre de liaisons (L + A-L) DOIT etre egal au nombre d'OA qui apparaissent dans les donnees. Sinon, le progr signale une erreur a la fin. 2. On peut simplifier les donnees comme dans oao, sauf en ce qui concerne l'utilisation de l"*" (C* ... est ignore) 3. (dans oao et ort) toutes les donnees sont transformees en majuscules EXEMPLE DE DONNEES POUR UN CALCUL EN ORBITALES LOCALES FABRICATION DES DONNEES PAS A PAS MOLECULE ETUDIEE : La geometrie a pour donnees seward : &SEWARD &END Title cu2 OH2 por Mitchell et Bernard Symmetry xy yz Basis set Cu.ECP.Barandiaran.9s6p6d.2s2p2d.17e-CG-AIMP Cu1 0.000000 0.000000 1.499885 Angstrom End of basis Basis set C.ANO-L...2s1p. C1 0.585570 0.412890 -4.223275 Angstrom C3 2.185730 -1.082860 -3.005535 Angstrom C5 2.299940 1.311480 -2.825985 Angstrom End of basis Basis set O.ANO-L...2s1p. O2 1.170290 0.000000 0.000000 Angstrom End of basis Basis set N.ANO-L...2s1p. N1 1.386250 0.141940 -2.975525 Angstrom End of basis Basis set H.ANO-L...1s. H1 0.273150 1.441600 -4.257905 Angstrom H2 1.212110 0.203300 -5.078705 Angstrom H3 1.536480 -1.940610 -3.026705 Angstrom H4 2.833950 -1.071960 -3.860325 Angstrom H5 1.741340 2.199360 -3.001055 Angstrom H6 2.765660 -1.164370 -2.090475 Angstrom H7 3.124180 1.238290 -3.501225 Angstrom H8 2.714450 1.330700 -1.821155 Angstrom H9 2.070290 0.000000 0.000000 Angstrom End of basis End of input ce qui veut dire que le groupe de symetrie est D2, et on a - 2 atomes CU1 - 2 atomes O2 - 2 atomes H9 - Les autres atomes (C3, C5, H1_8, N1) apparaissent 4 fois - Pour dessiner la molecule, remarquer que : CU est lie a O2 CU est lie a N1 O2 est lie a H9 N1 est lie a C1 C2 C3 C1 est lie a H1 H2 C2 est lie a H3 H4 H6 C3 est lie a H5 H7 H8 on a aussi une liaison C1-C1 Les donnees SCF sont : &SCF &END Title cu2 OH2 mitchell Occupied 24 23 23 22 Occnumbers 24*2 22*2 1 23*2 21*2 1 End of input ------------------------------------------------------------------ PROGRAMMES SCHMUD ----------------------------------------------------------------- Il y a 2 programmes schmud a executer l'un apres l'autre schmudorb < in schmudort < in ou in est le fichier de donnees - schmudorb : 1) construit une base d'orbitales atomiques orthogonales (OAO) 2) construit des orbitales de liaison - parmi ces orbitales de liaison, on doit choisir les actives - schmudort : orthogonalise et reordonne les orbitales, en fonction des actives choisies -------------------- DONNEES DE SCHMUDORB -------------------- 1) &smufil prefix='mitchell.',progr='MOLCAS' / &smu nprint=1,orb='mitchell.ScfOrb' / progr='MOLCAS' signifie qu'on par de molcas. On peut aussi partir de Dalton 2) &oao / CU1 2p0(1) pr=1 CU1 2p1-(1) pr=1 CU1 2p1+(1) pr=1 CU1 3d0(1) pr=2 CU1 3d1+(1) pr=2 CU1 3d1-(1) pr=2 CU1 3d2+(1) pr=2 CU1 3d2-(1) pr=2 O2 1s(1) pr=1 O2 1s(2) pr=2 O2 2px(1) pr=2 O2 2py(1) pr=2 O2 2pz(1) pr=2 C* 1s(1) pr=1 C* 1s(2) pr=2 C* 2px(1) pr=2 C* 2py(1) pr=2 C* 2pz(1) pr=2 N* 1s(1) pr=1 N* 1s(2) pr=2 N* 2px(1) pr=2 N* 2py(1) pr=2 N* 2pz(1) pr=2 H* 1s0(1) pr=2 fin Ces donnees concernent l'orthogonalisation des OA entre elles. C'est une orthogonalisation hierarchisee, obtenue par une suite de projections (Schmidt) et d'orthogonalisations S**-1/2 On donne par exemple : CU1 2p0(1) pr=1 ce qui veut dire que la premiere orbitale 2p0 (donc la moins diffuse) est orthogonalisee en 1er (priorite 1, pr=1) C'est un orbitale de coeur, qu'on veut modifier le moins possible. De meme C* 1s(1) pr=1 signifie que toutes les 1s de coeur de tous les C (C* = C1,C2,C3) sont en priorite 1 N* 1s(2) pr=2 : la 2eme orbitale S est en priorite 2, etc... REMARQUES : - On peut mettre autant de priorites differentes qu'on veut - Les orbitales absentes des donnees sont de priorite (prio max +1) - Il y a les equivalences suivantes 1s = 1s0 ; 2p0 2p1+ 2p1- = 2px 2py 2pz (attention pour molcas, la correspondance 2p1+=2px ou 2p1+=2py selon les groupes de symetrie) - les donnees peuvent etre en majuscules ou en minuscules 3) &orb / o_o2 O2 1s(2) 2px(1) 2py(1) 2pz(1) : H9 1s(1) (8 2) c_cu1 CU1 2px(1) 2py(1) 2pz(1) (6 0) c_o2 O2 1s(1) (2 0) c_c1 c1 1s(1) (4 0) c_c3 c3 1s(1) (4 0) c_c5 c5 1s(1) (4 0) c_N1 1s(1) (4 0) a_cu1 CU1 3d0(1) 3d1+(1) 3d1-(1) 3d2+(1) 3d2-(1) (10 0) o_C1 C1 1s(2) 2px(1) 2py(1) 2pz(1) (2 2) ref 1 o_N1 N1 1s(2) 2px(1) 2py(1) 2pz(1) (4 0) o_N1 N1 1s(2) 2px(1) 2py(1) 2pz(1) : C3 1s(2) 2px(1) 2py(1) 2pz(1) (4 4) o_N1 N1 1s(2) 2px(1) 2py(1) 2pz(1) : C5 1s(2) 2px(1) 2py(1) 2pz(1) (4 4) o_N1 N1 1s(2) 2px(1) 2py(1) 2pz(1) : C1 1s(2) 2px(1) 2py(1) 2pz(1) (6 6) proj 1 o_C1 C1 1s(2) 2px(1) 2py(1) 2pz(1) : H1 1s(1) (6 6) proj 1 o_C1 C1 1s(2) 2px(1) 2py(1) 2pz(1) : H2 1s(1) (6 6) proj 1 o_C3 C3 1s(2) 2px(1) 2py(1) 2pz(1) : H3 1s(1) (4 4) o_C3 C3 1s(2) 2px(1) 2py(1) 2pz(1) : H4 1s(1) (4 4) o_C3 C3 1s(2) 2px(1) 2py(1) 2pz(1) : H6 1s(1) (4 4) o_C5 C5 1s(2) 2px(1) 2py(1) 2pz(1) : H5 1s(1) (4 4) o_C5 C5 1s(2) 2px(1) 2py(1) 2pz(1) : H7 1s(1) (4 4) o_C5 C5 1s(2) 2px(1) 2py(1) 2pz(1) : H8 1s(1) (4 4) fin On va detailler maintenant ces donnees, qui sont plus complexes Chaque ligne correspond a une "liaison". Le mot "liaison" a ici une signification plus large que celle qu'on lui donne en general. "liaison" signifie ici : Toute orbitale de fragment fabriquee a partir des OA du fragment. Par exemple, la donnee o_o2 O2 1s(2) 2px(1) 2py(1) 2pz(1) : H9 1s(1) (8 2) signifie - on considere le fragment O2-H9 - dans ce fragment, on considere les orbitales : - pour O2 1s(2) 2px(1) 2py(1) 2pz(1) ; pour H9 1s(1) (ce sont les orbitales de valence) ON VA MAINTENANT REGARDER TOUTES LES FORMES DE "LIAISONS" POSSIBLES 3A) COEUR la donnee est du type c_o2 O2 1s(1) (2 0) - "c" pour coeur - O2 1s(1) : l'OA est la 1ere s ce O2, don l'OA de coeur - (2 0) avec ces OAn on cree 2 occupees (car il y a 2 atomes O2), et 0 virtuelle Le programme repond : donnee C_o2 O2 1S0(1) (2 0) atome ====O2 ==== ... nombre d'orbitales occupees par symetrie 1 1 0 0 nombre d'orbitales anti-liantes par symetrie 0 0 0 0 (il a trouve 2 orbitales occupees, de sym 1 et 2) 3B) LIAISON COVALENTE par exemple, la liaison C5-H5 o_o5 C5 1s(2) 2px(1) 2py(1) 2pz(1) : H5 1s(1) (4 4) - "o" signifie "orbitale", c'est-a-dire non "coeur" - C5 1s(2) 2px(1) 2py(1) 2pz(1) sont les orbitales de valence de C5 - H5 1s(1) de meme pour H5 - (4 4) Il y a 4 orbitales occupees (les liaisons des 4 C5H5 de la molecule) et 4 anti-liantes fabriquees avec le OA donnees Le programme repond : donnee O_c5 C5 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) : H5 1S0(1) (4 4) atome ====C5 ==== atome ====H5 ==== puis fabrique, symetrie par symetrie, des orbitales de liaison et calcule leur occupation. En symetrie 1, il extrait la matrice densite de fragment: sym 1 matrice extraite 1 2 3 4 5 1 C5 1s0 1.0266 0.0564 0.0709 0.0029 0.5118 2 C5 2p1+ 0.0564 1.0842 -0.1577 -0.0148 -0.4338 3 C5 2p1- 0.0709 -0.1577 1.0079 -0.0204 0.6948 4 C5 2p0 0.0029 -0.0148 -0.0204 1.2084 -0.1417 5 H5 1s0 0.5118 -0.4338 0.6948 -0.1417 0.8361 (noter qu'il y a a peu pres 1 electron par OA) Sa diagonalisation donne les occupations et les orbitales : occupations, orbitales naturelles 1.9908 1.2100 1.1169 0.8384 0.0071 1 2 3 4 5 1 C5 1s0 0.3596 -0.0196 0.7332 -0.4467 -0.3650 2 C5 2p1+ -0.3788 -0.2227 0.6512 0.5616 0.2597 3 C5 2p1- 0.5448 0.0745 -0.0720 0.6933 -0.4602 4 C5 2p0 -0.1224 0.9718 0.1695 0.0665 0.0861 5 H5 1s0 0.6445 0.0017 0.0667 0.0059 0.7617 On a une orbitale occupee a 1.9908. C'est la liaison sigma. Il y a une orbitale vide (0.0071). C'est l'antiliante. Les autres (proches de 1.) n'ont pas de signification physique. Elles correspondent aux trois "demi-liaisons" C-C et C-H avec d'autres centres. Elles seront eliminees. Apres etude de toutes les symetries, le programme choisit les 4 orbitales les plus occupees, et les 4 plus vides. Il trouve : nombre d'orbitales occupees par symetrie 1 1 1 1 nombre d'orbitales anti-liantes par symetrie 1 1 1 1 3C) Fragment "isole" : On ne connait pas bien la nature de la liaison O2-CU on va supposer qu'on a un OH- "autonome" Reprenons la donnee : o_o2 O2 1s(2) 2px(1) 2py(1) 2pz(1) : H9 1s(1) (8 2) - en debut de ligne, un "o" signifie que ces donnees ne concernent pas des orbitales de coeur - a la fin, le 8 signifie qu'on a 8 occupees (on OH-, donc 8 electrons, donc 4 occupees. On a 2 OH donc 8 occupees) - a la fin, le 2 signifie que la donnee des OA de valence generera une anti-liante (2 sur les 2 OH-) Schmudorb repond a cette donnee de la facon suivante : donnee O O2 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) : H9 1S0(1) (8 2) atome ====O2 ==== atome ====H9 ==== puis fabrique, symetrie par symetrie, des orbitales de liaison et calcule leur occupation. Les 8 plus occupees sont retenues, les 2 moins occupees sont aussi retenues parmi les antiliantes. A la fin, on a : nombre d'orbitales occupees par symetrie 2 2 2 2 nombre d'orbitales anti-liantes par symetrie 1 1 0 0 Les occupations, par symetrie, etaient : 1 1.9970 1.9524 0.0047 2 1.9974 1.8691 0.0040 3 1.9950 1.9284 4 1.9878 1.7254 On retenu 8 occupees, et 2 anti-liantes. Leurs occupations sont claires. Notre hypothese d'un OH- "autonome" ou "isole" etait corrcte. L'orbitale occupee par 1.7254 electron est une 2pz. Les electrons se sont partiellement delocalises dans le CU. 3C') Autre exemple de systeme isole : Supposons : On n'a pas non plus une idee claire de la liaison CU-N1 On va supposer que N garde son doublet, et on donne : O_n1 N1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) (4 0) Le programme repond : 1 1.8882 1.1653 1.1622 1.1126 2 1.6941 1.2007 1.1544 1.1435 3 1.8967 1.1648 1.1617 1.1121 4 1.7382 1.2033 1.1542 1.1465 nombre d'orbitales occupees par symetrie 1 1 1 1 nombre d'orbitales anti-liantes par symetrie 0 0 0 0 L'hypothese n'etait pas absurde - on a 4 occupees - on n'a clairement aucune anti-liante - on a 12 "demi-liaisons" (N-C) a rejeter Remarque : c'est donc une solution qui marche, qui convient pour un point de depart, mais on pourrait en essayer d'autre, par exemple entre des entites N-C, etc... 3D) PROBLEMES LIES A LA SYMETRIE 3DA) Pour entrer la liaison C1-C1, on donne : O_c1c1 C1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) (2 2) Il n'y a pas de difficulte particuliere 3DB) Mais si on entre la liaison C1-H1: donnee : O_c1h1 C1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) : H1 1S0(1) (4 4) (4 liaisons, 1 occupee et une anti-liante par liaison) on obtient les occupations de fragment : sym 1 1.9904 1.9823 1.2230 0.8455 0.0080 sym 2 1.9923 1.1948 0.7563 0.0176 0.0052 sym 3 1.9905 1.9822 1.2244 0.8458 0.0080 sym 4 1.9924 1.1951 0.7579 0.0180 0.0053 On a clairement 6 occupees et 6 anti-liantes ! C'est que, en donnant le centre C1, on genere automatiquement la liaison C1-C1. Il faut donc donner O_c1 C1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) : H1 1S0(1) (6 6) et regenerer C1-C1 puis on va eliminer, par projection, C1-C1 de H1-C1-C1-H1 pour cela, les donnees de C1-C1 et H1-C1-C1-H1 sont O C1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) (2 2) ref 1 O C1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) : H1 1S0(1) (6 6) proj 1 On aura de meme pour N1-C1-C1-N1 O N1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) : C1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) & (6 6) PROJ 1 ("&" pour ligne suite) REMARQUE : - l'ordre pour donner ref et proj est sans importance - si on doit projeter sur 2 liaisons, on donne : ................... ref 1 ....................... ref 2 ..............................proj 1,2 - si une orbitale est a la fois proj et ref, on entre : ................... ref 1 ; proj 2 4) TESTS DE BON FONCTIONNEMENT Il faut avoir entre autant d'OA que d'orbitales de liaison dans chaque symetrie. Si ce n'es pas le cas, le programme signale "ERREUR". 5) ORBITALES FINALES A la fin du calcul, on obtient des orbitales de liaison (ou de fragments) exprimees dans la base des OAO, et non orthogonalisees. Les orbitales de coeur sont en tete. Il faut maintenant choisir les actives, selon le probleme physique considere. C'est la qu'il faut "regarder" les orbitales. Quand on a trouve les actives, on peut : noter leurs numeros (ecrits au-dessus des orbitales), et faire tourner schmudort en lui donnant ces numeros. ou mieux, rfaire tourner schmudorb, en remplcant o_ par a_ en debut de ligne pour les orbitales considerees -------------------- DONNEES DE SCHMUDORT -------------------- &ort numac=53,132 / ou 53,132 sont les 2 actives trouvees dans l'examen de la sortie de schmudorb. On a maintenant, dans le fichier LOCORB, un jeu d'orbitales de fragment orthogonalisees, exprimees dans la base des OA. On peut faire une IC dans la base de ces orbitales