Open jongrumer opened 4 years ago
Email from @cffischer [2019-10-29]
I think the error has to do with the 2-character digit for the minimum occupation of the 4f shell. If you run the case for 4f(10,9)
instead of 4f(11,10)
, everything is fine. I noticed that the code is written at the basic character level, so a special procedure is need for 2-digit numbers versus a one-digit number.
If necessary, AtomicLevels can easily generate the CSLs for comparison & testing various argument combinations. E.g.:
using AtomicLevels
term(c::CSF) = last(c.terms)
# reference configuration:
configuration = c"4f11 6s"
# generate all configurations SD substitutions away, but require min. 10 electrons on 4f
cs = excited_configurations(configuration, o"6p"; min_occupancy=[10, 0])
# convert from non-relativistic to relativistic configurations
rcs = relconfigurations(cs)
# generate CSFs and filter down to J = 9
rcsfs = filter(c -> term(c) == 9, csfs(rcs))
display(rcsfs)
yields
43-element Array{CSF{RelativisticOrbital{Int64},HalfIntegers.Half{Int64},HalfIntegers.Half{Int64}},1}:
4f-⁵(5/2|5/2) 4f⁶(6|17/2) 6s(1/2|9)-
4f-⁶(0|0) 4f⁴(8|8) 6s(1/2|17/2) 6p-(1/2|9)-
4f-⁵(5/2|5/2) 4f⁵(11/2|8) 6s(1/2|17/2) 6p-(1/2|9)-
4f-⁵(5/2|5/2) 4f⁵(15/2|8) 6s(1/2|17/2) 6p-(1/2|9)-
4f-⁵(5/2|5/2) 4f⁵(15/2|9) 6s(1/2|17/2) 6p-(1/2|9)-
4f-⁵(5/2|5/2) 4f⁵(15/2|9) 6s(1/2|19/2) 6p-(1/2|9)-
4f-⁵(5/2|5/2) 4f⁵(15/2|10) 6s(1/2|19/2) 6p-(1/2|9)-
4f-⁴(2|2) 4f⁶(6|8) 6s(1/2|17/2) 6p-(1/2|9)-
4f-⁴(4|4) 4f⁶(4|8) 6s(1/2|17/2) 6p-(1/2|9)-
4f-⁴(4|4) 4f⁶(6|8) 6s(1/2|17/2) 6p-(1/2|9)-
4f-⁴(4|4) 4f⁶(6|9) 6s(1/2|17/2) 6p-(1/2|9)-
4f-⁴(4|4) 4f⁶(6|9) 6s(1/2|19/2) 6p-(1/2|9)-
4f-⁴(4|4) 4f⁶(6|10) 6s(1/2|19/2) 6p-(1/2|9)-
4f-³(9/2|9/2) 4f⁷(7/2|8) 6s(1/2|17/2) 6p-(1/2|9)-
4f-⁶(0|0) 4f⁴(8|8) 6s(1/2|15/2) 6p(3/2|9)-
4f-⁶(0|0) 4f⁴(8|8) 6s(1/2|17/2) 6p(3/2|9)-
4f-⁵(5/2|5/2) 4f⁵(9/2|7) 6s(1/2|15/2) 6p(3/2|9)-
4f-⁵(5/2|5/2) 4f⁵(11/2|7) 6s(1/2|15/2) 6p(3/2|9)-
4f-⁵(5/2|5/2) 4f⁵(11/2|8) 6s(1/2|15/2) 6p(3/2|9)-
4f-⁵(5/2|5/2) 4f⁵(11/2|8) 6s(1/2|17/2) 6p(3/2|9)-
4f-⁵(5/2|5/2) 4f⁵(15/2|7) 6s(1/2|15/2) 6p(3/2|9)-
4f-⁵(5/2|5/2) 4f⁵(15/2|8) 6s(1/2|15/2) 6p(3/2|9)-
4f-⁵(5/2|5/2) 4f⁵(15/2|8) 6s(1/2|17/2) 6p(3/2|9)-
4f-⁵(5/2|5/2) 4f⁵(15/2|9) 6s(1/2|17/2) 6p(3/2|9)-
4f-⁵(5/2|5/2) 4f⁵(15/2|9) 6s(1/2|19/2) 6p(3/2|9)-
4f-⁵(5/2|5/2) 4f⁵(15/2|10) 6s(1/2|19/2) 6p(3/2|9)-
4f-⁵(5/2|5/2) 4f⁵(15/2|10) 6s(1/2|21/2) 6p(3/2|9)-
4f-⁴(2|2) 4f⁶(6|7) 6s(1/2|15/2) 6p(3/2|9)-
4f-⁴(2|2) 4f⁶(6|8) 6s(1/2|15/2) 6p(3/2|9)-
4f-⁴(2|2) 4f⁶(6|8) 6s(1/2|17/2) 6p(3/2|9)-
4f-⁴(4|4) 4f⁶(4|7) 6s(1/2|15/2) 6p(3/2|9)-
4f-⁴(4|4) 4f⁶(4|8) 6s(1/2|15/2) 6p(3/2|9)-
4f-⁴(4|4) 4f⁶(4|8) 6s(1/2|17/2) 6p(3/2|9)-
4f-⁴(4|4) 4f⁶(6|7) 6s(1/2|15/2) 6p(3/2|9)-
4f-⁴(4|4) 4f⁶(6|8) 6s(1/2|15/2) 6p(3/2|9)-
4f-⁴(4|4) 4f⁶(6|8) 6s(1/2|17/2) 6p(3/2|9)-
4f-⁴(4|4) 4f⁶(6|9) 6s(1/2|17/2) 6p(3/2|9)-
4f-⁴(4|4) 4f⁶(6|9) 6s(1/2|19/2) 6p(3/2|9)-
4f-⁴(4|4) 4f⁶(6|10) 6s(1/2|19/2) 6p(3/2|9)-
4f-⁴(4|4) 4f⁶(6|10) 6s(1/2|21/2) 6p(3/2|9)-
4f-³(9/2|9/2) 4f⁷(7/2|7) 6s(1/2|15/2) 6p(3/2|9)-
4f-³(9/2|9/2) 4f⁷(7/2|8) 6s(1/2|15/2) 6p(3/2|9)-
4f-³(9/2|9/2) 4f⁷(7/2|8) 6s(1/2|17/2) 6p(3/2|9)-
@jongrumer In master/src/appl/rcsfgenerate90/matain.f90, lines 265 and 315: if (Y(2:2).GE.'1' .AND. Y(2:2).LE.'9') should be replaced with if (Y(2:2).GE.'0' .AND. Y(2:2).LE.'9')
This issue is addressed in PR #45
@gaigalas found a serious bug in rcsfgenerate:
Email from Gediminas [2019-10-18] It seems that there are some bug in the rcsfgenerate program.
Here is the scripts for rcsfgenerate program:
and script for old csl program
The csl program reproduce 43 CSFs. This is correct. But rcsfgenerate reproduce 292 CSFs. This is NOT CORRECT !!! because we have 9 electrons in the 4f shell (we was asking for minimum 10 electrons).
Please be very careful with the using rcsfgenerate program for investigation of lanthanides !!!