From 9321213a2128c20856626b7cae1fee26fc86b36d Mon Sep 17 00:00:00 2001 From: q-posev Date: Thu, 21 Oct 2021 15:51:21 +0200 Subject: [PATCH] split the basis format to depend on shell_num and prim_num --- trex.org | 71 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/trex.org b/trex.org index 54bc2b6..9a406f6 100644 --- a/trex.org +++ b/trex.org @@ -215,17 +215,18 @@ arrays are 0-based. Hence, we introduce the ~index~ type which is an All the basis set parameters are stored in one-dimensional arrays: #+NAME: basis - | Variable | Type | Dimensions | Description | - |-----------------+---------+---------------+------------------------------------------------------------------| - | ~type~ | ~str~ | | Type of basis set: "Gaussian" or "Slater" | - | ~num~ | ~dim~ | | Total number of primitives | - | ~nucleus_index~ | ~index~ | ~(basis.num)~ | One-to-one correspondence between primitives and atomic indices | - | ~ang_mom~ | ~int~ | ~(basis.num)~ | One-to-one correspondence between primitives and angular momenta | - | ~shell_index~ | ~index~ | ~(basis.num)~ | One-to-one correspondence between primitives and atomic shells | - | ~shell_factor~ | ~float~ | ~(basis.num)~ | Normalization factor of the shell ($\mathcal{N}_s$) | - | ~exponent~ | ~float~ | ~(basis.num)~ | Exponents of the primitives ($\gamma_{ks}$) | - | ~coefficient~ | ~float~ | ~(basis.num)~ | Coefficients of the primitives ($a_{ks}$) | - | ~prim_factor~ | ~float~ | ~(basis.num)~ | Normalization coefficients for the primitives ($f_{ks}$) | + | Variable | Type | Dimensions | Description | + |-----------------+---------+---------------------+--------------------------------------------------------------| + | ~type~ | ~str~ | | Type of basis set: "Gaussian" or "Slater" | + | ~prim_num~ | ~dim~ | | Total number of primitives | + | ~shell_num~ | ~dim~ | | Total number of shells | + | ~nucleus_index~ | ~index~ | ~(basis.shell_num)~ | One-to-one correspondence between shells and atomic indices | + | ~ang_mom~ | ~int~ | ~(basis.shell_num)~ | One-to-one correspondence between shells and angular momenta | + | ~shell_factor~ | ~float~ | ~(basis.shell_num)~ | Normalization factor of each shell ($\mathcal{N}_s$) | + | ~shell_index~ | ~index~ | ~(basis.prim_num)~ | One-to-one correspondence between primitives and shell index | + | ~exponent~ | ~float~ | ~(basis.prim_num)~ | Exponents of the primitives ($\gamma_{ks}$) | + | ~coefficient~ | ~float~ | ~(basis.prim_num)~ | Coefficients of the primitives ($a_{ks}$) | + | ~prim_factor~ | ~float~ | ~(basis.prim_num)~ | Normalization coefficients for the primitives ($f_{ks}$) | #+CALL: json(data=basis, title="basis") @@ -233,15 +234,16 @@ arrays are 0-based. Hence, we introduce the ~index~ type which is an :RESULTS: #+begin_src python :tangle trex.json "basis": { - "type" : [ "str" , [] ] - , "num" : [ "dim" , [] ] - , "nucleus_index" : [ "index", [ "basis.num" ] ] - , "ang_mom" : [ "int" , [ "basis.num" ] ] - , "shell_index" : [ "index", [ "basis.num" ] ] - , "shell_factor" : [ "float", [ "basis.num" ] ] - , "exponent" : [ "float", [ "basis.num" ] ] - , "coefficient" : [ "float", [ "basis.num" ] ] - , "prim_factor" : [ "float", [ "basis.num" ] ] + "type" : [ "str" , [] ] + , "prim_num" : [ "dim" , [] ] + , "shell_num" : [ "dim" , [] ] + , "nucleus_index" : [ "index", [ "basis.shell_num" ] ] + , "ang_mom" : [ "int" , [ "basis.shell_num" ] ] + , "shell_factor" : [ "float", [ "basis.shell_num" ] ] + , "shell_index" : [ "index", [ "basis.prim_num" ] ] + , "exponent" : [ "float", [ "basis.prim_num" ] ] + , "coefficient" : [ "float", [ "basis.prim_num" ] ] + , "prim_factor" : [ "float", [ "basis.prim_num" ] ] } , #+end_src :END: @@ -275,27 +277,28 @@ D 1 #+BEGIN_EXAMPLE type = "Gaussian" -num = 20 +prim_num = 20 +shell_num = 12 -# 10 primitives per H atom +# 6 shells per H atom nucleus_index = -[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] +[ 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1 ] -# 7 primitives for S (l=0), 2 primitives for P (l=1), 1 primitive for D (l=2) shells +# 3 shells in S (l=0), 2 in P (l=1), 1 in D (l=2) ang_mom = -[ 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, - 0, 0, 0, 0, 0, 0, 0, 1, 1, 2 ] - -# 5 primitives for first S shell and then 1 primitive per remaining shells -shell_index = -[ 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, - 0, 0, 0, 0, 0, 1, 2, 3, 4, 5 ] +[ 0, 0, 0, 1, 1, 2, + 0, 0, 0, 1, 1, 2 ] # no need to renormalize shells shell_factor = -[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., - 1., 1., 1., 1., 1., 1., 1., 1., 1., 1. ] +[ 1., 1., 1., 1., 1., 1., + 1., 1., 1., 1., 1., 1. ] + +# 5 primitives for the first S shell and then 1 primitive per remaining shells in each H atom +shell_index = +[ 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, + 6, 6, 6, 6, 6, 7, 8, 9, 10, 11 ] # parameters of the primitives (10 per H atom) exponent =