Matroids Matheplanet Forum Index
Moderiert von trunx pet
Physik » Chemie » Elektronenkonfiguration für gegebene Ordnungszahl Z programmieren
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: 594
  Themenstart: 2021-06-10

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 $ % \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)} \\ } $ \showon Code, falls es jmd. interessiert. \sourceon 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} \sourceoff \showoff Das kann man jetzt zwar noch mit diversen Abfragen \showon zur üblichen Darstellung bringen; https://matheplanet.de/matheplanet/nuke/html/uploads/b/52997_30_5555555555555.png \showoff 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
Wario
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.05.2020
Mitteilungen: 594
  Beitrag No.1, vom Themenstarter, eingetragen 2021-06-12

Startzahlenfolge $Z_\text{start}(n,l)$ ermittelt. $ % \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} $


Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil
Wario
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.05.2020
Mitteilungen: 594
  Beitrag No.2, vom Themenstarter, eingetragen 2021-06-13

Das kann so gehen: \sourceon (latex) \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 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


Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil
Wario
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.05.2020
Mitteilungen: 594
  Beitrag No.3, vom Themenstarter, eingetragen 2021-06-13

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. $ % \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 für n nicht vorhanden (\Z0 \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} \\ } $


Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil

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]