Matroids Matheplanet Forum Index
Moderiert von trunx pet
Physik » Chemie » Elektronenkonfiguration für gegebene Ordnungszahl Z programmieren
Druckversion
Druckversion
Antworten
Antworten
Autor
Kein bestimmter Bereich Elektronenkonfiguration für gegebene Ordnungszahl Z programmieren
Wario
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.05.2020
Mitteilungen: 462
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2021-06-10 11:59


Was ist eigentlich die beste Methode eine Elektronenkonfiguartion für gegebene Ordnungszahl Z zu programmieren?
Also ein Algorithmus des Typs EC(Z) = f(Z).

Ich habe das hier mit pgfmath (LaTeX) umgesetzt, weil ich das im Dokument haben möchte.
Prinzipiell berechnet er dabei
<math>

% \begin{tikzpicture}

\def\ShowAll{1}% Default


\pgfmathdeclarefunction{Exc}{1}{\pgfmathparse{%
#1==24 || #1==28 ||  #1==29 ||  #1==41 ||  #1==42 ||  #1==44 ||  #1==45 ||  #1==46 ||  #1==47 ||  #1==57 ||  #1==58 ||  #1==64 ||  #1==78 ||  #1==79 ||  #1==89 ||  #1==90 ||  #1==91 ||  #1==92 ||  #1==93 ||  #1==96 ||  #1==103 ? "*" : " "}}
%\pgfmathprint{Exc(24)}


\pgfmathdeclarefunction{EC}{1}{%
\pgfmathsetmacro\Is{#1==1 ? 1 : 2}% 1s
\pgfmathsetmacro\IIs{#1<3  ? 0 : (#1==3 ? 1 : 2)}% 2s
\pgfmathsetmacro\IIp{#1<5 ? 0 : (#1<10 ? int(#1-\Is-\IIs) : 6)}% 2p
\pgfmathsetmacro\IIIs{#1<11  ? 0 : (#1==11 ? 1 : 2)}% 3s
\pgfmathsetmacro\IIIp{#1<13 ? 0 : (#1<18 ?
int(#1-\Is-\IIs-\IIp-\IIIs) : 6)}% 3p
\pgfmathsetmacro\IVs{#1<19  ? 0 : (#1==19 ? 1 : 2)}% 4s
\pgfmathsetmacro\IIId{#1<21 ? 0 : (#1<30 ?
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs) : 10)}% 3d
\pgfmathsetmacro\IVp{#1<31 ? 0 : (#1<36 ?
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId) : 6)}% 4p
\pgfmathsetmacro\Vs{#1<37  ? 0 : (#1==37 ? 1 : 2)}% 5s
\pgfmathsetmacro\IVd{#1<39 ? 0 : (#1<48 ?
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs) : 10)}% 4d
\pgfmathsetmacro\Vp{#1<49 ? 0 : (#1<54 ?
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs-\IVd) : 6)}% 5p
\pgfmathsetmacro\VIs{#1<55  ? 0 : (#1==55 ? 1 : 2)}% 6s
\pgfmathsetmacro\IVf{#1<57 ? 0 : (#1<70 ?
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs-\IVd-\Vp-\VIs) : 14)}% 4f
\pgfmathsetmacro\Vd{#1<71 ? 0 : (#1<80 ?
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs-\IVd-\Vp-\VIs-\IVf) : 10)}% 5d
\pgfmathsetmacro\VIp{#1<81 ? 0 : (#1<86 ?
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs-\IVd-\Vp-\VIs-\IVf-\Vd) : 6)}% 6p
\pgfmathsetmacro\VIIs{#1<87  ? 0 : (#1==87 ? 1 : 2)}% 7s
\pgfmathsetmacro\Vf{#1<89 ? 0 : (#1<102 ?
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs-\IVd-\Vp -\VIs -\IVf -\Vd -\VIp -\VIIs) : 14)}% 5f
\pgfmathsetmacro\VId{#1<103 ? 0 : (#1<112 ?
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs-\IVd-\Vp -\VIs -\IVf -\Vd -\VIp -\VIIs -\Vf) : 10)}% 6d
\pgfmathsetmacro\VIIp{#1<113 ? 0 : (#1<118 ?
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs-\IVd-\Vp -\VIs -\IVf -\Vd -\VIp -\VIIs -\Vf -\VId) : 6)}% 7p
\pgfmathsetmacro\VIIIs{#1<119  ? 0 : (#1==119 ? 1 : 2)}% 8s
%
\ifnum\ShowAll=1%=====================
\pgfmathparse{"1s\Is  ~2s\IIs
~2p\IIp ~3s\IIIs ~3p\IIIp ~4s\IVs ~3d\IIId
~4p\IVp ~5s\Vs ~4d\IVd   ~5p\Vp  ~6s\VIs  ~4f\IVf ~5d\Vd ~6p\VIp
~7s\VIIs ~5f\Vf ~6d\VId ~7p\VIIp ~8s\VIIIs"}
\else%==============================
\pgfmathparse{%
"%
\ifnum\IIp=6 [Ne]\,% Nobelgas-Shorthand [Ne]
\else%
\ifnum\Is=2 [He]\,% Nobelgas-Shorthand [He]
\else%
\ifnum\Is=0 \else 1s\textsuperscript{\Is}\,\fi%
\fi%
\ifnum\IIs=0 \else 2s\textsuperscript{\IIs}\,\fi%
\ifnum\IIp=0 \else 2p\textsuperscript{\IIp}\,\fi%
\fi%
\ifnum\IIIs=0 \else 3s\textsuperscript{\IIIs}\,\fi%
%\fi%
\ifnum\IIIp=0 \else 3p\textsuperscript{\IIIp}\,\fi%
\ifnum\IVs=0 \else 4s\textsuperscript{\IVs}\,\fi%
\ifnum\IIId=0 \else 3d\textsuperscript{\IIId}\,\fi%
\ifnum\IVp=0 \else 4p\textsuperscript{\IVp}\,\fi%
\ifnum\Vs=0 \else 5s\textsuperscript{\Vs}\,\fi%
\ifnum\IVd=0 \else 4d\textsuperscript{\IVd}\,\fi%
\ifnum\Vp=0 \else 5p\textsuperscript{\Vp}\,\fi%
\ifnum\VIs=0 \else 6s\textsuperscript{\VIs}\,\fi%
\ifnum\IVf=0 \else 4f\textsuperscript{\IVf}\,\fi%
\ifnum\Vd=0 \else 5d\textsuperscript{\Vd}\,\fi%
\ifnum\VIp=0 \else 6p\textsuperscript{\VIp}\,\fi%
\ifnum\VIIs=0 \else 7s\textsuperscript{\VIIs}\,\fi%
\ifnum\Vf=0 \else 5f\textsuperscript{\Vf}\,\fi%
\ifnum\VId=0 \else 6d\textsuperscript{\VId}\,\fi%
\ifnum\VIIp=0 \else 7p\textsuperscript{\VIIp}\,\fi%
\ifnum\VIIIs=0 \else 8s\textsuperscript{\VIIIs}\,\fi%
"}
\fi%=====================
}

\textbf{Madelung Scheme (ShowAll)} \\
\foreach \Z in {1,...,5}{\footnotesize
Z=\Z\pgfmathprint{Exc(\Z)}: \pgfmathprint{EC(\Z)} \\
}
</math>
Code, falls es jmd. interessiert.
LaTeX
\documentclass[margin=5mm, varwidth]{standalone}
\renewcommand*{\familydefault}{\sfdefault}
\usepackage{tikz}
 
\renewcommand*{\familydefault}{\sfdefault}
\def\ShowAll{1}% Default
\begin{document}
% Exceptions form Madelung-Scheme
% https://en.wikipedia.org/wiki/Aufbau_principle#Exceptions_in_the_d-block
\pgfmathdeclarefunction{Exc}{1}{\pgfmathparse{%
#1==24 || #1==28 ||  #1==29 ||  #1==41 ||  #1==42 ||  #1==44 ||  #1==45 ||  #1==46 ||  #1==47 ||  #1==57 ||  #1==58 ||  #1==64 ||  #1==78 ||  #1==79 ||  #1==89 ||  #1==90 ||  #1==91 ||  #1==92 ||  #1==93 ||  #1==96 ||  #1==103 ? "*" : " "}}
 
 
\pgfmathdeclarefunction{EC}{1}{%
\pgfmathsetmacro\Is{#1==1 ? 1 : 2}% 1s
\pgfmathsetmacro\IIs{#1<3  ? 0 : (#1==3 ? 1 : 2)}% 2s
\pgfmathsetmacro\IIp{#1<5 ? 0 : (#1<10 ? int(#1-\Is-\IIs) : 6)}% 2p
\pgfmathsetmacro\IIIs{#1<11  ? 0 : (#1==11 ? 1 : 2)}% 3s
\pgfmathsetmacro\IIIp{#1<13 ? 0 : (#1<18 ? 
int(#1-\Is-\IIs-\IIp-\IIIs) : 6)}% 3p
\pgfmathsetmacro\IVs{#1<19  ? 0 : (#1==19 ? 1 : 2)}% 4s
\pgfmathsetmacro\IIId{#1<21 ? 0 : (#1<30 ? 
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs) : 10)}% 3d
\pgfmathsetmacro\IVp{#1<31 ? 0 : (#1<36 ? 
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId) : 6)}% 4p
\pgfmathsetmacro\Vs{#1<37  ? 0 : (#1==37 ? 1 : 2)}% 5s
\pgfmathsetmacro\IVd{#1<39 ? 0 : (#1<48 ? 
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs) : 10)}% 4d
\pgfmathsetmacro\Vp{#1<49 ? 0 : (#1<54 ? 
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs-\IVd) : 6)}% 5p
\pgfmathsetmacro\VIs{#1<55  ? 0 : (#1==55 ? 1 : 2)}% 6s
\pgfmathsetmacro\IVf{#1<57 ? 0 : (#1<70 ? 
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs-\IVd-\Vp-\VIs) : 14)}% 4f
\pgfmathsetmacro\Vd{#1<71 ? 0 : (#1<80 ? 
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs-\IVd-\Vp-\VIs-\IVf) : 10)}% 5d
\pgfmathsetmacro\VIp{#1<81 ? 0 : (#1<86 ? 
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs-\IVd-\Vp-\VIs-\IVf-\Vd) : 6)}% 6p
\pgfmathsetmacro\VIIs{#1<87  ? 0 : (#1==87 ? 1 : 2)}% 7s
\pgfmathsetmacro\Vf{#1<89 ? 0 : (#1<102 ? 
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs-\IVd-\Vp -\VIs -\IVf -\Vd -\VIp -\VIIs) : 14)}% 5f
\pgfmathsetmacro\VId{#1<103 ? 0 : (#1<112 ? 
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs-\IVd-\Vp -\VIs -\IVf -\Vd -\VIp -\VIIs -\Vf) : 10)}% 6d
\pgfmathsetmacro\VIIp{#1<113 ? 0 : (#1<118 ? 
int(#1-\Is-\IIs-\IIp-\IIIs-\IIIp-\IVs-\IIId-\IVp-\Vs-\IVd-\Vp -\VIs -\IVf -\Vd -\VIp -\VIIs -\Vf -\VId) : 6)}% 7p
\pgfmathsetmacro\VIIIs{#1<119  ? 0 : (#1==119 ? 1 : 2)}% 8s
%
\ifnum\ShowAll=1%=====================
\pgfmathparse{"1s\Is  ~2s\IIs  
 ~2p\IIp ~3s\IIIs ~3p\IIIp ~4s\IVs ~3d\IIId 
~4p\IVp ~5s\Vs ~4d\IVd   ~5p\Vp  ~6s\VIs  ~4f\IVf ~5d\Vd ~6p\VIp
~7s\VIIs ~5f\Vf ~6d\VId ~7p\VIIp ~8s\VIIIs"}
\else%==============================
\pgfmathparse{%
"%
\ifnum\IIp=6 [Ne]\,% Nobelgas-Shorthand [Ne]
 \else%
  \ifnum\Is=2 [He]\,% Nobelgas-Shorthand [He]
  \else%
   \ifnum\Is=0 \else 1s\textsuperscript{\Is}\,\fi%
  \fi%
\ifnum\IIs=0 \else 2s\textsuperscript{\IIs}\,\fi%
 \ifnum\IIp=0 \else 2p\textsuperscript{\IIp}\,\fi%  
 \fi%
\ifnum\IIIs=0 \else 3s\textsuperscript{\IIIs}\,\fi%
%\fi%
\ifnum\IIIp=0 \else 3p\textsuperscript{\IIIp}\,\fi%  
\ifnum\IVs=0 \else 4s\textsuperscript{\IVs}\,\fi%  
\ifnum\IIId=0 \else 3d\textsuperscript{\IIId}\,\fi%  
\ifnum\IVp=0 \else 4p\textsuperscript{\IVp}\,\fi%  
\ifnum\Vs=0 \else 5s\textsuperscript{\Vs}\,\fi%  
\ifnum\IVd=0 \else 4d\textsuperscript{\IVd}\,\fi%  
\ifnum\Vp=0 \else 5p\textsuperscript{\Vp}\,\fi%  
\ifnum\VIs=0 \else 6s\textsuperscript{\VIs}\,\fi%  
\ifnum\IVf=0 \else 4f\textsuperscript{\IVf}\,\fi%  
\ifnum\Vd=0 \else 5d\textsuperscript{\Vd}\,\fi%  
\ifnum\VIp=0 \else 6p\textsuperscript{\VIp}\,\fi%  
\ifnum\VIIs=0 \else 7s\textsuperscript{\VIIs}\,\fi%  
\ifnum\Vf=0 \else 5f\textsuperscript{\Vf}\,\fi%  
\ifnum\VId=0 \else 6d\textsuperscript{\VId}\,\fi%  
\ifnum\VIIp=0 \else 7p\textsuperscript{\VIIp}\,\fi%  
\ifnum\VIIIs=0 \else 8s\textsuperscript{\VIIIs}\,\fi%
"}
\fi%=====================
}
 
\section{Madelung Scheme (ShowAll)}
\foreach \Z in {1,...,13}{\footnotesize
Z=\Z\pgfmathprint{Exc(\Z)}: \pgfmathprint{EC(\Z)} \\
}
\section{Madelung Scheme}
\def\ShowAll{0}
\foreach \Z in {1,...,33}{\footnotesize
Z=\Z\pgfmathprint{Exc(\Z)}: \pgfmathprint{EC(\Z)} \\
}
 
 
Execptions: Z=24,  28,  29,  41,  42,  44,  45,  46,  47,  57,  58,  64,  78,  79,  89,  90,  91,  92,  93,  96,  103
\end{document}

Das kann man jetzt zwar noch mit diversen Abfragen

das ist aber alles sehr rechenaufwendig.

Daher die Frage: Kann man das auch einfacher machen?

Am meisten würde mir sowas wie Pseudocode helfen oder sogar die Skizze eines Ablaufdiagramms. Das kann ich dann schon umsetzen.




Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Wario
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.05.2020
Mitteilungen: 462
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, vom Themenstarter, eingetragen 2021-06-12 20:43


Startzahlenfolge $Z_\text{start}(n,l)$ ermittelt.

<math>

% \begin{tikzpicture}

\tikzset{
declare function={
H(\k,\n)=(\n<\k+1 ? 0 : 1);
h(\k,\n)=H(\k,\n)*(\n-\k);
ZstartS(\n)=int(\n*2+h(2,\n)*6+h(4,\n)*10+h(6,\n)*14+h(8,\n)*18-1);
L(\l)=int(  2*\l*\l-2  );
Zstart(\n,\l)=int(  \n < (\l+1) ? -1 : ZstartS(\n+\l)-L(\l+1)  );%  works too
},}


\foreach \n  in {0,1,...,12}{
\ifnum\n=0
n:
~~~s
~~~p
~~~~~~~d
~~~~~f
~~~~~g
~~~~~h \\
\else
\n:~
\pgfmathprint{Zstart(\n,0)}%s (l=0)
~~~\pgfmathprint{Zstart(\n,1)}%p  (l=1)
~~~~~\pgfmathprint{Zstart(\n,2)}% d  (l=2)
~~~~~~\pgfmathprint{Zstart(\n,3)}%f  (l=3)
~~~~~~~\pgfmathprint{Zstart(\n,4)}%g  (l=4)
~~~~~~~~\pgfmathprint{Zstart(\n,5)}%h  (l=4)
\\ \fi}
</math>



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Wario
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.05.2020
Mitteilungen: 462
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2021-06-13 08:49


Das kann so gehen:

\tikzset{
declare function={
H(\k,\n)=(\n<\k+1 ? 0 : 1);% verschobene Heaviside Ganzzahlfunktion
h(\k,\n)=H(\k,\n)*(\n-\k);% Anpassung zur Verwendung
ZstartS(\n)=int(  \n*2+h(2,\n)*6+h(4,\n)*10+h(6,\n)*14+h(8,\n)*18-1  );
% Z-Startzahlen des  s- bzw. (l=0)-Orbitals
M(\l)=int( 2*\l*\l-2 );% 1,2,3,... ---> 0,6,16,30,48,70,...
% aufsummierte maximale Besetzung der l-Orbitale
Zstart(\n,\l)=int(  \n<(\l+1) ? -1 : ZstartS(\n+\l)-M(\l+1)  );
% Z-Startzahlen der (n,l)-Orbitale
L(\l)=int( 4*\l+2 );% 0,1,2,3,... --->  2,6,10,14,18,22,26,... 
% maximale Besetzung des l-ten Orbitals
B(\Z,\n,\l)=int( Zstart(\n,\l)==-1 ? -1 :% l-Orbital für n nicht vorhanden 
(\Z<Zstart(\n,\l) ? 0 :% Orbital noch nicht erreicht 
(\Z<(Zstart(\n,\l)+L(\l)) ?% Orbital noch nicht voll besetzt
\Z-Zstart(\n,\l)+1 : L(\l)% Orbital Z-schrittweise besetzen / voll besetzt
)  )  );% Besetzung B(Z,n,l) des (n,l)-Orbitals bei Ordnungszahl Z
},   }

<math>
% \begin{tikzpicture}

\tikzset{
declare function={
H(\k,\n)=(\n<\k+1 ? 0 : 1);% verschobene Heaviside Ganzzahlfunktion
h(\k,\n)=H(\k,\n)*(\n-\k);% Anpassung zur Verwendung
ZstartS(\n)=int(  \n*2+h(2,\n)*6+h(4,\n)*10+h(6,\n)*14+h(8,\n)*18-1  );
% Z-Startzahlen des  s- bzw. (l=0)-Orbitals
M(\l)=int( 2*\l*\l-2 );% aufsummierte maximale Besetzung der l-Orbitale
Zstart(\n,\l)=int(  \n<(\l+1) ? -1 : ZstartS(\n+\l)-M(\l+1)  );
% Z-Startzahlen der (n,l)-Orbitale
L(\l)=int( 4*\l+2 );% maximale Besetzung des l-ten Orbitals
B(\Z,\n,\l)=int( Zstart(\n,\l)==-1 ? -1 :% l-Orbital fr n nicht vorhanden
(\Z<Zstart(\n,\l) ? 0 :% Orbital noch nicht erreicht
(\Z<(Zstart(\n,\l)+L(\l)) ?% Orbital noch nicht voll besetzt
\Z-Zstart(\n,\l)+1 : L(\l)% Orbital Z-schrittweise besetzen / voll besetzt
)  )  );% Besetzung B(Z,n,l) des (n,l)-Orbitals bei Ordnungszahl Z
},   }

\pgfmathdeclarefunction{Exc}{1}{\pgfmathparse{%
#1==24 || #1==28 ||  #1==29 ||  #1==41 ||  #1==42 ||  #1==44 ||  #1==45 ||  #1==46 ||  #1==47 ||  #1==57 ||  #1==58 ||  #1==64 ||  #1==78 ||  #1==79 ||  #1==89 ||  #1==90 ||  #1==91 ||  #1==92 ||  #1==93 ||  #1==96 ||  #1==103 ? "*" : " "}}

\begin{document}
Test:
\def\Z{69}
\def\n{4}
\def\l{3}

Z=\Z\pgfmathprint{Exc(\Z)}, n=\n, l=\l

Zstart(\n,\l)=\pgfmathprint{Zstart(\n,\l)}

Zstart(\n,\l)+L(\l) = \pgfmathprint{Zstart(\n,\l)+L(\l)}

Z - Zstart(\n,\l) = \pgfmathprint{\Z-Zstart(\n,\l))}

L(\l) = \pgfmathprint{L(\l)}

Besetzung B(\Z,\n,\l)=\pgfmathprint{B(\Z,\n,\l)}
</math>


latex
\documentclass[margin=5mm, varwidth]{standalone}
\usepackage{tikz}
%\usetikzlibrary{matrix}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
 
\tikzset{
declare function={
H(\k,\n)=(\n<\k+1 ? 0 : 1);% verschobene Heaviside Ganzzahlfunktion
h(\k,\n)=H(\k,\n)*(\n-\k);% Anpassung zur Verwendung
ZstartS(\n)=int(  \n*2+h(2,\n)*6+h(4,\n)*10+h(6,\n)*14+h(8,\n)*18-1  );
% Z-Startzahlen des  s- bzw. (l=0)-Orbitals
M(\l)=int( 2*\l*\l-2 );% 1,2,3,... ---> 0,6,16,30,48,70,...
% aufsummierte maximale Besetzung der l-Orbitale
Zstart(\n,\l)=int(  \n<(\l+1) ? -1 : ZstartS(\n+\l)-M(\l+1)  );
% Z-Startzahlen der (n,l)-Orbitale
L(\l)=int( 4*\l+2 );% 0,1,2,3,... --->  2,6,10,14,18,22,26,... 
% maximale Besetzung des l-ten Orbitals
B(\Z,\n,\l)=int( Zstart(\n,\l)==-1 ? -1 :% l-Orbital für n nicht vorhanden 
(\Z<Zstart(\n,\l) ? 0 :% Orbital noch nicht erreicht 
(\Z<(Zstart(\n,\l)+L(\l)) ?% Orbital noch nicht voll besetzt
\Z-Zstart(\n,\l)+1 : L(\l)% Orbital Z-schrittweise besetzen / voll besetzt
)  )  );% Besetzung B(Z,n,l) des (n,l)-Orbitals bei Ordnungszahl Z
},   }
 
\pgfmathdeclarefunction{Exc}{1}{\pgfmathparse{%
#1==24 || #1==28 ||  #1==29 ||  #1==41 ||  #1==42 ||  #1==44 ||  #1==45 ||  #1==46 ||  #1==47 ||  #1==57 ||  #1==58 ||  #1==64 ||  #1==78 ||  #1==79 ||  #1==89 ||  #1==90 ||  #1==91 ||  #1==92 ||  #1==93 ||  #1==96 ||  #1==103 ? "*" : " "}}
 
\begin{document}
Test: 
\def\Z{69}
\def\n{4}
\def\l{3}
 
Z=\Z\pgfmathprint{Exc(\Z)}, n=\n, l=\l
 
Zstart(\n,\l)=\pgfmathprint{Zstart(\n,\l)}
 
Zstart(\n,\l)+L(\l) = \pgfmathprint{Zstart(\n,\l)+L(\l)}
 
Z - Zstart(\n,\l) = \pgfmathprint{\Z-Zstart(\n,\l))}
 
L(\l) = \pgfmathprint{L(\l)}
 
Besetzung B(\Z,\n,\l)=\pgfmathprint{B(\Z,\n,\l)}
 
 
\def\OutFilename{PSE-Startzahlen.txt}
\newwrite\MyFile
\immediate\openout\MyFile=\OutFilename
\foreach[count=\N from 0] \n in {1,...,12}{%%
\pgfmathparse{Zstart(\n,0)} 
\xdef\ZstartS{\pgfmathresult}
\pgfmathparse{Zstart(\n,1)} 
\xdef\ZstartP{\pgfmathresult}
\pgfmathparse{Zstart(\n,2)} 
\xdef\ZstartD{\pgfmathresult}
\pgfmathparse{Zstart(\n,3)} 
\xdef\ZstartF{\pgfmathresult}
\pgfmathparse{Zstart(\n,4)} 
\xdef\ZstartG{\pgfmathresult}
\pgfmathparse{Zstart(\n,5)} 
\xdef\ZstartH{\pgfmathresult}
\immediate\write\MyFile{
\n; \ZstartS; \ZstartP; \ZstartD; \ZstartF; \ZstartG; \ZstartH %\\
}
}%%
\immediate\closeout\MyFile
 
%\noindent\input{\OutFilename}
\pgfplotstabletypeset[col sep=semicolon, header=false,
% string type, 
display columns/0/.style={column name=n},
display columns/1/.style={column name=s},
display columns/2/.style={column name=p},
display columns/3/.style={column name=d},
display columns/4/.style={column name=f},
display columns/5/.style={column name=g},
display columns/6/.style={column name=h},
]{\OutFilename}
 
S1=1;  S2=3;  S3=11;  S4=19;  S5=37;  S6=55;  S7=87;  S8=119; \\
P2=5;  P3=13;  P4=31;  P5=49;  P6=81;  P7=113; \\
D3=21;  D4=39;  D5=71;  D6=103;   \\
F4=57;  F5=89; \\
% G=18; 
G5=121; 
\end{document}





Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Wario
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.05.2020
Mitteilungen: 462
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, vom Themenstarter, eingetragen 2021-06-13 20:36


Im folgenden fehlen noch die weiteren Edelgasabkürzungen.
Aber #2 ist schon eine ziemlich intensive Abfrage und es wird noch intensiver mit den Edelgasabkürzungen.

Also falls jemand eine einfachere Funktion B(Z,n,l) angeben kann für die Besetzungszahl des (n,l)-Orbitals für die Ordnungszahl Z, wäre das gut.

An sich sind das alles zahlentheoretische Funktionen und Folgen, die hier eingesetzt werden, also auch für Mathematiker interessant.

<math>

% \begin{tikzpicture}


\tikzset{
declare function={
H(\k,\n)=(\n<\k+1 ? 0 : 1);% verschobene Heaviside Ganzzahlfunktion
h(\k,\n)=H(\k,\n)*(\n-\k);% Anpassung zur Verwendung
ZstartS(\n)=int(  \n*2+h(2,\n)*6+h(4,\n)*10+h(6,\n)*14+h(8,\n)*18-1  );
% Z-Startzahlen des  s- bzw. (l=0)-Orbitals
M(\l)=int( 2*\l*\l-2 );% 1,2,3,... ---> 0,6,16,30,48,70,...
% aufsummierte maximale Besetzung der l-Orbitale
Zstart(\n,\l)=int(  \n<(\l+1) ? -1 : ZstartS(\n+\l)-M(\l+1)  );
% Z-Startzahlen der (n,l)-Orbitale
L(\l)=int( 4*\l+2 );% 0,1,2,3,... --->  2,6,10,14,18,22,26,...
% maximale Besetzung des l-ten Orbitals
B(\Z,\n,\l)=int( Zstart(\n,\l)==-1 ? -1 :% l-Orbital fr n nicht vorhanden
(\Z<Zstart(\n,\l) ? 0 :% Orbital noch nicht erreicht
(\Z<(Zstart(\n,\l)+L(\l)) ?% Orbital noch nicht voll besetzt
\Z-Zstart(\n,\l)+1 : L(\l)% Orbital Z-schrittweise besetzen / voll besetzt
)  )  );% Besetzung B(Z,n,l) des (n,l)-Orbitals bei Ordnungszahl Z
lname(\l)=(\l==0 ? "s" : (\l==1 ? "p" :
(\l==2 ? "d" : (\l==3 ? "f" : (\l==4 ? "g" :)))));
},   }

\pgfmathdeclarefunction{Exc}{1}{\pgfmathparse{%
#1==24 || #1==28 ||  #1==29 ||  #1==41 ||  #1==42 ||  #1==44 ||  #1==45 ||  #1==46 ||  #1==47 ||  #1==57 ||  #1==58 ||  #1==64 ||  #1==78 ||  #1==79 ||  #1==89 ||  #1==90 ||  #1==91 ||  #1==92 ||  #1==93 ||  #1==96 ||  #1==103 ? "*" : " "}}

\begin{document}
\sffamily

\section*{Test 2:}



\def\NbGequal{1}

\def\OrbList{1/s/0, 2/s/0, 2/p/1, 3/s/0, 3/p/1, 4/s/0,
3/d/2, 4/p/1, 5/s/0, 4/d/2, 5/p/1, 6/s/0, 4/f/3, 5/d/2,
6/p/1, 7/s/0, 5/f/3, 6/d/2, 7/p/1, 8/s/0, 5/g/4}
\def\HeList{%1/s/0,  % 2He
2/s/0, 2/p/1, 3/s/0, 3/p/1, 4/s/0,
3/d/2, 4/p/1, 5/s/0, 4/d/2, 5/p/1, 6/s/0, 4/f/3, 5/d/2,
6/p/1, 7/s/0, 5/f/3, 6/d/2, 7/p/1, 8/s/0, 5/g/4}
\def\NeList{%1/s/0,  % 2He
%2/s/0, 2/p/1, % 10Ne
3/s/0, 3/p/1, 4/s/0,
3/d/2, 4/p/1, 5/s/0, 4/d/2, 5/p/1, 6/s/0, 4/f/3, 5/d/2,
6/p/1, 7/s/0, 5/f/3, 6/d/2, 7/p/1, 8/s/0, 5/g/4}


\newcommand\HeEC[1]{%%%
\def\Z{#1}%
[He]\,\foreach \n/\lname/\l in \HeList{%
\pgfmathparse{B(\Z,\n,\l)}%
\ifnum\pgfmathresult>0 \n\lname\textsuperscript{\pgfmathresult}\,\fi}%%
}%%%
Test Z=6: \HeEC{6}

\newcommand\NeEC[1]{%%%
\def\Z{#1}%
[Ne]\,\foreach \n/\lname/\l in \NeList{%
\pgfmathparse{B(\Z,\n,\l)}%
\ifnum\pgfmathresult>0 \n\lname\textsuperscript{\pgfmathresult}\,\fi}%%
}%%%
Test Z=11: \NeEC{11}


\newcommand\EC[1]{%%%
\def\Z{#1}%
\ifnum\Z>10
\edef\List{\NeList}%
\def\NbGAbbr{[Ne]}%
\else%
\ifnum\Z>2
\edef\List{\HeList}%
\def\NbGAbbr{[He]}%
\else%
\edef\List{\OrbList}%
\def\NbGAbbr{}%
\fi\fi%
\NbGAbbr\,\foreach \n/\lname/\l in \List{%%
\pgfmathparse{B(\Z,\n,\l)}%
\ifnum\pgfmathresult>0 \n\lname\textsuperscript{\pgfmathresult}\,\fi}%%
}%%%

EC:

\foreach \x in {1,...,66} {
\noindent Z=\x:~ \EC{\x} \\
}
</math>



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]