mirror of
https://gitlab.com/scemama/QCaml.git
synced 2024-12-30 16:15:40 +01:00
Working on SphericalToCartesian
This commit is contained in:
parent
17c9aef254
commit
9599c91959
653
Utils/SphericalToCartesian.ml
Normal file
653
Utils/SphericalToCartesian.ml
Normal file
@ -0,0 +1,653 @@
|
||||
open Lacaml.D
|
||||
|
||||
module Am = AngularMomentum
|
||||
|
||||
|
||||
let matrix = function
|
||||
| Am.S -> Mat.make 1 1 1.
|
||||
| Am.P -> Mat.make 3 3 1.
|
||||
| Am.D ->
|
||||
begin
|
||||
let result = Mat.make 6 5 0.;
|
||||
result.{ 1, 1} <- -0.5;
|
||||
result.{ 4, 1} <- -0.5;
|
||||
result.{ 6, 1} <- 1.0;
|
||||
result.{ 3, 2} <- 1.0;
|
||||
result.{ 5, 3} <- 1.0;
|
||||
result.{ 1, 4} <- 0.86602540378443864676;
|
||||
result.{ 4, 4} <- -0.86602540378443864676;
|
||||
result.{ 2, 5} <- 1.0;
|
||||
result
|
||||
end
|
||||
| Am.F ->
|
||||
begin
|
||||
let result = Mat.make 10 7 0.;
|
||||
result.{ 3, 1} <- -0.67082039324993690892;
|
||||
result.{ 8, 1} <- -0.67082039324993690892;
|
||||
result.{10, 1} <- 1.0;
|
||||
result.{ 1, 2} <- -0.61237243569579452455;
|
||||
result.{ 4, 2} <- -0.27386127875258305673;
|
||||
result.{ 6, 2} <- 1.0954451150103322269;
|
||||
result.{ 2, 3} <- -0.27386127875258305673;
|
||||
result.{ 7, 3} <- -0.61237243569579452455;
|
||||
result.{ 9, 3} <- 1.0954451150103322269;
|
||||
result.{ 3, 4} <- 0.86602540378443864676;
|
||||
result.{ 8, 4} <- -0.86602540378443864676;
|
||||
result.{ 5, 5} <- 1.0;
|
||||
result.{ 1, 6} <- 0.790569415042094833;
|
||||
result.{ 4, 6} <- -1.0606601717798212866;
|
||||
result.{ 2, 7} <- 1.0606601717798212866;
|
||||
result.{ 7, 7} <- -0.790569415042094833;
|
||||
result
|
||||
end
|
||||
| Am.G ->
|
||||
begin
|
||||
let result = Mat.make 15 9 0.;
|
||||
result.{ 1, 1} <- 0.375;
|
||||
result.{ 4, 1} <- 0.21957751641341996535;
|
||||
result.{ 6, 1} <- -0.87831006565367986142;
|
||||
result.{11, 1} <- 0.375;
|
||||
result.{13, 1} <- -0.87831006565367986142;
|
||||
result.{15, 1} <- 1.0;
|
||||
result.{ 3, 2} <- -0.89642145700079522998;
|
||||
result.{ 8, 2} <- -0.40089186286863657703;
|
||||
result.{10, 2} <- 1.19522860933439364;
|
||||
result.{ 5, 3} <- -0.40089186286863657703;
|
||||
result.{12, 3} <- -0.89642145700079522998;
|
||||
result.{14, 3} <- 1.19522860933439364;
|
||||
result.{ 1, 4} <- -0.5590169943749474241;
|
||||
result.{ 6, 4} <- 0.9819805060619657157;
|
||||
result.{11, 4} <- 0.5590169943749474241;
|
||||
result.{13, 4} <- -0.9819805060619657157;
|
||||
result.{ 2, 5} <- -0.42257712736425828875;
|
||||
result.{ 7, 5} <- -0.42257712736425828875;
|
||||
result.{ 9, 5} <- 1.1338934190276816816;
|
||||
result.{ 3, 6} <- 0.790569415042094833;
|
||||
result.{ 8, 6} <- -1.0606601717798212866;
|
||||
result.{ 5, 7} <- 1.0606601717798212866;
|
||||
result.{12, 7} <- -0.790569415042094833;
|
||||
result.{ 1, 8} <- 0.73950997288745200532;
|
||||
result.{ 4, 8} <- -1.2990381056766579701;
|
||||
result.{11, 8} <- 0.73950997288745200532;
|
||||
result.{ 2, 9} <- 1.1180339887498948482;
|
||||
result.{ 7, 9} <- -1.1180339887498948482;
|
||||
result
|
||||
end
|
||||
| Am.H ->
|
||||
begin
|
||||
let result = Mat.make 21 11 0.;
|
||||
result.{ 3, 1} <- 0.625;
|
||||
result.{ 8, 1} <- 0.36596252735569994226;
|
||||
result.{10, 1} <- -1.0910894511799619063;
|
||||
result.{17, 1} <- 0.625;
|
||||
result.{19, 1} <- -1.0910894511799619063;
|
||||
result.{21, 1} <- 1.0;
|
||||
result.{ 1, 2} <- 0.48412291827592711065;
|
||||
result.{ 4, 2} <- 0.21128856368212914438;
|
||||
result.{ 6, 2} <- -1.2677313820927748663;
|
||||
result.{11, 2} <- 0.16137430609197570355;
|
||||
result.{13, 2} <- -0.56694670951384084082;
|
||||
result.{15, 2} <- 1.2909944487358056284;
|
||||
result.{ 2, 3} <- 0.16137430609197570355;
|
||||
result.{ 7, 3} <- 0.21128856368212914438;
|
||||
result.{ 9, 3} <- -0.56694670951384084082;
|
||||
result.{16, 3} <- 0.48412291827592711065;
|
||||
result.{18, 3} <- -1.2677313820927748663;
|
||||
result.{20, 3} <- 1.2909944487358056284;
|
||||
result.{ 3, 4} <- -0.85391256382996653194;
|
||||
result.{10, 4} <- 1.1180339887498948482;
|
||||
result.{17, 4} <- 0.85391256382996653194;
|
||||
result.{19, 4} <- -1.1180339887498948482;
|
||||
result.{ 5, 5} <- -0.6454972243679028142;
|
||||
result.{12, 5} <- -0.6454972243679028142;
|
||||
result.{14, 5} <- 1.2909944487358056284;
|
||||
result.{ 1, 6} <- -0.52291251658379721749;
|
||||
result.{ 4, 6} <- 0.22821773229381921394;
|
||||
result.{ 6, 6} <- 0.91287092917527685576;
|
||||
result.{11, 6} <- 0.52291251658379721749;
|
||||
result.{13, 6} <- -1.2247448713915890491;
|
||||
result.{ 2, 7} <- -0.52291251658379721749;
|
||||
result.{ 7, 7} <- -0.22821773229381921394;
|
||||
result.{ 9, 7} <- 1.2247448713915890491;
|
||||
result.{16, 7} <- 0.52291251658379721749;
|
||||
result.{18, 7} <- -0.91287092917527685576;
|
||||
result.{ 3, 8} <- 0.73950997288745200532;
|
||||
result.{ 8, 8} <- -1.2990381056766579701;
|
||||
result.{17, 8} <- 0.73950997288745200532;
|
||||
result.{ 5, 9} <- 1.1180339887498948482;
|
||||
result.{12, 9} <- -1.1180339887498948482;
|
||||
result.{ 1,10} <- 0.7015607600201140098;
|
||||
result.{ 4,10} <- -1.5309310892394863114;
|
||||
result.{11,10} <- 1.169267933366856683;
|
||||
result.{ 2,11} <- 1.169267933366856683;
|
||||
result.{ 7,11} <- -1.5309310892394863114;
|
||||
result.{16,11} <- 0.7015607600201140098;
|
||||
result
|
||||
end
|
||||
|Am.I ->
|
||||
begin
|
||||
let result = Mat.make 28 13 0.;
|
||||
result.{ 1, 1} <- -0.3125;
|
||||
result.{ 4, 1} <- -0.16319780245846672329;
|
||||
result.{ 6, 1} <- 0.97918681475080033975;
|
||||
result.{11, 1} <- -0.16319780245846672329;
|
||||
result.{13, 1} <- 0.57335309036732873772;
|
||||
result.{15, 1} <- -1.3055824196677337863;
|
||||
result.{22, 1} <- -0.3125;
|
||||
result.{24, 1} <- 0.97918681475080033975;
|
||||
result.{26, 1} <- -1.3055824196677337863;
|
||||
result.{28, 1} <- 1.0;
|
||||
result.{ 3, 2} <- 0.86356159963469679725;
|
||||
result.{ 8, 2} <- 0.37688918072220452831;
|
||||
result.{10, 2} <- -1.6854996561581052156;
|
||||
result.{17, 2} <- 0.28785386654489893242;
|
||||
result.{19, 2} <- -0.75377836144440905662;
|
||||
result.{21, 2} <- 1.3816985594155148756;
|
||||
result.{ 5, 3} <- 0.28785386654489893242;
|
||||
result.{12, 3} <- 0.37688918072220452831;
|
||||
result.{14, 3} <- -0.75377836144440905662;
|
||||
result.{23, 3} <- 0.86356159963469679725;
|
||||
result.{25, 3} <- -1.6854996561581052156;
|
||||
result.{27, 3} <- 1.3816985594155148756;
|
||||
result.{ 1, 4} <- 0.45285552331841995543;
|
||||
result.{ 4, 4} <- 0.078832027985861408788;
|
||||
result.{ 6, 4} <- -1.2613124477737825406;
|
||||
result.{11, 4} <- -0.078832027985861408788;
|
||||
result.{15, 4} <- 1.2613124477737825406;
|
||||
result.{22, 4} <- -0.45285552331841995543;
|
||||
result.{24, 4} <- 1.2613124477737825406;
|
||||
result.{26, 4} <- -1.2613124477737825406;
|
||||
result.{ 2, 5} <- 0.27308215547040717681;
|
||||
result.{ 7, 5} <- 0.26650089544451304287;
|
||||
result.{ 9, 5} <- -0.95346258924559231545;
|
||||
result.{16, 5} <- 0.27308215547040717681;
|
||||
result.{18, 5} <- -0.95346258924559231545;
|
||||
result.{20, 5} <- 1.4564381625088382763;
|
||||
result.{ 3, 6} <- -0.81924646641122153043;
|
||||
result.{ 8, 6} <- 0.35754847096709711829;
|
||||
result.{10, 6} <- 1.0660035817780521715;
|
||||
result.{17, 6} <- 0.81924646641122153043;
|
||||
result.{19, 6} <- -1.4301938838683884732;
|
||||
result.{ 5, 7} <- -0.81924646641122153043;
|
||||
result.{12, 7} <- -0.35754847096709711829;
|
||||
result.{14, 7} <- 1.4301938838683884732;
|
||||
result.{23, 7} <- 0.81924646641122153043;
|
||||
result.{25, 7} <- -1.0660035817780521715;
|
||||
result.{ 1, 8} <- -0.49607837082461073572;
|
||||
result.{ 4, 8} <- 0.43178079981734839863;
|
||||
result.{ 6, 8} <- 0.86356159963469679725;
|
||||
result.{11, 8} <- 0.43178079981734839863;
|
||||
result.{13, 8} <- -1.5169496905422946941;
|
||||
result.{22, 8} <- -0.49607837082461073572;
|
||||
result.{24, 8} <- 0.86356159963469679725;
|
||||
result.{ 2, 9} <- -0.59829302641309923139;
|
||||
result.{ 9, 9} <- 1.3055824196677337863;
|
||||
result.{16, 9} <- 0.59829302641309923139;
|
||||
result.{18, 9} <- -1.3055824196677337863;
|
||||
result.{ 3,10} <- 0.7015607600201140098;
|
||||
result.{ 8,10} <- -1.5309310892394863114;
|
||||
result.{17,10} <- 1.169267933366856683;
|
||||
result.{ 5,11} <- 1.169267933366856683;
|
||||
result.{12,11} <- -1.5309310892394863114;
|
||||
result.{23,11} <- 0.7015607600201140098;
|
||||
result.{ 1,12} <- 0.67169328938139615748;
|
||||
result.{ 4,12} <- -1.7539019000502850245;
|
||||
result.{11,12} <- 1.7539019000502850245;
|
||||
result.{22,12} <- -0.67169328938139615748;
|
||||
result.{ 2,13} <- 1.2151388809514737933;
|
||||
result.{ 7,13} <- -1.9764235376052370825;
|
||||
result.{16,13} <- 1.2151388809514737933;
|
||||
result
|
||||
end
|
||||
|Am.J ->
|
||||
begin
|
||||
let result = Mat.make 36 15 0.;
|
||||
result.{ 3, 1} <- -0.60670333962134435221;
|
||||
result.{ 8, 1} <- -0.31684048566533184861;
|
||||
result.{10, 1} <- 1.4169537279434593918;
|
||||
result.{17, 1} <- -0.31684048566533184861;
|
||||
result.{19, 1} <- 0.82968314787883083417;
|
||||
result.{21, 1} <- -1.5208343311935928733;
|
||||
result.{30, 1} <- -0.60670333962134435221;
|
||||
result.{32, 1} <- 1.4169537279434593918;
|
||||
result.{34, 1} <- -1.5208343311935928733;
|
||||
result.{36, 1} <- 1.0;
|
||||
result.{ 1, 2} <- -0.41339864235384227977;
|
||||
result.{ 4, 2} <- -0.17963167078872714852;
|
||||
result.{ 6, 2} <- 1.4370533663098171882;
|
||||
result.{11, 2} <- -0.1338895422651523892;
|
||||
result.{13, 2} <- 0.62718150750531807803;
|
||||
result.{15, 2} <- -2.1422326762424382273;
|
||||
result.{22, 2} <- -0.1146561540164598136;
|
||||
result.{24, 2} <- 0.47901778876993906273;
|
||||
result.{26, 2} <- -0.95803557753987812546;
|
||||
result.{28, 2} <- 1.4675987714106856141;
|
||||
result.{ 2, 3} <- -0.1146561540164598136;
|
||||
result.{ 7, 3} <- -0.1338895422651523892;
|
||||
result.{ 9, 3} <- 0.47901778876993906273;
|
||||
result.{16, 3} <- -0.17963167078872714852;
|
||||
result.{18, 3} <- 0.62718150750531807803;
|
||||
result.{20, 3} <- -0.95803557753987812546;
|
||||
result.{29, 3} <- -0.41339864235384227977;
|
||||
result.{31, 3} <- 1.4370533663098171882;
|
||||
result.{33, 3} <- -2.1422326762424382273;
|
||||
result.{35, 3} <- 1.4675987714106856141;
|
||||
result.{ 3, 4} <- 0.84254721963085980365;
|
||||
result.{ 8, 4} <- 0.14666864502533059662;
|
||||
result.{10, 4} <- -1.7491256557036030854;
|
||||
result.{17, 4} <- -0.14666864502533059662;
|
||||
result.{21, 4} <- 1.4080189922431737275;
|
||||
result.{30, 4} <- -0.84254721963085980365;
|
||||
result.{32, 4} <- 1.7491256557036030854;
|
||||
result.{34, 4} <- -1.4080189922431737275;
|
||||
result.{ 5, 5} <- 0.50807509012231371428;
|
||||
result.{12, 5} <- 0.49583051751369852316;
|
||||
result.{14, 5} <- -1.3222147133698627284;
|
||||
result.{23, 5} <- 0.50807509012231371428;
|
||||
result.{25, 5} <- -1.3222147133698627284;
|
||||
result.{27, 5} <- 1.6258402883914038857;
|
||||
result.{ 1, 6} <- 0.42961647140211000062;
|
||||
result.{ 4, 6} <- -0.062226236090912312563;
|
||||
result.{ 6, 6} <- -1.2445247218182462513;
|
||||
result.{11, 6} <- -0.23190348980538452414;
|
||||
result.{13, 6} <- 0.54315511828342602619;
|
||||
result.{15, 6} <- 1.2368186122953841287;
|
||||
result.{22, 6} <- -0.35746251148251142922;
|
||||
result.{24, 6} <- 1.2445247218182462513;
|
||||
result.{26, 6} <- -1.6593662957576616683;
|
||||
result.{ 2, 7} <- 0.35746251148251142922;
|
||||
result.{ 7, 7} <- 0.23190348980538452414;
|
||||
result.{ 9, 7} <- -1.2445247218182462513;
|
||||
result.{16, 7} <- 0.062226236090912312563;
|
||||
result.{18, 7} <- -0.54315511828342602619;
|
||||
result.{20, 7} <- 1.6593662957576616683;
|
||||
result.{29, 7} <- -0.42961647140211000062;
|
||||
result.{31, 7} <- 1.2445247218182462513;
|
||||
result.{33, 7} <- -1.2368186122953841287;
|
||||
result.{ 3, 8} <- -0.79037935147039945351;
|
||||
result.{ 8, 8} <- 0.6879369240987588816;
|
||||
result.{10, 8} <- 1.025515817677958738;
|
||||
result.{17, 8} <- 0.6879369240987588816;
|
||||
result.{19, 8} <- -1.8014417303072302517;
|
||||
result.{30, 8} <- -0.79037935147039945351;
|
||||
result.{32, 8} <- 1.025515817677958738;
|
||||
result.{ 5, 9} <- -0.95323336395336381126;
|
||||
result.{14, 9} <- 1.5504341823651057024;
|
||||
result.{23, 9} <- 0.95323336395336381126;
|
||||
result.{25, 9} <- -1.5504341823651057024;
|
||||
result.{ 1,10} <- -0.47495887979908323849;
|
||||
result.{ 4,10} <- 0.61914323168888299344;
|
||||
result.{ 6,10} <- 0.82552430891851065792;
|
||||
result.{11,10} <- 0.25637895441948968451;
|
||||
result.{13,10} <- -1.8014417303072302517;
|
||||
result.{22,10} <- -0.65864945955866621126;
|
||||
result.{24,10} <- 1.3758738481975177632;
|
||||
result.{ 2,11} <- -0.65864945955866621126;
|
||||
result.{ 7,11} <- 0.25637895441948968451;
|
||||
result.{ 9,11} <- 1.3758738481975177632;
|
||||
result.{16,11} <- 0.61914323168888299344;
|
||||
result.{18,11} <- -1.8014417303072302517;
|
||||
result.{29,11} <- -0.47495887979908323849;
|
||||
result.{31,11} <- 0.82552430891851065792;
|
||||
result.{ 3,12} <- 0.67169328938139615748;
|
||||
result.{ 8,12} <- -1.7539019000502850245;
|
||||
result.{17,12} <- 1.7539019000502850245;
|
||||
result.{30,12} <- -0.67169328938139615748;
|
||||
result.{ 5,13} <- 1.2151388809514737933;
|
||||
result.{12,13} <- -1.9764235376052370825;
|
||||
result.{23,13} <- 1.2151388809514737933;
|
||||
result.{ 1,14} <- 0.64725984928774934788;
|
||||
result.{ 4,14} <- -1.96875;
|
||||
result.{11,14} <- 2.4456993503903949804;
|
||||
result.{22,14} <- -1.2566230789301937693;
|
||||
result.{ 2,15} <- 1.2566230789301937693;
|
||||
result.{ 7,15} <- -2.4456993503903949804;
|
||||
result.{16,15} <- 1.96875;
|
||||
result.{29,15} <- -0.64725984928774934788;
|
||||
result
|
||||
end
|
||||
|Am.K ->
|
||||
begin
|
||||
let result = Mat.make 45 17 0.;
|
||||
result.{ 1, 1} <- 0.2734375;
|
||||
result.{ 4, 1} <- 0.13566299095694674896;
|
||||
result.{ 6, 1} <- -1.0853039276555739917;
|
||||
result.{11, 1} <- 0.12099545906566282998;
|
||||
result.{13, 1} <- -0.56678149117738375672;
|
||||
result.{15, 1} <- 1.9359273450506052797;
|
||||
result.{22, 1} <- 0.13566299095694674896;
|
||||
result.{24, 1} <- -0.56678149117738375672;
|
||||
result.{26, 1} <- 1.1335629823547675134;
|
||||
result.{28, 1} <- -1.7364862842489183867;
|
||||
result.{37, 1} <- 0.2734375;
|
||||
result.{39, 1} <- -1.0853039276555739917;
|
||||
result.{41, 1} <- 1.9359273450506052797;
|
||||
result.{43, 1} <- -1.7364862842489183867;
|
||||
result.{45, 1} <- 1.0;
|
||||
result.{ 3, 2} <- -0.84721510698287244363;
|
||||
result.{ 8, 2} <- -0.36813537731583001376;
|
||||
result.{10, 2} <- 2.1951352762686132731;
|
||||
result.{17, 2} <- -0.27439190953357665914;
|
||||
result.{19, 2} <- 0.95803557753987812546;
|
||||
result.{21, 2} <- -2.6341623315223359277;
|
||||
result.{30, 2} <- -0.23497519304418891392;
|
||||
result.{32, 2} <- 0.73171175875620442437;
|
||||
result.{34, 2} <- -1.178033207410656044;
|
||||
result.{36, 2} <- 1.5491933384829667541;
|
||||
result.{ 5, 3} <- -0.23497519304418891392;
|
||||
result.{12, 3} <- -0.27439190953357665914;
|
||||
result.{14, 3} <- 0.73171175875620442437;
|
||||
result.{23, 3} <- -0.36813537731583001376;
|
||||
result.{25, 3} <- 0.95803557753987812546;
|
||||
result.{27, 3} <- -1.178033207410656044;
|
||||
result.{38, 3} <- -0.84721510698287244363;
|
||||
result.{40, 3} <- 2.1951352762686132731;
|
||||
result.{42, 3} <- -2.6341623315223359277;
|
||||
result.{44, 3} <- 1.5491933384829667541;
|
||||
result.{ 1, 4} <- -0.39218438743784791311;
|
||||
result.{ 4, 4} <- -0.0972889728117695298;
|
||||
result.{ 6, 4} <- 1.459334592176542947;
|
||||
result.{13, 4} <- 0.25403754506115685714;
|
||||
result.{15, 4} <- -2.3138757483972597747;
|
||||
result.{22, 4} <- 0.0972889728117695298;
|
||||
result.{24, 4} <- -0.25403754506115685714;
|
||||
result.{28, 4} <- 1.5566235649883124768;
|
||||
result.{37, 4} <- 0.39218438743784791311;
|
||||
result.{39, 4} <- -1.459334592176542947;
|
||||
result.{41, 4} <- 2.3138757483972597747;
|
||||
result.{43, 4} <- -1.5566235649883124768;
|
||||
result.{ 2, 5} <- -0.20252314682524563222;
|
||||
result.{ 7, 5} <- -0.1967766362666553471;
|
||||
result.{ 9, 5} <- 0.8800118701519835797;
|
||||
result.{16, 5} <- -0.1967766362666553471;
|
||||
result.{18, 5} <- 0.85880364827689588344;
|
||||
result.{20, 5} <- -1.7491256557036030854;
|
||||
result.{29, 5} <- -0.20252314682524563222;
|
||||
result.{31, 5} <- 0.8800118701519835797;
|
||||
result.{33, 5} <- -1.7491256557036030854;
|
||||
result.{35, 5} <- 1.7974340685458342478;
|
||||
result.{ 3, 6} <- 0.82265291131801144316;
|
||||
result.{ 8, 6} <- -0.11915417049417047641;
|
||||
result.{10, 6} <- -1.7762455001837659611;
|
||||
result.{17, 6} <- -0.44406137504594149028;
|
||||
result.{19, 6} <- 0.77521709118255285119;
|
||||
result.{21, 6} <- 1.4209964001470127689;
|
||||
result.{30, 6} <- -0.68448859700003543819;
|
||||
result.{32, 6} <- 1.7762455001837659611;
|
||||
result.{34, 6} <- -1.9064667279067276225;
|
||||
result.{ 5, 7} <- 0.68448859700003543819;
|
||||
result.{12, 7} <- 0.44406137504594149028;
|
||||
result.{14, 7} <- -1.7762455001837659611;
|
||||
result.{23, 7} <- 0.11915417049417047641;
|
||||
result.{25, 7} <- -0.77521709118255285119;
|
||||
result.{27, 7} <- 1.9064667279067276225;
|
||||
result.{38, 7} <- -0.82265291131801144316;
|
||||
result.{40, 7} <- 1.7762455001837659611;
|
||||
result.{42, 7} <- -1.4209964001470127689;
|
||||
result.{ 1, 8} <- 0.41132645565900572158;
|
||||
result.{ 4, 8} <- -0.20407507102873838124;
|
||||
result.{ 6, 8} <- -1.2244504261724302874;
|
||||
result.{11, 8} <- -0.3033516698106721761;
|
||||
result.{13, 8} <- 1.0657473001102595767;
|
||||
result.{15, 8} <- 1.2134066792426887044;
|
||||
result.{22, 8} <- -0.20407507102873838124;
|
||||
result.{24, 8} <- 1.0657473001102595767;
|
||||
result.{26, 8} <- -2.1314946002205191534;
|
||||
result.{37, 8} <- 0.41132645565900572158;
|
||||
result.{39, 8} <- -1.2244504261724302874;
|
||||
result.{41, 8} <- 1.2134066792426887044;
|
||||
result.{ 2, 9} <- 0.42481613669916071115;
|
||||
result.{ 7, 9} <- 0.13758738481975177632;
|
||||
result.{ 9, 9} <- -1.4767427774562605828;
|
||||
result.{16, 9} <- -0.13758738481975177632;
|
||||
result.{20, 9} <- 1.8344984642633570176;
|
||||
result.{29, 9} <- -0.42481613669916071115;
|
||||
result.{31, 9} <- 1.4767427774562605828;
|
||||
result.{33, 9} <- -1.8344984642633570176;
|
||||
result.{ 3,10} <- -0.76584818175667166625;
|
||||
result.{ 8,10} <- 0.99833846339806020718;
|
||||
result.{10,10} <- 0.99215674164922147144;
|
||||
result.{17,10} <- 0.41339864235384227977;
|
||||
result.{19,10} <- -2.1650635094610966169;
|
||||
result.{30,10} <- -1.0620403417479017779;
|
||||
result.{32,10} <- 1.6535945694153691191;
|
||||
result.{ 5,11} <- -1.0620403417479017779;
|
||||
result.{12,11} <- 0.41339864235384227977;
|
||||
result.{14,11} <- 1.6535945694153691191;
|
||||
result.{23,11} <- 0.99833846339806020718;
|
||||
result.{25,11} <- -2.1650635094610966169;
|
||||
result.{38,11} <- -0.76584818175667166625;
|
||||
result.{40,11} <- 0.99215674164922147144;
|
||||
result.{ 1,12} <- -0.45768182862115030664;
|
||||
result.{ 4,12} <- 0.79475821795059156217;
|
||||
result.{ 6,12} <- 0.79475821795059156217;
|
||||
result.{13,12} <- -2.0752447144854989366;
|
||||
result.{22,12} <- -0.79475821795059156217;
|
||||
result.{24,12} <- 2.0752447144854989366;
|
||||
result.{37,12} <- 0.45768182862115030664;
|
||||
result.{39,12} <- -0.79475821795059156217;
|
||||
result.{ 2,13} <- -0.70903764004458888811;
|
||||
result.{ 7,13} <- 0.53582588123382020898;
|
||||
result.{ 9,13} <- 1.4377717134510610478;
|
||||
result.{16,13} <- 0.53582588123382020898;
|
||||
result.{18,13} <- -2.338535866733713366;
|
||||
result.{29,13} <- -0.70903764004458888811;
|
||||
result.{31,13} <- 1.4377717134510610478;
|
||||
result.{ 3,14} <- 0.64725984928774934788;
|
||||
result.{ 8,14} <- -1.96875;
|
||||
result.{17,14} <- 2.4456993503903949804;
|
||||
result.{30,14} <- -1.2566230789301937693;
|
||||
result.{ 5,15} <- 1.2566230789301937693;
|
||||
result.{12,15} <- -2.4456993503903949804;
|
||||
result.{23,15} <- 1.96875;
|
||||
result.{38,15} <- -0.64725984928774934788;
|
||||
result.{ 1,16} <- 0.626706654240043952;
|
||||
result.{ 4,16} <- -2.176535018670731151;
|
||||
result.{11,16} <- 3.2353561313826025233;
|
||||
result.{22,16} <- -2.176535018670731151;
|
||||
result.{37,16} <- 0.626706654240043952;
|
||||
result.{ 2,17} <- 1.2945196985754986958;
|
||||
result.{ 7,17} <- -2.9348392204684739765;
|
||||
result.{16,17} <- 2.9348392204684739765;
|
||||
result.{29,17} <- -1.2945196985754986958;
|
||||
result
|
||||
end
|
||||
|Am.L ->
|
||||
begin
|
||||
let result = Mat.make 55 19 0.;
|
||||
result.{ 3, 1} <- 0.59686501473785067702;
|
||||
result.{ 8, 1} <- 0.29612797475437320937;
|
||||
result.{10, 1} <- -1.7657660842403202261;
|
||||
result.{17, 1} <- 0.26411138361943717788;
|
||||
result.{19, 1} <- -0.92214126273187869253;
|
||||
result.{21, 1} <- 2.5354692827465969076;
|
||||
result.{30, 1} <- 0.29612797475437320937;
|
||||
result.{32, 1} <- -0.92214126273187869253;
|
||||
result.{34, 1} <- 1.4846187947947014119;
|
||||
result.{36, 1} <- -1.952374120367905548;
|
||||
result.{47, 1} <- 0.59686501473785067702;
|
||||
result.{49, 1} <- -1.7657660842403202261;
|
||||
result.{51, 1} <- 2.5354692827465969076;
|
||||
result.{53, 1} <- -1.952374120367905548;
|
||||
result.{55, 1} <- 1.0;
|
||||
result.{ 1, 2} <- 0.36685490255855924707;
|
||||
result.{ 4, 2} <- 0.15916400393009351387;
|
||||
result.{ 6, 2} <- -1.5916400393009351387;
|
||||
result.{11, 2} <- 0.11811420148091719529;
|
||||
result.{13, 2} <- -0.6916059470489090194;
|
||||
result.{15, 2} <- 3.1497120394911252077;
|
||||
result.{22, 2} <- 0.098709324918124403125;
|
||||
result.{24, 2} <- -0.51549263708149354579;
|
||||
result.{26, 2} <- 1.3746470322173161221;
|
||||
result.{28, 2} <- -3.1586983973799809;
|
||||
result.{37, 2} <- 0.088975383089683195547;
|
||||
result.{39, 2} <- -0.44144152106008005653;
|
||||
result.{41, 2} <- 1.0499040131637084026;
|
||||
result.{43, 2} <- -1.4126128673922561809;
|
||||
result.{45, 2} <- 1.62697843363992129;
|
||||
result.{ 2, 3} <- 0.088975383089683195547;
|
||||
result.{ 7, 3} <- 0.098709324918124403125;
|
||||
result.{ 9, 3} <- -0.44144152106008005653;
|
||||
result.{16, 3} <- 0.11811420148091719529;
|
||||
result.{18, 3} <- -0.51549263708149354579;
|
||||
result.{20, 3} <- 1.0499040131637084026;
|
||||
result.{29, 3} <- 0.15916400393009351387;
|
||||
result.{31, 3} <- -0.6916059470489090194;
|
||||
result.{33, 3} <- 1.3746470322173161221;
|
||||
result.{35, 3} <- -1.4126128673922561809;
|
||||
result.{46, 3} <- 0.36685490255855924707;
|
||||
result.{48, 3} <- -1.5916400393009351387;
|
||||
result.{50, 3} <- 3.1497120394911252077;
|
||||
result.{52, 3} <- -3.1586983973799809;
|
||||
result.{54, 3} <- 1.62697843363992129;
|
||||
result.{ 3, 4} <- -0.83466307816035426155;
|
||||
result.{ 8, 4} <- -0.2070544267420625878;
|
||||
result.{10, 4} <- 2.3149388661875113029;
|
||||
result.{19, 4} <- 0.40297913150666282783;
|
||||
result.{21, 4} <- -2.9546917977869539993;
|
||||
result.{30, 4} <- 0.2070544267420625878;
|
||||
result.{32, 4} <- -0.40297913150666282783;
|
||||
result.{36, 4} <- 1.7063893769835631924;
|
||||
result.{47, 4} <- 0.83466307816035426155;
|
||||
result.{49, 4} <- -2.3149388661875113029;
|
||||
result.{51, 4} <- 2.9546917977869539993;
|
||||
result.{53, 4} <- -1.7063893769835631924;
|
||||
result.{ 5, 5} <- -0.43101816018790287844;
|
||||
result.{12, 5} <- -0.4187881980957120927;
|
||||
result.{14, 5} <- 1.395960660319040309;
|
||||
result.{23, 5} <- -0.4187881980957120927;
|
||||
result.{25, 5} <- 1.3623181102386339839;
|
||||
result.{27, 5} <- -2.2335370565104644944;
|
||||
result.{38, 5} <- -0.43101816018790287844;
|
||||
result.{40, 5} <- 1.395960660319040309;
|
||||
result.{42, 5} <- -2.2335370565104644944;
|
||||
result.{44, 5} <- 1.9703687322875560157;
|
||||
result.{ 1, 6} <- -0.37548796377180986812;
|
||||
result.{ 6, 6} <- 1.4661859659554465543;
|
||||
result.{11, 6} <- 0.12089373945199884835;
|
||||
result.{13, 6} <- -0.21236437647040795145;
|
||||
result.{15, 6} <- -2.417874789039976967;
|
||||
result.{22, 6} <- 0.20206443016189559856;
|
||||
result.{24, 6} <- -0.79143530297864839268;
|
||||
result.{26, 6} <- 1.0552470706381978569;
|
||||
result.{28, 6} <- 1.6165154412951647885;
|
||||
result.{37, 6} <- 0.27320762396104757397;
|
||||
result.{39, 6} <- -1.2199404645272449631;
|
||||
result.{41, 6} <- 2.417874789039976967;
|
||||
result.{43, 6} <- -2.16878304804843549;
|
||||
result.{ 2, 7} <- -0.27320762396104757397;
|
||||
result.{ 7, 7} <- -0.20206443016189559856;
|
||||
result.{ 9, 7} <- 1.2199404645272449631;
|
||||
result.{16, 7} <- -0.12089373945199884835;
|
||||
result.{18, 7} <- 0.79143530297864839268;
|
||||
result.{20, 7} <- -2.417874789039976967;
|
||||
result.{31, 7} <- 0.21236437647040795145;
|
||||
result.{33, 7} <- -1.0552470706381978569;
|
||||
result.{35, 7} <- 2.16878304804843549;
|
||||
result.{46, 7} <- 0.37548796377180986812;
|
||||
result.{48, 7} <- -1.4661859659554465543;
|
||||
result.{50, 7} <- 2.417874789039976967;
|
||||
result.{52, 7} <- -1.6165154412951647885;
|
||||
result.{ 3, 8} <- 0.80430146722719804411;
|
||||
result.{ 8, 8} <- -0.39904527606894581113;
|
||||
result.{10, 8} <- -1.7845847267806657796;
|
||||
result.{17, 8} <- -0.59316922059788797031;
|
||||
result.{19, 8} <- 1.5532816304615888184;
|
||||
result.{21, 8} <- 1.4236061294349311288;
|
||||
result.{30, 8} <- -0.39904527606894581113;
|
||||
result.{32, 8} <- 1.5532816304615888184;
|
||||
result.{34, 8} <- -2.5007351860179508607;
|
||||
result.{47, 8} <- 0.80430146722719804411;
|
||||
result.{49, 8} <- -1.7845847267806657796;
|
||||
result.{51, 8} <- 1.4236061294349311288;
|
||||
result.{ 5, 9} <- 0.83067898344030094085;
|
||||
result.{12, 9} <- 0.26903627024228973454;
|
||||
result.{14, 9} <- -2.1522901619383178764;
|
||||
result.{23, 9} <- -0.26903627024228973454;
|
||||
result.{27, 9} <- 2.1522901619383178764;
|
||||
result.{38, 9} <- -0.83067898344030094085;
|
||||
result.{40, 9} <- 2.1522901619383178764;
|
||||
result.{42, 9} <- -2.1522901619383178764;
|
||||
result.{ 1,10} <- 0.39636409043643194293;
|
||||
result.{ 4,10} <- -0.34393377440500167929;
|
||||
result.{ 6,10} <- -1.2037682104175058775;
|
||||
result.{11,10} <- -0.29776858550677551679;
|
||||
result.{13,10} <- 1.5691988753163563388;
|
||||
result.{15,10} <- 1.1910743420271020672;
|
||||
result.{24,10} <- 0.64978432507844251538;
|
||||
result.{26,10} <- -2.5991373003137700615;
|
||||
result.{37,10} <- 0.48066206207978815025;
|
||||
result.{39,10} <- -1.6693261563207085231;
|
||||
result.{41,10} <- 1.9851239033785034453;
|
||||
result.{ 2,11} <- 0.48066206207978815025;
|
||||
result.{ 9,11} <- -1.6693261563207085231;
|
||||
result.{16,11} <- -0.29776858550677551679;
|
||||
result.{18,11} <- 0.64978432507844251538;
|
||||
result.{20,11} <- 1.9851239033785034453;
|
||||
result.{29,11} <- -0.34393377440500167929;
|
||||
result.{31,11} <- 1.5691988753163563388;
|
||||
result.{33,11} <- -2.5991373003137700615;
|
||||
result.{46,11} <- 0.39636409043643194293;
|
||||
result.{48,11} <- -1.2037682104175058775;
|
||||
result.{50,11} <- 1.1910743420271020672;
|
||||
result.{ 3,12} <- -0.74463846463549402274;
|
||||
result.{ 8,12} <- 1.2930544805637086353;
|
||||
result.{10,12} <- 0.96378590571704436469;
|
||||
result.{19,12} <- -2.5166038696554342464;
|
||||
result.{30,12} <- -1.2930544805637086353;
|
||||
result.{32,12} <- 2.5166038696554342464;
|
||||
result.{47,12} <- 0.74463846463549402274;
|
||||
result.{49,12} <- -0.96378590571704436469;
|
||||
result.{ 5,13} <- -1.1535889489914915606;
|
||||
result.{12,13} <- 0.87177715295353129935;
|
||||
result.{14,13} <- 1.7435543059070625987;
|
||||
result.{23,13} <- 0.87177715295353129935;
|
||||
result.{25,13} <- -2.8358912905407192076;
|
||||
result.{38,13} <- -1.1535889489914915606;
|
||||
result.{40,13} <- 1.7435543059070625987;
|
||||
result.{ 1,14} <- -0.44314852502786805507;
|
||||
result.{ 4,14} <- 0.96132412415957630049;
|
||||
result.{ 6,14} <- 0.76905929932766104039;
|
||||
result.{11,14} <- -0.33291539937855436029;
|
||||
result.{13,14} <- -2.3392235702823930554;
|
||||
result.{22,14} <- -0.83466307816035426155;
|
||||
result.{24,14} <- 2.9059238431784376645;
|
||||
result.{37,14} <- 0.75235513151094117345;
|
||||
result.{39,14} <- -1.4930907048606177933;
|
||||
result.{ 2,15} <- -0.75235513151094117345;
|
||||
result.{ 7,15} <- 0.83466307816035426155;
|
||||
result.{ 9,15} <- 1.4930907048606177933;
|
||||
result.{16,15} <- 0.33291539937855436029;
|
||||
result.{18,15} <- -2.9059238431784376645;
|
||||
result.{29,15} <- -0.96132412415957630049;
|
||||
result.{31,15} <- 2.3392235702823930554;
|
||||
result.{46,15} <- 0.44314852502786805507;
|
||||
result.{48,15} <- -0.76905929932766104039;
|
||||
result.{ 3,16} <- 0.626706654240043952;
|
||||
result.{ 8,16} <- -2.176535018670731151;
|
||||
result.{17,16} <- 3.2353561313826025233;
|
||||
result.{30,16} <- -2.176535018670731151;
|
||||
result.{47,16} <- 0.626706654240043952;
|
||||
result.{ 5,17} <- 1.2945196985754986958;
|
||||
result.{12,17} <- -2.9348392204684739765;
|
||||
result.{23,17} <- 2.9348392204684739765;
|
||||
result.{38,17} <- -1.2945196985754986958;
|
||||
result.{ 1,18} <- 0.60904939217552380708;
|
||||
result.{ 4,18} <- -2.3781845426185916576;
|
||||
result.{11,18} <- 4.1179360680974030877;
|
||||
result.{22,18} <- -3.4414040330583097636;
|
||||
result.{37,18} <- 1.3294455750836041652;
|
||||
result.{ 2,19} <- 1.3294455750836041652;
|
||||
result.{ 7,19} <- -3.4414040330583097636;
|
||||
result.{16,19} <- 4.1179360680974030877;
|
||||
result.{29,19} <- -2.3781845426185916576;
|
||||
result.{46,19} <- 0.60904939217552380708;
|
||||
result
|
||||
end
|
||||
| _ -> invalid_arg "Not implemented"
|
||||
|
||||
|
||||
let index nx ny nz =
|
||||
let l = nx + ny + nz in
|
||||
((l-nx)*(l-nx+1))/2 + nz + 1
|
||||
|
23
Utils/SphericalToCartesian.mli
Normal file
23
Utils/SphericalToCartesian.mli
Normal file
@ -0,0 +1,23 @@
|
||||
val matrix : AngularMomentum.t -> float array
|
||||
(** Returns a transformation matrix to rotate between the basis of atom-centered
|
||||
spherical coordinates to x,y,z coordinates.
|
||||
|
||||
The first index of the result matrix is the index of the cartesian shell, as
|
||||
obtained by the [index] function, and the second index is the index of the
|
||||
spherical shell.
|
||||
|
||||
Example:
|
||||
{[
|
||||
SphericalToCartesian.matrix AngularMomentum.D ->
|
||||
]}
|
||||
*)
|
||||
|
||||
val index : int -> int -> int -> int
|
||||
(** Unique index given to a triplet of powers. Used to identify a cartesian shell.
|
||||
|
||||
Example:
|
||||
{[
|
||||
let nx, ny, nz = 3, 2, 1 in
|
||||
SphericalToCartesian.index nx ny nz -> 8
|
||||
]}
|
||||
*)
|
Loading…
Reference in New Issue
Block a user